wifi: rtw89: support for enable/disable MSDU aggregation
authorKuan-Chung Chen <damon.chen@realtek.com>
Thu, 22 Sep 2022 01:27:37 +0000 (09:27 +0800)
committerKalle Valo <kvalo@kernel.org>
Sat, 24 Sep 2022 12:37:40 +0000 (15:37 +0300)
To enable/disable amsdu in set_tid_config, and currently only support to
configure all tids (==0xff) for AMSDU, not individual tid.

The command example is:
  iw wlan0 set tidconf tids 0xff amsdu off
  iw wlan0 set tidconf peer xx:xx:xx:xx:xx:xx tids 0xff amsdu on

Signed-off-by: Kuan-Chung Chen <damon.chen@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220922012737.15091-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.c

index 25f759a..7f75d05 100644 (file)
@@ -2602,6 +2602,13 @@ static void _rtw89_core_set_tid_config(struct rtw89_dev *rtwdev,
                                spin_unlock_bh(&rtwdev->ba_lock);
                        }
                }
+
+               if (mask & BIT(NL80211_TID_CONFIG_ATTR_AMSDU_CTRL) && tids == 0xff) {
+                       if (tid_conf->amsdu == NL80211_TID_CONFIG_ENABLE)
+                               sta->max_amsdu_subframes = 0;
+                       else
+                               sta->max_amsdu_subframes = 1;
+               }
        }
 }
 
@@ -3261,6 +3268,8 @@ static int rtw89_core_register_hw(struct rtw89_dev *rtwdev)
 
        hw->wiphy->tid_config_support.vif |= BIT(NL80211_TID_CONFIG_ATTR_AMPDU_CTRL);
        hw->wiphy->tid_config_support.peer |= BIT(NL80211_TID_CONFIG_ATTR_AMPDU_CTRL);
+       hw->wiphy->tid_config_support.vif |= BIT(NL80211_TID_CONFIG_ATTR_AMSDU_CTRL);
+       hw->wiphy->tid_config_support.peer |= BIT(NL80211_TID_CONFIG_ATTR_AMSDU_CTRL);
 
        wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CAN_REPLACE_PTK0);