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

Message ID 20191025125118.47189-1-ferruh.yigit@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series [1/2] doc: add PMD filtering features back |

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?
  
Ferruh Yigit April 10, 2020, 8:53 a.m. UTC | #2
On 10/25/2019 2:23 PM, Thomas Monjalon wrote:
> 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?

I don't know why these are added historically, and myself not aware of the all
filtering to classify them properly.

Just saying "Flow API" is supported is not really says anything,
either we can try to group the filtering features, as done here and advertise
these filtering features, or create a rte flow based pattern/action
documentation which I believe will be too big and detailed.

So I think it is good to have some grouping for the filtering features, but if
current grouping is not good, what it should be like, and how we can define them?

I will send a v2 based on other comments, but it won't be addressing the groping
questions.

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

+1 to remove the deprecated APIs, I will convert them to rte flow.

> 
>> +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 --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      =