From: Joe Damato <jdamato@fastly.com>
To: Cindy Lu <lulu@redhat.com>
Cc: dtatulea@nvidia.com, mst@redhat.com, jasowang@redhat.com,
parav@nvidia.com, sgarzare@redhat.com, netdev@vger.kernel.org,
virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATH v6 1/3] vdpa: support set mac address from vdpa tool
Date: Thu, 25 Jul 2024 10:29:27 -0700 [thread overview]
Message-ID: <ZqKLd9ZIJ4l5tAL8@LQ3V64L9R2> (raw)
In-Reply-To: <20240725013217.1124704-2-lulu@redhat.com>
On Thu, Jul 25, 2024 at 09:31:02AM +0800, Cindy Lu wrote:
[...]
> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c
> index 8d391947eb8d..532cf3b52b26 100644
> --- a/drivers/vdpa/vdpa.c
> +++ b/drivers/vdpa/vdpa.c
> @@ -1361,6 +1361,81 @@ static int vdpa_nl_cmd_dev_config_get_doit(struct sk_buff *skb, struct genl_info
> return err;
> }
>
> +static int vdpa_dev_net_device_attr_set(struct vdpa_device *vdev,
> + struct genl_info *info)
> +{
> + struct vdpa_dev_set_config set_config = {};
> + const u8 *macaddr;
> + struct vdpa_mgmt_dev *mdev = vdev->mdev;
> + struct nlattr **nl_attrs = info->attrs;
> + int err = -EINVAL;
Nit: IIRC networking code prefers reverse-xmas tree style and
macaddr above needs to be moved.
> + down_write(&vdev->cf_lock);
> + if (nl_attrs[VDPA_ATTR_DEV_NET_CFG_MACADDR]) {
> + set_config.mask |= BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MACADDR);
> + macaddr = nla_data(nl_attrs[VDPA_ATTR_DEV_NET_CFG_MACADDR]);
> +
> + if (is_valid_ether_addr(macaddr)) {
> + ether_addr_copy(set_config.net.mac, macaddr);
> + memcpy(set_config.net.mac, macaddr, ETH_ALEN);
> + if (mdev->ops->dev_set_attr) {
> + err = mdev->ops->dev_set_attr(mdev, vdev,
> + &set_config);
> + } else {
> + NL_SET_ERR_MSG_FMT_MOD(
> + info->extack,
> + "device does not support changing the MAC address");
> + }
> + } else {
> + NL_SET_ERR_MSG_FMT_MOD(info->extack,
> + "Invalid MAC address");
> + }
> + }
> + up_write(&vdev->cf_lock);
> + return err;
> +}
Nit: other code in this file has line breaks separating functions.
Probably good to add one here?
> +static int vdpa_nl_cmd_dev_attr_set_doit(struct sk_buff *skb,
> + struct genl_info *info)
Nit: Does the above pass ./scripts/checkpatch.pl --strict ? I am asking
because it seems like the alignment might be off?
> +{
> + const char *name;
> + int err = 0;
> + struct device *dev;
> + struct vdpa_device *vdev;
> + u64 classes;
Nit: Same as above; I believe networking code is supposed to follow
reverse xmas tree order so these variables should be rearranged.
> + if (!info->attrs[VDPA_ATTR_DEV_NAME])
> + return -EINVAL;
> +
> + name = nla_data(info->attrs[VDPA_ATTR_DEV_NAME]);
> +
> + down_write(&vdpa_dev_lock);
> + dev = bus_find_device(&vdpa_bus, NULL, name, vdpa_name_match);
> + if (!dev) {
> + NL_SET_ERR_MSG_MOD(info->extack, "device not found");
> + err = -ENODEV;
> + goto dev_err;
> + }
> + vdev = container_of(dev, struct vdpa_device, dev);
> + if (!vdev->mdev) {
> + NL_SET_ERR_MSG_MOD(info->extack, "unmanaged vdpa device");
> + err = -EINVAL;
> + goto mdev_err;
> + }
> + classes = vdpa_mgmtdev_get_classes(vdev->mdev, NULL);
> + if (classes & BIT_ULL(VIRTIO_ID_NET)) {
> + err = vdpa_dev_net_device_attr_set(vdev, info);
> + } else {
> + NL_SET_ERR_MSG_FMT_MOD(info->extack, "%s device not supported",
> + name);
> + }
> +
> +mdev_err:
> + put_device(dev);
> +dev_err:
> + up_write(&vdpa_dev_lock);
> + return err;
> +}
[...]
next prev parent reply other threads:[~2024-07-25 17:29 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-25 1:31 [PATH v6 0/3] vdpa: support set mac address from vdpa tool Cindy Lu
2024-07-25 1:31 ` [PATH v6 1/3] " Cindy Lu
2024-07-25 17:29 ` Joe Damato [this message]
2024-07-26 13:16 ` Cindy Lu
2024-07-26 13:19 ` Cindy Lu
2024-07-25 1:31 ` [PATH v6 2/3] vdpa_sim_net: Add the support of set mac address Cindy Lu
2024-07-25 1:31 ` [PATH v6 3/3] vdpa/mlx5: " Cindy Lu
2024-07-25 17:32 ` Joe Damato
2024-07-26 13:20 ` Cindy Lu
2024-07-25 17:24 ` [PATH v6 0/3] vdpa: support set mac address from vdpa tool Joe Damato
2024-07-26 13:15 ` Cindy Lu
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=ZqKLd9ZIJ4l5tAL8@LQ3V64L9R2 \
--to=jdamato@fastly.com \
--cc=dtatulea@nvidia.com \
--cc=jasowang@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lulu@redhat.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=parav@nvidia.com \
--cc=sgarzare@redhat.com \
--cc=virtualization@lists.linux-foundation.org \
/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.