lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
 <TY3P286MB261180E5A3A3A11351441DEC983E2@TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM>
Date: Wed, 3 Apr 2024 00:54:52 +0800
From: Shengyu Qu <wiagn233@...look.com>
To: Rafał Miłecki <zajec5@...il.com>,
 Felix Fietkau <nbd@....name>, Lorenzo Bianconi <lorenzo@...nel.org>,
 Ryder Lee <ryder.lee@...iatek.com>, Shayne Chen <shayne.chen@...iatek.com>,
 Sean Wang <sean.wang@...iatek.com>
Cc: wiagn233@...look.com, Kalle Valo <kvalo@...nel.org>,
 Matthias Brugger <matthias.bgg@...il.com>,
 AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
 linux-wireless@...r.kernel.org, linux-kernel@...r.kernel.org,
 linux-arm-kernel@...ts.infradead.org, linux-mediatek@...ts.infradead.org,
 openwrt-devel@...ts.openwrt.org, Rafał Miłecki
 <rafal@...ecki.pl>
Subject: Re: [PATCH] wifi: mt76: mt7603: add debugfs attr for disabling frames
 buffering

Hi Rafal,

Maybe we could disable frames buffering by default until it is fixed?
Also, maybe we could do more tests on newer models such as mt7986/81 to
make this patch benefit more models?

Best regards,
Shengyu


在 2024/3/26 6:33, Rafał Miłecki 写道:
> From: Rafał Miłecki <rafal@...ecki.pl>
> 
> MT7603EN and MT7628AN were reported by multiple users to be unstable
> under high traffic. Transmission of packets could stop for seconds often
> leading to disconnections.
> 
> Long research & debugging revelaed a close relation between MCU
> interrupts of type PKT_TYPE_TXS and slowdowns / stalls. That led to
> questioning frames buffering feature.
> 
> It turns out that disabling SKBs loopback code makes mt7603 devices much
> more stable under load. There are still some traffic hiccups but those
> happen like once every an hour and end up in recovery in most cases.
> 
> Add a debugfs option for disabling frames buffering so users can give it
> a try. If this solution yields a success we can make this feature
> disabled by default.
> 
> This change was successfully tested using 2 GHz AP interface on:
> 1. Netgear R6220 - MT7621ST (SoC) + MT7603EN (WiFi) + MT7612EN (WiFi)
> 2. Xiaomi Mi Router 4C - MT7628AN (Wi-Fi SoC)
> 
> Link: https://lore.kernel.org/linux-wireless/7c96d5ee-86c1-8068-1b58-40db6087a24f@gmail.com/
> Closes: https://github.com/openwrt/mt76/issues/865
> Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
> Signed-off-by: Rafał Miłecki <rafal@...ecki.pl>
> ---
>   drivers/net/wireless/mediatek/mt76/mt7603/debugfs.c | 2 ++
>   drivers/net/wireless/mediatek/mt76/mt7603/dma.c     | 3 +++
>   drivers/net/wireless/mediatek/mt76/mt7603/init.c    | 1 +
>   drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h  | 2 ++
>   4 files changed, 8 insertions(+)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7603/debugfs.c
> index 3967f2f05774..c80baba7a402 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7603/debugfs.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7603/debugfs.c
> @@ -115,4 +115,6 @@ void mt7603_init_debugfs(struct mt7603_dev *dev)
>   			    &dev->sensitivity_limit);
>   	debugfs_create_bool("dynamic_sensitivity", 0600, dir,
>   			    &dev->dynamic_sensitivity);
> +	debugfs_create_bool("frames_buffering", 0600, dir,
> +			    &dev->frames_buffering);
>   }
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
> index 7a2f5d38562b..f5ab729dec31 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
> @@ -27,6 +27,9 @@ mt7603_rx_loopback_skb(struct mt7603_dev *dev, struct sk_buff *skb)
>   	u32 val;
>   	u8 tid = 0;
>   
> +	if (!dev->frames_buffering)
> +		goto free;
> +
>   	if (skb->len < MT_TXD_SIZE + sizeof(struct ieee80211_hdr))
>   		goto free;
>   
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/init.c b/drivers/net/wireless/mediatek/mt76/mt7603/init.c
> index 6c55c72f28a2..5abc2618ec8b 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7603/init.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7603/init.c
> @@ -515,6 +515,7 @@ int mt7603_register_device(struct mt7603_dev *dev)
>   	dev->slottime = 9;
>   	dev->sensitivity_limit = 28;
>   	dev->dynamic_sensitivity = true;
> +	dev->frames_buffering = true;
>   
>   	ret = mt7603_init_hardware(dev);
>   	if (ret)
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h b/drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h
> index 9e58df7042ad..02c88334cdc0 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h
> +++ b/drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h
> @@ -155,6 +155,8 @@ struct mt7603_dev {
>   	u32 reset_test;
>   
>   	unsigned int reset_cause[__RESET_CAUSE_MAX];
> +
> +	bool frames_buffering;
>   };
>   
>   extern const struct mt76_driver_ops mt7603_drv_ops;

Download attachment "OpenPGP_0xE3520CC91929C8E7.asc" of type "application/pgp-keys" (6869 bytes)

Download attachment "OpenPGP_signature.asc" of type "application/pgp-signature" (841 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