[PATCH 5/5] wifi: mt76: mt7927u: enable USB RX aggregation

Sean Wang sean.wang at kernel.org
Sat Jun 13 15:46:55 PDT 2026


From: Sean Wang <sean.wang at mediatek.com>

Enable USB RX aggregation on MT7927u with vendor driver parameters for
alignment, padding and buffer size. According to the vendor driver, the
hardware should run RX aggregation with USB SG disabled.

Signed-off-by: Sean Wang <sean.wang at mediatek.com>
---
 drivers/net/wireless/mediatek/mt76/mt7925/usb.c |  6 +++++-
 drivers/net/wireless/mediatek/mt76/usb.c        | 11 +++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/usb.c b/drivers/net/wireless/mediatek/mt76/mt7925/usb.c
index a0bfe6f09ae4..42d13bc6ebbc 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/usb.c
@@ -5,7 +5,6 @@
 #include <linux/module.h>
 #include <linux/sizes.h>
 #include <linux/usb.h>
-
 #include "mt7925.h"
 #include "mcu.h"
 #include "mac.h"
@@ -235,6 +234,11 @@ static int mt7925u_probe(struct usb_interface *usb_intf,
 		mdev->rev = (0x7927 << 16) | (mdev->rev & 0xff);
 	}
 
+	if (is_mt7927(mdev))
+		mt76u_enable_rx_aggr(mdev, MT7927_USB_RX_AGGR_ALIGN,
+				     MT7927_USB_RX_AGGR_PADDING,
+				     MT7927_USB_RX_AGGR_BUF_SIZE);
+
 	if (mt76_get_field(dev, MT_CONN_ON_MISC, MT_TOP_MISC2_FW_N9_RDY)) {
 		ret = mt792xu_wfsys_reset(dev);
 		if (ret)
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index 10ad2b024985..f0df510904c5 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -1300,6 +1300,17 @@ static const struct mt76_queue_ops usb_queue_ops = {
 	.kick = mt76u_tx_kick,
 };
 
+void mt76u_enable_rx_aggr(struct mt76_dev *dev, int align, int padding,
+			  int buf_size)
+{
+	dev->usb.sg_en = false;
+	dev->usb.rx_aggr.enable = true;
+	dev->usb.rx_aggr.align = align;
+	dev->usb.rx_aggr.padding = padding;
+	dev->usb.rx_aggr.buf_size = buf_size;
+}
+EXPORT_SYMBOL_GPL(mt76u_enable_rx_aggr);
+
 int __mt76u_init(struct mt76_dev *dev, struct usb_interface *intf,
 		 struct mt76_bus_ops *ops)
 {
-- 
2.43.0




More information about the Linux-mediatek mailing list