RE: [PATCH v6 net-next 06/15] net: enetc: add support for the "Update" operation to buffer pool table

Wei Fang <[email protected]> Mon, 11 May 2026 02:01:51 +0000
Newsgroups dev.linux.lists.sashiko,dev.linux.lists.imx,org.kernel.vger.linux-devicetree
Message-ID <DBBPR04MB7500D614C25B584703C43BDD88382@DBBPR04MB7500.eurprd04.prod.outlook.com>
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to
> consider:
> - [High] The BPT update command incorrectly sets the `BPT_UA_BPSEU` flag
> without providing the required BPSE payload in the DMA buffer.
> --
> 
> commit 04028be08f5e1d61341410aae72c568ebdb38953
> Author: Wei Fang <[email protected]>
> 
> net: enetc: add support for the "Update" operation to buffer pool table
> 
> This commit adds the ntmp_bpt_update_entry helper to support updating
> the specified entry of the buffer pool table.
> 
> > diff --git a/drivers/net/ethernet/freescale/enetc/ntmp_private.h
> b/drivers/net/ethernet/freescale/enetc/ntmp_private.h
> > --- a/drivers/net/ethernet/freescale/enetc/ntmp_private.h
> > +++ b/drivers/net/ethernet/freescale/enetc/ntmp_private.h
> 
> [ ... ]
> 
> > @@ -175,4 +175,10 @@ struct vft_req_ua {
> >  	struct vft_cfge_data cfge;
> >  };
> >
> > +/* Buffer Pool Table Request Data Buffer Format of Update action */
> > +struct bpt_req_update {
> > +	struct ntmp_req_by_eid rbe;
> > +	struct bpt_cfge_data cfge;
> > +};
> > +
> 
> [ ... ]
> 
> > diff --git a/drivers/net/ethernet/freescale/enetc/ntmp.c
> b/drivers/net/ethernet/freescale/enetc/ntmp.c
> > --- a/drivers/net/ethernet/freescale/enetc/ntmp.c
> > +++ b/drivers/net/ethernet/freescale/enetc/ntmp.c
> 
> [ ... ]
> 
> > @@ -749,5 +755,38 @@ int ntmp_vft_add_entry(struct ntmp_user *user,
> u16 vid,
> >  }
> >  EXPORT_SYMBOL_GPL(ntmp_vft_add_entry);
> >
> > +int ntmp_bpt_update_entry(struct ntmp_user *user, u32 entry_id,
> > +			  const struct bpt_cfge_data *cfge)
> > +{
> > +	struct bpt_req_update *req;
> > +	struct netc_swcbd swcbd;
> > +	struct netc_cbdr *cbdr;
> > +	union netc_cbd cbd;
> > +	int err;
> > +
> > +	swcbd.size = sizeof(*req);
> > +	err = ntmp_alloc_data_mem(user->dev, &swcbd, (void **)&req);
> > +	if (err)
> > +		return err;
> > +
> > +	ntmp_fill_crd_eid(&req->rbe, user->tbl.bpt_ver, 0,
> > +			  NTMP_GEN_UA_CFGEU | BPT_UA_BPSEU, entry_id);
> 
> Will this command fail due to a missing payload for the Buffer Pool Status
> Entry?
> 
> The update action is instructed to process both CFGE and BPSE data by setting
> NTMP_GEN_UA_CFGEU | BPT_UA_BPSEU, but the allocated struct
> bpt_req_update
> shown above does not contain a struct bpt_bpse_data field.
> 
> Because the provided swcbd.size is only sizeof(*req), does this cause the
> hardware to either reject the command with a length mismatch error, or
> unintentionally read past the end of the provided buffer?

According to the NETC reference manual, there is no BPSE_DATA in the request
data, this data is maintained by the hardware's internal buffer. The BPT_UA_BPSEU
flag is used to indicate that the hardware should reset the BPSE_DATA of the entry.

This is a false positive, please ignore it.