mwl8k: trivial rx-only ampdu implementation
authorLennert Buytenhek <buytenh@wantstofly.org>
Mon, 4 Jan 2010 20:58:12 +0000 (21:58 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 5 Jan 2010 22:13:34 +0000 (17:13 -0500)
AMPDU receive doesn't need any special handling, so let's enable
this before tackling the transmit side.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwl8k.c

index e0301b6..57ced0d 100644 (file)
@@ -3309,6 +3309,22 @@ static int mwl8k_get_stats(struct ieee80211_hw *hw,
        return mwl8k_cmd_get_stat(hw, stats);
 }
 
+static int
+mwl8k_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+                  enum ieee80211_ampdu_mlme_action action,
+                  struct ieee80211_sta *sta, u16 tid, u16 *ssn)
+{
+       switch (action) {
+       case IEEE80211_AMPDU_RX_START:
+       case IEEE80211_AMPDU_RX_STOP:
+               if (!(hw->flags & IEEE80211_HW_AMPDU_AGGREGATION))
+                       return -ENOTSUPP;
+               return 0;
+       default:
+               return -ENOTSUPP;
+       }
+}
+
 static const struct ieee80211_ops mwl8k_ops = {
        .tx                     = mwl8k_tx,
        .start                  = mwl8k_start,
@@ -3324,6 +3340,7 @@ static const struct ieee80211_ops mwl8k_ops = {
        .conf_tx                = mwl8k_conf_tx,
        .get_tx_stats           = mwl8k_get_tx_stats,
        .get_stats              = mwl8k_get_stats,
+       .ampdu_action           = mwl8k_ampdu_action,
 };
 
 static void mwl8k_tx_reclaim_handler(unsigned long data)