From: Alex Vesker <va...@nvidia.com> Fix an issue with binding for unused DW selectors, these selectors are set to zero but zero is also a valid value used for DMAC_47_16.
Fixes: c55c2bf35333 ("net/mlx5/hws: add definer layer") Reviewed-by: Erez Shitrit <ere...@nvidia.com> Signed-off-by: Alex Vesker <va...@nvidia.com> --- drivers/net/mlx5/hws/mlx5dr_definer.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c index 2f6f91892b..70e46736ec 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.c +++ b/drivers/net/mlx5/hws/mlx5dr_definer.c @@ -2375,11 +2375,15 @@ mlx5dr_definer_find_byte_in_tag(struct mlx5dr_definer *definer, uint32_t *tag_byte_off) { uint8_t byte_offset; - int i; + int i, dw_to_scan; + + /* Avoid accessing unused DW selectors */ + dw_to_scan = mlx5dr_definer_is_jumbo(definer) ? + DW_SELECTORS : DW_SELECTORS_MATCH; /* Add offset since each DW covers multiple BYTEs */ byte_offset = hl_byte_off % DW_SIZE; - for (i = 0; i < DW_SELECTORS; i++) { + for (i = 0; i < dw_to_scan; i++) { if (definer->dw_selector[i] == hl_byte_off / DW_SIZE) { *tag_byte_off = byte_offset + DW_SIZE * (DW_SELECTORS - i - 1); return 0; -- 2.38.1