DPDK patches and discussions
 help / color / mirror / Atom feed
From: Shahaf Shuler <shahafs@mellanox.com>
To: Maciej Czekaj <mjc@semihalf.com>, "dev@dpdk.org" <dev@dpdk.org>,
	"konstantin.ananyev@intel.com" <konstantin.ananyev@intel.com>,
	"radu.nicolau@intel.com" <radu.nicolau@intel.com>,
	"arybchenko@solarflare.com" <arybchenko@solarflare.com>,
	"tomasz.kantecki@intel.com" <tomasz.kantecki@intel.com>
Subject: Re: [dpdk-dev] [PATCH v2 05/39] examples/l3fwd: move to ethdev offloads API
Date: Thu, 21 Dec 2017 14:08:17 +0000	[thread overview]
Message-ID: <VI1PR05MB3149F81A5423891B1047F804C30D0@VI1PR05MB3149.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <cc628b1b-2b0e-0b86-2cc6-072a6a929f00@semihalf.com>

>Looking at diff between v1 and v2, following lines are missing:
>
>-                       port_conf.rxmode.offloads &= dev_info.rx_offload_capa;
>-                       port_conf.txmode.offloads &= dev_info.tx_offload_capa;
>
>I can see this change is consistent across all examples. Is it intentional to enforce the capabilities this way?

Yes it was intentional.

The reason is that application is relying on its offloads to be set. So any offloads set by the application must reach the PMD, otherwise application won’t work correctly.
For example – if application needs Rx checksum, and it is silently masked (by v1 of this series) then it will wrongly assume all checksums are bad.
This is true almost to every offloads. One is exceptional - DEV_TX_OFFLOAD_MBUF_FAST_FREE. Application *can* work without it, as it is only a performance optimization for the mbuf free.

>If so, why enforcing DEV_RX_OFFLOAD_CHECKSUM if the feature is not used by l3fwd code?
>I.e. there is no reference to RX-side ol_flags so application can run without it.

You are right.
When I worked on this code I used the DEV_RX_OFFLOAD_CHECKSUM offloads because also the original example enabled it (hw_ip_checksum = 1)

Adding Thomas the maintainer to confirm.
If it doesn’t use , then we can safely remove this offload.

>
>In v1 the flag was optional which made sense for this particular case.


--Shahaf

From: Maciej Czekaj [mailto:mjc@semihalf.com]
Sent: Monday, December 18, 2017 6:00 PM
To: Shahaf Shuler <shahafs@mellanox.com>; dev@dpdk.org; konstantin.ananyev@intel.com; radu.nicolau@intel.com; arybchenko@solarflare.com
Subject: Re: [dpdk-dev] [PATCH v2 05/39] examples/l3fwd: move to ethdev offloads API



-- Oryginal message --

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><mailto:shahafs@mellanox.com>

---

 examples/l3fwd/main.c | 40 ++++++++++++++++++++++++++++++----------

 1 file changed, 30 insertions(+), 10 deletions(-)



diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c

index 6229568..3bdf4d5 100644

--- a/examples/l3fwd/main.c

+++ b/examples/l3fwd/main.c

