diff mbox series

[iproute2] iplink: add gro_max_size attribute handling

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

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Eric Dumazet Feb. 1, 2022, 11:27 p.m. UTC
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>
---
 ip/ipaddress.c |  5 +++++
 ip/iplink.c    | 10 ++++++++++
 2 files changed, 15 insertions(+)

Comments

Stephen Hemminger Feb. 2, 2022, 12:42 a.m. UTC | #1
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?
David Ahern Feb. 3, 2022, 3:55 a.m. UTC | #2
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.
Eric Dumazet Feb. 3, 2022, 4:45 a.m. UTC | #3
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 mbox series

Patch

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,