include $(TOPDIR)/rules.mk
PKG_NAME:=mt76
-PKG_RELEASE=2
+PKG_RELEASE=1
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2024-03-18
-PKG_SOURCE_VERSION:=2135e201e7a9339e018d4e2d4a33c73266e674d7
-PKG_MIRROR_HASH:=530db8a70d18295677989aafc9c1757b151ef77e359985417f1d36e7d2415d33
+PKG_SOURCE_DATE:=2024-04-03
+PKG_SOURCE_VERSION:=1e336a8582dce2ef32ddd440d423e9afef961e71
+PKG_MIRROR_HASH:=f3801af80d5f9c1aa266c9401d4dfa2d501df0382c81fd249150e17dddc70936
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_USE_NINJA:=0
+++ /dev/null
---- a/mac80211.c
-+++ b/mac80211.c
-@@ -4,7 +4,9 @@
- */
- #include <linux/sched.h>
- #include <linux/of.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,6,0)
- #include <net/page_pool.h>
-+#endif
- #include "mt76.h"
-
- #define CHAN2G(_idx, _freq) { \
---- a/mt76.h
-+++ b/mt76.h
-@@ -13,6 +13,9 @@
- #include <linux/leds.h>
- #include <linux/usb.h>
- #include <linux/average.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,6,0)
-+#include <net/page_pool/helpers.h>
-+#endif
- #include <linux/soc/mediatek/mtk_wed.h>
- #include <net/mac80211.h>
- #include "util.h"
+++ /dev/null
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Mon, 25 Mar 2024 18:54:02 +0100
-Subject: [PATCH] wifi: mt76: mt7603: add debugfs attr for disabling frames
- buffering
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-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@milecki.pl>
----
- mt7603/debugfs.c | 2 ++
- mt7603/dma.c | 3 +++
- mt7603/init.c | 1 +
- mt7603/mt7603.h | 2 ++
- 4 files changed, 8 insertions(+)
-
---- a/mt7603/debugfs.c
-+++ b/mt7603/debugfs.c
-@@ -115,4 +115,6 @@ void mt7603_init_debugfs(struct mt7603_d
- &dev->sensitivity_limit);
- debugfs_create_bool("dynamic_sensitivity", 0600, dir,
- &dev->dynamic_sensitivity);
-+ debugfs_create_bool("frames_buffering", 0600, dir,
-+ &dev->frames_buffering);
- }
---- a/mt7603/dma.c
-+++ b/mt7603/dma.c
-@@ -27,6 +27,9 @@ mt7603_rx_loopback_skb(struct mt7603_dev
- u32 val;
- u8 tid = 0;
-
-+ if (!dev->frames_buffering)
-+ goto free;
-+
- if (skb->len < MT_TXD_SIZE + sizeof(struct ieee80211_hdr))
- goto free;
-
---- a/mt7603/init.c
-+++ b/mt7603/init.c
-@@ -517,6 +517,7 @@ int mt7603_register_device(struct mt7603
- dev->slottime = 9;
- dev->sensitivity_limit = 28;
- dev->dynamic_sensitivity = true;
-+ dev->frames_buffering = true;
-
- ret = mt7603_init_hardware(dev);
- if (ret)
---- a/mt7603/mt7603.h
-+++ b/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;