@@ -149,11 +149,9 @@ struct lcore_params {

                .mq_mode = ETH_MQ_RX_RSS,

                .max_rx_pkt_len = ETHER_MAX_LEN,

                .split_hdr_size = 0,

-               .header_split   = 0, /**< Header Split disabled */

-               .hw_ip_checksum = 1, /**< IP checksum offload enabled */

-               .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 |

+                            DEV_RX_OFFLOAD_CHECKSUM),

        },

        .rx_adv_conf = {

                .rss_conf = {

@@ -163,6 +161,7 @@ struct lcore_params {

        },

        .txmode = {

                .mq_mode = ETH_MQ_TX_NONE,

+               .offloads = DEV_TX_OFFLOAD_MBUF_FAST_FREE,

        },

 };



@@ -612,7 +611,8 @@ enum {

                        };



                        printf("%s\n", str8);

-                       port_conf.rxmode.jumbo_frame = 1;

+                       port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;

+                       port_conf.txmode.offloads |= DEV_TX_OFFLOAD_MULTI_SEGS;



                        /*

                         * if no max-pkt-len set, use the default

@@ -908,6 +908,22 @@ enum {

                        n_tx_queue = MAX_TX_QUEUE_PER_PORT;

                printf("Creating queues: nb_rxq=%d nb_txq=%u... ",

                        nb_rx_queue, (unsigned)n_tx_queue );

+

+               rte_eth_dev_info_get(portid, &dev_info);

+               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);

+               }

+               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);

+               }

Looking at diff between v1 and v2, following lines are missing:

-                       port_conf.rxmode.offloads &= dev_info.rx_offload_capa;
-                       port_conf.txmode.offloads &= dev_info.tx_offload_capa;

I can see this change is consistent across all examples. Is it intentional to enforce the capabilities this way?
If so, why enforcing DEV_RX_OFFLOAD_CHECKSUM if the feature is not used by l3fwd code?
I.e. there is no reference to RX-side ol_flags so application can run without it.

In v1 the flag was optional which made sense for this particular case.




                ret = rte_eth_dev_configure(portid, nb_rx_queue,

                                       (uint16_t)n_tx_queue, &port_conf);

                if (ret < 0)

@@ -955,10 +971,9 @@ enum {

                        printf("txq=%u,%d,%d ", lcore_id, queueid, socketid);

                        fflush(stdout);



-                       rte_eth_dev_info_get(portid, &dev_info);

                        txconf = &dev_info.default_txconf;

-                       if (port_conf.rxmode.jumbo_frame)

-                              txconf->txq_flags = 0;

+                       txconf->txq_flags = ETH_TXQ_FLAGS_IGNORE;

+                       txconf->offloads = port_conf.txmode.offloads;

                        ret = rte_eth_tx_queue_setup(portid, queueid, nb_txd,

                                                    socketid, txconf);

                        if (ret < 0)

@@ -984,6 +999,8 @@ enum {

                fflush(stdout);

                /* init RX queues */

                for(queue = 0; queue < qconf->n_rx_queue; ++queue) {

+                       struct rte_eth_rxconf rxq_conf;

+

                        portid = qconf->rx_queue_list[queue].port_id;

                        queueid = qconf->rx_queue_list[queue].queue_id;



@@ -996,9 +1013,12 @@ enum {

                        printf("rxq=%d,%d,%d ", portid, queueid, socketid);

                        fflush(stdout);



+                       rte_eth_dev_info_get(portid, &dev_info);

+                       rxq_conf = dev_info.default_rxconf;

+                       rxq_conf.offloads = port_conf.rxmode.offloads;

                        ret = rte_eth_rx_queue_setup(portid, queueid, nb_rxd,

                                       socketid,

-                                      NULL,

+                                      &rxq_conf,

                                       pktmbuf_pool[socketid]);

                        if (ret < 0)

                               rte_exit(EXIT_FAILURE,


  reply	other threads:[~2017-12-21 14:08 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23 12:14 [dpdk-dev] [PATCH 00/39] convert examples to new " Shahaf Shuler
2017-11-23 12:14 ` [dpdk-dev] [PATCH 01/39] examples/l2fwd: convert " Shahaf Shuler
2017-11-24 15:00   ` Andrew Rybchenko
2017-11-26  7:41     ` Shahaf Shuler
2017-11-27  6:34       ` Andrew Rybchenko
2017-11-27  7:03         ` Shahaf Shuler
2017-11-27  7:33           ` Jerin Jacob
2017-11-27 19:41             ` Shahaf Shuler
2017-11-27  7:40           ` Andrew Rybchenko
2017-11-23 12:14 ` [dpdk-dev] [PATCH 02/39] examples/l2fwd-crypto: " Shahaf Shuler
2017-11-23 12:14 ` [dpdk-dev] [PATCH 03/39] examples/l2fwd-jobstats: " Shahaf Shuler
2017-11-23 12:14 ` [dpdk-dev] [PATCH 04/39] examples/l2fwd-keepalive: " Shahaf Shuler
2017-11-23 12:14 ` [dpdk-dev] [PATCH 05/39] examples/l3fwd: move to " Shahaf Shuler
2017-11-23 12:14 ` [dpdk-dev] [PATCH 06/39] examples/l3fwd-acl: convert to new " Shahaf Shuler
2017-12-11 14:48   ` Ananyev, Konstantin
2017-11-23 12:14 ` [dpdk-dev] [PATCH 07/39] examples/l3fwd-power: " Shahaf Shuler
2017-12-11 14:00   ` Hunt, David
2017-11-23 12:14 ` [dpdk-dev] [PATCH 08/39] examples/l3fwd-vf: " Shahaf Shuler
2017-11-23 12:14 ` [dpdk-dev] [PATCH 09/39] examples/bond: " Shahaf Shuler
2017-12-11 11:08   ` Radu Nicolau
2017-12-04 12:12 ` [dpdk-dev] [PATCH 00/39] convert examples " Shahaf Shuler
2017-12-12 12:26 ` [dpdk-dev] [PATCH v2 " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 01/39] examples/l2fwd: convert " Shahaf Shuler
2017-12-19 12:16     ` De Lara Guarch, Pablo
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 02/39] examples/l2fwd-crypto: " Shahaf Shuler
2017-12-19 12:18     ` De Lara Guarch, Pablo
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 03/39] examples/l2fwd-jobstats: " Shahaf Shuler
2017-12-19 12:33     ` De Lara Guarch, Pablo
2017-12-21 13:47       ` Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 04/39] examples/l2fwd-keepalive: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 05/39] examples/l3fwd: move to " Shahaf Shuler
2017-12-12 17:12     ` Ananyev, Konstantin
2017-12-13  7:21       ` Shahaf Shuler
2017-12-13  7:55         ` Jerin Jacob
2017-12-13 12:10           ` Ananyev, Konstantin
2017-12-13 17:32             ` Jerin Jacob
2017-12-21 14:26               ` Shahaf Shuler
2017-12-18 16:00     ` Maciej Czekaj
2017-12-21 14:08       ` Shahaf Shuler [this message]
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 06/39] examples/l3fwd-acl: convert to new " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 07/39] examples/l3fwd-power: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 08/39] examples/l3fwd-vf: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 09/39] examples/bond: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 10/39] examples/exception_path: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 11/39] examples/kni: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 12/39] examples/ip_fragmentation: convert to new " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 13/39] examples/ip_pipeline: convert to new ethdev " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 14/39] examples/ip_reassembly: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 15/39] examples/ipsec-secgw: " Shahaf Shuler
2017-12-19 12:38     ` De Lara Guarch, Pablo
2017-12-21 13:45       ` Shahaf Shuler
2018-01-08 16:27         ` De Lara Guarch, Pablo
2018-01-09  7:07           ` Akhil Goyal
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 16/39] examples/ipv4_multicast: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 17/39] examples/link_status_interrupt: convert to new " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 18/39] examples/load_balancer: convert to new ethdev " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 19/39] examples/multi_process: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 20/39] examples/netmap_compat: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 21/39] examples/performance-thread: convert to new " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 22/39] examples/qos_meter: convert to new ethdev " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 23/39] examples/qos_sched: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 24/39] examples/quota_watermark: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 25/39] examples/tep_termination: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 26/39] examples/vhost: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 27/39] examples/vmdq: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 28/39] examples/vmdq_dcb: " Shahaf Shuler
2017-12-12 12:26   ` [dpdk-dev] [PATCH v2 29/39] examples/vm_power_manager: convert to new " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 30/39] examples/distributor: convert to new ethdev " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 31/39] examples/ethtool: " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 32/39] examples/eventdev_pipeline: convert to new " Shahaf Shuler
2017-12-15 15:20     ` Van Haaren, Harry
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 33/39] examples/flow_classify: convert to new ethdev " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 34/39] examples/flow_filtering: " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 35/39] examples/packet_ordering: " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 36/39] examples/ptpclient: " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 37/39] examples/rxtx_callbacks: " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 38/39] examples/server_node_efd: " Shahaf Shuler
2017-12-12 12:35   ` [dpdk-dev] [PATCH v2 39/39] examples/skeleton: " Shahaf Shuler
2017-12-26  9:22   ` [dpdk-dev] [PATCH v3 00/39] convert examples " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 01/39] examples/l2fwd: convert " Shahaf Shuler
2018-01-10 12:12       ` De Lara Guarch, Pablo
2018-01-12 13:30       ` Ferruh Yigit
2018-01-14 10:37         ` Shahaf Shuler
2018-01-15 10:20           ` Ferruh Yigit
2018-01-15 11:02             ` Shahaf Shuler
2018-01-15 11:34               ` Ferruh Yigit
2018-01-15 11:41                 ` Shahaf Shuler
2018-01-15 11:56                   ` Ferruh Yigit
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 02/39] examples/l2fwd-crypto: " Shahaf Shuler
2018-01-10 12:12       ` De Lara Guarch, Pablo
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 03/39] examples/l2fwd-jobstats: " Shahaf Shuler
2018-01-10 12:13       ` De Lara Guarch, Pablo
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 04/39] examples/l2fwd-keepalive: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 05/39] examples/l3fwd: convert to " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 06/39] examples/l3fwd-acl: convert to new " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 07/39] examples/l3fwd-power: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 08/39] examples/l3fwd-vf: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 09/39] examples/bond: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 10/39] examples/exception_path: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 11/39] examples/kni: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 12/39] examples/ip_fragmentation: convert to new " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 13/39] examples/ip_pipeline: convert to new ethdev " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 14/39] examples/ip_reassembly: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 15/39] examples/ipsec-secgw: " Shahaf Shuler
2018-01-16 11:10       ` Nicolau, Radu
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 16/39] examples/ipv4_multicast: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 17/39] examples/link_status_interrupt: convert to new " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 18/39] examples/load_balancer: convert to new ethdev " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 19/39] examples/multi_process: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 20/39] examples/netmap_compat: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 21/39] examples/performance-thread: convert to new " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 22/39] examples/qos_meter: convert to new ethdev " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 23/39] examples/qos_sched: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 24/39] examples/quota_watermark: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 25/39] examples/tep_termination: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 26/39] examples/vhost: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 27/39] examples/vmdq: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 28/39] examples/vmdq_dcb: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 29/39] examples/vm_power_manager: convert to new " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 30/39] examples/distributor: convert to new ethdev " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 31/39] examples/ethtool: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 32/39] examples/eventdev_pipeline: convert to new " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 33/39] examples/flow_classify: convert to new ethdev " Shahaf Shuler
2018-01-03 15:09       ` Iremonger, Bernard
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 34/39] examples/flow_filtering: " Shahaf Shuler
2017-12-26 13:57       ` Ori Kam
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 35/39] examples/packet_ordering: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 36/39] examples/ptpclient: " Shahaf Shuler
2018-01-10 12:14       ` De Lara Guarch, Pablo
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 37/39] examples/rxtx_callbacks: " Shahaf Shuler
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 38/39] examples/server_node_efd: " Shahaf Shuler
2018-01-10 12:15       ` De Lara Guarch, Pablo
2017-12-26  9:23     ` [dpdk-dev] [PATCH v3 39/39] examples/skeleton: " Shahaf Shuler
2018-01-16 16:25     ` [dpdk-dev] [PATCH v3 00/39] convert examples " Ferruh Yigit

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=VI1PR05MB3149F81A5423891B1047F804C30D0@VI1PR05MB3149.eurprd05.prod.outlook.com \
    --to=shahafs@mellanox.com \
    --cc=arybchenko@solarflare.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@intel.com \
    --cc=mjc@semihalf.com \
    --cc=radu.nicolau@intel.com \
    --cc=tomasz.kantecki@intel.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).