diff options
author | Ron Rindjunsky <ron.rindjunsky@intel.com> | 2008-01-28 07:07:24 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-02-29 15:19:18 -0500 |
commit | fe01b477bbd23e69c3bdc6bce5be510ddad8297d (patch) | |
tree | 353471f96adb7580b7940c3b7cf6df4f8f0044a2 /drivers/net/wireless/iwlwifi/iwl-4965.h | |
parent | 8114fcf185c58b23dc9fcaf4944b59b4c1407b39 (diff) |
iwlwifi: A-MPDU Tx conform flows to mac80211
This patch alters the current iwlwifi behavior to fit the flows introduced
by the mac80211, mainly queues handling and start/stop call backs flows
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 | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.h b/drivers/net/wireless/iwlwifi/iwl-4965.h index 4992b8a06367..47c7f3ffe369 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.h +++ b/drivers/net/wireless/iwlwifi/iwl-4965.h | |||
@@ -433,7 +433,6 @@ struct iwl4965_rx_queue { | |||
433 | #define IWL_INVALID_VALUE -1 | 433 | #define IWL_INVALID_VALUE -1 |
434 | 434 | ||
435 | #ifdef CONFIG_IWL4965_HT | 435 | #ifdef CONFIG_IWL4965_HT |
436 | #ifdef CONFIG_IWL4965_HT_AGG | ||
437 | /** | 436 | /** |
438 | * struct iwl4965_ht_agg -- aggregation status while waiting for block-ack | 437 | * struct iwl4965_ht_agg -- aggregation status while waiting for block-ack |
439 | * @txq_id: Tx queue used for Tx attempt | 438 | * @txq_id: Tx queue used for Tx attempt |
@@ -453,19 +452,22 @@ struct iwl4965_ht_agg { | |||
453 | u16 frame_count; | 452 | u16 frame_count; |
454 | u16 wait_for_ba; | 453 | u16 wait_for_ba; |
455 | u16 start_idx; | 454 | u16 start_idx; |
456 | u32 bitmap0; | 455 | u64 bitmap; |
457 | u32 bitmap1; | ||
458 | u32 rate_n_flags; | 456 | u32 rate_n_flags; |
457 | #define IWL_AGG_OFF 0 | ||
458 | #define IWL_AGG_ON 1 | ||
459 | #define IWL_EMPTYING_HW_QUEUE_ADDBA 2 | ||
460 | #define IWL_EMPTYING_HW_QUEUE_DELBA 3 | ||
461 | u8 state; | ||
459 | }; | 462 | }; |
460 | #endif /* CONFIG_IWL4965_HT_AGG */ | 463 | |
461 | #endif /* CONFIG_IWL4965_HT */ | 464 | #endif /* CONFIG_IWL4965_HT */ |
462 | 465 | ||
463 | struct iwl4965_tid_data { | 466 | struct iwl4965_tid_data { |
464 | u16 seq_number; | 467 | u16 seq_number; |
468 | u16 tfds_in_queue; | ||
465 | #ifdef CONFIG_IWL4965_HT | 469 | #ifdef CONFIG_IWL4965_HT |
466 | #ifdef CONFIG_IWL4965_HT_AGG | ||
467 | struct iwl4965_ht_agg agg; | 470 | struct iwl4965_ht_agg agg; |
468 | #endif /* CONFIG_IWL4965_HT_AGG */ | ||
469 | #endif /* CONFIG_IWL4965_HT */ | 471 | #endif /* CONFIG_IWL4965_HT */ |
470 | }; | 472 | }; |
471 | 473 | ||
@@ -743,7 +745,7 @@ extern u8 iwl4965_hw_find_station(struct iwl4965_priv *priv, const u8 *bssid); | |||
743 | 745 | ||
744 | extern int iwl4965_hw_channel_switch(struct iwl4965_priv *priv, u16 channel); | 746 | extern int iwl4965_hw_channel_switch(struct iwl4965_priv *priv, u16 channel); |
745 | extern int iwl4965_tx_queue_reclaim(struct iwl4965_priv *priv, int txq_id, int index); | 747 | extern int iwl4965_tx_queue_reclaim(struct iwl4965_priv *priv, int txq_id, int index); |
746 | 748 | extern int iwl4965_queue_space(const struct iwl4965_queue *q); | |
747 | struct iwl4965_priv; | 749 | struct iwl4965_priv; |
748 | 750 | ||
749 | /* | 751 | /* |
@@ -778,6 +780,8 @@ extern void iwl4965_set_ht_add_station(struct iwl4965_priv *priv, u8 index, | |||
778 | extern int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, | 780 | extern int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, |
779 | enum ieee80211_ampdu_mlme_action action, | 781 | enum ieee80211_ampdu_mlme_action action, |
780 | 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, | ||
784 | u8 tid, int txq_id); | ||
781 | #ifdef CONFIG_IWL4965_HT_AGG | 785 | #ifdef CONFIG_IWL4965_HT_AGG |
782 | extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid); | 786 | extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid); |
783 | extern void iwl4965_tl_get_stats(struct iwl4965_priv *priv, | 787 | extern void iwl4965_tl_get_stats(struct iwl4965_priv *priv, |
@@ -855,7 +859,7 @@ struct iwl4965_agg_control { | |||
855 | u32 ba_timeout; | 859 | u32 ba_timeout; |
856 | struct iwl4965_traffic_load traffic_load[TID_MAX_LOAD_COUNT]; | 860 | struct iwl4965_traffic_load traffic_load[TID_MAX_LOAD_COUNT]; |
857 | }; | 861 | }; |
858 | #endif /*CONFIG_IWL4965_HT_AGG */ | 862 | #endif /*CONFIG_IWL4965_HT_AGG */ |
859 | 863 | ||
860 | struct iwl4965_lq_mngr { | 864 | struct iwl4965_lq_mngr { |
861 | #ifdef CONFIG_IWL4965_HT_AGG | 865 | #ifdef CONFIG_IWL4965_HT_AGG |