Message ID | 20220909085712.46006-4-lingshan.zhu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Conditionally read fields in dev cfg space | expand |
On Fri, Sep 9, 2022 at 5:05 PM Zhu Lingshan <lingshan.zhu@intel.com> wrote: > > virtio 1.2 spec says: > max_virtqueue_pairs only exists if VIRTIO_NET_F_MQ or > VIRTIO_NET_F_RSS is set. > > So when reporint MQ to userspace, it should check both > VIRTIO_NET_F_MQ and VIRTIO_NET_F_RSS. > > This commit also fixes: > 1) a spase warning by replacing le16_to_cpu with __virtio16_to_cpu. > 2) vdpa_dev_net_mq_config_fill() should checks device features > for MQ than driver features. > 3) struct vdpa_device *vdev is not needed for > vdpa_dev_net_mq_config_fill(), unused. Let's do those in separate patches please. Thanks > > Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > --- > drivers/vdpa/vdpa.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c > index 29d7e8858e6f..f8ff61232421 100644 > --- a/drivers/vdpa/vdpa.c > +++ b/drivers/vdpa/vdpa.c > @@ -801,16 +801,17 @@ static int vdpa_nl_cmd_dev_get_dumpit(struct sk_buff *msg, struct netlink_callba > return msg->len; > } > > -static int vdpa_dev_net_mq_config_fill(struct vdpa_device *vdev, > - struct sk_buff *msg, u64 features, > +static int vdpa_dev_net_mq_config_fill(struct sk_buff *msg, u64 features, > const struct virtio_net_config *config) > { > u16 val_u16; > > - if ((features & BIT_ULL(VIRTIO_NET_F_MQ)) == 0) > + if ((features & BIT_ULL(VIRTIO_NET_F_MQ)) == 0 && > + (features & BIT_ULL(VIRTIO_NET_F_RSS)) == 0) > return 0; > > - val_u16 = le16_to_cpu(config->max_virtqueue_pairs); > + val_u16 = __virtio16_to_cpu(true, config->max_virtqueue_pairs); > + > return nla_put_u16(msg, VDPA_ATTR_DEV_NET_CFG_MAX_VQP, val_u16); > } > > @@ -851,7 +852,7 @@ static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *ms > VDPA_ATTR_PAD)) > return -EMSGSIZE; > > - return vdpa_dev_net_mq_config_fill(vdev, msg, features_driver, &config); > + return vdpa_dev_net_mq_config_fill(msg, features_device, &config); > } > > static int > -- > 2.31.1 >
On 9/20/2022 10:17 AM, Jason Wang wrote: > On Fri, Sep 9, 2022 at 5:05 PM Zhu Lingshan <lingshan.zhu@intel.com> wrote: >> virtio 1.2 spec says: >> max_virtqueue_pairs only exists if VIRTIO_NET_F_MQ or >> VIRTIO_NET_F_RSS is set. >> >> So when reporint MQ to userspace, it should check both >> VIRTIO_NET_F_MQ and VIRTIO_NET_F_RSS. >> >> This commit also fixes: >> 1) a spase warning by replacing le16_to_cpu with __virtio16_to_cpu. >> 2) vdpa_dev_net_mq_config_fill() should checks device features >> for MQ than driver features. >> 3) struct vdpa_device *vdev is not needed for >> vdpa_dev_net_mq_config_fill(), unused. > Let's do those in separate patches please. will do, thanks! > > Thanks > >> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >> --- >> drivers/vdpa/vdpa.c | 11 ++++++----- >> 1 file changed, 6 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c >> index 29d7e8858e6f..f8ff61232421 100644 >> --- a/drivers/vdpa/vdpa.c >> +++ b/drivers/vdpa/vdpa.c >> @@ -801,16 +801,17 @@ static int vdpa_nl_cmd_dev_get_dumpit(struct sk_buff *msg, struct netlink_callba >> return msg->len; >> } >> >> -static int vdpa_dev_net_mq_config_fill(struct vdpa_device *vdev, >> - struct sk_buff *msg, u64 features, >> +static int vdpa_dev_net_mq_config_fill(struct sk_buff *msg, u64 features, >> const struct virtio_net_config *config) >> { >> u16 val_u16; >> >> - if ((features & BIT_ULL(VIRTIO_NET_F_MQ)) == 0) >> + if ((features & BIT_ULL(VIRTIO_NET_F_MQ)) == 0 && >> + (features & BIT_ULL(VIRTIO_NET_F_RSS)) == 0) >> return 0; >> >> - val_u16 = le16_to_cpu(config->max_virtqueue_pairs); >> + val_u16 = __virtio16_to_cpu(true, config->max_virtqueue_pairs); >> + >> return nla_put_u16(msg, VDPA_ATTR_DEV_NET_CFG_MAX_VQP, val_u16); >> } >> >> @@ -851,7 +852,7 @@ static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *ms >> VDPA_ATTR_PAD)) >> return -EMSGSIZE; >> >> - return vdpa_dev_net_mq_config_fill(vdev, msg, features_driver, &config); >> + return vdpa_dev_net_mq_config_fill(msg, features_device, &config); >> } >> >> static int >> -- >> 2.31.1 >>
diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c index 29d7e8858e6f..f8ff61232421 100644 --- a/drivers/vdpa/vdpa.c +++ b/drivers/vdpa/vdpa.c @@ -801,16 +801,17 @@ static int vdpa_nl_cmd_dev_get_dumpit(struct sk_buff *msg, struct netlink_callba return msg->len; } -static int vdpa_dev_net_mq_config_fill(struct vdpa_device *vdev, - struct sk_buff *msg, u64 features, +static int vdpa_dev_net_mq_config_fill(struct sk_buff *msg, u64 features, const struct virtio_net_config *config) { u16 val_u16; - if ((features & BIT_ULL(VIRTIO_NET_F_MQ)) == 0) + if ((features & BIT_ULL(VIRTIO_NET_F_MQ)) == 0 && + (features & BIT_ULL(VIRTIO_NET_F_RSS)) == 0) return 0; - val_u16 = le16_to_cpu(config->max_virtqueue_pairs); + val_u16 = __virtio16_to_cpu(true, config->max_virtqueue_pairs); + return nla_put_u16(msg, VDPA_ATTR_DEV_NET_CFG_MAX_VQP, val_u16); } @@ -851,7 +852,7 @@ static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *ms VDPA_ATTR_PAD)) return -EMSGSIZE; - return vdpa_dev_net_mq_config_fill(vdev, msg, features_driver, &config); + return vdpa_dev_net_mq_config_fill(msg, features_device, &config); } static int
virtio 1.2 spec says: max_virtqueue_pairs only exists if VIRTIO_NET_F_MQ or VIRTIO_NET_F_RSS is set. So when reporint MQ to userspace, it should check both VIRTIO_NET_F_MQ and VIRTIO_NET_F_RSS. This commit also fixes: 1) a spase warning by replacing le16_to_cpu with __virtio16_to_cpu. 2) vdpa_dev_net_mq_config_fill() should checks device features for MQ than driver features. 3) struct vdpa_device *vdev is not needed for vdpa_dev_net_mq_config_fill(), unused. Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> --- drivers/vdpa/vdpa.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)