Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3ca4e05 authored by Or Gerlitz's avatar Or Gerlitz Committed by Saeed Mahameed
Browse files

net/mlx5e: Fix warnings around parsing of TC pedit actions



The sparse tool emits these correct complaints:

drivers/net/ethernet/mellanox/mlx5/core//en_tc.c:1005:25: warning: cast to restricted __be32
drivers/net/ethernet/mellanox/mlx5/core//en_tc.c:1007:25: warning: cast to restricted __be16

The value is provided from user-space in network order, but there's
no way for them to realize that, avoid the warnings by casting to the
appropriate type.

Fixes: d79b6df6 ('net/mlx5e: Add parsing of TC pedit actions to HW format')
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Reported-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Reviewed-by: default avatarPaul Blakey <paulb@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent d824bf3f
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -928,9 +928,9 @@ static int offload_pedit_fields(struct pedit_headers *masks,
	struct pedit_headers *set_masks, *add_masks, *set_vals, *add_vals;
	struct pedit_headers *set_masks, *add_masks, *set_vals, *add_vals;
	int i, action_size, nactions, max_actions, first, last, first_z;
	int i, action_size, nactions, max_actions, first, last, first_z;
	void *s_masks_p, *a_masks_p, *vals_p;
	void *s_masks_p, *a_masks_p, *vals_p;
	u32 s_mask, a_mask, val;
	struct mlx5_fields *f;
	struct mlx5_fields *f;
	u8 cmd, field_bsize;
	u8 cmd, field_bsize;
	u32 s_mask, a_mask;
	unsigned long mask;
	unsigned long mask;
	void *action;
	void *action;


@@ -947,7 +947,8 @@ static int offload_pedit_fields(struct pedit_headers *masks,
	for (i = 0; i < ARRAY_SIZE(fields); i++) {
	for (i = 0; i < ARRAY_SIZE(fields); i++) {
		f = &fields[i];
		f = &fields[i];
		/* avoid seeing bits set from previous iterations */
		/* avoid seeing bits set from previous iterations */
		s_mask = a_mask = mask = val = 0;
		s_mask = 0;
		a_mask = 0;


		s_masks_p = (void *)set_masks + f->offset;
		s_masks_p = (void *)set_masks + f->offset;
		a_masks_p = (void *)add_masks + f->offset;
		a_masks_p = (void *)add_masks + f->offset;
@@ -982,9 +983,8 @@ static int offload_pedit_fields(struct pedit_headers *masks,
			memset(a_masks_p, 0, f->size);
			memset(a_masks_p, 0, f->size);
		}
		}


		memcpy(&val, vals_p, f->size);

		field_bsize = f->size * BITS_PER_BYTE;
		field_bsize = f->size * BITS_PER_BYTE;

		first_z = find_first_zero_bit(&mask, field_bsize);
		first_z = find_first_zero_bit(&mask, field_bsize);
		first = find_first_bit(&mask, field_bsize);
		first = find_first_bit(&mask, field_bsize);
		last  = find_last_bit(&mask, field_bsize);
		last  = find_last_bit(&mask, field_bsize);
@@ -1004,11 +1004,11 @@ static int offload_pedit_fields(struct pedit_headers *masks,
		}
		}


		if (field_bsize == 32)
		if (field_bsize == 32)
			MLX5_SET(set_action_in, action, data, ntohl(val));
			MLX5_SET(set_action_in, action, data, ntohl(*(__be32 *)vals_p));
		else if (field_bsize == 16)
		else if (field_bsize == 16)
			MLX5_SET(set_action_in, action, data, ntohs(val));
			MLX5_SET(set_action_in, action, data, ntohs(*(__be16 *)vals_p));
		else if (field_bsize == 8)
		else if (field_bsize == 8)
			MLX5_SET(set_action_in, action, data, val);
			MLX5_SET(set_action_in, action, data, *(u8 *)vals_p);


		action += action_size;
		action += action_size;
		nactions++;
		nactions++;