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>