diff options
author | Ron Rindjunsky <ron.rindjunsky@intel.com> | 2008-01-28 07:07:23 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-02-29 15:19:18 -0500 |
commit | 8114fcf185c58b23dc9fcaf4944b59b4c1407b39 (patch) | |
tree | c6d57093a5ab9cbcf9795b965ce5723a94dd7f7b /drivers | |
parent | d92684e66091c0f0101819619b315b4bb8b5bcc5 (diff) |
iwlwifi: A-MPDU Tx conform API to mac80211
This patch alters the current API in order to fit the new
API mac80211 gives for A-MPDU Tx
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 77 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 4 |
3 files changed, 47 insertions, 38 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index cd4f5e383e60..3fc18dc311e9 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -4730,34 +4730,6 @@ static void iwl4965_sta_modify_del_ba_tid(struct iwl4965_priv *priv, | |||
4730 | iwl4965_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC); | 4730 | iwl4965_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC); |
4731 | } | 4731 | } |
4732 | 4732 | ||
4733 | int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, | ||
4734 | enum ieee80211_ampdu_mlme_action action, | ||
4735 | const u8 *addr, u16 tid, u16 *ssn) | ||
4736 | { | ||
4737 | struct iwl4965_priv *priv = hw->priv; | ||
4738 | int sta_id; | ||
4739 | DECLARE_MAC_BUF(mac); | ||
4740 | |||
4741 | IWL_DEBUG_HT("A-MPDU action on da=%s tid=%d ", | ||
4742 | print_mac(mac, addr), tid); | ||
4743 | sta_id = iwl4965_hw_find_station(priv, addr); | ||
4744 | switch (action) { | ||
4745 | case IEEE80211_AMPDU_RX_START: | ||
4746 | IWL_DEBUG_HT("start Rx\n"); | ||
4747 | iwl4965_sta_modify_add_ba_tid(priv, sta_id, tid, *ssn); | ||
4748 | break; | ||
4749 | case IEEE80211_AMPDU_RX_STOP: | ||
4750 | IWL_DEBUG_HT("stop Rx\n"); | ||
4751 | iwl4965_sta_modify_del_ba_tid(priv, sta_id, tid); | ||
4752 | break; | ||
4753 | default: | ||
4754 | IWL_DEBUG_HT("unknown\n"); | ||
4755 | return -EINVAL; | ||
4756 | break; | ||
4757 | } | ||
4758 | return 0; | ||
4759 | } | ||
4760 | |||
4761 | #ifdef CONFIG_IWL4965_HT_AGG | 4733 | #ifdef CONFIG_IWL4965_HT_AGG |
4762 | 4734 | ||
4763 | static const u16 default_tid_to_tx_fifo[] = { | 4735 | static const u16 default_tid_to_tx_fifo[] = { |
@@ -4848,8 +4820,7 @@ int iwl4965_mac_ht_tx_agg_start(struct ieee80211_hw *hw, u8 *da, u16 tid, | |||
4848 | } | 4820 | } |
4849 | 4821 | ||
4850 | 4822 | ||
4851 | int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, u8 *da, u16 tid, | 4823 | int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, u8 *da, u16 tid) |
4852 | int generator) | ||
4853 | { | 4824 | { |
4854 | 4825 | ||
4855 | struct iwl4965_priv *priv = hw->priv; | 4826 | struct iwl4965_priv *priv = hw->priv; |
@@ -4891,6 +4862,52 @@ int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, u8 *da, u16 tid, | |||
4891 | 4862 | ||
4892 | 4863 | ||
4893 | #endif /* CONFIG_IWL4965_HT_AGG */ | 4864 | #endif /* CONFIG_IWL4965_HT_AGG */ |
4865 | |||
4866 | int iwl4965_mac_ht_tx_agg_start(struct ieee80211_hw *hw, const u8 *da, u16 tid, | ||
4867 | u16 *start_seq_num) | ||
4868 | { | ||
4869 | return 0; | ||
4870 | } | ||
4871 | |||
4872 | int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, const u8 *da, u16 tid) | ||
4873 | { | ||
4874 | return 0; | ||
4875 | } | ||
4876 | |||
4877 | int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, | ||
4878 | enum ieee80211_ampdu_mlme_action action, | ||
4879 | const u8 *addr, u16 tid, u16 *ssn) | ||
4880 | { | ||
4881 | struct iwl4965_priv *priv = hw->priv; | ||
4882 | int sta_id; | ||
4883 | DECLARE_MAC_BUF(mac); | ||
4884 | |||
4885 | IWL_DEBUG_HT("A-MPDU action on da=%s tid=%d ", | ||
4886 | print_mac(mac, addr), tid); | ||
4887 | sta_id = iwl4965_hw_find_station(priv, addr); | ||
4888 | switch (action) { | ||
4889 | case IEEE80211_AMPDU_RX_START: | ||
4890 | IWL_DEBUG_HT("start Rx\n"); | ||
4891 | iwl4965_sta_modify_add_ba_tid(priv, sta_id, tid, *ssn); | ||
4892 | break; | ||
4893 | case IEEE80211_AMPDU_RX_STOP: | ||
4894 | IWL_DEBUG_HT("stop Rx\n"); | ||
4895 | iwl4965_sta_modify_del_ba_tid(priv, sta_id, tid); | ||
4896 | break; | ||
4897 | case IEEE80211_AMPDU_TX_START: | ||
4898 | IWL_DEBUG_HT("start Tx\n"); | ||
4899 | return iwl4965_mac_ht_tx_agg_start(hw, addr, tid, ssn); | ||
4900 | case IEEE80211_AMPDU_TX_STOP: | ||
4901 | IWL_DEBUG_HT("stop Tx\n"); | ||
4902 | return iwl4965_mac_ht_tx_agg_stop(hw, addr, tid); | ||
4903 | default: | ||
4904 | IWL_DEBUG_HT("unknown\n"); | ||
4905 | return -EINVAL; | ||
4906 | break; | ||
4907 | } | ||
4908 | return 0; | ||
4909 | } | ||
4910 | |||
4894 | #endif /* CONFIG_IWL4965_HT */ | 4911 | #endif /* CONFIG_IWL4965_HT */ |
4895 | 4912 | ||
4896 | /* Set up 4965-specific Rx frame reply handlers */ | 4913 | /* Set up 4965-specific Rx frame reply handlers */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.h b/drivers/net/wireless/iwlwifi/iwl-4965.h index 6edf869d4d54..4992b8a06367 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.h +++ b/drivers/net/wireless/iwlwifi/iwl-4965.h | |||
@@ -779,10 +779,6 @@ extern int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, | |||
779 | enum ieee80211_ampdu_mlme_action action, | 779 | enum ieee80211_ampdu_mlme_action action, |
780 | const u8 *addr, u16 tid, u16 *ssn); | 780 | const u8 *addr, u16 tid, u16 *ssn); |
781 | #ifdef CONFIG_IWL4965_HT_AGG | 781 | #ifdef CONFIG_IWL4965_HT_AGG |
782 | extern int iwl4965_mac_ht_tx_agg_start(struct ieee80211_hw *hw, u8 *da, | ||
783 | u16 tid, u16 *start_seq_num); | ||
784 | extern int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, u8 *da, | ||
785 | u16 tid, int generator); | ||
786 | extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid); | 782 | extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid); |
787 | extern void iwl4965_tl_get_stats(struct iwl4965_priv *priv, | 783 | extern void iwl4965_tl_get_stats(struct iwl4965_priv *priv, |
788 | struct ieee80211_hdr *hdr); | 784 | struct ieee80211_hdr *hdr); |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index a23d4798653b..3f5114f5fe16 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
@@ -9021,10 +9021,6 @@ static struct ieee80211_ops iwl4965_hw_ops = { | |||
9021 | #ifdef CONFIG_IWL4965_HT | 9021 | #ifdef CONFIG_IWL4965_HT |
9022 | .conf_ht = iwl4965_mac_conf_ht, | 9022 | .conf_ht = iwl4965_mac_conf_ht, |
9023 | .ampdu_action = iwl4965_mac_ampdu_action, | 9023 | .ampdu_action = iwl4965_mac_ampdu_action, |
9024 | #ifdef CONFIG_IWL4965_HT_AGG | ||
9025 | .ht_tx_agg_start = iwl4965_mac_ht_tx_agg_start, | ||
9026 | .ht_tx_agg_stop = iwl4965_mac_ht_tx_agg_stop, | ||
9027 | #endif /* CONFIG_IWL4965_HT_AGG */ | ||
9028 | #endif /* CONFIG_IWL4965_HT */ | 9024 | #endif /* CONFIG_IWL4965_HT */ |
9029 | .hw_scan = iwl4965_mac_hw_scan | 9025 | .hw_scan = iwl4965_mac_hw_scan |
9030 | }; | 9026 | }; |