aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ixgb/ixgb_main.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index da6b9d6e6db9..a6a13f6fe65b 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1977,8 +1977,8 @@ ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter)
1977 1977
1978 num_group_tail_writes = IXGB_RX_BUFFER_WRITE; 1978 num_group_tail_writes = IXGB_RX_BUFFER_WRITE;
1979 1979
1980 /* leave one descriptor unused */ 1980 /* leave three descriptors unused */
1981 while(--cleancount > 0) { 1981 while(--cleancount > 2) {
1982 rx_desc = IXGB_RX_DESC(*rx_ring, i); 1982 rx_desc = IXGB_RX_DESC(*rx_ring, i);
1983 1983
1984 skb = dev_alloc_skb(adapter->rx_buffer_len + NET_IP_ALIGN); 1984 skb = dev_alloc_skb(adapter->rx_buffer_len + NET_IP_ALIGN);
@@ -2005,6 +2005,10 @@ ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter)
2005 PCI_DMA_FROMDEVICE); 2005 PCI_DMA_FROMDEVICE);
2006 2006
2007 rx_desc->buff_addr = cpu_to_le64(buffer_info->dma); 2007 rx_desc->buff_addr = cpu_to_le64(buffer_info->dma);
2008 /* guarantee DD bit not set now before h/w gets descriptor
2009 * this is the rest of the workaround for h/w double
2010 * writeback. */
2011 rx_desc->status = 0;
2008 2012
2009 if((i & ~(num_group_tail_writes- 1)) == i) { 2013 if((i & ~(num_group_tail_writes- 1)) == i) {
2010 /* Force memory writes to complete before letting h/w 2014 /* Force memory writes to complete before letting h/w