diff options
author | Malli Chilakala <mallikarjuna.chilakala@intel.com> | 2005-04-28 21:51:54 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-05-12 20:54:41 -0400 |
commit | 41639fed1b32dde4ea3d94242a89308435d341be (patch) | |
tree | 2e8232795eff9e0a2b6c6b3d22c0532c472c749d | |
parent | 6dfbb6dd391139be9f1cd333877c6e2b03da4bba (diff) |
[PATCH] ixgb: Reset status in the Rx
Reset status in the Rx descriptor prior to handing it to the controller.
Leave three Rx descriptors unused
Signed-off-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com>
Signed-off-by: Ganesh Venkatesan <ganesh.venkatesan@intel.com>
Signed-off-by: John Ronciak <john.ronciak@intel.com>
diff -up net-drivers-2.6/drivers/net/ixgb/ixgb_main.c net-drivers-2.6/drivers/net/ixgb.new/ixgb_main.c
-rw-r--r-- | drivers/net/ixgb/ixgb_main.c | 8 |
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 |