diff options
author | Ron Rindjunsky <ron.rindjunsky@intel.com> | 2008-01-28 07:07:26 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-02-29 15:19:19 -0500 |
commit | 0c11b4de5d81771ba0fdc8a5d13d59ed01d41252 (patch) | |
tree | 26bcbf8828bb0351a2939c7b07d113fb80ef3012 /drivers/net/wireless/iwlwifi/iwl-4965.h | |
parent | 995564382f9d177214b6ec64db6b9109d4cd41dd (diff) |
iwlwifi: A-MPDU Tx activation by load measures
This patch gives a heuristic for activation of the A-MPDU Tx.
As the rate scaling is rate aware, it now also measures estimated load, and
sends A-MPDU activation after a threshold has been met.
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.h | 54 |
1 files changed, 1 insertions, 53 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.h b/drivers/net/wireless/iwlwifi/iwl-4965.h index 47c7f3ffe36..de5c1bf8fc4 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.h +++ b/drivers/net/wireless/iwlwifi/iwl-4965.h | |||
@@ -782,11 +782,6 @@ extern int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, | |||
782 | const u8 *addr, u16 tid, u16 *ssn); | 782 | const u8 *addr, u16 tid, u16 *ssn); |
783 | extern int iwl4965_check_empty_hw_queue(struct iwl4965_priv *priv, int sta_id, | 783 | extern int iwl4965_check_empty_hw_queue(struct iwl4965_priv *priv, int sta_id, |
784 | u8 tid, int txq_id); | 784 | u8 tid, int txq_id); |
785 | #ifdef CONFIG_IWL4965_HT_AGG | ||
786 | extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid); | ||
787 | extern void iwl4965_tl_get_stats(struct iwl4965_priv *priv, | ||
788 | struct ieee80211_hdr *hdr); | ||
789 | #endif /* CONFIG_IWL4965_HT_AGG */ | ||
790 | #endif /*CONFIG_IWL4965_HT */ | 785 | #endif /*CONFIG_IWL4965_HT */ |
791 | /* Structures, enum, and defines specific to the 4965 */ | 786 | /* Structures, enum, and defines specific to the 4965 */ |
792 | 787 | ||
@@ -798,18 +793,6 @@ struct iwl4965_kw { | |||
798 | size_t size; | 793 | size_t size; |
799 | }; | 794 | }; |
800 | 795 | ||
801 | #define TID_QUEUE_CELL_SPACING 50 /*mS */ | ||
802 | #define TID_QUEUE_MAX_SIZE 20 | ||
803 | #define TID_ROUND_VALUE 5 /* mS */ | ||
804 | #define TID_MAX_LOAD_COUNT 8 | ||
805 | |||
806 | #define TID_MAX_TIME_DIFF ((TID_QUEUE_MAX_SIZE - 1) * TID_QUEUE_CELL_SPACING) | ||
807 | #define TIME_WRAP_AROUND(x, y) (((y) > (x)) ? (y) - (x) : (0-(x)) + (y)) | ||
808 | |||
809 | #define TID_ALL_ENABLED 0x7f | ||
810 | #define TID_ALL_SPECIFIED 0xff | ||
811 | #define TID_AGG_TPT_THREHOLD 0x0 | ||
812 | |||
813 | #define IWL_CHANNEL_WIDTH_20MHZ 0 | 796 | #define IWL_CHANNEL_WIDTH_20MHZ 0 |
814 | #define IWL_CHANNEL_WIDTH_40MHZ 1 | 797 | #define IWL_CHANNEL_WIDTH_40MHZ 1 |
815 | 798 | ||
@@ -834,37 +817,7 @@ struct iwl4965_kw { | |||
834 | 817 | ||
835 | #define TX_POWER_IWL_ILLEGAL_VOLTAGE -10000 | 818 | #define TX_POWER_IWL_ILLEGAL_VOLTAGE -10000 |
836 | 819 | ||
837 | struct iwl4965_traffic_load { | ||
838 | unsigned long time_stamp; | ||
839 | u32 packet_count[TID_QUEUE_MAX_SIZE]; | ||
840 | u8 queue_count; | ||
841 | u8 head; | ||
842 | u32 total; | ||
843 | }; | ||
844 | |||
845 | #ifdef CONFIG_IWL4965_HT_AGG | ||
846 | /** | ||
847 | * struct iwl4965_agg_control | ||
848 | * @requested_ba: bit map of tids requesting aggregation/block-ack | ||
849 | * @granted_ba: bit map of tids granted aggregation/block-ack | ||
850 | */ | ||
851 | struct iwl4965_agg_control { | ||
852 | unsigned long next_retry; | ||
853 | u32 wait_for_agg_status; | ||
854 | u32 tid_retry; | ||
855 | u32 requested_ba; | ||
856 | u32 granted_ba; | ||
857 | u8 auto_agg; | ||
858 | u32 tid_traffic_load_threshold; | ||
859 | u32 ba_timeout; | ||
860 | struct iwl4965_traffic_load traffic_load[TID_MAX_LOAD_COUNT]; | ||
861 | }; | ||
862 | #endif /*CONFIG_IWL4965_HT_AGG */ | ||
863 | |||
864 | struct iwl4965_lq_mngr { | 820 | struct iwl4965_lq_mngr { |
865 | #ifdef CONFIG_IWL4965_HT_AGG | ||
866 | struct iwl4965_agg_control agg_ctrl; | ||
867 | #endif | ||
868 | spinlock_t lock; | 821 | spinlock_t lock; |
869 | s32 max_window_size; | 822 | s32 max_window_size; |
870 | s32 *expected_tpt; | 823 | s32 *expected_tpt; |
@@ -877,7 +830,6 @@ struct iwl4965_lq_mngr { | |||
877 | u8 lq_ready; | 830 | u8 lq_ready; |
878 | }; | 831 | }; |
879 | 832 | ||
880 | |||
881 | /* Sensitivity and chain noise calibration */ | 833 | /* Sensitivity and chain noise calibration */ |
882 | #define INTERFERENCE_DATA_AVAILABLE __constant_cpu_to_le32(1) | 834 | #define INTERFERENCE_DATA_AVAILABLE __constant_cpu_to_le32(1) |
883 | #define INITIALIZATION_VALUE 0xFFFF | 835 | #define INITIALIZATION_VALUE 0xFFFF |
@@ -1265,11 +1217,7 @@ struct iwl4965_priv { | |||
1265 | #endif | 1217 | #endif |
1266 | struct work_struct statistics_work; | 1218 | struct work_struct statistics_work; |
1267 | struct timer_list statistics_periodic; | 1219 | struct timer_list statistics_periodic; |
1268 | 1220 | }; /*iwl4965_priv */ | |
1269 | #ifdef CONFIG_IWL4965_HT_AGG | ||
1270 | struct work_struct agg_work; | ||
1271 | #endif | ||
1272 | }; /*iwl4965_priv */ | ||
1273 | 1221 | ||
1274 | static inline int iwl4965_is_associated(struct iwl4965_priv *priv) | 1222 | static inline int iwl4965_is_associated(struct iwl4965_priv *priv) |
1275 | { | 1223 | { |