diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 77 |
1 files changed, 47 insertions, 30 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 */ |