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 |
