Commit 45be47bf authored by Hariprasad Kelam's avatar Hariprasad Kelam Committed by Jakub Kicinski
Browse files

octeontx2-af: Fix default entries mcam entry action



As per design, AF should update the default MCAM action only when
mcam_index is -1. A bug in the previous patch caused default entries
to be changed even when the request was not for them.

Fixes: 570ba378 ("octeontx2-af: Update RSS algorithm index")
Signed-off-by: default avatarHariprasad Kelam <hkelam@marvell.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260216090338.1318976-1-hkelam@marvell.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 284f1f17
Loading
Loading
Loading
Loading
+22 −19
Original line number Diff line number Diff line
@@ -1042,32 +1042,35 @@ void rvu_npc_update_flowkey_alg_idx(struct rvu *rvu, u16 pcifunc, int nixlf,
	rvu_write64(rvu, blkaddr,
		    NPC_AF_MCAMEX_BANKX_ACTION(index, bank), *(u64 *)&action);

	/* update the VF flow rule action with the VF default entry action */
	if (mcam_index < 0)
		npc_update_vf_flow_entry(rvu, mcam, blkaddr, pcifunc,
					 *(u64 *)&action);

	/* update the action change in default rule */
	pfvf = rvu_get_pfvf(rvu, pcifunc);
	if (pfvf->def_ucast_rule)
		pfvf->def_ucast_rule->rx_action = action;

	if (mcam_index < 0) {
		/* update the VF flow rule action with the VF default
		 * entry action
		 */
		npc_update_vf_flow_entry(rvu, mcam, blkaddr, pcifunc,
					 *(u64 *)&action);

		index = npc_get_nixlf_mcam_index(mcam, pcifunc,
						 nixlf, NIXLF_PROMISC_ENTRY);

		/* If PF's promiscuous  entry is enabled,
		 * Set RSS action for that entry as well
		 */
	npc_update_rx_action_with_alg_idx(rvu, action, pfvf, index, blkaddr,
					  alg_idx);
		npc_update_rx_action_with_alg_idx(rvu, action, pfvf, index,
						  blkaddr, alg_idx);

		index = npc_get_nixlf_mcam_index(mcam, pcifunc,
						 nixlf, NIXLF_ALLMULTI_ENTRY);
		/* If PF's allmulti  entry is enabled,
		 * Set RSS action for that entry as well
		 */
	npc_update_rx_action_with_alg_idx(rvu, action, pfvf, index, blkaddr,
					  alg_idx);
		npc_update_rx_action_with_alg_idx(rvu, action, pfvf, index,
						  blkaddr, alg_idx);
	}
}

void npc_enadis_default_mce_entry(struct rvu *rvu, u16 pcifunc,