On Tue, Feb 4, 2020 at 8:06 PM <yhchuang@xxxxxxxxxxx> wrote: > > From: Yan-Hsuan Chuang <yhchuang@xxxxxxxxxxx> > > Some tests shows that using AMSDU to aggregate TCP ACKs to specific > APs will degrade the throughput on 2.4G band in 20MHz bandwidth > (< 10 Mbps, should be ~100 Mbps for 2x2). Also found that there's > barely no negative impact if we disable TX AMSDU on 2.4G to connect > to other APs. So it seems like we can just tell mac80211 to not to > aggregate MSDUs when transmitting on 2.4G band. > > Note that we still can TX AMSDU on 5G band and benefit from it by > having 50 ~ 70 Mbps throughput improvement. > > Signed-off-by: Yan-Hsuan Chuang <yhchuang@xxxxxxxxxxx> > --- Reviewed-by: Chris Chiu <chiu@xxxxxxxxxxxx> > drivers/net/wireless/realtek/rtw88/mac80211.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/net/wireless/realtek/rtw88/mac80211.c b/drivers/net/wireless/realtek/rtw88/mac80211.c > index 6fc33e11d08c..21b56db16916 100644 > --- a/drivers/net/wireless/realtek/rtw88/mac80211.c > +++ b/drivers/net/wireless/realtek/rtw88/mac80211.c > @@ -592,6 +592,20 @@ static int rtw_ops_ampdu_action(struct ieee80211_hw *hw, > return 0; > } > > +static bool rtw_ops_can_aggregate_in_amsdu(struct ieee80211_hw *hw, > + struct sk_buff *head, > + struct sk_buff *skb) > +{ > + struct rtw_dev *rtwdev = hw->priv; > + struct rtw_hal *hal = &rtwdev->hal; > + > + /* we don't want to enable TX AMSDU on 2.4G */ > + if (hal->current_band_type == RTW_BAND_2G) > + return false; > + > + return true; > +} > + > static void rtw_ops_sw_scan_start(struct ieee80211_hw *hw, > struct ieee80211_vif *vif, > const u8 *mac_addr) > @@ -787,6 +801,7 @@ const struct ieee80211_ops rtw_ops = { > .sta_remove = rtw_ops_sta_remove, > .set_key = rtw_ops_set_key, > .ampdu_action = rtw_ops_ampdu_action, > + .can_aggregate_in_amsdu = rtw_ops_can_aggregate_in_amsdu, > .sw_scan_start = rtw_ops_sw_scan_start, > .sw_scan_complete = rtw_ops_sw_scan_complete, > .mgd_prepare_tx = rtw_ops_mgd_prepare_tx, > -- > 2.17.1 >