aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/e1000e/netdev.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index e87ed3133528..03fcc70e0198 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -494,10 +494,6 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
494 goto next_desc; 494 goto next_desc;
495 } 495 }
496 496
497 /* adjust length to remove Ethernet CRC */
498 length -= 4;
499
500 /* probably a little skewed due to removing CRC */
501 total_rx_bytes += length; 497 total_rx_bytes += length;
502 total_rx_packets++; 498 total_rx_packets++;
503 499
@@ -964,8 +960,7 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
964 kunmap_atomic(vaddr, KM_SKB_DATA_SOFTIRQ); 960 kunmap_atomic(vaddr, KM_SKB_DATA_SOFTIRQ);
965 pci_dma_sync_single_for_device(pdev, ps_page->dma, 961 pci_dma_sync_single_for_device(pdev, ps_page->dma,
966 PAGE_SIZE, PCI_DMA_FROMDEVICE); 962 PAGE_SIZE, PCI_DMA_FROMDEVICE);
967 /* remove the CRC */ 963
968 l1 -= 4;
969 skb_put(skb, l1); 964 skb_put(skb, l1);
970 goto copydone; 965 goto copydone;
971 } /* if */ 966 } /* if */
@@ -987,10 +982,6 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
987 skb->truesize += length; 982 skb->truesize += length;
988 } 983 }
989 984
990 /* strip the ethernet crc, problem is we're using pages now so
991 * this whole operation can get a little cpu intensive */
992 pskb_trim(skb, skb->len - 4);
993
994copydone: 985copydone:
995 total_rx_bytes += skb->len; 986 total_rx_bytes += skb->len;
996 total_rx_packets++; 987 total_rx_packets++;
@@ -2034,9 +2025,11 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
2034 2025
2035 ew32(RFCTL, rfctl); 2026 ew32(RFCTL, rfctl);
2036 2027
2037 /* disable the stripping of CRC because it breaks 2028 /* Enable Packet split descriptors */
2038 * BMC firmware connected over SMBUS */ 2029 rctl |= E1000_RCTL_DTYP_PS;
2039 rctl |= E1000_RCTL_DTYP_PS /* | E1000_RCTL_SECRC */; 2030
2031 /* Enable hardware CRC frame stripping */
2032 rctl |= E1000_RCTL_SECRC;
2040 2033
2041 psrctl |= adapter->rx_ps_bsize0 >> 2034 psrctl |= adapter->rx_ps_bsize0 >>
2042 E1000_PSRCTL_BSIZE0_SHIFT; 2035 E1000_PSRCTL_BSIZE0_SHIFT;