diff options
| -rw-r--r-- | drivers/net/e1000.c | 10 | ||||
| -rw-r--r-- | drivers/net/e1000.h | 1 | 
2 files changed, 11 insertions, 0 deletions
| diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c index 2d4da4b38..8ba98b27d 100644 --- a/drivers/net/e1000.c +++ b/drivers/net/e1000.c @@ -1688,6 +1688,16 @@ e1000_init_hw(struct eth_device *nic)  		E1000_WRITE_REG(hw, TXDCTL, ctrl);  	} +	/* Set the receive descriptor write back policy */ + +	if (hw->mac_type >= e1000_82571) { +		ctrl = E1000_READ_REG(hw, RXDCTL); +		ctrl = +		    (ctrl & ~E1000_RXDCTL_WTHRESH) | +		    E1000_RXDCTL_FULL_RX_DESC_WB; +		E1000_WRITE_REG(hw, RXDCTL, ctrl); +	} +  	switch (hw->mac_type) {  	default:  		break; diff --git a/drivers/net/e1000.h b/drivers/net/e1000.h index fd1d8f871..1bbae5085 100644 --- a/drivers/net/e1000.h +++ b/drivers/net/e1000.h @@ -1551,6 +1551,7 @@ struct e1000_hw {  #define E1000_RXDCTL_HTHRESH 0x00003F00	/* RXDCTL Host Threshold */  #define E1000_RXDCTL_WTHRESH 0x003F0000	/* RXDCTL Writeback Threshold */  #define E1000_RXDCTL_GRAN    0x01000000	/* RXDCTL Granularity */ +#define E1000_RXDCTL_FULL_RX_DESC_WB 0x01010000	/* GRAN=1, WTHRESH=1 */  /* Transmit Descriptor Control */  #define E1000_TXDCTL_PTHRESH 0x0000003F	/* TXDCTL Prefetch Threshold */ |