Message ID | 20240709032326.581242-1-lulu@redhat.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [PATH,v2] vdpa: add the support to set mac address and MTU | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
> From: Cindy Lu <lulu@redhat.com> > Sent: Tuesday, July 9, 2024 8:53 AM > Subject: [PATH v2] vdpa: add the support to set mac address and MTU > Please fix PATH to PATCH. > Add new function to support the MAC address and MTU from VDPA tool. > The kernel now only supports setting the MAC address. > Please include only mac address setting for now in the example and documentation. In the future when kernel supports setting the mtu, please extend vdpa tool at that point to add the option. > The usage is vdpa dev set name vdpa_name mac **:**:**:**:** > > here is sample: > root@L1# vdpa -jp dev config show vdpa0 > { > "config": { > "vdpa0": { > "mac": "82:4d:e9:5d:d7:e6", > "link ": "up", > "link_announce ": false, > "mtu": 1500 > } > } > } > > root@L1# vdpa dev set name vdpa0 mac 00:11:22:33:44:55 > > root@L1# vdpa -jp dev config show vdpa0 > { > "config": { > "vdpa0": { > "mac": "00:11:22:33:44:55", > "link ": "up", > "link_announce ": false, > "mtu": 1500 > } > } > } > > Signed-off-by: Cindy Lu <lulu@redhat.com> > --- > man/man8/vdpa-dev.8 | 20 ++++++++++++++++++++ > vdpa/include/uapi/linux/vdpa.h | 1 + > vdpa/vdpa.c | 19 +++++++++++++++++++ > 3 files changed, 40 insertions(+) > > diff --git a/man/man8/vdpa-dev.8 b/man/man8/vdpa-dev.8 index > 43e5bf48..718f40b2 100644 > --- a/man/man8/vdpa-dev.8 > +++ b/man/man8/vdpa-dev.8 > @@ -50,6 +50,12 @@ vdpa-dev \- vdpa device configuration .B qidx .I > QUEUE_INDEX > > +.ti -8 > +.B vdpa dev set > +.B name > +.I NAME > +.B mac > +.RI "[ " MACADDR " ]" > > .SH "DESCRIPTION" > .SS vdpa dev show - display vdpa device attributes @@ -120,6 +126,15 @@ > VDPA_DEVICE_NAME .BI qidx " QUEUE_INDEX" > - specifies the virtqueue index to query > > +.SS vdpa dev set - set the configuration to the vdpa device. > + > +.BI name " NAME" > +-Name of the vdpa device to configure. > + > +.BI mac " MACADDR" > +- specifies the mac address for the vdpa device. > +This is applicable only for the network type of vdpa device. > + > .SH "EXAMPLES" > .PP > vdpa dev show > @@ -171,6 +186,11 @@ vdpa dev vstats show vdpa0 qidx 1 .RS 4 Shows > vendor specific statistics information for vdpa device vdpa0 and virtqueue > index 1 .RE > +.PP > +vdpa dev set name vdpa0 mac 00:11:22:33:44:55 .RS 4 Set a specific MAC > +address to vdpa device vdpa0 .RE > > .SH SEE ALSO > .BR vdpa (8), > diff --git a/vdpa/include/uapi/linux/vdpa.h b/vdpa/include/uapi/linux/vdpa.h > index 8586bd17..bc23c731 100644 > --- a/vdpa/include/uapi/linux/vdpa.h > +++ b/vdpa/include/uapi/linux/vdpa.h > @@ -19,6 +19,7 @@ enum vdpa_command { > VDPA_CMD_DEV_GET, /* can dump */ > VDPA_CMD_DEV_CONFIG_GET, /* can dump */ > VDPA_CMD_DEV_VSTATS_GET, > + VDPA_CMD_DEV_ATTR_SET, > }; > > enum vdpa_attr { > diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c > index 6e4a9c11..4b444b6a 100644 > --- a/vdpa/vdpa.c > +++ b/vdpa/vdpa.c > @@ -758,6 +758,22 @@ static int cmd_dev_del(struct vdpa *vdpa, int argc, > char **argv) > return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); } > > +static int cmd_dev_set(struct vdpa *vdpa, int argc, char **argv) { > + struct nlmsghdr *nlh; > + int err; > + > + nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, > VDPA_CMD_DEV_ATTR_SET, > + NLM_F_REQUEST | NLM_F_ACK); > + err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, > + VDPA_OPT_VDEV_NAME, > + > VDPA_OPT_VDEV_MAC|VDPA_OPT_VDEV_MTU); > + if (err) > + return err; > + > + return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); } > + > static void pr_out_dev_net_config(struct vdpa *vdpa, struct nlattr **tb) { > SPRINT_BUF(macaddr); > @@ -1028,6 +1044,9 @@ static int cmd_dev(struct vdpa *vdpa, int argc, char > **argv) > } else if (!strcmp(*argv, "vstats")) { > return cmd_dev_vstats(vdpa, argc - 1, argv + 1); > } > + else if (!strcmp(*argv, "set")) { > + return cmd_dev_set(vdpa, argc - 1, argv + 1); > + } Else if can be in the previous line. > fprintf(stderr, "Command \"%s\" not found\n", *argv); > return -ENOENT; > } > -- > 2.45.0
On Tue, 9 Jul 2024 at 12:01, Parav Pandit <parav@nvidia.com> wrote: > > > > > From: Cindy Lu <lulu@redhat.com> > > Sent: Tuesday, July 9, 2024 8:53 AM > > Subject: [PATH v2] vdpa: add the support to set mac address and MTU > > > Please fix PATH to PATCH. > > > Add new function to support the MAC address and MTU from VDPA tool. > > The kernel now only supports setting the MAC address. > > > Please include only mac address setting for now in the example and documentation. > In the future when kernel supports setting the mtu, please extend vdpa tool at that point to add the option. > > > The usage is vdpa dev set name vdpa_name mac **:**:**:**:** > > > > here is sample: > > root@L1# vdpa -jp dev config show vdpa0 > > { > > "config": { > > "vdpa0": { > > "mac": "82:4d:e9:5d:d7:e6", > > "link ": "up", > > "link_announce ": false, > > "mtu": 1500 > > } > > } > > } > > > > root@L1# vdpa dev set name vdpa0 mac 00:11:22:33:44:55 > > > > root@L1# vdpa -jp dev config show vdpa0 > > { > > "config": { > > "vdpa0": { > > "mac": "00:11:22:33:44:55", > > "link ": "up", > > "link_announce ": false, > > "mtu": 1500 > > } > > } > > } > > > > Signed-off-by: Cindy Lu <lulu@redhat.com> > > --- > > man/man8/vdpa-dev.8 | 20 ++++++++++++++++++++ > > vdpa/include/uapi/linux/vdpa.h | 1 + > > vdpa/vdpa.c | 19 +++++++++++++++++++ > > 3 files changed, 40 insertions(+) > > > > diff --git a/man/man8/vdpa-dev.8 b/man/man8/vdpa-dev.8 index > > 43e5bf48..718f40b2 100644 > > --- a/man/man8/vdpa-dev.8 > > +++ b/man/man8/vdpa-dev.8 > > @@ -50,6 +50,12 @@ vdpa-dev \- vdpa device configuration .B qidx .I > > QUEUE_INDEX > > > > +.ti -8 > > +.B vdpa dev set > > +.B name > > +.I NAME > > +.B mac > > +.RI "[ " MACADDR " ]" > > > > .SH "DESCRIPTION" > > .SS vdpa dev show - display vdpa device attributes @@ -120,6 +126,15 @@ > > VDPA_DEVICE_NAME .BI qidx " QUEUE_INDEX" > > - specifies the virtqueue index to query > > > > +.SS vdpa dev set - set the configuration to the vdpa device. > > + > > +.BI name " NAME" > > +-Name of the vdpa device to configure. > > + > > +.BI mac " MACADDR" > > +- specifies the mac address for the vdpa device. > > +This is applicable only for the network type of vdpa device. > > + > > .SH "EXAMPLES" > > .PP > > vdpa dev show > > @@ -171,6 +186,11 @@ vdpa dev vstats show vdpa0 qidx 1 .RS 4 Shows > > vendor specific statistics information for vdpa device vdpa0 and virtqueue > > index 1 .RE > > +.PP > > +vdpa dev set name vdpa0 mac 00:11:22:33:44:55 .RS 4 Set a specific MAC > > +address to vdpa device vdpa0 .RE > > > > .SH SEE ALSO > > .BR vdpa (8), > > diff --git a/vdpa/include/uapi/linux/vdpa.h b/vdpa/include/uapi/linux/vdpa.h > > index 8586bd17..bc23c731 100644 > > --- a/vdpa/include/uapi/linux/vdpa.h > > +++ b/vdpa/include/uapi/linux/vdpa.h > > @@ -19,6 +19,7 @@ enum vdpa_command { > > VDPA_CMD_DEV_GET, /* can dump */ > > VDPA_CMD_DEV_CONFIG_GET, /* can dump */ > > VDPA_CMD_DEV_VSTATS_GET, > > + VDPA_CMD_DEV_ATTR_SET, > > }; > > > > enum vdpa_attr { > > diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c > > index 6e4a9c11..4b444b6a 100644 > > --- a/vdpa/vdpa.c > > +++ b/vdpa/vdpa.c > > @@ -758,6 +758,22 @@ static int cmd_dev_del(struct vdpa *vdpa, int argc, > > char **argv) > > return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); } > > > > +static int cmd_dev_set(struct vdpa *vdpa, int argc, char **argv) { > > + struct nlmsghdr *nlh; > > + int err; > > + > > + nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, > > VDPA_CMD_DEV_ATTR_SET, > > + NLM_F_REQUEST | NLM_F_ACK); > > + err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, > > + VDPA_OPT_VDEV_NAME, > > + > > VDPA_OPT_VDEV_MAC|VDPA_OPT_VDEV_MTU); > > + if (err) > > + return err; > > + > > + return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); } > > + > > static void pr_out_dev_net_config(struct vdpa *vdpa, struct nlattr **tb) { > > SPRINT_BUF(macaddr); > > @@ -1028,6 +1044,9 @@ static int cmd_dev(struct vdpa *vdpa, int argc, char > > **argv) > > } else if (!strcmp(*argv, "vstats")) { > > return cmd_dev_vstats(vdpa, argc - 1, argv + 1); > > } > > + else if (!strcmp(*argv, "set")) { > > + return cmd_dev_set(vdpa, argc - 1, argv + 1); > > + } > Else if can be in the previous line. > Thanks will fix this Thanks Cindy > > fprintf(stderr, "Command \"%s\" not found\n", *argv); > > return -ENOENT; > > } > > -- > > 2.45.0 >
diff --git a/man/man8/vdpa-dev.8 b/man/man8/vdpa-dev.8 index 43e5bf48..718f40b2 100644 --- a/man/man8/vdpa-dev.8 +++ b/man/man8/vdpa-dev.8 @@ -50,6 +50,12 @@ vdpa-dev \- vdpa device configuration .B qidx .I QUEUE_INDEX +.ti -8 +.B vdpa dev set +.B name +.I NAME +.B mac +.RI "[ " MACADDR " ]" .SH "DESCRIPTION" .SS vdpa dev show - display vdpa device attributes @@ -120,6 +126,15 @@ VDPA_DEVICE_NAME .BI qidx " QUEUE_INDEX" - specifies the virtqueue index to query +.SS vdpa dev set - set the configuration to the vdpa device. + +.BI name " NAME" +-Name of the vdpa device to configure. + +.BI mac " MACADDR" +- specifies the mac address for the vdpa device. +This is applicable only for the network type of vdpa device. + .SH "EXAMPLES" .PP vdpa dev show @@ -171,6 +186,11 @@ vdpa dev vstats show vdpa0 qidx 1 .RS 4 Shows vendor specific statistics information for vdpa device vdpa0 and virtqueue index 1 .RE +.PP +vdpa dev set name vdpa0 mac 00:11:22:33:44:55 +.RS 4 +Set a specific MAC address to vdpa device vdpa0 +.RE .SH SEE ALSO .BR vdpa (8), diff --git a/vdpa/include/uapi/linux/vdpa.h b/vdpa/include/uapi/linux/vdpa.h index 8586bd17..bc23c731 100644 --- a/vdpa/include/uapi/linux/vdpa.h +++ b/vdpa/include/uapi/linux/vdpa.h @@ -19,6 +19,7 @@ enum vdpa_command { VDPA_CMD_DEV_GET, /* can dump */ VDPA_CMD_DEV_CONFIG_GET, /* can dump */ VDPA_CMD_DEV_VSTATS_GET, + VDPA_CMD_DEV_ATTR_SET, }; enum vdpa_attr { diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c index 6e4a9c11..4b444b6a 100644 --- a/vdpa/vdpa.c +++ b/vdpa/vdpa.c @@ -758,6 +758,22 @@ static int cmd_dev_del(struct vdpa *vdpa, int argc, char **argv) return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); } +static int cmd_dev_set(struct vdpa *vdpa, int argc, char **argv) +{ + struct nlmsghdr *nlh; + int err; + + nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, VDPA_CMD_DEV_ATTR_SET, + NLM_F_REQUEST | NLM_F_ACK); + err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, + VDPA_OPT_VDEV_NAME, + VDPA_OPT_VDEV_MAC|VDPA_OPT_VDEV_MTU); + if (err) + return err; + + return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); +} + static void pr_out_dev_net_config(struct vdpa *vdpa, struct nlattr **tb) { SPRINT_BUF(macaddr); @@ -1028,6 +1044,9 @@ static int cmd_dev(struct vdpa *vdpa, int argc, char **argv) } else if (!strcmp(*argv, "vstats")) { return cmd_dev_vstats(vdpa, argc - 1, argv + 1); } + else if (!strcmp(*argv, "set")) { + return cmd_dev_set(vdpa, argc - 1, argv + 1); + } fprintf(stderr, "Command \"%s\" not found\n", *argv); return -ENOENT; }
Add new function to support the MAC address and MTU from VDPA tool. The kernel now only supports setting the MAC address. The usage is vdpa dev set name vdpa_name mac **:**:**:**:** here is sample: root@L1# vdpa -jp dev config show vdpa0 { "config": { "vdpa0": { "mac": "82:4d:e9:5d:d7:e6", "link ": "up", "link_announce ": false, "mtu": 1500 } } } root@L1# vdpa dev set name vdpa0 mac 00:11:22:33:44:55 root@L1# vdpa -jp dev config show vdpa0 { "config": { "vdpa0": { "mac": "00:11:22:33:44:55", "link ": "up", "link_announce ": false, "mtu": 1500 } } } Signed-off-by: Cindy Lu <lulu@redhat.com> --- man/man8/vdpa-dev.8 | 20 ++++++++++++++++++++ vdpa/include/uapi/linux/vdpa.h | 1 + vdpa/vdpa.c | 19 +++++++++++++++++++ 3 files changed, 40 insertions(+)