From: Coco Li Date: Thu, 3 Feb 2022 04:45:58 +0000 (-0800) Subject: iplink: add gro_max_size attribute handling X-Git-Tag: v5.18.0~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d57e130362aa5b1c8df980f2f31ce24d42ad1a3;p=thirdparty%2Fiproute2.git iplink: add gro_max_size attribute handling Add the ability to display or change the gro_max_size attribute. ip link set dev eth1 gro_max_size 60000 ip -d link show eth1 5: eth1: mtu 9198 qdisc mq master eth0 state UP mode DEFAULT group default qlen 1000 link/ether bc:ae:c5:39:69:66 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 46 maxmtu 9600 <...> gro_max_size 60000 Signed-off-by: Coco Li Signed-off-by: Eric Dumazet Signed-off-by: David Ahern --- diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 4109d8bd2..739b0b9c9 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -1219,6 +1219,12 @@ int print_linkinfo(struct nlmsghdr *n, void *arg) "gso_max_segs %u ", rta_getattr_u32(tb[IFLA_GSO_MAX_SEGS])); + if (tb[IFLA_GRO_MAX_SIZE]) + print_uint(PRINT_ANY, + "gro_max_size", + "gro_max_size %u ", + rta_getattr_u32(tb[IFLA_GRO_MAX_SIZE])); + if (tb[IFLA_PHYS_PORT_NAME]) print_string(PRINT_ANY, "phys_port_name", diff --git a/ip/iplink.c b/ip/iplink.c index a3ea775d2..c0a3a9ad3 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -118,6 +118,7 @@ void iplink_usage(void) " [ protodown { on | off } ]\n" " [ protodown_reason PREASON { on | off } ]\n" " [ gso_max_size BYTES ] | [ gso_max_segs PACKETS ]\n" + " [ gro_max_size BYTES ]\n" "\n" " ip link show [ DEVICE | group GROUP ] [up] [master DEV] [vrf NAME] [type TYPE]\n" " [nomaster]\n" @@ -942,6 +943,15 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req, char **type) *argv); addattr32(&req->n, sizeof(*req), IFLA_GSO_MAX_SEGS, max_segs); + } else if (strcmp(*argv, "gro_max_size") == 0) { + unsigned int max_size; + + NEXT_ARG(); + if (get_unsigned(&max_size, *argv, 0)) + invarg("Invalid \"gro_max_size\" value\n", + *argv); + addattr32(&req->n, sizeof(*req), + IFLA_GRO_MAX_SIZE, max_size); } else if (strcmp(*argv, "parentdev") == 0) { NEXT_ARG(); addattr_l(&req->n, sizeof(*req), IFLA_PARENT_DEV_NAME,