[1/2] doc: add PMD filtering features back
diff mbox series

Message ID 20191025125118.47189-1-ferruh.yigit@intel.com
State New
Delegated to: Ferruh Yigit
Headers show
Series
  • [1/2] doc: add PMD filtering features back
Related show

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ferruh Yigit Oct. 25, 2019, 12:51 p.m. UTC
What has been deprecated is enabling filtering support using the
'filter_ctrl' APIs [1], now same filtering features can be implemented
using rte_flow APIs and this is the preferred way for DPDK.

Since those filtering features can be enabled via rte_flow too, better
to keep them in the feature list, and mark them enabled for the PMDs
that enabled features via rte_flow API.
That is why PMD feature announcements not added back, they can announce
the feature again when 'filter_ctrl' implementation replaced with
'rte_flow" ones.

Also filter definitions should be clarified more in the features
documentation so that all PMDs can easily figure out to announce or
not these filtering features, also users can understand better what to
expect from this feature.

Fixes: 030febb6642c ("doc: remove deprecated ethdev features")
Cc: stable@dpdk.org

[1]
rte_eth_dev_filter_ctrl()
rte_eth_dev_filter_supported()
These APIs were passing using input related to the filtering by
'filter_type' and type specific structs.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
Cc: Thomas Monjalon <thomas@monjalon.net>
Cc: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Cc: Ajit Khaparde <ajit.khaparde@broadcom.com>
Cc: Jerin Jacob <jerinj@marvell.com>
---
 doc/guides/nics/features.rst         | 78 ++++++++++++++++++++++++++++
 doc/guides/nics/features/default.ini |  7 +++
 2 files changed, 85 insertions(+)

Comments

Thomas Monjalon Oct. 25, 2019, 1:23 p.m. UTC | #1
25/10/2019 14:51, Ferruh Yigit:
> Also filter definitions should be clarified more in the features
> documentation so that all PMDs can easily figure out to announce or
> not these filtering features, also users can understand better what to
> expect from this feature.

OK let's try to dig in some descriptions.

[...]
> +N-tuple filter
> +--------------
> +
> +Supports filtering on N-tuple values.

What is n-tuple? 3-tuple is enough?

> +Tunnel filter
> +-------------
> +
> +Supports tunnel filtering.

There are so many kinds of tunnels and filtering.
What is minimum to declare such feature?
Isn't it more relevant to list the supported tunnels?

> +Flexible filter
> +---------------
> +
> +Supports a flexible (non-tuple or Ethertype) filter.

This is meaningless and should be dropped for sure.

> +* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_FLEXIBLE``.
> +* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.

You are referring to the deprecated API here and in other places.

> +Hash filter
> +-----------
> +
> +Supports Hash filtering.

Which hash?

> +Flow director
> +-------------
> +
> +Supports Flow Director style filtering to queues.

I think it is an Intel wording.
Could you describe it with networking words?

Patch
diff mbox series

diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
index d96696801..4fcb37e4b 100644
--- a/doc/guides/nics/features.rst
+++ b/doc/guides/nics/features.rst
@@ -366,6 +366,84 @@  Supports filtering of a VLAN Tag identifier.
 * **[related]    API**: ``rte_eth_dev_vlan_filter()``.
 
 
+.. _nic_features_ethertype_filter:
+
+Ethertype filter
+----------------
+
+Supports filtering on Ethernet type.
+
+* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_ETHERTYPE``.
+* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.
+
+.. _nic_features_ntuple_filter:
+
+N-tuple filter
+--------------
+
+Supports filtering on N-tuple values.
+
+* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_NTUPLE``.
+* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.
+
+
+.. _nic_features_syn_filter:
+
+SYN filter
+----------
+
+Supports TCP syn filtering.
+
+* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_SYN``.
+* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.
+
+
+.. _nic_features_tunnel_filter:
+
+Tunnel filter
+-------------
+
+Supports tunnel filtering.
+
+* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_TUNNEL``.
+* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.
+
+
+.. _nic_features_flexible_filter:
+
+Flexible filter
+---------------
+
+Supports a flexible (non-tuple or Ethertype) filter.
+
+* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_FLEXIBLE``.
+* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.
+
+
+.. _nic_features_hash_filter:
+
+Hash filter
+-----------
+
+Supports Hash filtering.
+
+* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_HASH``.
+* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.
+
+
+.. _nic_features_flow_director:
+
+Flow director
+-------------
+
+Supports Flow Director style filtering to queues.
+
+* **[implements] eth_dev_ops**: ``filter_ctrl:RTE_ETH_FILTER_FDIR``.
+* **[provides]   mbuf**: ``mbuf.ol_flags:`` ``PKT_RX_FDIR``, ``PKT_RX_FDIR_ID``,
+  ``PKT_RX_FDIR_FLX``.
+* **[related]    API**: ``rte_eth_dev_filter_ctrl()``, ``rte_eth_dev_filter_supported()``.
+
+
 .. _nic_features_flow_control:
 
 Flow control
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index 91ec61901..ca3b738ea 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -37,6 +37,13 @@  VMDq                 =
 SR-IOV               =
 DCB                  =
 VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
 Flow control         =
 Flow API             =
 Rate limitation      =