DPDK patches and discussions
 help / color / mirror / Atom feed
From: Radu Nicolau <radu.nicolau@intel.com>
To: Shahaf Shuler <shahafs@mellanox.com>, dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 15/39] examples/ipsec-secgw: convert to new ethdev offloads API
Date: Mon, 11 Dec 2017 11:47:51 +0000	[thread overview]
Message-ID: <1f393cb6-1765-5711-0e60-384da087bbf3@intel.com> (raw)
In-Reply-To: <20171123121941.144335-6-shahafs@mellanox.com>

Hi,

Comment inline


On 11/23/2017 12:19 PM, 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.
>
> Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
> ---
>   examples/ipsec-secgw/ipsec-secgw.c | 27 +++++++++++++++++++++++++--
>   1 file changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
> index c98454a90..6e538a1ab 100644
> --- a/examples/ipsec-secgw/ipsec-secgw.c
> +++ b/examples/ipsec-secgw/ipsec-secgw.c
> @@ -217,6 +217,8 @@ static struct rte_eth_conf port_conf = {
>   	},
>   	.txmode = {
>   		.mq_mode = ETH_MQ_TX_NONE,
> +		.offloads = (DEV_TX_OFFLOAD_IPV4_CKSUM |
> +			     DEV_TX_OFFLOAD_MULTI_SEGS),
>   	},
>   };
>   
> @@ -1394,6 +1396,22 @@ port_init(uint16_t portid)
>   	if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_SECURITY)
>   		port_conf.txmode.offloads |= DEV_TX_OFFLOAD_SECURITY;
>   
> +	if ((dev_info.rx_offload_capa & port_conf.rxmode.offloads) !=
> +	    port_conf.rxmode.offloads) {
> +		printf("Some Rx offloads are not supported "
> +		       "by port %d: requested 0x%lx supported 0x%lx\n",
> +		       portid, port_conf.rxmode.offloads,
> +		       dev_info.rx_offload_capa);
> +		port_conf.rxmode.offloads &= dev_info.rx_offload_capa;
> +	}
> +	if ((dev_info.tx_offload_capa & port_conf.txmode.offloads) !=
> +	     port_conf.txmode.offloads) {
> +		printf("Some Tx offloads are not supported "
> +		       "by port %d: requested 0x%lx supported 0x%lx\n",
> +		       portid, port_conf.txmode.offloads,
> +		       dev_info.tx_offload_capa);
> +		port_conf.txmode.offloads &= dev_info.tx_offload_capa;
> +	}
I don't think that clearing the offload flags that are not advertised in 
the capabilities is a good approach, although it may be the right one. 
 From what I can see there are more PMDs that don't fully populate the 
offload capabilities, but actually check for them in the configure/start 
function. One of them is ixgbe, which needs CRC strip enabled when IPSec 
is enabled, and will fail to start otherwise. So although it supports 
CRC strip it does not set the flag in the capabilities, but checks it in 
the start function.
I would propose to just print a warning if a requested offload is not 
set in the capabilities, but let the pmd start fail if it is not really 
supported.

