The SCTP verification tag is a 32-bit field, but the FDIR SCTP node
stored its spec and mask in 16-bit variables, truncating the tag
programmed into the filter.

Fixes: 05432a6e4676 ("net/i40e: reimplement FDIR parser")

Signed-off-by: Anatoly Burakov <[email protected]>
---
 drivers/net/intel/i40e/i40e_flow_fdir.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/intel/i40e/i40e_flow_fdir.c 
b/drivers/net/intel/i40e/i40e_flow_fdir.c
index 0c9dce6fd9d..b1dcc4b6fad 100644
--- a/drivers/net/intel/i40e/i40e_flow_fdir.c
+++ b/drivers/net/intel/i40e/i40e_flow_fdir.c
@@ -684,7 +684,8 @@ i40e_fdir_node_sctp_process(void *ctx, const struct 
rte_flow_item *item,
        struct i40e_fdir_filter *fdir_filter = &fdir_ctx->fdir_filter;
        const struct rte_flow_item_sctp *sctp_spec = item->spec;
        const struct rte_flow_item_sctp *sctp_mask = ci_flow_item_mask(item);
-       rte_be16_t src_spec, dst_spec, src_mask, dst_mask, tag_spec, tag_mask;
+       rte_be16_t src_spec, dst_spec, src_mask, dst_mask;
+       rte_be32_t tag_spec, tag_mask;
        bool is_ipv4;
 
        /* Set layer index for L4 flexible payload */
-- 
2.52.0

Reply via email to