On Thu, Dec 9, 2021 at 8:25 AM Si-Wei Liu <si-wei.liu@xxxxxxxxxx> wrote: > > > > On 12/8/2021 12:14 PM, Eli Cohen wrote: > > Add netlink support to configure the max virtqueue pairs for a device. > > At least one pair is required. The maximum is dictated by the device. > > > > Example: > > > > $ vdpa dev add name vdpa-a mgmtdev auxiliary/mlx5_core.sf.1 max_vqp 5 > Not this patch, but I think there should be a mega attribute defined > ahead to specify the virtio class/type to create vdpa instance with. > Like the existing ones e.g. mac_addr and mtu, max_vqp is also vdpa net > specific attribute. Probably, but this only works for the case when a single parent is allowed to create different types of devices. It looks to me the current model to have a per type parent. Thanks > > -Siwei > > > > > Signed-off-by: Eli Cohen <elic@xxxxxxxxxx> > > --- > > v0 -> v1: > > 1. fix typo > > 2. move max_vq_pairs to net specific struct > > > > drivers/vdpa/vdpa.c | 14 +++++++++++++- > > include/linux/vdpa.h | 1 + > > 2 files changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c > > index c37d384c0f33..3bf016e03512 100644 > > --- a/drivers/vdpa/vdpa.c > > +++ b/drivers/vdpa/vdpa.c > > @@ -480,7 +480,8 @@ vdpa_nl_cmd_mgmtdev_get_dumpit(struct sk_buff *msg, struct netlink_callback *cb) > > } > > > > #define VDPA_DEV_NET_ATTRS_MASK ((1 << VDPA_ATTR_DEV_NET_CFG_MACADDR) | \ > > - (1 << VDPA_ATTR_DEV_NET_CFG_MTU)) > > + (1 << VDPA_ATTR_DEV_NET_CFG_MTU) | \ > > + (1 << VDPA_ATTR_DEV_NET_CFG_MAX_VQP)) > > > > static int vdpa_nl_cmd_dev_add_set_doit(struct sk_buff *skb, struct genl_info *info) > > { > > @@ -506,6 +507,17 @@ static int vdpa_nl_cmd_dev_add_set_doit(struct sk_buff *skb, struct genl_info *i > > nla_get_u16(nl_attrs[VDPA_ATTR_DEV_NET_CFG_MTU]); > > config.mask |= (1 << VDPA_ATTR_DEV_NET_CFG_MTU); > > } > > + if (nl_attrs[VDPA_ATTR_DEV_NET_CFG_MAX_VQP]) { > > + config.net.max_vq_pairs = > > + nla_get_u16(nl_attrs[VDPA_ATTR_DEV_NET_CFG_MAX_VQP]); > > + if (!config.net.max_vq_pairs) { > > + NL_SET_ERR_MSG_MOD(info->extack, > > + "At least one pair of VQs is required"); > > + err = -EINVAL; > > + goto err; > > + } > > + config.mask |= BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MAX_VQP); > > + } > > > > /* Skip checking capability if user didn't prefer to configure any > > * device networking attributes. It is likely that user might have used > > diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h > > index db24317d61b6..b62032573780 100644 > > --- a/include/linux/vdpa.h > > +++ b/include/linux/vdpa.h > > @@ -99,6 +99,7 @@ struct vdpa_dev_set_config { > > struct { > > u8 mac[ETH_ALEN]; > > u16 mtu; > > + u16 max_vq_pairs; > > } net; > > u64 mask; > > }; > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization