aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c33
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c35
3 files changed, 34 insertions, 38 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index ea23c7629575..3cc6f00d96cd 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2067,39 +2067,6 @@ static int iwl4965_txq_agg_enable(struct iwl_priv *priv, int txq_id,
2067 return 0; 2067 return 0;
2068} 2068}
2069 2069
2070int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
2071 enum ieee80211_ampdu_mlme_action action,
2072 const u8 *addr, u16 tid, u16 *ssn)
2073{
2074 struct iwl_priv *priv = hw->priv;
2075 DECLARE_MAC_BUF(mac);
2076
2077 IWL_DEBUG_HT("A-MPDU action on addr %s tid %d\n",
2078 print_mac(mac, addr), tid);
2079
2080 if (!(priv->cfg->sku & IWL_SKU_N))
2081 return -EACCES;
2082
2083 switch (action) {
2084 case IEEE80211_AMPDU_RX_START:
2085 IWL_DEBUG_HT("start Rx\n");
2086 return iwl_rx_agg_start(priv, addr, tid, *ssn);
2087 case IEEE80211_AMPDU_RX_STOP:
2088 IWL_DEBUG_HT("stop Rx\n");
2089 return iwl_rx_agg_stop(priv, addr, tid);
2090 case IEEE80211_AMPDU_TX_START:
2091 IWL_DEBUG_HT("start Tx\n");
2092 return iwl_tx_agg_start(priv, addr, tid, ssn);
2093 case IEEE80211_AMPDU_TX_STOP:
2094 IWL_DEBUG_HT("stop Tx\n");
2095 return iwl_tx_agg_stop(priv, addr, tid);
2096 default:
2097 IWL_DEBUG_HT("unknown\n");
2098 return -EINVAL;
2099 break;
2100 }
2101 return 0;
2102}
2103 2070
2104static u16 iwl4965_get_hcmd_size(u8 cmd_id, u16 len) 2071static u16 iwl4965_get_hcmd_size(u8 cmd_id, u16 len)
2105{ 2072{
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 010ed69e0e50..d2d4beab82a0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -643,10 +643,6 @@ struct iwl_priv;
643 * Forward declare iwl-4965.c functions for iwl-base.c 643 * Forward declare iwl-4965.c functions for iwl-base.c
644 */ 644 */
645extern void iwl4965_rf_kill_ct_config(struct iwl_priv *priv); 645extern void iwl4965_rf_kill_ct_config(struct iwl_priv *priv);
646
647int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
648 enum ieee80211_ampdu_mlme_action action,
649 const u8 *addr, u16 tid, u16 *ssn);
650int iwl4965_check_empty_hw_queue(struct iwl_priv *priv, int sta_id, 646int iwl4965_check_empty_hw_queue(struct iwl_priv *priv, int sta_id,
651 u8 tid, int txq_id); 647 u8 tid, int txq_id);
652 648
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 2001b09738ff..a34280f65c1a 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -65,7 +65,7 @@
65 * NOTE: DRV_NAME is defined in iwlwifi.h for use by iwl-debug.h and printk 65 * NOTE: DRV_NAME is defined in iwlwifi.h for use by iwl-debug.h and printk
66 */ 66 */
67 67
68#define DRV_DESCRIPTION "Intel(R) Wireless WiFi Link 4965AGN driver for Linux" 68#define DRV_DESCRIPTION "Intel(R) Wireless WiFi Link AGN driver for Linux"
69 69
70#ifdef CONFIG_IWLWIFI_DEBUG 70#ifdef CONFIG_IWLWIFI_DEBUG
71#define VD "d" 71#define VD "d"
@@ -3345,6 +3345,39 @@ static int iwl4965_mac_conf_tx(struct ieee80211_hw *hw, u16 queue,
3345 return 0; 3345 return 0;
3346} 3346}
3347 3347
3348static int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
3349 enum ieee80211_ampdu_mlme_action action,
3350 const u8 *addr, u16 tid, u16 *ssn)
3351{
3352 struct iwl_priv *priv = hw->priv;
3353 DECLARE_MAC_BUF(mac);
3354
3355 IWL_DEBUG_HT("A-MPDU action on addr %s tid %d\n",
3356 print_mac(mac, addr), tid);
3357
3358 if (!(priv->cfg->sku & IWL_SKU_N))
3359 return -EACCES;
3360
3361 switch (action) {
3362 case IEEE80211_AMPDU_RX_START:
3363 IWL_DEBUG_HT("start Rx\n");
3364 return iwl_rx_agg_start(priv, addr, tid, *ssn);
3365 case IEEE80211_AMPDU_RX_STOP:
3366 IWL_DEBUG_HT("stop Rx\n");
3367 return iwl_rx_agg_stop(priv, addr, tid);
3368 case IEEE80211_AMPDU_TX_START:
3369 IWL_DEBUG_HT("start Tx\n");
3370 return iwl_tx_agg_start(priv, addr, tid, ssn);
3371 case IEEE80211_AMPDU_TX_STOP:
3372 IWL_DEBUG_HT("stop Tx\n");
3373 return iwl_tx_agg_stop(priv, addr, tid);
3374 default:
3375 IWL_DEBUG_HT("unknown\n");
3376 return -EINVAL;
3377 break;
3378 }
3379 return 0;
3380}
3348static int iwl4965_mac_get_tx_stats(struct ieee80211_hw *hw, 3381static int iwl4965_mac_get_tx_stats(struct ieee80211_hw *hw,
3349 struct ieee80211_tx_queue_stats *stats) 3382 struct ieee80211_tx_queue_stats *stats)
3350{ 3383{