From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: Carlos Bilbao <carlos.bilbao.osdev@gmail.com>,
dtatulea@nvidia.com, bilbao@vt.edu, xuanzhuo@linux.alibaba.com,
eperezma@redhat.com, cratiu@nvidia.com, lingshan.zhu@intel.com,
virtualization@lists.linux.dev, linux-kernel@vger.kernel.org,
Carlos Bilbao <cbilbao@digitalocean.com>
Subject: Re: [PATCH] vdpa: Set speed and duplex of mlx5_vnet to UNKNOWN
Date: Thu, 29 Aug 2024 02:08:04 -0400 [thread overview]
Message-ID: <20240829020710-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <CACGkMEs2wDLBq3_5KDOHou3g8Cxhm9Dx8eXy7JnX0R8ZYqinZA@mail.gmail.com>
On Thu, Aug 29, 2024 at 12:49:24PM +0800, Jason Wang wrote:
> On Thu, Aug 29, 2024 at 2:16 AM Carlos Bilbao
> <carlos.bilbao.osdev@gmail.com> wrote:
> >
> > From: Carlos Bilbao <cbilbao@digitalocean.com>
> >
> > mlx5_vdpa vDPA devices currently don't support reporting or setting the
> > speed and duplex and hence should be UNKNOWN instead of zero.
> >
> > Signed-off-by: Carlos Bilbao <cbilbao@digitalocean.com>
> > ---
> > drivers/vdpa/mlx5/net/mlx5_vnet.c | 7 +++++++
> > drivers/vdpa/vdpa.c | 23 +++++++++++++++++++++++
> > include/uapi/linux/vdpa.h | 2 ++
> > 3 files changed, 32 insertions(+)
> >
> > diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> > index fa78e8288ebb..319f5c6121de 100644
> > --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
> > +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> > @@ -3795,6 +3795,13 @@ static int mlx5_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name,
> > init_rwsem(&ndev->reslock);
> > config = &ndev->config;
> >
> > + /*
> > + * mlx5_vdpa vDPA devices currently don't support reporting or
> > + * setting the speed or duplex.
> > + */
> > + config->speed = SPEED_UNKNOWN;
> > + config->duplex = DUPLEX_UNKNOWN;
> > +
> > if (add_config->mask & BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MTU)) {
> > err = config_func_mtu(mdev, add_config->net.mtu);
> > if (err)
> > diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c
> > index 4dbd2e55a288..abde23e0041d 100644
> > --- a/drivers/vdpa/vdpa.c
> > +++ b/drivers/vdpa/vdpa.c
> > @@ -15,6 +15,7 @@
> > #include <net/genetlink.h>
> > #include <linux/mod_devicetable.h>
> > #include <linux/virtio_ids.h>
> > +#include <uapi/linux/ethtool.h>
> >
> > static LIST_HEAD(mdev_head);
> > /* A global mutex that protects vdpa management device and device level operations. */
> > @@ -919,6 +920,22 @@ static int vdpa_dev_net_status_config_fill(struct sk_buff *msg, u64 features,
> > return nla_put_u16(msg, VDPA_ATTR_DEV_NET_STATUS, val_u16);
> > }
> >
> > +static int vdpa_dev_net_speed_config_fill(struct sk_buff *msg, u64 features,
> > + struct virtio_net_config *config)
> > +{
> > + __le32 speed = cpu_to_le32(SPEED_UNKNOWN);
> > +
> > + return nla_put(msg, VDPA_ATTR_DEV_NET_CFG_SPEED, sizeof(speed), &speed);
> > +}
> > +
> > +static int vdpa_dev_net_duplex_config_fill(struct sk_buff *msg, u64 features,
> > + struct virtio_net_config *config)
> > +{
> > + u8 duplex = DUPLEX_UNKNOWN;
> > +
> > + return nla_put(msg, VDPA_ATTR_DEV_NET_CFG_DUPLEX, sizeof(duplex), &duplex);
> > +}
> > +
> > static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *msg)
> > {
> > struct virtio_net_config config = {};
> > @@ -941,6 +958,12 @@ static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *ms
> > if (vdpa_dev_net_status_config_fill(msg, features_device, &config))
> > return -EMSGSIZE;
> >
> > + if (vdpa_dev_net_speed_config_fill(msg, features_device, &config))
> > + return -EMSGSIZE;
> > +
> > + if (vdpa_dev_net_duplex_config_fill(msg, features_device, &config))
> > + return -EMSGSIZE;
> > +
> > return vdpa_dev_net_mq_config_fill(msg, features_device, &config);
> > }
> >
> > diff --git a/include/uapi/linux/vdpa.h b/include/uapi/linux/vdpa.h
> > index 842bf1201ac4..1c64ee0dd7b1 100644
> > --- a/include/uapi/linux/vdpa.h
> > +++ b/include/uapi/linux/vdpa.h
> > @@ -43,6 +43,8 @@ enum vdpa_attr {
> > VDPA_ATTR_DEV_NET_STATUS, /* u8 */
> > VDPA_ATTR_DEV_NET_CFG_MAX_VQP, /* u16 */
> > VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */
> > + VDPA_ATTR_DEV_NET_CFG_SPEED, /* u32 */
> > + VDPA_ATTR_DEV_NET_CFG_DUPLEX, /* u8 */
>
> This should be an independent patch as it allows vdpa tool to
> provision speed and duplex.
or same patch, but document this more clearly:
when subj starts with mlx5 I expect it only affects mlx5.
> But a fundamental question is if we need such provisioning?
why not?
> Thanks
>
> >
> > VDPA_ATTR_DEV_NEGOTIATED_FEATURES, /* u64 */
> > VDPA_ATTR_DEV_MGMTDEV_MAX_VQS, /* u32 */
> > --
> > 2.34.1
> >
next prev parent reply other threads:[~2024-08-29 6:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-28 18:16 [PATCH] vdpa: Set speed and duplex of mlx5_vnet to UNKNOWN Carlos Bilbao
2024-08-29 4:49 ` Jason Wang
2024-08-29 6:08 ` Michael S. Tsirkin [this message]
2024-08-29 7:12 ` Michael S. Tsirkin
2024-08-29 10:20 ` Dragos Tatulea
2024-08-29 13:36 ` Carlos Bilbao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240829020710-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=bilbao@vt.edu \
--cc=carlos.bilbao.osdev@gmail.com \
--cc=cbilbao@digitalocean.com \
--cc=cratiu@nvidia.com \
--cc=dtatulea@nvidia.com \
--cc=eperezma@redhat.com \
--cc=jasowang@redhat.com \
--cc=lingshan.zhu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=virtualization@lists.linux.dev \
--cc=xuanzhuo@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.