[PATCH 1/4] net: usb: r8152: disable rx aggregation

Stefan Kerkmann s.kerkmann at pengutronix.de
Thu Aug 7 08:53:10 PDT 2025


Enabling RX aggregation packs multiple ethernet frames into one usb bulk
transfer. This increases the throughput significantly, but the driver
currently has no logic in `r8152_rx_fixup` to split the received frames.
This causes silently dropped packets. As the expected througput in a
bootloader using a USB ethernet adapter is rather low this "workaround"
is fine for now.

Signed-off-by: Stefan Kerkmann <s.kerkmann at pengutronix.de>
---
 drivers/net/usb/r8152.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 2511c524cd6933cd9de844970edcdaa26a62b8e5..e29dd2ba43cedd9204f9cc418975ba1ace4f5167 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -926,10 +926,9 @@ static void r8153_first_init(struct r8152 *tp)
 	r8152_ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TXFIFO_CTRL,
 			      TXFIFO_THR_NORMAL2);
 
-	/* rx aggregation */
+	/* Disable rx aggregation */
 	ocp_data = r8152_ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
-
-	ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
+	ocp_data |= (RX_AGG_DISABLE | RX_ZERO_EN);
 	r8152_ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
 }
 
@@ -1117,10 +1116,9 @@ static void rtl8152b_init(struct r8152 *tp)
 	r8152b_enable_fc(tp);
 	rtl_tally_reset(tp);
 
-	/* enable rx aggregation */
+	/* Disable rx aggregation */
 	ocp_data = r8152_ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
-
-	ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
+	ocp_data |= (RX_AGG_DISABLE | RX_ZERO_EN);
 	r8152_ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
 }
 
@@ -1259,9 +1257,9 @@ static void r8153b_init(struct r8152 *tp)
 		}
 	}
 
-	/* rx aggregation */
+	/* Disable rx aggregation */
 	ocp_data = r8152_ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
-	ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
+	ocp_data |= (RX_AGG_DISABLE | RX_ZERO_EN);
 	r8152_ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
 
 	rtl_tally_reset(tp);

-- 
2.39.5




More information about the barebox mailing list