Re: [PATCH linux-next v6 5/8] vdpa_sim_net: Enable user to set mac address and mtu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 26, 2021 at 12:03 PM Parav Pandit <parav@xxxxxxxxxx> wrote:
>
> Enable user to set the mac address and mtu so that each vdpa device
> can have its own user specified mac address and mtu.
>
> Now that user is enabled to set the mac address, remove the module
> parameter for same.
>
> And example of setting mac addr and mtu and view the configuration:
> $ vdpa mgmtdev show
> vdpasim_net:
>   supported_classes net
>
> $ vdpa dev add name bar mgmtdev vdpasim_net mac 00:11:22:33:44:55 mtu 9000
>
> $ vdpa dev config show
> bar: mac 00:11:22:33:44:55 link up link_announce false mtu 9000
>
> Signed-off-by: Parav Pandit <parav@xxxxxxxxxx>
> Reviewed-by: Eli Cohen <elic@xxxxxxxxxx>

Acked-by: Jason Wang <jasowang@xxxxxxxxxx>

> ---
> changelog:
> v4->v5:
>  - updated commit log example for add command
> ---
>  drivers/vdpa/vdpa_sim/vdpa_sim_net.c | 35 +++++++++++++++-------------
>  1 file changed, 19 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim_net.c b/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
> index d681e423e64f..76dd24abc791 100644
> --- a/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
> +++ b/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
> @@ -16,6 +16,7 @@
>  #include <linux/vringh.h>
>  #include <linux/vdpa.h>
>  #include <uapi/linux/virtio_net.h>
> +#include <uapi/linux/vdpa.h>
>
>  #include "vdpa_sim.h"
>
> @@ -29,12 +30,6 @@
>
>  #define VDPASIM_NET_VQ_NUM     2
>
> -static char *macaddr;
> -module_param(macaddr, charp, 0);
> -MODULE_PARM_DESC(macaddr, "Ethernet MAC address");
> -
> -static u8 macaddr_buf[ETH_ALEN];
> -
>  static void vdpasim_net_work(struct work_struct *work)
>  {
>         struct vdpasim *vdpasim = container_of(work, struct vdpasim, work);
> @@ -112,9 +107,21 @@ static void vdpasim_net_get_config(struct vdpasim *vdpasim, void *config)
>  {
>         struct virtio_net_config *net_config = config;
>
> -       net_config->mtu = cpu_to_vdpasim16(vdpasim, 1500);
>         net_config->status = cpu_to_vdpasim16(vdpasim, VIRTIO_NET_S_LINK_UP);
> -       memcpy(net_config->mac, macaddr_buf, ETH_ALEN);
> +}
> +
> +static void vdpasim_net_setup_config(struct vdpasim *vdpasim,
> +                                    const struct vdpa_dev_set_config *config)
> +{
> +       struct virtio_net_config *vio_config = vdpasim->config;
> +
> +       if (config->mask & (1 << VDPA_ATTR_DEV_NET_CFG_MACADDR))
> +               memcpy(vio_config->mac, config->net.mac, ETH_ALEN);
> +       if (config->mask & (1 << VDPA_ATTR_DEV_NET_CFG_MTU))
> +               vio_config->mtu = cpu_to_vdpasim16(vdpasim, config->net.mtu);
> +       else
> +               /* Setup default MTU to be 1500 */
> +               vio_config->mtu = cpu_to_vdpasim16(vdpasim, 1500);
>  }
>
>  static void vdpasim_net_mgmtdev_release(struct device *dev)
> @@ -147,6 +154,8 @@ static int vdpasim_net_dev_add(struct vdpa_mgmt_dev *mdev, const char *name,
>         if (IS_ERR(simdev))
>                 return PTR_ERR(simdev);
>
> +       vdpasim_net_setup_config(simdev, config);
> +
>         ret = _vdpa_register_device(&simdev->vdpa, VDPASIM_NET_VQ_NUM);
>         if (ret)
>                 goto reg_err;
> @@ -180,20 +189,14 @@ static struct vdpa_mgmt_dev mgmt_dev = {
>         .device = &vdpasim_net_mgmtdev,
>         .id_table = id_table,
>         .ops = &vdpasim_net_mgmtdev_ops,
> +       .config_attr_mask = (1 << VDPA_ATTR_DEV_NET_CFG_MACADDR |
> +                            1 << VDPA_ATTR_DEV_NET_CFG_MTU),
>  };
>
>  static int __init vdpasim_net_init(void)
>  {
>         int ret;
>
> -       if (macaddr) {
> -               mac_pton(macaddr, macaddr_buf);
> -               if (!is_valid_ether_addr(macaddr_buf))
> -                       return -EADDRNOTAVAIL;
> -       } else {
> -               eth_random_addr(macaddr_buf);
> -       }
> -
>         ret = device_register(&vdpasim_net_mgmtdev);
>         if (ret)
>                 return ret;
> --
> 2.25.4
>

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization



[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux