diff options
author | David S. Miller <davem@davemloft.net> | 2009-06-03 02:43:41 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-03 02:43:41 -0700 |
commit | b2f8f7525c8aa1fdd8ad8c72c832dfb571d5f768 (patch) | |
tree | 71ae1801d264bca62efa0d22376b49de7f206e9a /drivers/net/e1000 | |
parent | d455e5b165a367a628110ec2d18807ea10052cd1 (diff) | |
parent | 12186be7d2e1106cede1cc728526e3d7998cbe94 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/forcedeth.c
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 74667e521431..05e87a59f1c6 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -4035,8 +4035,9 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter, PCI_DMA_FROMDEVICE); length = le16_to_cpu(rx_desc->length); - - if (unlikely(!(status & E1000_RXD_STAT_EOP))) { + /* !EOP means multiple descriptors were used to store a single + * packet, also make sure the frame isn't just CRC only */ + if (unlikely(!(status & E1000_RXD_STAT_EOP) || (length <= 4))) { /* All receives must fit into a single buffer */ E1000_DBG("%s: Receive packet consumed multiple" " buffers\n", netdev->name); |