aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/hw.h
diff options
context:
space:
mode:
authorLuis R. Rodriguez <lrodriguez@atheros.com>2010-06-12 00:33:42 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-14 15:39:29 -0400
commitac0bb76791ce2550e3c0a658408c344e1e231e3d (patch)
tree7f262333e3663d7fbe3a23b4383e58ba1e5e5850 /drivers/net/wireless/ath/ath9k/hw.h
parent6e97f0fb4dc8e95cd7507f3ae89841a79bac0193 (diff)
ath9k_hw: allow for spliting up ANI operations by family
The AR9003 hardware family will use a slightly modified ANI implementation which has not yet been tested on the other hardware families. To allow for this new ANI implementation a few ANI calls need to be abstracted away. This patch just allows for each hardware family to declare their own ANI ops and annotates the current ANI implementation as old. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/hw.h')
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 3a28cdc1948..a207a70224c 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -511,6 +511,15 @@ struct ath_gen_timer_table {
511 * @setup_calibration: set up calibration 511 * @setup_calibration: set up calibration
512 * @iscal_supported: used to query if a type of calibration is supported 512 * @iscal_supported: used to query if a type of calibration is supported
513 * @loadnf: load noise floor read from each chain on the CCA registers 513 * @loadnf: load noise floor read from each chain on the CCA registers
514 *
515 * @ani_reset: reset ANI parameters to default values
516 * @ani_lower_immunity: lower the noise immunity level. The level controls
517 * the power-based packet detection on hardware. If a power jump is
518 * detected the adapter takes it as an indication that a packet has
519 * arrived. The level ranges from 0-5. Each level corresponds to a
520 * few dB more of noise immunity. If you have a strong time-varying
521 * interference that is causing false detections (OFDM timing errors or
522 * CCK timing errors) the level can be increased.
514 */ 523 */
515struct ath_hw_private_ops { 524struct ath_hw_private_ops {
516 /* Calibration ops */ 525 /* Calibration ops */
@@ -554,6 +563,10 @@ struct ath_hw_private_ops {
554 int param); 563 int param);
555 void (*do_getnf)(struct ath_hw *ah, int16_t nfarray[NUM_NF_READINGS]); 564 void (*do_getnf)(struct ath_hw *ah, int16_t nfarray[NUM_NF_READINGS]);
556 void (*loadnf)(struct ath_hw *ah, struct ath9k_channel *chan); 565 void (*loadnf)(struct ath_hw *ah, struct ath9k_channel *chan);
566
567 /* ANI */
568 void (*ani_reset)(struct ath_hw *ah);
569 void (*ani_lower_immunity)(struct ath_hw *ah);
557}; 570};
558 571
559/** 572/**
@@ -564,6 +577,11 @@ struct ath_hw_private_ops {
564 * 577 *
565 * @config_pci_powersave: 578 * @config_pci_powersave:
566 * @calibrate: periodic calibration for NF, ANI, IQ, ADC gain, ADC-DC 579 * @calibrate: periodic calibration for NF, ANI, IQ, ADC gain, ADC-DC
580 *
581 * @ani_proc_mib_event: process MIB events, this would happen upon specific ANI
582 * thresholds being reached or having overflowed.
583 * @ani_monitor: called periodically by the core driver to collect
584 * MIB stats and adjust ANI if specific thresholds have been reached.
567 */ 585 */
568struct ath_hw_ops { 586struct ath_hw_ops {
569 void (*config_pci_powersave)(struct ath_hw *ah, 587 void (*config_pci_powersave)(struct ath_hw *ah,
@@ -604,6 +622,9 @@ struct ath_hw_ops {
604 u32 burstDuration); 622 u32 burstDuration);
605 void (*set11n_virtualmorefrag)(struct ath_hw *ah, void *ds, 623 void (*set11n_virtualmorefrag)(struct ath_hw *ah, void *ds,
606 u32 vmf); 624 u32 vmf);
625
626 void (*ani_proc_mib_event)(struct ath_hw *ah);
627 void (*ani_monitor)(struct ath_hw *ah, struct ath9k_channel *chan);
607}; 628};
608 629
609struct ath_hw { 630struct ath_hw {
@@ -934,6 +955,14 @@ void ar9003_hw_attach_calib_ops(struct ath_hw *ah);
934void ar9002_hw_attach_ops(struct ath_hw *ah); 955void ar9002_hw_attach_ops(struct ath_hw *ah);
935void ar9003_hw_attach_ops(struct ath_hw *ah); 956void ar9003_hw_attach_ops(struct ath_hw *ah);
936 957
958/*
959 * ANI work can be shared between all families but a next
960 * generation implementation of ANI will be used only for AR9003 only
961 * for now as the other families still need to be tested with the same
962 * next generation ANI.
963 */
964void ath9k_hw_attach_ani_ops_old(struct ath_hw *ah);
965
937#define ATH_PCIE_CAP_LINK_CTRL 0x70 966#define ATH_PCIE_CAP_LINK_CTRL 0x70
938#define ATH_PCIE_CAP_LINK_L0S 1 967#define ATH_PCIE_CAP_LINK_L0S 1
939#define ATH_PCIE_CAP_LINK_L1 2 968#define ATH_PCIE_CAP_LINK_L1 2