[dpdk-dev] [PATCH v4 18/29] node: add ethdev Rx and Tx node ctrl API

Nithin Dabilpuram ndabilpuram at marvell.com
Fri Apr 10 10:22:37 CEST 2020


On Fri, Apr 10, 2020 at 10:39:44AM +0530, Nithin Dabilpuram wrote:
> On Fri, Apr 10, 2020 at 01:07:17AM +0200, Andrzej Ostruszka wrote:
> > On 4/5/20 10:56 AM, jerinj at marvell.com wrote:
> > > From: Nithin Dabilpuram <ndabilpuram at marvell.com>
> > > 
> > > Add ctrl api to setup ethdev_rx and ethdev_tx node.
> > > This ctrl api clones 'N' number of ethdev_rx and ethdev_tx
> > > nodes with specific (port, queue) pairs updated in their context.
> > > All the ethdev ports and queues are setup before this api
> > > is called.
> > > 
> > > Signed-off-by: Nithin Dabilpuram <ndabilpuram at marvell.com>
> > > Signed-off-by: Pavan Nikhilesh <pbhagavatula at marvell.com>
> > > Signed-off-by: Kiran Kumar K <kirankumark at marvell.com>
> > > ---
> > [...]
> > > +struct rte_node_mbuf_priv1 {
> > > +	union {
> > > +		/* IP4 rewrite */
> > > +		struct {
> > > +			uint16_t nh;
> > > +			uint16_t ttl;
> > > +			uint32_t cksum;
> > > +		};
> > > +
> > > +		uint64_t u;
> > > +	};
> > > +};
> > > +
> > > +/**
> > > + * @warning
> > > + * @b EXPERIMENTAL: this API may change without prior notice
> > > + *
> > > + * Node mbuf private data to store crypto operation.
> > > + */
> > > +struct rte_node_mbuf_priv2 {
> > > +	union {
> > > +		/* Sym crypto */
> > > +		struct {
> > > +			struct rte_crypto_op op;
> > > +		};
> > > +	};
> > > +} __rte_cache_aligned;
> > 
> > Why such definition?
> 
> For communication b/w nodes, we need some per mbuf private space.
> We defined it into two halfs for performance reasons as
> #1 rte_node_mbuf_priv1(8 bytes) mapped to mbuf->udata64
> #2 rte_node_mbuf_priv2(RTE_CACHE_LINE_SIZE bytes) mapped to mbuf private area.
> 
> #1 is smaller area and will not have a cache miss when accessed as mbuf
> is already in cache.
> #2 is larger area and probably good enough for many use cases like ipsec, crypto 
> etc, and there will be an extra cost of cache miss to access it.
> 
> Atleast in OCTEONTX2, we are able to see 27% performance drop, if use single
> private area #2 for everything instead.
> 
> Since pkt_mbuf pool are created by application, we these structures are defined
> here have a check in ctrl api if the pkt_mbuf pool meets the mbuf private area
> size requirement.

Just wanted to update that I'll also rename this structure and 
related api's to not start with "rte_" in next version
as they are not visible outside this librte_node library.


> 
> > 
> > With regards
> > Andrzej Ostruszka


More information about the dev mailing list