Author: adrian
Date: Wed May 25 07:34:49 2011
New Revision: 222277
URL: http://svn.freebsd.org/changeset/base/222277

Log:
  The current ANI capability information uses a different set of
  values for the commands, compared to the internal command values
  (HAL_ANI_CMD.)
  
  My eventual aim is to make the HAL_ANI_CMD internal enum match
  the public API and then remove all this messiness.
  
  This now allows HAL_CAP_INTMIT users to use a public HAL_CAP_INTMIT_
  enum rather than magic constants.
  
  The only magic constants currently used by if_ath are "enable" and
  "present". Some local tools of mine allow for direct, manual fiddling
  of the ANI variables and I'll convert these to use the public enum API
  before I commit them.

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

Modified: head/sys/dev/ath/ath_hal/ah.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah.h       Wed May 25 07:19:19 2011        
(r222276)
+++ head/sys/dev/ath/ath_hal/ah.h       Wed May 25 07:34:49 2011        
(r222277)
@@ -669,6 +669,41 @@ typedef struct {
 } HAL_CHANNEL_SURVEY;
 
 /*
+ * ANI commands.
+ *
+ * These are used both internally and externally via the diagnostic
+ * API.
+ *
+ * Note that this is NOT the ANI commands being used via the INTMIT
+ * capability - that has a different mapping for some reason.
+ */
+typedef enum {
+       HAL_ANI_PRESENT = 0,                    /* is ANI support present */
+       HAL_ANI_NOISE_IMMUNITY_LEVEL = 1,       /* set level */
+       HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION = 2, /* enable/disable */
+       HAL_ANI_CCK_WEAK_SIGNAL_THR = 3,        /* enable/disable */
+       HAL_ANI_FIRSTEP_LEVEL = 4,              /* set level */
+       HAL_ANI_SPUR_IMMUNITY_LEVEL = 5,        /* set level */
+       HAL_ANI_MODE = 6,                       /* 0 => manual, 1 => auto (XXX 
do not change) */
+       HAL_ANI_PHYERR_RESET = 7,               /* reset phy error stats */
+} HAL_ANI_CMD;
+
+/*
+ * This is the layout of the ANI INTMIT capability.
+ *
+ * Notice that the command values differ to HAL_ANI_CMD.
+ */
+typedef enum {
+       HAL_CAP_INTMIT_PRESENT = 0,
+       HAL_CAP_INTMIT_ENABLE = 1,
+       HAL_CAP_INTMIT_NOISE_IMMUNITY_LEVEL = 2,
+       HAL_CAP_INTMIT_OFDM_WEAK_SIGNAL_LEVEL = 3,
+       HAL_CAP_INTMIT_CCK_WEAK_SIGNAL_THR = 4,
+       HAL_CAP_INTMIT_FIRSTEP_LEVEL = 5,
+       HAL_CAP_INTMIT_SPUR_IMMUNITY_LEVEL = 6
+} HAL_CAP_INTMIT_CMD;
+
+/*
  * Hardware Access Layer (HAL) API.
  *
  * Clients of the HAL call ath_hal_attach to obtain a reference to an

Modified: head/sys/dev/ath/ath_hal/ah_internal.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah_internal.h      Wed May 25 07:19:19 2011        
(r222276)
+++ head/sys/dev/ath/ath_hal/ah_internal.h      Wed May 25 07:34:49 2011        
(r222277)
@@ -418,23 +418,6 @@ extern     HAL_BOOL ath_hal_setTxQProps(stru
 extern HAL_BOOL ath_hal_getTxQProps(struct ath_hal *ah,
                HAL_TXQ_INFO *qInfo, const HAL_TX_QUEUE_INFO *qi);
 
-/*
- * Internal HAL ANI commands.
- *
- * These values represent the ANI commands passed to the ANI Control method
- * for AR5212, AR5416 and later chipsets.
- */
-typedef enum {
-       HAL_ANI_PRESENT = 0,                    /* is ANI support present */
-       HAL_ANI_NOISE_IMMUNITY_LEVEL = 1,       /* set level */
-       HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION = 2, /* enable/disable */
-       HAL_ANI_CCK_WEAK_SIGNAL_THR = 3,        /* enable/disable */
-       HAL_ANI_FIRSTEP_LEVEL = 4,              /* set level */
-       HAL_ANI_SPUR_IMMUNITY_LEVEL = 5,        /* set level */
-       HAL_ANI_MODE = 6,                       /* 0 => manual, 1 => auto (XXX 
do not change) */
-       HAL_ANI_PHYERR_RESET = 7,               /* reset phy error stats */
-} HAL_ANI_CMD;
-
 #define        HAL_SPUR_VAL_MASK               0x3FFF
 #define        HAL_SPUR_CHAN_WIDTH             87
 #define        HAL_BIN_WIDTH_BASE_100HZ        3125

