From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id ED2C22BF4 for ; Fri, 12 Jan 2018 14:30:54 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Jan 2018 05:30:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,348,1511856000"; d="scan'208";a="18691206" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.237.220.48]) ([10.237.220.48]) by FMSMGA003.fm.intel.com with ESMTP; 12 Jan 2018 05:30:52 -0800 To: Shahaf Shuler , dev@dpdk.org References: From: Ferruh Yigit Message-ID: <89b45470-1868-0a1a-02a3-5c34ce1ac48e@intel.com> Date: Fri, 12 Jan 2018 13:30:51 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v3 01/39] examples/l2fwd: convert to new ethdev offloads API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jan 2018 13:30:55 -0000 On 12/26/2017 9:23 AM, Shahaf Shuler wrote: > Ethdev offloads API has changed since: > > commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API") > commit cba7f53b717d ("ethdev: introduce Tx queue offloads API") > > This commit support the new API. This patch does three things: 1- Convert bit-field Rx Offload information to new bitwise "offloads" variable. 2- Use new queue specific offload configuration for Rx/Tx 3- Enable new mbuf fast free Tx offload 1 and 2 can be classified as "convert to new ethdev offloads", but I am not sure about 3. Wouldn't be better to enable new offloadings in a separate patch, other than convert one? And I don't know if we want to enable that specific offload for all samples. > > Signed-off-by: Shahaf Shuler > --- > examples/l2fwd/main.c | 28 +++++++++++++++++++--------- > 1 file changed, 19 insertions(+), 9 deletions(-) > > diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c > index e89e2e1bf..4436ea587 100644 > --- a/examples/l2fwd/main.c > +++ b/examples/l2fwd/main.c > @@ -110,14 +110,11 @@ struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE]; > > static struct rte_eth_dev_tx_buffer *tx_buffer[RTE_MAX_ETHPORTS]; > > -static const struct rte_eth_conf port_conf = { > +static struct rte_eth_conf port_conf = { > .rxmode = { > .split_hdr_size = 0, > - .header_split = 0, /**< Header Split disabled */ > - .hw_ip_checksum = 0, /**< IP checksum offload disabled */ > - .hw_vlan_filter = 0, /**< VLAN filtering disabled */ > - .jumbo_frame = 0, /**< Jumbo Frame Support disabled */ > - .hw_strip_crc = 1, /**< CRC stripped by hardware */ > + .ignore_offload_bitfield = 1, > + .offloads = DEV_RX_OFFLOAD_CRC_STRIP, > }, > .txmode = { > .mq_mode = ETH_MQ_TX_NONE, > @@ -649,6 +646,10 @@ main(int argc, char **argv) > > /* Initialise each port */ > for (portid = 0; portid < nb_ports; portid++) { > + struct rte_eth_rxconf rxq_conf; > + struct rte_eth_txconf txq_conf; > + struct rte_eth_conf local_port_conf = port_conf; > + > /* skip ports that are not enabled */ > if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) { > printf("Skipping disabled port %u\n", portid); > @@ -658,7 +659,11 @@ main(int argc, char **argv) > /* init port */ > printf("Initializing port %u... ", portid); > fflush(stdout); > - ret = rte_eth_dev_configure(portid, 1, 1, &port_conf); > + rte_eth_dev_info_get(portid, &dev_info); > + if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE) > + local_port_conf.txmode.offloads |= > + DEV_TX_OFFLOAD_MBUF_FAST_FREE; > + ret = rte_eth_dev_configure(portid, 1, 1, &local_port_conf); > if (ret < 0) > rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%u\n", > ret, portid); > @@ -674,9 +679,11 @@ main(int argc, char **argv) > > /* init one RX queue */ > fflush(stdout); > + rxq_conf = dev_info.default_rxconf; > + rxq_conf.offloads = local_port_conf.rxmode.offloads; > ret = rte_eth_rx_queue_setup(portid, 0, nb_rxd, > rte_eth_dev_socket_id(portid), > - NULL, > + &rxq_conf, > l2fwd_pktmbuf_pool); > if (ret < 0) > rte_exit(EXIT_FAILURE, "rte_eth_rx_queue_setup:err=%d, port=%u\n", > @@ -684,9 +691,12 @@ main(int argc, char **argv) > > /* init one TX queue on each port */ > fflush(stdout); > + txq_conf = dev_info.default_txconf; > + txq_conf.txq_flags = ETH_TXQ_FLAGS_IGNORE; > + txq_conf.offloads = local_port_conf.txmode.offloads; > ret = rte_eth_tx_queue_setup(portid, 0, nb_txd, > rte_eth_dev_socket_id(portid), > - NULL); > + &txq_conf); > if (ret < 0) > rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup:err=%d, port=%u\n", > ret, portid); >