diff options
Diffstat (limited to 'drivers/net/e1000/e1000_main.c')
| -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 b1419e21b46..fffb006b7d9 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -4027,8 +4027,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);  |