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]