net/sfc: rely on native thread safety in RTE flow mechanism

Message ID 20201116194029.15646-1-ivan.malov@oktetlabs.ru (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series net/sfc: rely on native thread safety in RTE flow mechanism |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-intel-Functional fail Functional Testing issues
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Ivan Malov Nov. 16, 2020, 7:40 p.m. UTC
  The changeset that introduced common flow API thread safety
in fact introduced double locking to this particular PMD as
RTE flow API implementation in the PMD has been thread-safe
since the day zero. State this by setting the corresponding
device flag to skip locking imposed by generic RTE flow API.

Fixes: 80d1a9aff7f6 ("ethdev: make flow API thread safe")

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
---
 doc/guides/nics/sfc_efx.rst            | 2 ++
 doc/guides/rel_notes/release_20_11.rst | 1 +
 drivers/net/sfc/sfc_ethdev.c           | 1 +
 3 files changed, 4 insertions(+)
  

Comments

Andrew Rybchenko Nov. 17, 2020, 7:38 a.m. UTC | #1
On 11/16/20 10:40 PM, Ivan Malov wrote:
> The changeset that introduced common flow API thread safety
> in fact introduced double locking to this particular PMD as
> RTE flow API implementation in the PMD has been thread-safe
> since the day zero. State this by setting the corresponding
> device flag to skip locking imposed by generic RTE flow API.
> 
> Fixes: 80d1a9aff7f6 ("ethdev: make flow API thread safe")
> 
> Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>

Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
  
Ferruh Yigit Nov. 17, 2020, 2:12 p.m. UTC | #2
On 11/17/2020 7:38 AM, Andrew Rybchenko wrote:
> On 11/16/20 10:40 PM, Ivan Malov wrote:
>> The changeset that introduced common flow API thread safety
>> in fact introduced double locking to this particular PMD as
>> RTE flow API implementation in the PMD has been thread-safe
>> since the day zero. State this by setting the corresponding
>> device flag to skip locking imposed by generic RTE flow API.
>>
>> Fixes: 80d1a9aff7f6 ("ethdev: make flow API thread safe")
>>
>> Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
> 
> Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> 

Applied to dpdk-next-net/main, thanks.
  

Patch

diff --git a/doc/guides/nics/sfc_efx.rst b/doc/guides/nics/sfc_efx.rst
index 962e54389..f5e9f9495 100644
--- a/doc/guides/nics/sfc_efx.rst
+++ b/doc/guides/nics/sfc_efx.rst
@@ -246,6 +246,8 @@  Validating flow rules depends on the firmware variant.
 
 The :ref:`flow_isolated_mode` is supported.
 
+The implementation is natively thread-safe.
+
 Ethernet destination individual/group match
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst
index 24cedba16..1c262d39a 100644
--- a/doc/guides/rel_notes/release_20_11.rst
+++ b/doc/guides/rel_notes/release_20_11.rst
@@ -220,6 +220,7 @@  New Features
   * Added Alveo SN1000 SmartNICs (EF100 architecture) support including
     flow API transfer rules for switch HW offload
   * Added ARMv8 support
+  * Claimed RTE flow API native thread safety
 
 * **Added Wangxun txgbe PMD.**
 
diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
index db81e705f..93fc7baa0 100644
--- a/drivers/net/sfc/sfc_ethdev.c
+++ b/drivers/net/sfc/sfc_ethdev.c
@@ -2198,6 +2198,7 @@  sfc_eth_dev_init(struct rte_eth_dev *dev)
 	/* Copy PCI device info to the dev->data */
 	rte_eth_copy_pci_info(dev, pci_dev);
 	dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+	dev->data->dev_flags |= RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE;
 
 	rc = sfc_kvargs_parse(sa);
 	if (rc != 0)