Search Linux Wireless

Re: [PATCH] rtw88: disable TX-AMSDU on 2.4G band

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux