aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-4965.h
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2008-01-28 07:07:26 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-02-29 15:19:19 -0500
commit0c11b4de5d81771ba0fdc8a5d13d59ed01d41252 (patch)
tree26bcbf8828bb0351a2939c7b07d113fb80ef3012 /drivers/net/wireless/iwlwifi/iwl-4965.h
parent995564382f9d177214b6ec64db6b9109d4cd41dd (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.h54
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);
783extern int iwl4965_check_empty_hw_queue(struct iwl4965_priv *priv, int sta_id, 783extern 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
786extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid);
787extern 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
837struct 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 */
851struct 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
864struct iwl4965_lq_mngr { 820struct 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
1274static inline int iwl4965_is_associated(struct iwl4965_priv *priv) 1222static inline int iwl4965_is_associated(struct iwl4965_priv *priv)
1275{ 1223{