RTE_FLOW_ITEM_TYPE_IB_BTH matches an InfiniBand base transport
header. We extend the match on the acknowledgment bit (BTH_A).
Signed-off-by: Itamar Gozlan <igoz...@nvidia.com>
---
 drivers/net/mlx5/hws/mlx5dr_definer.c | 12 ++++++++++--
 drivers/net/mlx5/hws/mlx5dr_definer.h |  1 +
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c 
b/drivers/net/mlx5/hws/mlx5dr_definer.c
index 33d0f2d18e..b82af9d102 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.c
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c
@@ -177,7 +177,8 @@ struct mlx5dr_definer_conv_data {
        X(SET_BE32,     ipsec_spi,              v->hdr.spi,             
rte_flow_item_esp) \
        X(SET_BE32,     ipsec_sequence_number,  v->hdr.seq,             
rte_flow_item_esp) \
        X(SET,          ib_l4_udp_port,         UDP_ROCEV2_PORT,        
rte_flow_item_ib_bth) \
-       X(SET,          ib_l4_opcode,           v->hdr.opcode,          
rte_flow_item_ib_bth)
+       X(SET,          ib_l4_opcode,           v->hdr.opcode,          
rte_flow_item_ib_bth) \
+       X(SET,          ib_l4_bth_a,            v->hdr.a,               
rte_flow_item_ib_bth) \
 
 /* Item set function format */
 #define X(set_type, func_name, value, item_type) \
@@ -2148,7 +2149,7 @@ mlx5dr_definer_conv_item_ib_l4(struct 
mlx5dr_definer_conv_data *cd,
 
        if (m->hdr.se || m->hdr.m || m->hdr.padcnt || m->hdr.tver ||
                m->hdr.pkey || m->hdr.f || m->hdr.b || m->hdr.rsvd0 ||
-               m->hdr.a || m->hdr.rsvd1 || !is_mem_zero(m->hdr.psn, 3)) {
+               m->hdr.rsvd1 || !is_mem_zero(m->hdr.psn, 3)) {
                rte_errno = ENOTSUP;
                return rte_errno;
        }
@@ -2167,6 +2168,13 @@ mlx5dr_definer_conv_item_ib_l4(struct 
mlx5dr_definer_conv_data *cd,
                DR_CALC_SET_HDR(fc, ib_l4, qp);
        }
 
+       if (m->hdr.a) {
+               fc = &cd->fc[MLX5DR_DEFINER_FNAME_IB_L4_A];
+               fc->item_idx = item_idx;
+               fc->tag_set = &mlx5dr_definer_ib_l4_bth_a_set;
+               DR_CALC_SET_HDR(fc, ib_l4, ackreq);
+       }
+
        return 0;
 }
 
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.h 
b/drivers/net/mlx5/hws/mlx5dr_definer.h
index 6b645f4cf0..bf026fa6bb 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.h
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.h
@@ -136,6 +136,7 @@ enum mlx5dr_definer_fname {
        MLX5DR_DEFINER_FNAME_OKS2_MPLS4_I,
        MLX5DR_DEFINER_FNAME_IB_L4_OPCODE,
        MLX5DR_DEFINER_FNAME_IB_L4_QPN,
+       MLX5DR_DEFINER_FNAME_IB_L4_A,
        MLX5DR_DEFINER_FNAME_MAX,
 };
 
-- 
2.38.1

Reply via email to