Message ID | 20220201232715.1585390-1-eric.dumazet@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | David Ahern |
Headers | show |
Series | [iproute2] iplink: add gro_max_size attribute handling | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On Tue, 1 Feb 2022 15:27:15 -0800 Eric Dumazet <eric.dumazet@gmail.com> wrote: > From: Coco Li <lixiaoyan@google.com> > > 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: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> 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 <lixiaoyan@google.com> > Signed-off-by: Eric Dumazet <edumazet@google.com> Looks good, could you send update to man page as well?
On 2/1/22 4:27 PM, Eric Dumazet wrote: > diff --git a/ip/ipaddress.c b/ip/ipaddress.c > index 4109d8bd2c43640bee40656c124ea6393d95a345..583c41a94a8ec964779c1e3a8305be80e43907e7 100644 > --- a/ip/ipaddress.c > +++ b/ip/ipaddress.c > @@ -904,6 +904,11 @@ static int print_linkinfo_brief(FILE *fp, const char *name, > ifi->ifi_type, > b1, sizeof(b1))); > } > + 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 (filter.family == AF_PACKET) { gso_max_segs only shows in detail mode; this change prints it only for brief mode.
On Wed, Feb 2, 2022 at 7:55 PM David Ahern <dsahern@gmail.com> wrote: > > On 2/1/22 4:27 PM, Eric Dumazet wrote: > > diff --git a/ip/ipaddress.c b/ip/ipaddress.c > > index 4109d8bd2c43640bee40656c124ea6393d95a345..583c41a94a8ec964779c1e3a8305be80e43907e7 100644 > > --- a/ip/ipaddress.c > > +++ b/ip/ipaddress.c > > @@ -904,6 +904,11 @@ static int print_linkinfo_brief(FILE *fp, const char *name, > > ifi->ifi_type, > > b1, sizeof(b1))); > > } > > + 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 (filter.family == AF_PACKET) { > > gso_max_segs only shows in detail mode; this change prints it only for > brief mode. This is a rebase error, I will send a v2.
diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 4109d8bd2c43640bee40656c124ea6393d95a345..583c41a94a8ec964779c1e3a8305be80e43907e7 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -904,6 +904,11 @@ static int print_linkinfo_brief(FILE *fp, const char *name, ifi->ifi_type, b1, sizeof(b1))); } + 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 (filter.family == AF_PACKET) { diff --git a/ip/iplink.c b/ip/iplink.c index a3ea775d2b23c47916e9554b8615d430a58c6a55..c0a3a9ad3e629986ee2da0ee80eaf758f98aee5f 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,