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:22:01 +0000
| Newsgroups | dev.linux.lists.sashiko,dev.linux.lists.imx,org.kernel.vger.linux-devicetree,org.kernel.vger.netdev |
|---|---|
| Message-ID | <DBBPR04MB7500D3E90AF38CE5BF20A5D688382@DBBPR04MB7500.eurprd04.prod.outlook.com> |
CC netdev to avoid the same comments > > 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.