Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9ab461732a3cd8e7a7cf13cc46ed4c1ac7907824
Commit:     9ab461732a3cd8e7a7cf13cc46ed4c1ac7907824
Parent:     132127e5057be70112bb974b8a3aaa0f7b14847f
Author:     Ron Rindjunsky <[EMAIL PROTECTED]>
AuthorDate: Tue Dec 25 17:00:38 2007 +0200
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 15:09:41 2008 -0800

    iwlwifi: A-MPDU Rx flow enabled
    
    This patch enables the A-MPDU Rx flow. it contains several
    adjustments to new mac80211 A-MPDU Rx flow.
    
    Signed-off-by: Ron Rindjunsky <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
---
 drivers/net/wireless/iwlwifi/iwl-4965.c     |   65 +++++++++++++--------------
 drivers/net/wireless/iwlwifi/iwl-4965.h     |    7 +--
 drivers/net/wireless/iwlwifi/iwl4965-base.c |    3 +-
 3 files changed, 35 insertions(+), 40 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c 
b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 0f58aca..89e2c44 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -3968,9 +3968,6 @@ static void iwl4965_rx_reply_rx(struct iwl4965_priv *priv,
                .antenna = 0,
                .rate = iwl4965_hw_get_rate(rx_start->rate_n_flags),
                .flag = 0,
-#ifdef CONFIG_IWL4965_HT_AGG
-               .ordered = 0
-#endif /* CONFIG_IWL4965_HT_AGG */
        };
        u8 network_packet;
 
