From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tetsuya Mukawa Subject: Re: [PATCHv4 4/9] null: virtual dynamic rss configuration Date: Tue, 29 Sep 2015 11:24:51 +0900 Message-ID: <5609F673.80405@igel.co.jp> References: <1435589444-1988-1-git-send-email-tomaszx.kulasek@intel.com> <1436981189-3320-1-git-send-email-tomaszx.kulasek@intel.com> <1436981189-3320-5-git-send-email-tomaszx.kulasek@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit To: Tomasz Kulasek , dev@dpdk.org Return-path: Received: from mail-pa0-f43.google.com (mail-pa0-f43.google.com [209.85.220.43]) by dpdk.org (Postfix) with ESMTP id 7CA4658EF for ; Tue, 29 Sep 2015 04:24:52 +0200 (CEST) Received: by pacfv12 with SMTP id fv12so195101473pac.2 for ; Mon, 28 Sep 2015 19:24:51 -0700 (PDT) In-Reply-To: <1436981189-3320-5-git-send-email-tomaszx.kulasek@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 > --- > 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