[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CACLfguUw2KaryX=72jg_N9wqEeKtSPQR+KkmzW=PRReUd9minA@mail.gmail.com>
Date: Tue, 9 Jul 2024 14:34:30 +0800
From: Cindy Lu <lulu@...hat.com>
To: Parav Pandit <parav@...dia.com>
Cc: Dragos Tatulea <dtatulea@...dia.com>, "mst@...hat.com" <mst@...hat.com>,
"jasowang@...hat.com" <jasowang@...hat.com>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: Re: [PATH v2] vdpa: add the support to set mac address and MTU
On Tue, 9 Jul 2024 at 12:01, Parav Pandit <parav@...dia.com> wrote:
>
>
>
> > From: Cindy Lu <lulu@...hat.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@...hat.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
>
Powered by blists - more mailing lists