8139too: Support RX-FCS flag.
authorBen Greear <greearb@candelatech.com>
Fri, 10 Feb 2012 15:04:32 +0000 (15:04 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 24 Feb 2012 09:56:24 +0000 (01:56 -0800)
This allows the NIC to pass the Ethernet FCS on up
the stack, and is useful when sniffing networks.

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

index 1b9a090d4865419ee9936c99bde0351d27fbb44a..abd6aca70e9bdb62219f673826a35ed66ea2b612 100644 (file)
@@ -1023,6 +1023,7 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
        dev->vlan_features = dev->features;
 
        dev->hw_features |= NETIF_F_RXALL;
+       dev->hw_features |= NETIF_F_RXFCS;
 
        dev->irq = pdev->irq;
 
@@ -1970,7 +1971,10 @@ static int rtl8139_rx(struct net_device *dev, struct rtl8139_private *tp,
                /* read size+status of next frame from DMA ring buffer */
                rx_status = le32_to_cpu (*(__le32 *) (rx_ring + ring_offset));
                rx_size = rx_status >> 16;
-               pkt_size = rx_size - 4;
+               if (likely(!(dev->features & NETIF_F_RXFCS)))
+                       pkt_size = rx_size - 4;
+               else
+                       pkt_size = rx_size;
 
                netif_dbg(tp, rx_status, dev, "%s() status %04x, size %04x, cur %04x\n",
                          __func__, rx_status, rx_size, cur_rx);