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;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to