diff --git a/src/drivers/net/realtek.c b/src/drivers/net/realtek.c index 6a119db3..2dded0a5 100644 --- a/src/drivers/net/realtek.c +++ b/src/drivers/net/realtek.c @@ -526,8 +526,10 @@ static int realtek_open ( struct net_device *netdev ) { /* Configure receiver */ rcr = readl ( rtl->regs + RTL_RCR ); - rcr &= ~( RTL_RCR_RBLEN_MASK ); - rcr |= ( RTL_RCR_RBLEN_DEFAULT | RTL_RCR_WRAP | RTL_RCR_AB | + rcr &= ~( RTL_RCR_RXFTH_MASK | RTL_RCR_RBLEN_MASK | + RTL_RCR_MXDMA_MASK ); + rcr |= ( RTL_RCR_RXFTH_DEFAULT | RTL_RCR_RBLEN_DEFAULT | + RTL_RCR_MXDMA_DEFAULT | RTL_RCR_WRAP | RTL_RCR_AB | RTL_RCR_AM | RTL_RCR_APM | RTL_RCR_AAP ); writel ( rcr, rtl->regs + RTL_RCR ); diff --git a/src/drivers/net/realtek.h b/src/drivers/net/realtek.h index 1c6bc544..24ec09e7 100644 --- a/src/drivers/net/realtek.h +++ b/src/drivers/net/realtek.h @@ -134,9 +134,15 @@ enum realtek_legacy_status { /** Receive (Rx) Configuration Register (dword) */ #define RTL_RCR 0x44 +#define RTL_RCR_RXFTH(x) ( (x) << 13 ) /**< Receive FIFO threshold */ +#define RTL_RCR_RXFTH_MASK RTL_RCR_RXFTH ( 0x7 ) +#define RTL_RCR_RXFTH_DEFAULT RTL_RCR_RXFTH ( 0x7 /* Whole packet */ ) #define RTL_RCR_RBLEN(x) ( (x) << 11 ) /**< Receive buffer length */ #define RTL_RCR_RBLEN_MASK RTL_RCR_RBLEN ( 0x3 ) #define RTL_RCR_RBLEN_DEFAULT RTL_RCR_RBLEN ( 0 /* 8kB */ ) +#define RTL_RCR_MXDMA(x) ( (x) << 8 ) /**< Max DMA burst size */ +#define RTL_RCR_MXDMA_MASK RTL_RCR_MXDMA ( 0x7 ) +#define RTL_RCR_MXDMA_DEFAULT RTL_RCR_MXDMA ( 0x7 /* Unlimited */ ) #define RTL_RCR_WRAP 0x00000080UL /**< Overrun receive buffer */ #define RTL_RCR_9356SEL 0x00000040UL /**< EEPROM is a 93C56 */ #define RTL_RCR_AB 0x00000008UL /**< Accept broadcast packets */