From 12640e77b816edb6a2e74b9d672c3500d8c1a275 Mon Sep 17 00:00:00 2001 From: Nithin Dabilpuram Date: Wed, 23 Feb 2022 01:05:03 +0530 Subject: [PATCH] net/cnxk: fix inline device RQ tag mask [ upstream commit 82529cff18df734262077661c6a91560b1fd8833 ] Fix inline device RQ tagmask to get packets with receive errors as type ETHDEV packets to callback handler so that packet buffers can get freed. Currently only IPsec denied packets get the right tag mask. Fixes: ee48f711f3b0 ("common/cnxk: support NIX inline inbound and outbound setup") Signed-off-by: Nithin Dabilpuram Acked-by: Jerin Jacob --- drivers/common/cnxk/roc_nix_inl.c | 2 +- drivers/net/cnxk/cnxk_ethdev.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/common/cnxk/roc_nix_inl.c b/drivers/common/cnxk/roc_nix_inl.c index e8981c4aa4..e71774cf4a 100644 --- a/drivers/common/cnxk/roc_nix_inl.c +++ b/drivers/common/cnxk/roc_nix_inl.c @@ -533,7 +533,7 @@ roc_nix_inl_dev_rq_get(struct roc_nix_rq *rq) inl_rq->flow_tag_width = 20; /* Special tag mask */ - inl_rq->tag_mask = 0xFFF00000; + inl_rq->tag_mask = rq->tag_mask; inl_rq->tt = SSO_TT_ORDERED; inl_rq->hwgrp = 0; inl_rq->wqe_skip = 1; diff --git a/drivers/net/cnxk/cnxk_ethdev.c b/drivers/net/cnxk/cnxk_ethdev.c index a90c2ae321..0c38f013c2 100644 --- a/drivers/net/cnxk/cnxk_ethdev.c +++ b/drivers/net/cnxk/cnxk_ethdev.c @@ -3,6 +3,8 @@ */ #include +#include + static inline uint64_t nix_get_rx_offload_capa(struct cnxk_eth_dev *dev) { @@ -597,6 +599,13 @@ cnxk_nix_rx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t qid, rxq_sp->qconf.mp = mp; if (dev->rx_offloads & RTE_ETH_RX_OFFLOAD_SECURITY) { + /* Pass a tagmask used to handle error packets in inline device. + * Ethdev rq's tag_mask field will be overwritten later + * when sso is setup. + */ + rq->tag_mask = + 0x0FF00000 | ((uint32_t)RTE_EVENT_TYPE_ETHDEV << 28); + /* Setup rq reference for inline dev if present */ rc = roc_nix_inl_dev_rq_get(rq); if (rc)