The item is being set according to the attribute value, whether it is
udp/tcp or ipv4/6.
Also, there are two condition calls.

If the attribute is neither udp/tcp or ipv4/6 the item is not initialized
at all, but the call to the flow_dv_convert_modify_action is still being
done.
Also, even if the attribute is tcp/udp or ipv4/6, we still have two
conditions.

This patch changes the conditions, so the item will always be set.
By doing this, there is also a save in the number of condition calls.

Fixes: 4bb14c83 ("net/mlx5: support modify header using Direct Verbs")
Cc: sta...@dpdk.org

Signed-off-by: Asaf Penso <as...@mellanox.com>
Reviewed-by: Dekel Peled <dek...@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 809833b..eabc745 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -702,8 +702,8 @@ struct field_modify_info modify_tcp[] = {
                item.spec = &udp;
                item.mask = &udp_mask;
                field = modify_udp;
-       }
-       if (attr->tcp) {
+       } else {
+               MLX5_ASSERT(attr->tcp);
                memset(&tcp, 0, sizeof(tcp));
                memset(&tcp_mask, 0, sizeof(tcp_mask));
                if (action->type == RTE_FLOW_ACTION_TYPE_SET_TP_SRC) {
@@ -773,8 +773,8 @@ struct field_modify_info modify_tcp[] = {
                item.spec = &ipv4;
                item.mask = &ipv4_mask;
                field = modify_ipv4;
-       }
-       if (attr->ipv6) {
+       } else {
+               MLX5_ASSERT(attr->ipv6);
                memset(&ipv6, 0, sizeof(ipv6));
                memset(&ipv6_mask, 0, sizeof(ipv6_mask));
                ipv6.hdr.hop_limits = conf->ttl_value;
@@ -834,8 +834,8 @@ struct field_modify_info modify_tcp[] = {
                item.spec = &ipv4;
                item.mask = &ipv4_mask;
                field = modify_ipv4;
-       }
-       if (attr->ipv6) {
+       } else {
+               MLX5_ASSERT(attr->ipv6);
                memset(&ipv6, 0, sizeof(ipv6));
                memset(&ipv6_mask, 0, sizeof(ipv6_mask));
                ipv6.hdr.hop_limits = 0xFF;
-- 
1.8.3.1

Reply via email to