From: Satheesh Paul <psathe...@marvell.com> Adding changes to accommodate the following requirements while masking the channel number. 1. For CN10K device, channel number should not be masked for first pass rules with RTE_FLOW_ACTION_TYPE_SECURITY action. And channel number should be masked for all other flow rules. 2. For CN9K device channel number should not be masked.
Fixes: 29dcc20985 ("common/cnxk: support for CPT second pass flow rules") Cc: sta...@dpdk.org Signed-off-by: Satheesh Paul <psathe...@marvell.com> Reviewed-by: Kiran Kumar Kokkilagadda <kirankum...@marvell.com> --- drivers/common/cnxk/roc_npc_mcam.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/common/cnxk/roc_npc_mcam.c b/drivers/common/cnxk/roc_npc_mcam.c index bccbaaa51f..0ae58da0ba 100644 --- a/drivers/common/cnxk/roc_npc_mcam.c +++ b/drivers/common/cnxk/roc_npc_mcam.c @@ -508,19 +508,25 @@ npc_mcam_set_channel(struct roc_npc_flow *flow, req->entry_data.kw_mask[0] &= ~(GENMASK(11, 0)); flow->mcam_data[0] &= ~(GENMASK(11, 0)); flow->mcam_mask[0] &= ~(GENMASK(11, 0)); + chan = channel; + mask = chan_mask; - if (is_second_pass) { - chan = (channel | NIX_CHAN_CPT_CH_START); - mask = (chan_mask | NIX_CHAN_CPT_CH_START); - } else { - /* - * Clear bits 10 & 11 corresponding to CPT - * channel. By default, rules should match - * both first pass packets and second pass - * packets from CPT. - */ - chan = (channel & NIX_CHAN_CPT_X2P_MASK); - mask = (chan_mask & NIX_CHAN_CPT_X2P_MASK); + if (roc_model_runtime_is_cn10k()) { + if (is_second_pass) { + chan = (channel | NIX_CHAN_CPT_CH_START); + mask = (chan_mask | NIX_CHAN_CPT_CH_START); + } else { + if (!(flow->npc_action & NIX_RX_ACTIONOP_UCAST_IPSEC)) { + /* + * Clear bits 10 & 11 corresponding to CPT + * channel. By default, rules should match + * both first pass packets and second pass + * packets from CPT. + */ + chan = (channel & NIX_CHAN_CPT_X2P_MASK); + mask = (chan_mask & NIX_CHAN_CPT_X2P_MASK); + } + } } req->entry_data.kw[0] |= (uint64_t)chan; -- 2.25.4