net: add IFLA_TSO_{MAX_SIZE|SEGS} attributes
authorEric Dumazet <edumazet@google.com>
Fri, 13 May 2022 18:33:56 +0000 (11:33 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 May 2022 09:18:55 +0000 (10:18 +0100)
New netlink attributes IFLA_TSO_MAX_SIZE and IFLA_TSO_MAX_SEGS
are used to report to user-space the device TSO limits.

ip -d link sh dev eth1
...
   tso_max_size 65536 tso_max_segs 65535

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Alexander Duyck <alexanderduyck@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/if_link.h
net/core/rtnetlink.c
tools/include/uapi/linux/if_link.h

index d1e6008..5f58dcf 100644 (file)
@@ -368,6 +368,8 @@ enum {
        IFLA_PARENT_DEV_NAME,
        IFLA_PARENT_DEV_BUS_NAME,
        IFLA_GRO_MAX_SIZE,
+       IFLA_TSO_MAX_SIZE,
+       IFLA_TSO_MAX_SEGS,
 
        __IFLA_MAX
 };
index bdc8913..f35cc21 100644 (file)
@@ -1064,6 +1064,8 @@ static noinline size_t if_nlmsg_size(const struct net_device *dev,
               + nla_total_size(4) /* IFLA_GSO_MAX_SEGS */
               + nla_total_size(4) /* IFLA_GSO_MAX_SIZE */
               + nla_total_size(4) /* IFLA_GRO_MAX_SIZE */
+              + nla_total_size(4) /* IFLA_TSO_MAX_SIZE */
+              + nla_total_size(4) /* IFLA_TSO_MAX_SEGS */
               + nla_total_size(1) /* IFLA_OPERSTATE */
               + nla_total_size(1) /* IFLA_LINKMODE */
               + nla_total_size(4) /* IFLA_CARRIER_CHANGES */
@@ -1769,6 +1771,8 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb,
            nla_put_u32(skb, IFLA_GSO_MAX_SEGS, dev->gso_max_segs) ||
            nla_put_u32(skb, IFLA_GSO_MAX_SIZE, dev->gso_max_size) ||
            nla_put_u32(skb, IFLA_GRO_MAX_SIZE, dev->gro_max_size) ||
+           nla_put_u32(skb, IFLA_TSO_MAX_SIZE, dev->tso_max_size) ||
+           nla_put_u32(skb, IFLA_TSO_MAX_SEGS, dev->tso_max_segs) ||
 #ifdef CONFIG_RPS
            nla_put_u32(skb, IFLA_NUM_RX_QUEUES, dev->num_rx_queues) ||
 #endif
@@ -1922,6 +1926,8 @@ static const struct nla_policy ifla_policy[IFLA_MAX+1] = {
        [IFLA_NEW_IFINDEX]      = NLA_POLICY_MIN(NLA_S32, 1),
        [IFLA_PARENT_DEV_NAME]  = { .type = NLA_NUL_STRING },
        [IFLA_GRO_MAX_SIZE]     = { .type = NLA_U32 },
+       [IFLA_TSO_MAX_SIZE]     = { .type = NLA_REJECT },
+       [IFLA_TSO_MAX_SEGS]     = { .type = NLA_REJECT },
 };
 
 static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = {
index e1ba2d5..b339bf2 100644 (file)
@@ -348,6 +348,8 @@ enum {
        IFLA_PARENT_DEV_NAME,
        IFLA_PARENT_DEV_BUS_NAME,
        IFLA_GRO_MAX_SIZE,
+       IFLA_TSO_MAX_SIZE,
+       IFLA_TSO_MAX_SEGS,
 
        __IFLA_MAX
 };