[PATCH v4 02/13] net/r8169: optimize Rx descriptor fetch number
Howard Wang
howard_wang at realsil.com.cn
Fri Feb 13 04:20:07 CET 2026
Update the Rx descriptor fetch number to optimize Rx performance for
RTL8126 and RTL8127.
This parameter controls the number of Rx descriptors fetched in a
single batch. Based on hardware characteristics, the values are tuned
as follows:
- RTL8126: 20
- RTL8127: 12
Signed-off-by: Howard Wang <howard_wang at realsil.com.cn>
---
drivers/net/r8169/base/rtl8126a.c | 4 ++--
drivers/net/r8169/base/rtl8127.c | 2 +-
drivers/net/r8169/r8169_compat.h | 2 ++
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8126a.c b/drivers/net/r8169/base/rtl8126a.c
index 047ef83587..58b1cc2664 100644
--- a/drivers/net/r8169/base/rtl8126a.c
+++ b/drivers/net/r8169/base/rtl8126a.c
@@ -14,12 +14,12 @@ hw_init_rxcfg_8126a(struct rtl_hw *hw)
{
switch (hw->mcfg) {
case CFG_METHOD_69:
- RTL_W32(hw, RxConfig, Rx_Fetch_Number_8 | RxCfg_pause_slot_en |
+ RTL_W32(hw, RxConfig, Rx_Fetch_Number_20 | RxCfg_pause_slot_en |
(RX_DMA_BURST_512 << RxCfgDMAShift));
break;
case CFG_METHOD_70:
case CFG_METHOD_71:
- RTL_W32(hw, RxConfig, Rx_Fetch_Number_8 | Rx_Close_Multiple |
+ RTL_W32(hw, RxConfig, Rx_Fetch_Number_20 | Rx_Close_Multiple |
RxCfg_pause_slot_en | (RX_DMA_BURST_512 << RxCfgDMAShift));
break;
}
diff --git a/drivers/net/r8169/base/rtl8127.c b/drivers/net/r8169/base/rtl8127.c
index 9e79255e3c..26c2cfd25b 100644
--- a/drivers/net/r8169/base/rtl8127.c
+++ b/drivers/net/r8169/base/rtl8127.c
@@ -14,7 +14,7 @@ hw_init_rxcfg_8127(struct rtl_hw *hw)
{
switch (hw->mcfg) {
case CFG_METHOD_91:
- RTL_W32(hw, RxConfig, Rx_Fetch_Number_8 | Rx_Close_Multiple |
+ RTL_W32(hw, RxConfig, Rx_Fetch_Number_12 | Rx_Close_Multiple |
RxCfg_pause_slot_en | (RX_DMA_BURST_512 << RxCfgDMAShift));
break;
}
diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h
index 9163c7f59f..ab6a984a54 100644
--- a/drivers/net/r8169/r8169_compat.h
+++ b/drivers/net/r8169/r8169_compat.h
@@ -563,6 +563,8 @@ enum RTL_chipset_name {
#define TX_DMA_BURST_16 0
#define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */
#define Rx_Fetch_Number_8 (1 << 30)
+#define Rx_Fetch_Number_12 (BIT_30 | BIT_29)
+#define Rx_Fetch_Number_20 (BIT_31 | BIT_29)
#define Rx_Close_Multiple (1 << 21)
#define RxEarly_off_V2 (1 << 11)
#define Rx_Single_fetch_V2 (1 << 14)
--
2.34.1
More information about the dev
mailing list