]> err.no Git - linux-2.6/blobdiff - drivers/net/wireless/ath9k/ath9k.h
ath9k: work around gcc ICEs (again)
[linux-2.6] / drivers / net / wireless / ath9k / ath9k.h
index dc1da64d2d7c31f6ce0ecaace3968537171d0266..d1b0fbae5a3201e524dcdf3a1fd5acb8aa32e49c 100644 (file)
@@ -147,94 +147,108 @@ struct ath_desc {
 
 #define ATH9K_RXDESC_INTREQ            0x0020
 
-enum hal_capability_type {
-       HAL_CAP_CIPHER = 0,
-       HAL_CAP_TKIP_MIC,
-       HAL_CAP_TKIP_SPLIT,
-       HAL_CAP_PHYCOUNTERS,
-       HAL_CAP_DIVERSITY,
-       HAL_CAP_PSPOLL,
-       HAL_CAP_TXPOW,
-       HAL_CAP_PHYDIAG,
-       HAL_CAP_MCAST_KEYSRCH,
-       HAL_CAP_TSF_ADJUST,
-       HAL_CAP_WME_TKIPMIC,
-       HAL_CAP_RFSILENT,
-       HAL_CAP_ANT_CFG_2GHZ,
-       HAL_CAP_ANT_CFG_5GHZ
-};
-
-struct hal_capabilities {
-       u32 halChanSpreadSupport:1,
-               halChapTuningSupport:1,
-               halMicAesCcmSupport:1,
-               halMicCkipSupport:1,
-               halMicTkipSupport:1,
-               halCipherAesCcmSupport:1,
-               halCipherCkipSupport:1,
-               halCipherTkipSupport:1,
-               halVEOLSupport:1,
-               halBssIdMaskSupport:1,
-               halMcastKeySrchSupport:1,
-               halTsfAddSupport:1,
-               halChanHalfRate:1,
-               halChanQuarterRate:1,
-               halHTSupport:1,
-               halGTTSupport:1,
-               halFastCCSupport:1,
-               halRfSilentSupport:1,
-               halWowSupport:1,
-               halCSTSupport:1,
-               halEnhancedPmSupport:1,
-               halAutoSleepSupport:1,
-               hal4kbSplitTransSupport:1,
-               halWowMatchPatternExact:1;
-       u32 halWirelessModes;
-       u16 halTotalQueues;
-       u16 halKeyCacheSize;
-       u16 halLow5GhzChan, halHigh5GhzChan;
-       u16 halLow2GhzChan, halHigh2GhzChan;
-       u16 halNumMRRetries;
-       u16 halRtsAggrLimit;
-       u8 halTxChainMask;
-       u8 halRxChainMask;
-       u16 halTxTrigLevelMax;
-       u16 halRegCap;
-       u8 halNumGpioPins;
-       u8 halNumAntCfg2GHz;
-       u8 halNumAntCfg5GHz;
-};
-
-struct hal_ops_config {
-       int ath_hal_dma_beacon_response_time;
-       int ath_hal_sw_beacon_response_time;
-       int ath_hal_additional_swba_backoff;
-       int ath_hal_6mb_ack;
-       int ath_hal_cwmIgnoreExtCCA;
-       u8 ath_hal_pciePowerSaveEnable;
-       u8 ath_hal_pcieL1SKPEnable;
-       u8 ath_hal_pcieClockReq;
-       u32 ath_hal_pcieWaen;
-       int ath_hal_pciePowerReset;
-       u8 ath_hal_pcieRestore;
-       u8 ath_hal_analogShiftReg;
-       u8 ath_hal_htEnable;
-       u32 ath_hal_ofdmTrigLow;
-       u32 ath_hal_ofdmTrigHigh;
-       u32 ath_hal_cckTrigHigh;
-       u32 ath_hal_cckTrigLow;
-       u32 ath_hal_enableANI;
-       u8 ath_hal_noiseImmunityLvl;
-       u32 ath_hal_ofdmWeakSigDet;
-       u32 ath_hal_cckWeakSigThr;
-       u8 ath_hal_spurImmunityLvl;
-       u8 ath_hal_firStepLvl;
-       int8_t ath_hal_rssiThrHigh;
-       int8_t ath_hal_rssiThrLow;
-       u16 ath_hal_diversityControl;
-       u16 ath_hal_antennaSwitchSwap;
-       int ath_hal_serializeRegMode;
-       int ath_hal_intrMitigation;
+enum wireless_mode {
+       ATH9K_MODE_11A = 0,
+       ATH9K_MODE_11B = 2,
+       ATH9K_MODE_11G = 3,
+       ATH9K_MODE_11NA_HT20 = 6,
+       ATH9K_MODE_11NG_HT20 = 7,
+       ATH9K_MODE_11NA_HT40PLUS = 8,
+       ATH9K_MODE_11NA_HT40MINUS = 9,
+       ATH9K_MODE_11NG_HT40PLUS = 10,
+       ATH9K_MODE_11NG_HT40MINUS = 11,
+       ATH9K_MODE_MAX
+};
+
+enum ath9k_hw_caps {
+       ATH9K_HW_CAP_CHAN_SPREAD                = BIT(0),
+       ATH9K_HW_CAP_MIC_AESCCM                 = BIT(1),
+       ATH9K_HW_CAP_MIC_CKIP                   = BIT(2),
+       ATH9K_HW_CAP_MIC_TKIP                   = BIT(3),
+       ATH9K_HW_CAP_CIPHER_AESCCM              = BIT(4),
+       ATH9K_HW_CAP_CIPHER_CKIP                = BIT(5),
+       ATH9K_HW_CAP_CIPHER_TKIP                = BIT(6),
+       ATH9K_HW_CAP_VEOL                       = BIT(7),
+       ATH9K_HW_CAP_BSSIDMASK                  = BIT(8),
+       ATH9K_HW_CAP_MCAST_KEYSEARCH            = BIT(9),
+       ATH9K_HW_CAP_CHAN_HALFRATE              = BIT(10),
+       ATH9K_HW_CAP_CHAN_QUARTERRATE           = BIT(11),
+       ATH9K_HW_CAP_HT                         = BIT(12),
+       ATH9K_HW_CAP_GTT                        = BIT(13),
+       ATH9K_HW_CAP_FASTCC                     = BIT(14),
+       ATH9K_HW_CAP_RFSILENT                   = BIT(15),
+       ATH9K_HW_CAP_WOW                        = BIT(16),
+       ATH9K_HW_CAP_CST                        = BIT(17),
+       ATH9K_HW_CAP_ENHANCEDPM                 = BIT(18),
+       ATH9K_HW_CAP_AUTOSLEEP                  = BIT(19),
+       ATH9K_HW_CAP_4KB_SPLITTRANS             = BIT(20),
+       ATH9K_HW_CAP_WOW_MATCHPATTERN_EXACT     = BIT(21),
+};
+
+enum ath9k_capability_type {
+       ATH9K_CAP_CIPHER = 0,
+       ATH9K_CAP_TKIP_MIC,
+       ATH9K_CAP_TKIP_SPLIT,
+       ATH9K_CAP_PHYCOUNTERS,
+       ATH9K_CAP_DIVERSITY,
+       ATH9K_CAP_TXPOW,
+       ATH9K_CAP_PHYDIAG,
+       ATH9K_CAP_MCAST_KEYSRCH,
+       ATH9K_CAP_TSF_ADJUST,
+       ATH9K_CAP_WME_TKIPMIC,
+       ATH9K_CAP_RFSILENT,
+       ATH9K_CAP_ANT_CFG_2GHZ,
+       ATH9K_CAP_ANT_CFG_5GHZ
+};
+
+struct ath9k_hw_capabilities {
+       u32 hw_caps; /* ATH9K_HW_CAP_* from ath9k_hw_caps */
+       DECLARE_BITMAP(wireless_modes, ATH9K_MODE_MAX); /* ATH9K_MODE_* */
+       u16 total_queues;
+       u16 keycache_size;
+       u16 low_5ghz_chan, high_5ghz_chan;
+       u16 low_2ghz_chan, high_2ghz_chan;
+       u16 num_mr_retries;
+       u16 rts_aggr_limit;
+       u8 tx_chainmask;
+       u8 rx_chainmask;
+       u16 tx_triglevel_max;
+       u16 reg_cap;
+       u8 num_gpio_pins;
+       u8 num_antcfg_2ghz;
+       u8 num_antcfg_5ghz;
+};
+
+struct ath9k_ops_config {
+       int dma_beacon_response_time;
+       int sw_beacon_response_time;
+       int additional_swba_backoff;
+       int ack_6mb;
+       int cwm_ignore_extcca;
+       u8 pcie_powersave_enable;
+       u8 pcie_l1skp_enable;
+       u8 pcie_clock_req;
+       u32 pcie_waen;
+       int pcie_power_reset;
+       u8 pcie_restore;
+       u8 analog_shiftreg;
+       u8 ht_enable;
+       u32 ofdm_trig_low;
+       u32 ofdm_trig_high;
+       u32 cck_trig_high;
+       u32 cck_trig_low;
+       u32 enable_ani;
+       u8 noise_immunity_level;
+       u32 ofdm_weaksignal_det;
+       u32 cck_weaksignal_thr;
+       u8 spur_immunity_level;
+       u8 firstep_level;
+       int8_t rssi_thr_high;
+       int8_t rssi_thr_low;
+       u16 diversity_control;
+       u16 antenna_switch_swap;
+       int serialize_regmode;
+       int intr_mitigation;
 #define SPUR_DISABLE           0
 #define SPUR_ENABLE_IOCTL      1
 #define SPUR_ENABLE_EEPROM     2
@@ -246,8 +260,8 @@ struct hal_ops_config {
 #define AR_BASE_FREQ_5GHZ      4900
 #define AR_SPUR_FEEQ_BOUND_HT40 19
 #define AR_SPUR_FEEQ_BOUND_HT20 10
-       int ath_hal_spurMode;
-       u16 ath_hal_spurChans[AR_EEPROM_MODAL_SPURS][2];
+       int spurmode;
+       u16 spurchans[AR_EEPROM_MODAL_SPURS][2];
 };
 
 enum ath9k_tx_queue {
@@ -281,23 +295,6 @@ enum ath9k_tx_queue_flags {
        TXQ_FLAG_FRAG_BURST_BACKOFF_ENABLE = 0x0080,
 };
 
-struct ath9k_txq_info {
-       u32 tqi_ver;
-       enum ath9k_tx_queue_subtype tqi_subtype;
-       enum ath9k_tx_queue_flags tqi_qflags;
-       u32 tqi_priority;
-       u32 tqi_aifs;
-       u32 tqi_cwmin;
-       u32 tqi_cwmax;
-       u16 tqi_shretry;
-       u16 tqi_lgretry;
-       u32 tqi_cbrPeriod;
-       u32 tqi_cbrOverflowLimit;
-       u32 tqi_burstTime;
-       u32 tqi_readyTime;
-       u32 tqi_compBuf;
-};
-
 #define ATH9K_TXQ_USEDEFAULT ((u32) -1)
 
 #define ATH9K_DECOMP_MASK_SIZE     128
@@ -650,11 +647,6 @@ enum ath9k_power_mode {
        ATH9K_PM_UNDEFINED
 };
 
-#define HAL_ANTENNA_MIN_MODE  0
-#define HAL_ANTENNA_FIXED_A   1
-#define HAL_ANTENNA_FIXED_B   2
-#define HAL_ANTENNA_MAX_MODE  3
-
 struct ath9k_mib_stats {
        u32 ackrcv_bad;
        u32 rts_bad;
@@ -695,11 +687,6 @@ struct ath9k_ht_cwm {
        enum ath9k_ht_extprotspacing ht_extprotspacing;
 };
 
-enum hal_freq_band {
-       HAL_FREQ_BAND_5GHZ = 0,
-       HAL_FREQ_BAND_2GHZ = 1,
-};
-
 enum ath9k_ani_cmd {
        ATH9K_ANI_PRESENT = 0x1,
        ATH9K_ANI_NOISE_IMMUNITY_LEVEL = 0x2,
@@ -717,7 +704,6 @@ enum phytype {
        PHY_FH,
        PHY_OFDM,
        PHY_HT,
-       PHY_MAX
 };
 #define PHY_CCK PHY_DS
 
@@ -815,8 +801,8 @@ struct ath_hal {
        u8 ah_decompMask[ATH9K_DECOMP_MASK_SIZE];
        u32 ah_flags;
        enum ath9k_opmode ah_opmode;
-       struct hal_ops_config ah_config;
-       struct hal_capabilities ah_caps;
+       struct ath9k_ops_config ah_config;
+       struct ath9k_hw_capabilities ah_caps;
        int16_t ah_powerLimit;
        u16 ah_maxPowerLevel;
        u32 ah_tpScale;
@@ -840,37 +826,6 @@ struct ath_hal {
 #endif
 };
 
-enum wireless_mode {
-       WIRELESS_MODE_11a = 0,
-       WIRELESS_MODE_11b = 2,
-       WIRELESS_MODE_11g = 3,
-       WIRELESS_MODE_11NA_HT20 = 6,
-       WIRELESS_MODE_11NG_HT20 = 7,
-       WIRELESS_MODE_11NA_HT40PLUS = 8,
-       WIRELESS_MODE_11NA_HT40MINUS = 9,
-       WIRELESS_MODE_11NG_HT40PLUS = 10,
-       WIRELESS_MODE_11NG_HT40MINUS = 11,
-       WIRELESS_MODE_MAX
-};
-
-enum {
-       ATH9K_MODE_SEL_11A = 0x00001,
-       ATH9K_MODE_SEL_11B = 0x00002,
-       ATH9K_MODE_SEL_11G = 0x00004,
-       ATH9K_MODE_SEL_11NG_HT20 = 0x00008,
-       ATH9K_MODE_SEL_11NA_HT20 = 0x00010,
-       ATH9K_MODE_SEL_11NG_HT40PLUS = 0x00020,
-       ATH9K_MODE_SEL_11NG_HT40MINUS = 0x00040,
-       ATH9K_MODE_SEL_11NA_HT40PLUS = 0x00080,
-       ATH9K_MODE_SEL_11NA_HT40MINUS = 0x00100,
-       ATH9K_MODE_SEL_2GHZ = (ATH9K_MODE_SEL_11B |
-                              ATH9K_MODE_SEL_11G |
-                              ATH9K_MODE_SEL_11NG_HT20),
-       ATH9K_MODE_SEL_5GHZ = (ATH9K_MODE_SEL_11A |
-                              ATH9K_MODE_SEL_11NA_HT20),
-       ATH9K_MODE_SEL_ALL = 0xffffffff
-};
-
 struct chan_centers {
        u16 synth_center;
        u16 ctl_center;
@@ -878,7 +833,7 @@ struct chan_centers {
 };
 
 int ath_hal_getcapability(struct ath_hal *ah,
-                         enum hal_capability_type type,
+                         enum ath9k_capability_type type,
                          u32 capability,
                          u32 *result);
 const struct ath9k_rate_table *ath9k_hw_getratetable(struct ath_hal *ah,
@@ -892,7 +847,7 @@ bool ath9k_regd_init_channels(struct ath_hal *ah,
                              u32 maxchans, u32 *nchans,
                              u8 *regclassids,
                              u32 maxregids, u32 *nregids,
-                             u16 cc, u32 modeSelect,
+                             u16 cc,
                              bool enableOutdoor,
                              bool enableExtendedChannels);
 u32 ath9k_hw_mhz2ieee(struct ath_hal *ah, u32 freq, u32 flags);
@@ -947,11 +902,11 @@ void ath9k_hw_set11nmac2040(struct ath_hal *ah, enum ath9k_ht_macmode mode);
 bool ath9k_hw_phycounters(struct ath_hal *ah);
 bool ath9k_hw_keyreset(struct ath_hal *ah, u16 entry);
 bool ath9k_hw_getcapability(struct ath_hal *ah,
-                           enum hal_capability_type type,
+                           enum ath9k_capability_type type,
                            u32 capability,
                            u32 *result);
 bool ath9k_hw_setcapability(struct ath_hal *ah,
-                           enum hal_capability_type type,
+                           enum ath9k_capability_type type,
                            u32 capability,
                            u32 setting,
                            int *status);
@@ -998,10 +953,10 @@ u32 ath9k_regd_get_ctl(struct ath_hal *ah, struct ath9k_channel *chan);
 u32 ath9k_regd_get_antenna_allowed(struct ath_hal *ah,
                                     struct ath9k_channel *chan);
 u32 ath9k_hw_mhz2ieee(struct ath_hal *ah, u32 freq, u32 flags);
-bool ath9k_hw_gettxqueueprops(struct ath_hal *ah, int q,
-                             struct ath9k_txq_info *qInfo);
-bool ath9k_hw_settxqueueprops(struct ath_hal *ah, int q,
-                             const struct ath9k_txq_info *qInfo);
+bool ath9k_hw_get_txq_props(struct ath_hal *ah, int q,
+                           struct ath9k_tx_queue_info *qinfo);
+bool ath9k_hw_set_txq_props(struct ath_hal *ah, int q,
+                           const struct ath9k_tx_queue_info *qinfo);
 struct ath9k_channel *ath9k_regd_check_channel(struct ath_hal *ah,
                                              const struct ath9k_channel *c);
 void ath9k_hw_set11n_txdesc(struct ath_hal *ah, struct ath_desc *ds,
@@ -1052,7 +1007,7 @@ void ath9k_hw_set11n_virtualmorefrag(struct ath_hal *ah,
 bool ath9k_hw_set_txpowerlimit(struct ath_hal *ah, u32 limit);
 bool ath9k_regd_is_public_safety_sku(struct ath_hal *ah);
 int ath9k_hw_setuptxqueue(struct ath_hal *ah, enum ath9k_tx_queue type,
-                         const struct ath9k_txq_info *qInfo);
+                         const struct ath9k_tx_queue_info *qinfo);
 u32 ath9k_hw_numtxpending(struct ath_hal *ah, u32 q);
 const char *ath9k_hw_probe(u16 vendorid, u16 devid);
 bool ath9k_hw_disable(struct ath_hal *ah);