Parav Pandit
2021-Apr-06 17:04 UTC
[PATCH linux-next v2 14/14] vdpa/mlx5: Fix wrong use of bit numbers
From: Eli Cohen <elic at nvidia.com> VIRTIO_F_VERSION_1 is a bit number. Use BIT_ULL() with mask conditionals. Also, in mlx5_vdpa_is_little_endian() use BIT_ULL for consistency with the rest of the code. Fixes: 1a86b377aa21 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices") Signed-off-by: Eli Cohen <elic at nvidia.com> --- drivers/vdpa/mlx5/net/mlx5_vnet.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c index a6e6d44b9ca5..3b79b5939c7c 100644 --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c @@ -821,7 +821,7 @@ static int create_virtqueue(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtque MLX5_SET(virtio_q, vq_ctx, event_qpn_or_msix, mvq->fwqp.mqp.qpn); MLX5_SET(virtio_q, vq_ctx, queue_size, mvq->num_ent); MLX5_SET(virtio_q, vq_ctx, virtio_version_1_0, - !!(ndev->mvdev.actual_features & VIRTIO_F_VERSION_1)); + !!(ndev->mvdev.actual_features & BIT_ULL(VIRTIO_F_VERSION_1))); MLX5_SET64(virtio_q, vq_ctx, desc_addr, mvq->desc_addr); MLX5_SET64(virtio_q, vq_ctx, used_addr, mvq->device_addr); MLX5_SET64(virtio_q, vq_ctx, available_addr, mvq->driver_addr); @@ -1578,7 +1578,7 @@ static void teardown_virtqueues(struct mlx5_vdpa_net *ndev) static inline bool mlx5_vdpa_is_little_endian(struct mlx5_vdpa_dev *mvdev) { return virtio_legacy_is_little_endian() || - (mvdev->actual_features & (1ULL << VIRTIO_F_VERSION_1)); + (mvdev->actual_features & BIT_ULL(VIRTIO_F_VERSION_1)); } static __virtio16 cpu_to_mlx5vdpa16(struct mlx5_vdpa_dev *mvdev, u16 val) @@ -1985,6 +1985,8 @@ static void query_virtio_features(struct mlx5_vdpa_net *ndev) print_features(mvdev, mvdev->mlx_features, false); } +#define MIN_MTU 68 + static int query_mtu(struct mlx5_core_dev *mdev, u16 *mtu) { u16 hw_mtu; @@ -1995,6 +1997,9 @@ static int query_mtu(struct mlx5_core_dev *mdev, u16 *mtu) return err; *mtu = hw_mtu - MLX5V_ETH_HARD_MTU; + if (*mtu < MIN_MTU) + return -EINVAL; + return 0; } -- 2.26.2
Jason Wang
2021-Apr-07 07:25 UTC
[PATCH linux-next v2 14/14] vdpa/mlx5: Fix wrong use of bit numbers
? 2021/4/7 ??1:04, Parav Pandit ??:> From: Eli Cohen <elic at nvidia.com> > > VIRTIO_F_VERSION_1 is a bit number. Use BIT_ULL() with mask > conditionals. > > Also, in mlx5_vdpa_is_little_endian() use BIT_ULL for consistency with > the rest of the code. > > Fixes: 1a86b377aa21 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices") > Signed-off-by: Eli Cohen <elic at nvidia.com> > --- > drivers/vdpa/mlx5/net/mlx5_vnet.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c > index a6e6d44b9ca5..3b79b5939c7c 100644 > --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c > +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c > @@ -821,7 +821,7 @@ static int create_virtqueue(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtque > MLX5_SET(virtio_q, vq_ctx, event_qpn_or_msix, mvq->fwqp.mqp.qpn); > MLX5_SET(virtio_q, vq_ctx, queue_size, mvq->num_ent); > MLX5_SET(virtio_q, vq_ctx, virtio_version_1_0, > - !!(ndev->mvdev.actual_features & VIRTIO_F_VERSION_1)); > + !!(ndev->mvdev.actual_features & BIT_ULL(VIRTIO_F_VERSION_1))); > MLX5_SET64(virtio_q, vq_ctx, desc_addr, mvq->desc_addr); > MLX5_SET64(virtio_q, vq_ctx, used_addr, mvq->device_addr); > MLX5_SET64(virtio_q, vq_ctx, available_addr, mvq->driver_addr); > @@ -1578,7 +1578,7 @@ static void teardown_virtqueues(struct mlx5_vdpa_net *ndev) > static inline bool mlx5_vdpa_is_little_endian(struct mlx5_vdpa_dev *mvdev) > { > return virtio_legacy_is_little_endian() || > - (mvdev->actual_features & (1ULL << VIRTIO_F_VERSION_1)); > + (mvdev->actual_features & BIT_ULL(VIRTIO_F_VERSION_1)); > } > > static __virtio16 cpu_to_mlx5vdpa16(struct mlx5_vdpa_dev *mvdev, u16 val) > @@ -1985,6 +1985,8 @@ static void query_virtio_features(struct mlx5_vdpa_net *ndev) > print_features(mvdev, mvdev->mlx_features, false); > } > > +#define MIN_MTU 68 > + > static int query_mtu(struct mlx5_core_dev *mdev, u16 *mtu) > { > u16 hw_mtu; > @@ -1995,6 +1997,9 @@ static int query_mtu(struct mlx5_core_dev *mdev, u16 *mtu) > return err; > > *mtu = hw_mtu - MLX5V_ETH_HARD_MTU; > + if (*mtu < MIN_MTU) > + return -EINVAL; > + > return 0; > }This looks irrevalant to what is described by the commit log. Thanks>