[dpdk-dev] [PATCH v4 1/4] ethdev: rename memzones allocated for DMA

Thomas Monjalon thomas at monjalon.net
Fri Oct 12 18:40:04 CEST 2018


12/10/2018 09:53, Andrew Rybchenko:
> On 10/12/18 12:02 AM, Thomas Monjalon wrote:
> > The helper rte_eth_dma_zone_reserve() is called by PMDs
> > when probing a new port.
> > It creates a new memzone with an unique name.
> > The name of this memzone was using the name of the driver
> > doing the probe.
> >
> > In order to avoid assigning the driver before the end of the probing
> > (next patch), the driver name is removed from these memzone names.
> > The ethdev name (data->name) is not used because it may be too long
> > and may be not set at this stage of probing.
> >
> > Syntax of old name: <driver>_<ring>_<port>_<queue>
> > Syntax of new name: eth_p<port>_q<queue>_<ring>
> >
> > Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
> > ---
> >   lib/librte_ethdev/rte_ethdev.c | 5 ++---
> >   1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
> > index ef99f7068..ec443def5 100644
> > --- a/lib/librte_ethdev/rte_ethdev.c
> > +++ b/lib/librte_ethdev/rte_ethdev.c
> > @@ -3441,9 +3441,8 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name,
> >   	char z_name[RTE_MEMZONE_NAMESIZE];
> >   	const struct rte_memzone *mz;
> >   
> > -	snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
> > -		 dev->device->driver->name, ring_name,
> > -		 dev->data->port_id, queue_id);
> > +	snprintf(z_name, sizeof(z_name), "eth_p%d_q%d_%s",
> > +		 dev->data->port_id, queue_id, ring_name);
> >   
> >   	mz = rte_memzone_lookup(z_name);
> >   	if (mz)
> 
> LGTM, but I've found more places where the pattern is duplicate
> and testpmd frightens me:
>   - app/test-pmd/config.c ring_dma_zone_lookup() which is used
>     to look at descriptors (looks like Intel specific since has
>     RTE_LIBRTE_I40E_16BYTE_RX_DESC conditional code)

>From what I see there is no access to rte_device.driver here,
except one in exit function.

>   - drivers/net/bnx2x/bnx2x_rxtx.c
>   - drivers/net/cxgbe/sge.c (few times)

In bnx2x and cxgbe, it is accessed after probing (queue setup or configure steps).

> I've not dig why bnx2x and cxgbe do not use rte_eth_dma_zone_reserve().

Yes may be interesting to standardize them.
I will add them to this patch.




More information about the dev mailing list