On Fri, Sep 9, 2022 at 5:05 PM Zhu Lingshan <lingshan.zhu@xxxxxxxxx> 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@xxxxxxxxx> > --- > 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 >