@@ -4165,7 +4162,7 @@ static void iwl4965_rx_reply_rx(struct iwl4965_priv *priv,
                break;
 
        case IEEE80211_FTYPE_CTL:
-#ifdef CONFIG_IWL4965_HT_AGG
+#ifdef CONFIG_IWL4965_HT
                switch (fc & IEEE80211_FCTL_STYPE) {
                case IEEE80211_STYPE_BACK_REQ:
                        IWL_DEBUG_HT("IEEE80211_STYPE_BACK_REQ arrived\n");
@@ -4176,7 +4173,6 @@ static void iwl4965_rx_reply_rx(struct iwl4965_priv *priv,
                        break;
                }
 #endif
-
                break;
 
        case IEEE80211_FTYPE_DATA: {
@@ -4763,8 +4759,6 @@ void iwl4965_set_ht_add_station(struct iwl4965_priv 
*priv, u8 index,
        return;
 }
 
-#ifdef CONFIG_IWL4965_HT_AGG
-
 static void iwl4965_sta_modify_add_ba_tid(struct iwl4965_priv *priv,
                                          int sta_id, int tid, u16 ssn)
 {
@@ -4796,6 +4790,36 @@ static void iwl4965_sta_modify_del_ba_tid(struct 
iwl4965_priv *priv,
        iwl4965_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
 }
 
+int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
+                            enum ieee80211_ampdu_mlme_action action,
+                            const u8 *addr, u16 tid, u16 ssn)
+{
+       struct iwl4965_priv *priv = hw->priv;
+       int sta_id;
+       DECLARE_MAC_BUF(mac);
+
+       IWL_DEBUG_HT("A-MPDU action on da=%s tid=%d ",
+                       print_mac(mac, addr), tid);
+       sta_id = iwl4965_hw_find_station(priv, addr);
+       switch (action) {
+       case IEEE80211_AMPDU_RX_START:
+               IWL_DEBUG_HT("start Rx\n");
+               iwl4965_sta_modify_add_ba_tid(priv, sta_id, tid, ssn);
+               break;
+       case IEEE80211_AMPDU_RX_STOP:
+               IWL_DEBUG_HT("stop Rx\n");
+               iwl4965_sta_modify_del_ba_tid(priv, sta_id, tid);
+               break;
+       default:
+               IWL_DEBUG_HT("unknown\n");
+               return -EINVAL;
+               break;
+       }
+       return 0;
+}
+
+#ifdef CONFIG_IWL4965_HT_AGG
+
 static const u16 default_tid_to_tx_fifo[] = {
        IWL_TX_FIFO_AC1,
        IWL_TX_FIFO_AC0,
@@ -4925,33 +4949,6 @@ int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, 
u8 *da, u16 tid,
        return 0;
 }
 
-int iwl4965_mac_ht_rx_agg_start(struct ieee80211_hw *hw, u8 *da,
-                           u16 tid, u16 start_seq_num)
-{
-       struct iwl4965_priv *priv = hw->priv;
-       int sta_id;
-       DECLARE_MAC_BUF(mac);
-
-       IWL_WARNING("iwl-AGG iwl4965_mac_ht_rx_agg_start on da=%s"
-                   " tid=%d\n", print_mac(mac, da), tid);
-       sta_id = iwl4965_hw_find_station(priv, da);
-       iwl4965_sta_modify_add_ba_tid(priv, sta_id, tid, start_seq_num);
-       return 0;
-}
-
-int iwl4965_mac_ht_rx_agg_stop(struct ieee80211_hw *hw, u8 *da,
-                          u16 tid, int generator)
-{
-       struct iwl4965_priv *priv = hw->priv;
-       int sta_id;
-       DECLARE_MAC_BUF(mac);
-
-       IWL_WARNING("iwl-AGG iwl4965_mac_ht_rx_agg_stop on da=%s tid=%d\n",
-                   print_mac(mac, da), tid);
-       sta_id = iwl4965_hw_find_station(priv, da);
-       iwl4965_sta_modify_del_ba_tid(priv, sta_id, tid);
-       return 0;
-}
 
 #endif /* CONFIG_IWL4965_HT_AGG */
 #endif /* CONFIG_IWL4965_HT */
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.h 
b/drivers/net/wireless/iwlwifi/iwl-4965.h
index aad7f70..c386482 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.h
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.h
@@ -780,13 +780,12 @@ extern void iwl4965_set_rxon_ht(struct iwl4965_priv *priv,
                                struct iwl_ht_info *ht_info);
 extern void iwl4965_set_ht_add_station(struct iwl4965_priv *priv, u8 index,
                                struct ieee80211_ht_info *sta_ht_inf);
+extern int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
+                                   enum ieee80211_ampdu_mlme_action action,
+                                   const u8 *addr, u16 tid, u16 ssn);
 #ifdef CONFIG_IWL4965_HT_AGG
 extern int iwl4965_mac_ht_tx_agg_start(struct ieee80211_hw *hw, u8 *da,
                                   u16 tid, u16 *start_seq_num);
-extern int iwl4965_mac_ht_rx_agg_start(struct ieee80211_hw *hw, u8 *da,
-                                  u16 tid, u16 start_seq_num);
-extern int iwl4965_mac_ht_rx_agg_stop(struct ieee80211_hw *hw, u8 *da,
-                                 u16 tid, int generator);
 extern int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, u8 *da,
                                  u16 tid, int generator);
 extern void iwl4965_turn_off_agg(struct iwl4965_priv *priv, u8 tid);
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c 
b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 52eb37f..92bb7e1 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -8955,11 +8955,10 @@ static struct ieee80211_ops iwl4965_hw_ops = {
        .erp_ie_changed = iwl4965_mac_erp_ie_changed,
 #ifdef CONFIG_IWL4965_HT
        .conf_ht = iwl4965_mac_conf_ht,
+       .ampdu_action = iwl4965_mac_ampdu_action,
 #ifdef CONFIG_IWL4965_HT_AGG
        .ht_tx_agg_start = iwl4965_mac_ht_tx_agg_start,
        .ht_tx_agg_stop = iwl4965_mac_ht_tx_agg_stop,
-       .ht_rx_agg_start = iwl4965_mac_ht_rx_agg_start,
-       .ht_rx_agg_stop = iwl4965_mac_ht_rx_agg_stop,
 #endif  /* CONFIG_IWL4965_HT_AGG */
 #endif  /* CONFIG_IWL4965_HT */
        .hw_scan = iwl4965_mac_hw_scan
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to