diff --git a/src/drivers/net/realtek.c b/src/drivers/net/realtek.c index 2dded0a5..77df64e6 100644 --- a/src/drivers/net/realtek.c +++ b/src/drivers/net/realtek.c @@ -500,6 +500,7 @@ static void realtek_refill_rx ( struct realtek_nic *rtl ) { */ static int realtek_open ( struct net_device *netdev ) { struct realtek_nic *rtl = netdev->priv; + uint32_t tcr; uint32_t rcr; int rc; @@ -524,6 +525,12 @@ static int realtek_open ( struct net_device *netdev ) { */ writeb ( ( RTL_CR_TE | RTL_CR_RE ), rtl->regs + RTL_CR ); + /* Configure transmitter */ + tcr = readl ( rtl->regs + RTL_TCR ); + tcr &= ~RTL_TCR_MXDMA_MASK; + tcr |= RTL_TCR_MXDMA_DEFAULT; + writel ( tcr, rtl->regs + RTL_TCR ); + /* Configure receiver */ rcr = readl ( rtl->regs + RTL_RCR ); rcr &= ~( RTL_RCR_RXFTH_MASK | RTL_RCR_RBLEN_MASK | diff --git a/src/drivers/net/realtek.h b/src/drivers/net/realtek.h index 24ec09e7..2591e725 100644 --- a/src/drivers/net/realtek.h +++ b/src/drivers/net/realtek.h @@ -132,6 +132,12 @@ enum realtek_legacy_status { /** Interrupt Status Register (word) */ #define RTL_ISR 0x3e +/** Transmit (Tx) Configuration Register (dword) */ +#define RTL_TCR 0x40 +#define RTL_TCR_MXDMA(x) ( (x) << 8 ) /**< Max DMA burst size */ +#define RTL_TCR_MXDMA_MASK RTL_TCR_MXDMA ( 0x7 ) +#define RTL_TCR_MXDMA_DEFAULT RTL_TCR_MXDMA ( 0x7 /* Unlimited */ ) + /** Receive (Rx) Configuration Register (dword) */ #define RTL_RCR 0x44 #define RTL_RCR_RXFTH(x) ( (x) << 13 ) /**< Receive FIFO threshold */