iplink: allow configuring GSO max values
This allows sending GSO maximum values when configuring a device. The values are advisory. Most devices will ignore them but for some pseudo devices such as veth pairs they can be set. Example: # ip link add dev vm1 type veth peer name vm2 gso_max_size 32768 Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
This commit is contained in:
parent
5c6e3478ac
commit
c2db423f7c
19
ip/iplink.c
19
ip/iplink.c
|
|
@ -97,7 +97,8 @@ void iplink_usage(void)
|
|||
" [ master DEVICE ][ vrf NAME ]\n"
|
||||
" [ nomaster ]\n"
|
||||
" [ addrgenmode { eui64 | none | stable_secret | random } ]\n"
|
||||
" [ protodown { on | off } ]\n"
|
||||
" [ protodown { on | off } ]\n"
|
||||
" [ gso_max_size BYTES ] | [ gso_max_segs PACKETS ]\n"
|
||||
"\n"
|
||||
" ip link show [ DEVICE | group GROUP ] [up] [master DEV] [vrf NAME] [type TYPE]\n");
|
||||
|
||||
|
|
@ -848,6 +849,22 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
|
|||
return on_off("protodown", *argv);
|
||||
addattr8(&req->n, sizeof(*req), IFLA_PROTO_DOWN,
|
||||
proto_down);
|
||||
} else if (strcmp(*argv, "gso_max_size") == 0) {
|
||||
unsigned int max_size;
|
||||
|
||||
NEXT_ARG();
|
||||
if (get_unsigned(&max_size, *argv, 0) || max_size > UINT16_MAX)
|
||||
invarg("Invalid \"gso_max_size\" value\n",
|
||||
*argv);
|
||||
addattr32(&req->n, sizeof(*req), IFLA_GSO_MAX_SIZE, max_size);
|
||||
} else if (strcmp(*argv, "gso_max_segs") == 0) {
|
||||
unsigned int max_segs;
|
||||
|
||||
NEXT_ARG();
|
||||
if (get_unsigned(&max_segs, *argv, 0) || max_segs > UINT16_MAX)
|
||||
invarg("Invalid \"gso_max_segs\" value\n",
|
||||
*argv);
|
||||
addattr32(&req->n, sizeof(*req), IFLA_GSO_MAX_SEGS, max_segs);
|
||||
} else {
|
||||
if (matches(*argv, "help") == 0)
|
||||
usage();
|
||||
|
|
|
|||
|
|
@ -36,6 +36,11 @@ ip-link \- network device configuration
|
|||
.RB "[ " numrxqueues
|
||||
.IR QUEUE_COUNT " ]"
|
||||
.br
|
||||
.BR "[" gso_max_size
|
||||
.IR BYTES " ]"
|
||||
.RB "[ " gso_max_segs
|
||||
.IR SEGMENTS " ]"
|
||||
.br
|
||||
.BI type " TYPE"
|
||||
.RI "[ " ARGS " ]"
|
||||
|
||||
|
|
@ -342,6 +347,14 @@ specifies the number of transmit queues for new device.
|
|||
.BI numrxqueues " QUEUE_COUNT "
|
||||
specifies the number of receive queues for new device.
|
||||
|
||||
.TP
|
||||
.BI gso_max_size " BYTES "
|
||||
specifies the recommended maximum size of a Generic Segment Offload packet the new device should accept.
|
||||
|
||||
.TP
|
||||
.BI gso_max_segs " SEGMENTS "
|
||||
specifies the recommended maximum number of a Generic Segment Offload segments the new device should accept.
|
||||
|
||||
.TP
|
||||
.BI index " IDX "
|
||||
specifies the desired index of the new virtual device. The link creation fails, if the index is busy.
|
||||
|
|
|
|||
Loading…
Reference in New Issue