Search Linux Wireless

Re: [PATCH v3] mt76: use AC specific reorder timeout

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

 



On 2019-12-10 13:20, Markus Theil wrote:
> Before this patch, mt76 handled rx traffic for all TIDs  equally,
> when released from reorder buffer early. This patch uses an AC specific
> reorder timeout, in order to release partial aggregated frames for voice
> or video ACs earlier. For example, ath10k also uses AC specific reorder
> timeouts (reported by firmware in that case).
> 
> Signed-off-by: Markus Theil <markus.theil@xxxxxxxxxxxxx>
> ---
> v3: fix changelog
> v2: use static const mapping arrays
> 
>  drivers/net/wireless/mediatek/mt76/agg-rx.c | 30 ++++++++++++++++++---
>  drivers/net/wireless/mediatek/mt76/mt76.h   |  2 ++
>  2 files changed, 28 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/agg-rx.c b/drivers/net/wireless/mediatek/mt76/agg-rx.c
> index 53b5a4b2dcc5..572cf26b0fa1 100644
> --- a/drivers/net/wireless/mediatek/mt76/agg-rx.c
> +++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c
> @@ -4,7 +4,27 @@
>   */
>  #include "mt76.h"
> 
> -#define REORDER_TIMEOUT (HZ / 10)
> +static unsigned long mt76_aggr_tid_to_timeo(u8 tidno)
> +{
> +	static const int ieee802_1d_to_ac[8] = {
> +		IEEE80211_AC_BE,
> +		IEEE80211_AC_BK,
> +		IEEE80211_AC_BK,
> +		IEEE80211_AC_BE,
> +		IEEE80211_AC_VI,
> +		IEEE80211_AC_VI,
> +		IEEE80211_AC_VO,
> +		IEEE80211_AC_VO
> +	};
> +	static const int ac_to_timeout[] = {
> +		[IEEE80211_AC_VO] = HZ / 30,
> +		[IEEE80211_AC_VI] = HZ / 25,
> +		[IEEE80211_AC_BE] = HZ / 10,
> +		[IEEE80211_AC_BK] = HZ / 10
> +	};
> +
> +	return ac_to_timeout[ieee802_1d_to_ac[tidno & 7]];
In the current implementation, voice traffic always runs without
aggregation, so it does not need special timeout handling.

Given that tid values 0-3 are BE/BK and you use the same timeout for
those, you could simplify this function to:
return HZ / (tidno >= 4 ? 25 : 10);

- Felix



[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