OSDN Git Service

net: Support RXFCS feature flag.
authorBen Greear <greearb@candelatech.com>
Sat, 11 Feb 2012 15:39:14 +0000 (15:39 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 24 Feb 2012 09:19:59 +0000 (01:19 -0800)
When set on hardware that supports the feature,
this causes the Ethernet FCS to be appended
to the end of the skb.

Useful for sniffing packets.

Signed-off-by: Ben Greear <greearb@candelatech.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Documentation/networking/netdev-features.txt
include/linux/netdev_features.h
net/core/ethtool.c

index 4b1c0dc..7d27812 100644 (file)
@@ -152,3 +152,9 @@ NETIF_F_VLAN_CHALLENGED should be set for devices which can't cope with VLAN
 headers. Some drivers set this because the cards can't handle the bigger MTU.
 [FIXME: Those cases could be fixed in VLAN code by allowing only reduced-MTU
 VLANs. This may be not useful, though.]
+
+*  rx-fcs
+
+This requests that the NIC append the Ethernet Frame Checksum (FCS)
+to the end of the skb data.  This allows sniffers and other tools to
+read the CRC recorded by the NIC on receipt of the packet.
index 77f5202..d133186 100644 (file)
@@ -54,6 +54,7 @@ enum {
        NETIF_F_RXCSUM_BIT,             /* Receive checksumming offload */
        NETIF_F_NOCACHE_COPY_BIT,       /* Use no-cache copyfromuser */
        NETIF_F_LOOPBACK_BIT,           /* Enable loopback */
+       NETIF_F_RXFCS_BIT,              /* Append FCS to skb pkt data */
 
        /*
         * Add your fresh new feature above and remember to update
@@ -98,6 +99,7 @@ enum {
 #define NETIF_F_TSO            __NETIF_F(TSO)
 #define NETIF_F_UFO            __NETIF_F(UFO)
 #define NETIF_F_VLAN_CHALLENGED        __NETIF_F(VLAN_CHALLENGED)
+#define NETIF_F_RXFCS          __NETIF_F(RXFCS)
 
 /* Features valid for ethtool to change */
 /* = all defined minus driver/device-class-related */
index 3f79db1..0801619 100644 (file)
@@ -73,6 +73,7 @@ static const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]
        [NETIF_F_RXCSUM_BIT] =           "rx-checksum",
        [NETIF_F_NOCACHE_COPY_BIT] =     "tx-nocache-copy",
        [NETIF_F_LOOPBACK_BIT] =         "loopback",
+       [NETIF_F_RXFCS_BIT] =            "rx-fcs",
 };
 
 static int ethtool_get_features(struct net_device *dev, void __user *useraddr)