Netdev List
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: nshettyj@marvell.com
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Satheesh Paul <psatheesh@marvell.com>,
	Sunil Goutham <sgoutham@marvell.com>,
	Ratheesh Kannoth <rkannoth@marvell.com>,
	Geetha sowjanya <gakula@marvell.com>,
	Subbaraya Sundeep <sbhatta@marvell.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Subject: Re: [PATCH net-next] octeontx2-af: Add mailbox to read default MCAM entry
Date: Fri, 7 Aug 2026 15:25:26 +0100	[thread overview]
Message-ID: <20260807142526.GM51943@horms.kernel.org> (raw)
In-Reply-To: <20260806075631.2007542-1-nshettyj@marvell.com>

On Thu, Aug 06, 2026 at 01:26:31PM +0530, nshettyj@marvell.com wrote:
> From: Satheesh Paul <psatheesh@marvell.com>
> 
> Add an NPC mailbox command so PF/VF clients can read the default
> unicast MCAM rule associated with their NIX LF.
> 
> Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
> Signed-off-by: Nitin Shetty J <nshettyj@marvell.com>
> ---
>  .../net/ethernet/marvell/octeontx2/af/mbox.h  |  2 ++
>  .../ethernet/marvell/octeontx2/af/rvu_npc.c   | 34 +++++++++++++++++++
>  2 files changed, 36 insertions(+)
> 
> diff --git a/drivers/net/ethernet/marvell/octeontx2/af/mbox.h b/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
> index 73f743e4a83d..cece197d1074 100644
> --- a/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
> +++ b/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
> @@ -309,6 +309,8 @@ M(NPC_MCAM_GET_DFT_RL_IDXS, 0x601e, npc_get_dft_rl_idxs,	\
>  M(NPC_MCAM_GET_NPC_PFL_INFO, 0x601f, npc_get_pfl_info,		\
>  					msg_req,		\
>  					npc_get_pfl_info_rsp)	\
> +M(NPC_MCAM_READ_DEFAULT_RULE, 0x6021, npc_read_default_rule, msg_req,	\
> +					npc_mcam_read_base_rule_rsp)	\
>  /* NIX mbox IDs (range 0x8000 - 0xFFFF) */				\
>  M(NIX_LF_ALLOC,		0x8000, nix_lf_alloc,				\
>  				 nix_lf_alloc_req, nix_lf_alloc_rsp)	\
> diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
> index db27ea622f35..266bb762691c 100644
> --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
> +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
> @@ -4303,6 +4303,40 @@ int rvu_mbox_handler_npc_set_pkind(struct rvu *rvu, struct npc_set_pkind *req,
>  				      req->skip_size);
>  }
>  
> +int rvu_mbox_handler_npc_read_default_rule(struct rvu *rvu,
> +					   struct msg_req *req,
> +					   struct npc_mcam_read_base_rule_rsp *rsp)
> +{
> +	struct npc_mcam *mcam = &rvu->hw->mcam;
> +	int index, blkaddr, nixlf, rc;
> +	u16 pcifunc = req->hdr.pcifunc;
> +	u8 intf, enable;
> +
> +	blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_NPC, 0);
> +	if (blkaddr < 0)
> +		return NPC_MCAM_INVALID_REQ;
> +
> +	rc = nix_get_nixlf(rvu, pcifunc, &nixlf, NULL);
> +	if (rc < 0)
> +		return rc;
> +
> +	/* Read the default ucast entry */
> +	mutex_lock(&mcam->lock);
> +	index = npc_get_nixlf_mcam_index(mcam, pcifunc, nixlf,
> +					 NIXLF_UCAST_ENTRY);
> +	if (index < 0) {
> +		mutex_unlock(&mcam->lock);
> +		return NIX_AF_ERR_AF_LF_INVALID;
> +	}
> +
> +	/* Read the mcam entry */
> +	npc_read_mcam_entry(rvu, mcam, blkaddr, index, &rsp->entry, &intf,
> +			    &enable);
> +	mutex_unlock(&mcam->lock);
> +
> +	return 0;
> +}
> +

Hi,

There is an extensive AI-generated review of this patch available at
https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260806075631.2007542-1-nshettyj%40marvell.com

While I'd appreciate it if you could look over the entire review I think
the most relevant point raised is the one I've pasted immediately below.
Could you provide some feedback on it?

  Does this path return the contents of unrelated registers on CN20K?
  The index comes from the cn20k-aware lookup, whose first branch is:

    npc_get_nixlf_mcam_index() {
	if (is_cn20k(rvu->pdev)) {
		rc = npc_cn20k_dft_rules_idx_get(rvu, pcifunc, &bcast, &mcast,
						 &promisc, &ucast);
	...
    }

  but the entry is then decoded unconditionally with the legacy reader, which
  uses the pre-CN20K register macros:

    npc_read_mcam_entry() {
	cam1 = rvu_read64(rvu, blkaddr,
			  NPC_AF_MCAMEX_BANKX_CAMX_W0(src, bank, 1));
	...
	entry->action = rvu_read64(rvu, blkaddr,
				   NPC_AF_MCAMEX_BANKX_ACTION(src, sbank));
    }

  CN20K MCAM registers use different bases and shifts, for example in
  af/cn20k/reg.h:

    #define NPC_AF_CN20K_MCAMEX_BANKX_CAMX_W0_EXT(a, b, c) ...
	offset = (0x9000000ull | (a) << 4 | (b) << 20 | (c) << 3);

  Elsewhere in the driver the helper choice is guarded, e.g. in
  npc_update_dmac_value():

    if (is_cn20k(rvu->pdev)) {
	if (npc_cn20k_read_mcam_entry(rvu, npcblkaddr, rule->entry,
				      cn20k_entry, &intf,
				      &enable, &hw_prio))
		return -EINVAL;
    } else {
	npc_read_mcam_entry(rvu, mcam, npcblkaddr, rule->entry,
			    entry, &intf, &enable);
    }

  and rvu_mbox_handler_npc_cn20k_read_base_steer_rule() uses
  npc_cn20k_read_mcam_entry() for the equivalent CN20K message.  Without a
  similar branch here, does a CN20K PF/VF get garbage key/action data with a
  return code of 0?



      reply	other threads:[~2026-08-07 14:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-06  7:56 [PATCH net-next] octeontx2-af: Add mailbox to read default MCAM entry nshettyj
2026-08-07 14:25 ` Simon Horman [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260807142526.GM51943@horms.kernel.org \
    --to=horms@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gakula@marvell.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nshettyj@marvell.com \
    --cc=pabeni@redhat.com \
    --cc=psatheesh@marvell.com \
    --cc=rkannoth@marvell.com \
    --cc=sbhatta@marvell.com \
    --cc=sgoutham@marvell.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox