[openwrt/openwrt] realtek: eth: disable tx interrupts

LEDE Commits lede-commits at lists.infradead.org
Sun Feb 1 02:28:02 PST 2026


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ebea3d38260c56aa93ad36b5e5aa034987682738

commit ebea3d38260c56aa93ad36b5e5aa034987682738
Author: Markus Stockhausen <markus.stockhausen at gmx.de>
AuthorDate: Wed Jan 28 17:30:19 2026 +0100

    realtek: eth: disable tx interrupts
    
    Ethernet transmit handling processes data synchronously via a
    packet buffer. As soon as it kicks the SoC to send the packet
    no more post processing is needed. Especially there is no need
    for transmit completion interrupts. Disable them to reduce the
    CPU load.
    
    Signed-off-by: Markus Stockhausen <markus.stockhausen at gmx.de>
    Link: https://github.com/openwrt/openwrt/pull/21778
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../realtek/files-6.12/drivers/net/ethernet/rtl838x_eth.c    | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/target/linux/realtek/files-6.12/drivers/net/ethernet/rtl838x_eth.c b/target/linux/realtek/files-6.12/drivers/net/ethernet/rtl838x_eth.c
index 826dd72eba..39bf092a8e 100644
--- a/target/linux/realtek/files-6.12/drivers/net/ethernet/rtl838x_eth.c
+++ b/target/linux/realtek/files-6.12/drivers/net/ethernet/rtl838x_eth.c
@@ -542,8 +542,8 @@ static void rtl838x_hw_en_rxtx(struct rteth_ctrl *ctrl)
 	/* Truncate RX buffer to DEFAULT_MTU bytes, pad TX */
 	sw_w32((DEFAULT_MTU << 16) | RX_TRUNCATE_EN_83XX | TX_PAD_EN_838X, ctrl->r->dma_if_ctrl);
 
-	/* Enable RX done, RX overflow and TX done interrupts */
-	sw_w32(0xfffff, ctrl->r->dma_if_intr_msk);
+	/* Enable RX done and RX overflow, TX done interrupts not needed */
+	sw_w32(0xffff, ctrl->r->dma_if_intr_msk);
 
 	/* Enable DMA, engine expects empty FCS field */
 	sw_w32_mask(0, RX_EN | TX_EN, ctrl->r->dma_if_ctrl);
@@ -566,8 +566,8 @@ static void rtl839x_hw_en_rxtx(struct rteth_ctrl *ctrl)
 	/* Setup CPU-Port: RX Buffer */
 	sw_w32((DEFAULT_MTU << 5) | RX_TRUNCATE_EN_83XX, ctrl->r->dma_if_ctrl);
 
-	/* Enable Notify, RX done, RX overflow and TX done interrupts */
-	sw_w32(0x007fffff, ctrl->r->dma_if_intr_msk); /* Notify IRQ! */
+	/* Enable Notify, RX done and RX overflow, TX done interrupts not needed */
+	sw_w32(0x0070ffff, ctrl->r->dma_if_intr_msk); /* Notify IRQ! */
 
 	/* Enable DMA */
 	sw_w32_mask(0, RX_EN | TX_EN, ctrl->r->dma_if_ctrl);
@@ -602,10 +602,10 @@ static void rtl93xx_hw_en_rxtx(struct rteth_ctrl *ctrl)
 		sw_w32_mask(0x3ff << pos, v, ctrl->r->dma_if_rx_ring_cntr(i));
 	}
 
-	/* Enable Notify, RX done, RX overflow and TX done interrupts */
+	/* Enable Notify, RX done and RX overflow, TX done interrupts not needed */
 	sw_w32(0xffffffff, ctrl->r->dma_if_intr_rx_runout_msk);
 	sw_w32(0xffffffff, ctrl->r->dma_if_intr_rx_done_msk);
-	sw_w32(0x0000000f, ctrl->r->dma_if_intr_tx_done_msk);
+	sw_w32(0x00000000, ctrl->r->dma_if_intr_tx_done_msk);
 
 	/* Enable DMA */
 	sw_w32_mask(0, RX_EN_93XX | TX_EN_93XX, ctrl->r->dma_if_ctrl);




More information about the lede-commits mailing list