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

Reply via email to