diff --git a/[refs] b/[refs] index 6a5068aa3ae6..8bcde61c9557 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6bbe021d405fff46b64a08dca51b06897b897a67 +refs/heads/master: 79d0c1d26e1eac0dc5b201e66b65cc5e4e706743 diff --git a/trunk/drivers/net/ethernet/realtek/r8169.c b/trunk/drivers/net/ethernet/realtek/r8169.c index 0517a6a252f1..fbd855bcd9f0 100644 --- a/trunk/drivers/net/ethernet/realtek/r8169.c +++ b/trunk/drivers/net/ethernet/realtek/r8169.c @@ -4186,6 +4186,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev->hw_features &= ~NETIF_F_HW_VLAN_RX; dev->hw_features |= NETIF_F_RXALL; + dev->hw_features |= NETIF_F_RXFCS; tp->hw_start = cfg->hw_start; tp->event_slow = cfg->event_slow; @@ -5773,7 +5774,10 @@ static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget process_pkt: addr = le64_to_cpu(desc->addr); - pkt_size = (status & 0x00003fff) - 4; + if (likely(!(dev->features & NETIF_F_RXFCS))) + pkt_size = (status & 0x00003fff) - 4; + else + pkt_size = status & 0x00003fff; /* * The driver does not support incoming fragmented