]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5e: E-Switch, Fix comparing termination table instance
authorRoi Dayan <roid@nvidia.com>
Thu, 3 Nov 2022 06:55:46 +0000 (23:55 -0700)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 9 Nov 2022 18:30:43 +0000 (10:30 -0800)
The pkt_reformat pointer being saved under flow_act and not
dest attribute in the termination table instance.
Fix the comparison pointers.

Also fix returning success if one pkt_reformat pointer is null
and the other is not.

Fixes: 249ccc3c95bd ("net/mlx5e: Add support for offloading traffic from uplink to uplink")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Chris Mi <cmi@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c

index ee568bf34ae25d73e675405e113c7ac5b4415ce7..108a3503f413c7a5f5943c71ad4753825fe3d251 100644 (file)
@@ -30,9 +30,9 @@ mlx5_eswitch_termtbl_hash(struct mlx5_flow_act *flow_act,
                     sizeof(dest->vport.num), hash);
        hash = jhash((const void *)&dest->vport.vhca_id,
                     sizeof(dest->vport.num), hash);
-       if (dest->vport.pkt_reformat)
-               hash = jhash(dest->vport.pkt_reformat,
-                            sizeof(*dest->vport.pkt_reformat),
+       if (flow_act->pkt_reformat)
+               hash = jhash(flow_act->pkt_reformat,
+                            sizeof(*flow_act->pkt_reformat),
                             hash);
        return hash;
 }
@@ -53,9 +53,11 @@ mlx5_eswitch_termtbl_cmp(struct mlx5_flow_act *flow_act1,
        if (ret)
                return ret;
 
-       return dest1->vport.pkt_reformat && dest2->vport.pkt_reformat ?
-              memcmp(dest1->vport.pkt_reformat, dest2->vport.pkt_reformat,
-                     sizeof(*dest1->vport.pkt_reformat)) : 0;
+       if (flow_act1->pkt_reformat && flow_act2->pkt_reformat)
+               return memcmp(flow_act1->pkt_reformat, flow_act2->pkt_reformat,
+                             sizeof(*flow_act1->pkt_reformat));
+
+       return !(flow_act1->pkt_reformat == flow_act2->pkt_reformat);
 }
 
 static int