net: Add fraglist GRO/GSO feature flags
authorSteffen Klassert <steffen.klassert@secunet.com>
Sat, 25 Jan 2020 10:26:42 +0000 (11:26 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Jan 2020 10:00:21 +0000 (11:00 +0100)
This adds new Fraglist GRO/GSO feature flags. They will be used
to configure fraglist GRO/GSO what will be implemented with some
followup paches.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdev_features.h
include/linux/netdevice.h
include/linux/skbuff.h
net/ethtool/common.c

index 4b19c54..b239507 100644 (file)
@@ -53,8 +53,9 @@ enum {
        NETIF_F_GSO_ESP_BIT,            /* ... ESP with TSO */
        NETIF_F_GSO_UDP_BIT,            /* ... UFO, deprecated except tuntap */
        NETIF_F_GSO_UDP_L4_BIT,         /* ... UDP payload GSO (not UFO) */
+       NETIF_F_GSO_FRAGLIST_BIT,               /* ... Fraglist GSO */
        /**/NETIF_F_GSO_LAST =          /* last bit, see GSO_MASK */
-               NETIF_F_GSO_UDP_L4_BIT,
+               NETIF_F_GSO_FRAGLIST_BIT,
 
        NETIF_F_FCOE_CRC_BIT,           /* FCoE CRC32 */
        NETIF_F_SCTP_CRC_BIT,           /* SCTP checksum offload */
@@ -80,6 +81,7 @@ enum {
 
        NETIF_F_GRO_HW_BIT,             /* Hardware Generic receive offload */
        NETIF_F_HW_TLS_RECORD_BIT,      /* Offload TLS record */
+       NETIF_F_GRO_FRAGLIST_BIT,       /* Fraglist GRO */
 
        /*
         * Add your fresh new feature above and remember to update
@@ -150,6 +152,8 @@ enum {
 #define NETIF_F_GSO_UDP_L4     __NETIF_F(GSO_UDP_L4)
 #define NETIF_F_HW_TLS_TX      __NETIF_F(HW_TLS_TX)
 #define NETIF_F_HW_TLS_RX      __NETIF_F(HW_TLS_RX)
+#define NETIF_F_GRO_FRAGLIST   __NETIF_F(GRO_FRAGLIST)
+#define NETIF_F_GSO_FRAGLIST   __NETIF_F(GSO_FRAGLIST)
 
 /* Finds the next feature with the highest number of the range of start till 0.
  */
index 78e9c6c..fcc76b8 100644 (file)
@@ -4570,6 +4570,7 @@ static inline bool net_gso_ok(netdev_features_t features, int gso_type)
        BUILD_BUG_ON(SKB_GSO_ESP != (NETIF_F_GSO_ESP >> NETIF_F_GSO_SHIFT));
        BUILD_BUG_ON(SKB_GSO_UDP != (NETIF_F_GSO_UDP >> NETIF_F_GSO_SHIFT));
        BUILD_BUG_ON(SKB_GSO_UDP_L4 != (NETIF_F_GSO_UDP_L4 >> NETIF_F_GSO_SHIFT));
+       BUILD_BUG_ON(SKB_GSO_FRAGLIST != (NETIF_F_GSO_FRAGLIST >> NETIF_F_GSO_SHIFT));
 
        return (features & feature) == feature;
 }
index 26beae7..23aaaf0 100644 (file)
@@ -592,6 +592,8 @@ enum {
        SKB_GSO_UDP = 1 << 16,
 
        SKB_GSO_UDP_L4 = 1 << 17,
+
+       SKB_GSO_FRAGLIST = 1 << 18,
 };
 
 #if BITS_PER_LONG > 32
index e621b16..c7b8956 100644 (file)
@@ -59,6 +59,7 @@ const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN] = {
        [NETIF_F_HW_TLS_RECORD_BIT] =   "tls-hw-record",
        [NETIF_F_HW_TLS_TX_BIT] =        "tls-hw-tx-offload",
        [NETIF_F_HW_TLS_RX_BIT] =        "tls-hw-rx-offload",
+       [NETIF_F_GRO_FRAGLIST_BIT] =     "rx-gro-list",
 };
 
 const char