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