>   	ret = rte_eth_dev_configure(portid, nb_rx_queue, nb_tx_queue,
>   			&port_conf);
>   	if (ret < 0)
> @@ -1420,7 +1438,8 @@ port_init(uint16_t portid)
>   		printf("Setup txq=%u,%d,%d\n", lcore_id, tx_queueid, socket_id);
>   
>   		txconf = &dev_info.default_txconf;
> -		txconf->txq_flags = 0;
> +		txconf->txq_flags = ETH_TXQ_FLAGS_IGNORE;
> +		txconf->offloads = port_conf.txmode.offloads;
>   
>   		ret = rte_eth_tx_queue_setup(portid, tx_queueid, nb_txd,
>   				socket_id, txconf);
> @@ -1434,6 +1453,8 @@ port_init(uint16_t portid)
>   
>   		/* init RX queues */
>   		for (queue = 0; queue < qconf->nb_rx_queue; ++queue) {
> +			struct rte_eth_rxconf rxq_conf;
> +
>   			if (portid != qconf->rx_queue_list[queue].port_id)
>   				continue;
>   
> @@ -1442,8 +1463,10 @@ port_init(uint16_t portid)
>   			printf("Setup rxq=%d,%d,%d\n", portid, rx_queueid,
>   					socket_id);
>   
> +			rxq_conf = dev_info.default_rxconf;
> +			rxq_conf.offloads = port_conf.rxmode.offloads;
>   			ret = rte_eth_rx_queue_setup(portid, rx_queueid,
> -					nb_rxd,	socket_id, NULL,
> +					nb_rxd,	socket_id, &rxq_conf,
>   					socket_ctx[socket_id].mbuf_pool);
>   			if (ret < 0)
>   				rte_exit(EXIT_FAILURE,

  reply	other threads:[~2017-12-11 11:47 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23 12:19 [dpdk-dev] [PATCH 10/39] examples/exception_path: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 11/39] examples/kni: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 12/39] examples/ip_fragmentation: convert to new " Shahaf Shuler
2017-12-11 14:56   ` Ananyev, Konstantin
2017-11-23 12:19 ` [dpdk-dev] [PATCH 13/39] examples/ip_pipeline: convert to new ethdev " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 14/39] examples/ip_reassembly: " Shahaf Shuler
2017-12-11 15:03   ` Ananyev, Konstantin
2017-12-12  6:30     ` Shahaf Shuler
2017-12-12  8:49       ` Ananyev, Konstantin
2017-11-23 12:19 ` [dpdk-dev] [PATCH 15/39] examples/ipsec-secgw: " Shahaf Shuler
2017-12-11 11:47   ` Radu Nicolau [this message]
2017-12-11 12:33     ` Shahaf Shuler
2017-12-11 12:51       ` Radu Nicolau
2017-11-23 12:19 ` [dpdk-dev] [PATCH 16/39] examples/ipv4_multicast: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 17/39] examples/link_status_interrupt: convert to new " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 18/39] examples/load_balancer: convert to new ethdev " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 19/39] examples/multi_process: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 20/39] examples/netmap_compat: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 21/39] examples/performance-thread: convert to new " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 22/39] examples/qos_meter: convert to new ethdev " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 23/39] examples/qos_sched: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 24/39] examples/quota_watermark: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 25/39] examples/tep_termination: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 26/39] examples/vhost: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 27/39] examples/vmdq: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 28/39] examples/vmdq_dcb: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 29/39] examples/vm_power_manager: convert to new " Shahaf Shuler
2017-12-11 12:06   ` Hunt, David
2017-11-23 12:19 ` [dpdk-dev] [PATCH 30/39] examples/distributor: convert to new ethdev " Shahaf Shuler
2017-12-11 16:20   ` Bruce Richardson
2017-11-23 12:19 ` [dpdk-dev] [PATCH 31/39] examples/ethtool: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 32/39] examples/eventdev_pipeline: convert to new " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 33/39] examples/flow_classify: convert to new ethdev " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 34/39] examples/flow_filtering: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 35/39] examples/packet_ordering: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 36/39] examples/ptpclient: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 37/39] examples/rxtx_callbacks: " Shahaf Shuler
2017-12-11 16:22   ` Bruce Richardson
2017-11-23 12:19 ` [dpdk-dev] [PATCH 38/39] examples/server_node_efd: " Shahaf Shuler
2017-11-23 12:19 ` [dpdk-dev] [PATCH 39/39] examples/skeleton: " Shahaf Shuler
2017-12-11 16:23   ` Bruce Richardson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1f393cb6-1765-5711-0e60-384da087bbf3@intel.com \
    --to=radu.nicolau@intel.com \
    --cc=dev@dpdk.org \
    --cc=shahafs@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).