On 09/13/2017 11:49 AM, Andrew Rybchenko wrote:
On 09/13/2017 09:37 AM, Shahaf Shuler wrote:
Introduce a new API to configure Rx offloads.

In the new API, offloads are divided into per-port and per-queue
offloads. The PMD reports capability for each of them.
Offloads are enabled using the existing DEV_RX_OFFLOAD_* flags.
To enable per-port offload, the offload should be set on both device
configuration and queue configuration. To enable per-queue offload, the
offloads can be set only on queue configuration.

Applications should set the ignore_offload_bitfield bit on rxmode
structure in order to move to the new API.

The old Rx offloads API is kept for the meanwhile, in order to enable a
smooth transition for PMDs and application to the new API.

Signed-off-by: Shahaf Shuler <shah...@mellanox.com>
---
  doc/guides/nics/features.rst  |  33 ++++----
  lib/librte_ether/rte_ethdev.c | 156 +++++++++++++++++++++++++++++++++----
  lib/librte_ether/rte_ethdev.h |  51 +++++++++++-
  3 files changed, 210 insertions(+), 30 deletions(-)

[snip]

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 0597641ee..b3c10701e 100644

[snip]

@@ -722,8 +800,20 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
          return -EBUSY;
      }
  +    /*
+     * Convert between the offloads API to enable PMDs to support
+     * only one of them.
+     */
+    if ((dev_conf->rxmode.ignore_offload_bitfield == 0)) {
+        rte_eth_convert_rx_offload_bitfield(
+                &dev_conf->rxmode, &local_conf.rxmode.offloads);
+    } else {
+ rte_eth_convert_rx_offloads(dev_conf->rxmode.offloads,
+                        &local_conf.rxmode);

Ignore flag is lost here and it will result in treating txq_flags as the primary
information about offloads. It is important in the case of failsafe PMD.

Sorry, I mean rxmode (not txq_flags).

[snip]

Reply via email to