svn commit: r265032 - head/sys/dev/ath/ath_hal

Adrian Chadd adrian at FreeBSD.org
Sun Apr 27 23:36:45 UTC 2014


Author: adrian
Date: Sun Apr 27 23:36:44 2014
New Revision: 265032
URL: http://svnweb.freebsd.org/changeset/base/265032

Log:
  * Add a new capability which returns whether the hardware supports
    the MYBEACON RX filter (only receive beacons which match the BSSID)
    or all beacons on the current channel.
  
  * Add the relevant RX filter entry for MYBEACON.
  
  Tested:
  
  * AR5416, STA
  * AR9285, STA
  
  TODO:
  
  * once the code is in -HEAD, just make sure that the code which uses it
    correctly sets BEACON for pre-AR5416 chips.
  
  Obtained from:	QCA, Linux ath9k

Modified:
  head/sys/dev/ath/ath_hal/ah.c
  head/sys/dev/ath/ath_hal/ah.h
  head/sys/dev/ath/ath_hal/ah_internal.h

Modified: head/sys/dev/ath/ath_hal/ah.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ah.c	Sun Apr 27 23:35:05 2014	(r265031)
+++ head/sys/dev/ath/ath_hal/ah.c	Sun Apr 27 23:36:44 2014	(r265032)
@@ -786,6 +786,8 @@ ath_hal_getcapability(struct ath_hal *ah
 		return HAL_OK;
 	case HAL_CAP_RX_LNA_MIXING:	/* Hardware uses an RX LNA mixer to map 2 antennas to a 1 stream receiver */
 		return pCap->halRxUsingLnaMixing ? HAL_OK : HAL_ENOTSUPP;
+	case HAL_CAP_DO_MYBEACON:	/* Hardware supports filtering my-beacons */
+		return pCap->halRxDoMyBeacon ? HAL_OK : HAL_ENOTSUPP;
 	default:
 		return HAL_EINVAL;
 	}

Modified: head/sys/dev/ath/ath_hal/ah.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah.h	Sun Apr 27 23:35:05 2014	(r265031)
+++ head/sys/dev/ath/ath_hal/ah.h	Sun Apr 27 23:36:44 2014	(r265032)
@@ -199,6 +199,7 @@ typedef enum {
 	HAL_CAP_SERIALISE_WAR	= 245,	/* serialise register access on PCI */
 	HAL_CAP_ENFORCE_TXOP	= 246,	/* Enforce TXOP if supported */
 	HAL_CAP_RX_LNA_MIXING	= 247,	/* RX hardware uses LNA mixing */
+	HAL_CAP_DO_MYBEACON	= 248,	/* Supports HAL_RX_FILTER_MYBEACON */
 } HAL_CAPABILITY_TYPE;
 
 /* 
@@ -404,6 +405,7 @@ typedef enum {
 	HAL_RX_FILTER_PROM	= 0x00000020,	/* Promiscuous mode */
 	HAL_RX_FILTER_PROBEREQ	= 0x00000080,	/* Allow probe request frames */
 	HAL_RX_FILTER_PHYERR	= 0x00000100,	/* Allow phy errors */
+	HAL_RX_FILTER_MYBEACON  = 0x00000200,   /* Filter beacons other than mine */
 	HAL_RX_FILTER_COMPBAR	= 0x00000400,	/* Allow compressed BAR */
 	HAL_RX_FILTER_COMP_BA	= 0x00000800,	/* Allow compressed blockack */
 	HAL_RX_FILTER_PHYRADAR	= 0x00002000,	/* Allow phy radar errors */

Modified: head/sys/dev/ath/ath_hal/ah_internal.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah_internal.h	Sun Apr 27 23:35:05 2014	(r265031)
+++ head/sys/dev/ath/ath_hal/ah_internal.h	Sun Apr 27 23:36:44 2014	(r265032)
@@ -280,7 +280,8 @@ typedef struct {
 			halAntDivCombSupportOrg		: 1,
 			halRadioRetentionSupport	: 1,
 			halSpectralScanSupport		: 1,
-			halRxUsingLnaMixing		: 1;
+			halRxUsingLnaMixing		: 1,
+			halRxDoMyBeacon			: 1;
 
 	uint32_t	halWirelessModes;
 	uint16_t	halTotalQueues;


More information about the svn-src-head mailing list