RE: [EXTERNAL] Re: [PATCH] octeontx2-af: Increase maximum BPID channels

From: Radha Chintakuntla
Date: Mon Mar 11 2024 - 15:23:32 EST


> -----Original Message-----
> From: Simon Horman <horms@xxxxxxxxxx>
> Sent: Thursday, March 7, 2024 6:52 AM
> To: Radha Chintakuntla <radhac@xxxxxxxxxxx>
> Cc: davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx;
> pabeni@xxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> Sunil Kovvuri Goutham <sgoutham@xxxxxxxxxxx>; Linu Cherian
> <lcherian@xxxxxxxxxxx>; Geethasowjanya Akula <gakula@xxxxxxxxxxx>;
> Hariprasad Kelam <hkelam@xxxxxxxxxxx>; Jerin Jacob <jerinj@xxxxxxxxxxx>;
> Subbaraya Sundeep Bhatta <sbhatta@xxxxxxxxxxx>
> Subject: [EXTERNAL] Re: [PATCH] octeontx2-af: Increase maximum BPID
> channels
>
> Prioritize security for external emails: Confirm sender and content safety
> before clicking links or opening attachments
>
> ----------------------------------------------------------------------
> On Wed, Mar 06, 2024 at 01:38:06PM -0800, Radha Mohan Chintakuntla
> wrote:
> > Any NIX interface type can have maximum 256 channels. So increased the
> > backpressure ID count to 256 so that it can cover cn9k and cn10k SoCs
> > that have different NIX interface types with varied maximum channels.
> >
> > Signed-off-by: Radha Mohan Chintakuntla <radhac@xxxxxxxxxxx>
> > ---
> > drivers/net/ethernet/marvell/octeontx2/af/mbox.h | 6 ++----
> > 1 file changed, 2 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
> > b/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
> > index d5c4f810da61..223a2e39172c 100644
> > --- a/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
> > +++ b/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
> > @@ -1207,10 +1207,8 @@ struct nix_bp_cfg_req {
> > /* bpid_per_chan = 1 assigns separate bp id for each channel */ };
> >
> > -/* PF can be mapped to either CGX or LBK interface,
> > - * so maximum 64 channels are possible.
> > - */
> > -#define NIX_MAX_BPID_CHAN 64
> > +/* Maximum channels any single NIX interface can have */
> > +#define NIX_MAX_BPID_CHAN 256
> > struct nix_bp_cfg_rsp {
> > struct mbox_msghdr hdr;
> > u16 chan_bpid[NIX_MAX_BPID_CHAN]; /* Channel and bpid
> mapping */
>
> Hi Radha,
>
> looking over this, I am curious to know how out-of bounds access to
> chan_bpid is prevented. The bounds seems to be the the number of PF or VF
> rings. Which I assume is derived from the HW. But if so, what if the HW reports
> more than NIX_MAX_BPID_CHAN rings?
>
> On a different note, struct includes the following field:
>
> u16 bpid[NIX_MAX_BPID_CHAN];
>
> But here the index used seems to be
>
> 1. VLAN priority (which has maximum value of 8) if DCB is used 2. 0 otherwise
>
> So perhaps fewer elements are needed?
>
> Apologies in advance if I'm on the wrong track here.
Hi Simon,

Any interface(or MAC) of NIX doesn't have more than 256 on any of current or upcoming chips by design.
Each of the channels can be mapped to a different BPID.
As you mentioned, if for a given interface there are 8 VLAN priorities then we need only 8 BPIDs to configure proper backpressure settings.
This entry 'chan_bpid' gives information on which BPID should be configured for each of the 256 channels.
Hope this clarifies.

Regards,
Radha