aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2008-01-28 07:07:23 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-02-29 15:19:18 -0500
commit8114fcf185c58b23dc9fcaf4944b59b4c1407b39 (patch)
treec6d57093a5ab9cbcf9795b965ce5723a94dd7f7b /drivers
parentd92684e66091c0f0101819619b315b4bb8b5bcc5 (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.c77
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c4
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
4733int 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
4763static const u16 default_tid_to_tx_fifo[] = { 4735static 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
4851int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, u8 *da, u16 tid, 4823int 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
4866int 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
4872int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, const u8 *da, u16 tid)
4873{
4874 return 0;
4875}
4876
4877int 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
782extern int iwl4965_mac_ht_tx_agg_start(struct ieee80211_hw *hw, u8 *da,
783 u16 tid, u16 *start_seq_num);
784extern int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, u8 *da,
785 u16 tid, int generator);
786extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid); 782extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid);
787extern void iwl4965_tl_get_stats(struct iwl4965_priv *priv, 783extern 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};