aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/hw.h
diff options
context:
space:
mode:
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