[dpdk-dev] [PATCHv4 4/9] null: virtual dynamic rss configuration

Jastrzebski, MichalX K michalx.k.jastrzebski at intel.com
Mon Oct 12 11:05:33 CEST 2015


> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Tetsuya Mukawa
> Sent: Tuesday, September 29, 2015 4:25 AM
> To: Kulasek, TomaszX; dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCHv4 4/9] null: virtual dynamic rss configuration
> 
> On 2015/07/16 2:26, Tomasz Kulasek wrote:
> > This implementation allows to set and read RSS configuration for null
> > device, and is used to validate right values propagation over the slaves,
> > in test units for dynamic RSS configuration for bonding.
> >
> > Signed-off-by: Tomasz Kulasek <tomaszx.kulasek at intel.com>
> > ---
> >  drivers/net/null/rte_eth_null.c |  116
> +++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 116 insertions(+)
> >
> > diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c
> > index 39ffcde..f393422 100644
> > --- a/drivers/net/null/rte_eth_null.c
> > +++ b/drivers/net/null/rte_eth_null.c
> > +static int
> > +eth_rss_hash_update(struct rte_eth_dev *dev, struct rte_eth_rss_conf
> *rss_conf)
> > +{
> > +	struct pmd_internals *internal = dev->data->dev_private;
> > +
> > +	rte_spinlock_lock(&internal->rss_lock);
> > +
> > +	if ((rss_conf->rss_hf & internal->flow_type_rss_offloads) != 0)
> > +		dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf =
> > +				rss_conf->rss_hf & internal-
> >flow_type_rss_offloads;
> > +
> > +	if (rss_conf->rss_key)
> > +		memcpy(internal->rss_key, rss_conf->rss_key, 40);
> > +
> > +	rte_spinlock_unlock(&internal->rss_lock);
> > +
> > +	return 0;
> > +}
> > +
> > +static int
> > +eth_rss_hash_conf_get(struct rte_eth_dev *dev,
> > +		struct rte_eth_rss_conf *rss_conf)
> > +{
> > +	struct pmd_internals *internal = dev->data->dev_private;
> > +
> > +	rte_spinlock_lock(&internal->rss_lock);
> > +
> > +	rss_conf->rss_hf = dev->data-
> >dev_conf.rx_adv_conf.rss_conf.rss_hf;
> > +	if (rss_conf->rss_key)
> > +		memcpy(rss_conf->rss_key, internal->rss_key, 40);
> > +
> > +	rte_spinlock_unlock(&internal->rss_lock);
> > +
> > +	return 0;
> > +}
> > +
> >  static const struct eth_dev_ops ops = {
> >  	.dev_start = eth_dev_start,
> >  	.dev_stop = eth_dev_stop,
> > @@ -436,6 +547,11 @@ eth_dev_null_create(const char *name,
> >  	internals->packet_copy = packet_copy;
> >  	internals->numa_node = numa_node;
> >
> > +	internals->flow_type_rss_offloads =  ETH_RSS_PROTO_MASK;
> > +	internals->reta_size = RTE_DIM(internals->reta_conf) *
> RTE_RETA_GROUP_SIZE;
> > +
> > +	memcpy(internals->rss_key, default_rss_key, 40);
> > +
> >  	eth_drv->pci_drv.name = drivername;
> >
> >  	pci_dev->numa_node = numa_node;
> 
> Hi Thomasz,
> 
> I am just curious. Is it possible to use rte_memcpy instead of memcpy?
> if we can, rte_memcpy may be faster.
> 
> Tetsuya

Hi Tetsuya,
Could You please review v5 that Tomasz sent and if You agree with this implementation could You also ACK this patch-set?


More information about the dev mailing list