Parav Pandit
2021-Dec-02 03:32 UTC
[PATCH 1/7] vdpa: Allow to configure max data virtqueues
> From: Eli Cohen <elic at nvidia.com> > Sent: Thursday, December 2, 2021 1:27 AM > > 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. > > Signed-off-by: Eli Cohen <elic at nvidia.com> > --- > 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 > 7332a74a4b00..f06f949d5fa1 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.max_vq_pairs > +I think you need to add to the vdpa_nl_policy[] array so that it gets validated for min and max range range.> nla_get_u16(nl_attrs[VDPA_ATTR_DEV_NET_CFG_MAX_VQP]); > + if (!config.max_vq_pairs) {This will go away one you nl_policy is use for NLA_U16_RANGE(1, 32768) for this attribute.> + NL_SET_ERR_MSG_MOD(info->extack, > + "At list 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 > c3011ccda430..820621c59365 100644 > --- a/include/linux/vdpa.h > +++ b/include/linux/vdpa.h > @@ -101,6 +101,7 @@ struct vdpa_dev_set_config { > u16 mtu; > } net; > u64 mask; > + u16 max_vq_pairs;This is net only field. Please move it inside the net struct above.