Modified: head/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c       Wed May 25 07:19:19 
2011        (r222276)
+++ head/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c       Wed May 25 07:34:49 
2011        (r222277)
@@ -880,16 +880,16 @@ ar5212GetCapability(struct ath_hal *ah, 
                return HAL_OK;
        case HAL_CAP_INTMIT:            /* interference mitigation */
                switch (capability) {
-               case 0:                 /* hardware capability */
+               case HAL_CAP_INTMIT_PRESENT:            /* hardware capability 
*/
                        return HAL_OK;
-               case 1:
+               case HAL_CAP_INTMIT_ENABLE:
                        return (ahp->ah_procPhyErr & HAL_ANI_ENA) ?
                                HAL_OK : HAL_ENXIO;
-               case 2:                 /* HAL_ANI_NOISE_IMMUNITY_LEVEL */
-               case 3:                 /* HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION */
-               case 4:                 /* HAL_ANI_CCK_WEAK_SIGNAL_THR */
-               case 5:                 /* HAL_ANI_FIRSTEP_LEVEL */
-               case 6:                 /* HAL_ANI_SPUR_IMMUNITY_LEVEL */
+               case HAL_CAP_INTMIT_NOISE_IMMUNITY_LEVEL:
+               case HAL_CAP_INTMIT_OFDM_WEAK_SIGNAL_LEVEL:
+               case HAL_CAP_INTMIT_CCK_WEAK_SIGNAL_THR:
+               case HAL_CAP_INTMIT_FIRSTEP_LEVEL:
+               case HAL_CAP_INTMIT_SPUR_IMMUNITY_LEVEL:
                        ani = ar5212AniGetCurrentState(ah);
                        if (ani == AH_NULL)
                                return HAL_ENXIO;
@@ -980,6 +980,8 @@ ar5212SetCapability(struct ath_hal *ah, 
                OS_REG_WRITE(ah, AR_TPC, ahp->ah_macTPC);
                return AH_TRUE;
        case HAL_CAP_INTMIT: {          /* interference mitigation */
+               /* This maps the public ANI commands to the internal ANI 
commands */
+               /* Private: HAL_ANI_CMD; Public: HAL_CAP_INTMIT_CMD */
                static const HAL_ANI_CMD cmds[] = {
                        HAL_ANI_PRESENT,
                        HAL_ANI_MODE,

Modified: head/sys/dev/ath/if_athvar.h
==============================================================================
--- head/sys/dev/ath/if_athvar.h        Wed May 25 07:19:19 2011        
(r222276)
+++ head/sys/dev/ath/if_athvar.h        Wed May 25 07:34:49 2011        
(r222277)
@@ -634,11 +634,11 @@ void      ath_intr(void *);
 #define        ath_hal_settpcts(_ah, _tpcts) \
        ath_hal_setcapability(_ah, HAL_CAP_TPC_CTS, 0, _tpcts, NULL)
 #define        ath_hal_hasintmit(_ah) \
-       (ath_hal_getcapability(_ah, HAL_CAP_INTMIT, 0, NULL) == HAL_OK)
+       (ath_hal_getcapability(_ah, HAL_CAP_INTMIT, HAL_CAP_INTMIT_PRESENT, 
NULL) == HAL_OK)
 #define        ath_hal_getintmit(_ah) \
-       (ath_hal_getcapability(_ah, HAL_CAP_INTMIT, 1, NULL) == HAL_OK)
+       (ath_hal_getcapability(_ah, HAL_CAP_INTMIT, HAL_CAP_INTMIT_ENABLE, 
NULL) == HAL_OK)
 #define        ath_hal_setintmit(_ah, _v) \
-       ath_hal_setcapability(_ah, HAL_CAP_INTMIT, 1, _v, NULL)
+       ath_hal_setcapability(_ah, HAL_CAP_INTMIT, HAL_CAP_INTMIT_ENABLE, _v, 
NULL)
 #define        ath_hal_getchannoise(_ah, _c) \
        ((*(_ah)->ah_getChanNoise)((_ah), (_c)))
 #define        ath_hal_getrxchainmask(_ah, _prxchainmask) \
_______________________________________________
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