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

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
...@@ -928,9 +928,9 @@ static int offload_pedit_fields(struct pedit_headers *masks, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment