r8169: Support RX-FCS flag.
authorBen Greear <greearb@candelatech.com>
Fri, 10 Feb 2012 15:04:34 +0000 (15:04 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 24 Feb 2012 09:56:32 +0000 (01:56 -0800)
This allows the NIC to receive the Ethernet FCS
and pass it up the stack, allowing sniffers and
other interested programs to inspect the FCS.

Signed-off-by: Ben Greear <greearb@candelatech.com>
drivers/net/ethernet/realtek/r8169.c

index 0517a6a252f1f1808ab20fec7cf5a749385f5da3..fbd855bcd9f023a18d7995afb0851a6b59cabeff 100644 (file)
@@ -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