| #
ac8d22de |
| 25-Apr-2018 |
Adrien Mazarguil <adrien.mazarguil@6wind.com> |
ethdev: flatten RSS configuration in flow API
Since its inception, the rte_flow RSS action has been relying in part on external struct rte_eth_rss_conf for compatibility with the legacy RSS API. Thi
ethdev: flatten RSS configuration in flow API
Since its inception, the rte_flow RSS action has been relying in part on external struct rte_eth_rss_conf for compatibility with the legacy RSS API. This structure lacks parameters such as the hash algorithm to use, and more recently, a method to tell which layer RSS should be performed on [1].
Given struct rte_eth_rss_conf will never be flexible enough to represent a complete RSS configuration (e.g. RETA table), this patch supersedes it by extending the rte_flow RSS action directly.
A subsequent patch will add a field to use a non-default RSS hash algorithm. To that end, a field named "types" replaces the field formerly known as "rss_hf" and standing for "RSS hash functions" as it was confusing. Actual RSS hash function types are defined by enum rte_eth_hash_function.
This patch updates all PMDs and example applications accordingly.
It breaks ABI compatibility for the following public functions:
- rte_flow_copy() - rte_flow_create() - rte_flow_query() - rte_flow_validate()
[1] commit 676b605182a5 ("doc: announce ethdev API change for RSS configuration")
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
| #
cc17feb9 |
| 25-Apr-2018 |
Adrien Mazarguil <adrien.mazarguil@6wind.com> |
ethdev: alter behavior of flow API actions
This patch makes the following changes to flow rule actions:
- List order now matters, they are redefined as performed first to last instead of "all sim
ethdev: alter behavior of flow API actions
This patch makes the following changes to flow rule actions:
- List order now matters, they are redefined as performed first to last instead of "all simultaneously".
- Repeated actions are now supported (e.g. specifying QUEUE multiple times now duplicates traffic among them). Previously only the last action of any given kind was taken into account.
- No more distinction between terminating/non-terminating/meta actions. Flow rules themselves are now defined as always terminating unless a PASSTHRU action is specified.
These changes alter the behavior of flow rules in corner cases in order to prepare the flow API for actions that modify traffic contents or properties (e.g. encapsulation, compression) and for which order matter when combined.
Previously one would have to do so through multiple flow rules by combining PASSTRHU with priority levels, however this proved overly complex to implement at the PMD level, hence this simpler approach.
This breaks ABI compatibility for the following public functions:
- rte_flow_create() - rte_flow_validate()
PMDs with rte_flow support are modified accordingly:
- bnxt: no change, implementation already forbids multiple actions and does not support PASSTHRU.
- e1000: no change, same as bnxt.
- enic: modified to forbid redundant actions, no support for default drop.
- failsafe: no change needed.
- i40e: no change, implementation already forbids multiple actions.
- ixgbe: same as i40e.
- mlx4: modified to forbid multiple fate-deciding actions and drop when unspecified.
- mlx5: same as mlx4, with other redundant actions also forbidden.
- sfc: same as mlx4.
- tap: implementation already complies with the new behavior except for the default pass-through modified as a default drop.
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
| #
58a1e5a1 |
| 27-Feb-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: support DROP action in flow API
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
|
| #
096dba79 |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: avoid creation of ineffective flow rules
Despite being versatile, the hardware support for filtering has a number of special properties which must be taken into account. Namely, there is a
net/sfc: avoid creation of ineffective flow rules
Despite being versatile, the hardware support for filtering has a number of special properties which must be taken into account. Namely, there is a known set of valid filters which don't take any effect despite being accepted by the hardware.
The combinations of match flags and field values which can describe the exceptional filters are as follows: - ETHER_TYPE or ETHER_TYPE | LOC_MAC with IPv4 or IPv6 EtherType - ETHER_TYPE | IP_PROTO or ETHER_TYPE | IP_PROTO | LOC_MAC with UDP or TCP IP protocol value - The same combinations with OUTER_VID and/or INNER_VID
These exceptional filters can be expressed in terms of RTE flow rules. If the user creates such a flow rule, no traffic will hit the underlying filter, and no errors will be reported.
This patch adds a means to prevent such ineffective flow rules from being created.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
show more ...
|
| #
5448324d |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: multiply of specs with an unknown destination MAC
To filter all traffic, need to create two hardware filter specifications with both unknown unicast and unknown multicast destination MAC ad
net/sfc: multiply of specs with an unknown destination MAC
To filter all traffic, need to create two hardware filter specifications with both unknown unicast and unknown multicast destination MAC address match flags.
In terms of RTE flow API, this would require adding multiple flow rules with corresponding ETH items. In order to avoid such a complication, the patch implements a mechanism to auto-complete an underlying filter representation of a flow rule in order to create additional filter specifications featuring the missing match flags.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
show more ...
|
| #
adbf7f0e |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: multiply of specs w/o inner frame destination MAC
Knowledge of a network identifier is not sufficient to construct a workable hardware filter for encapsulated traffic. It's obligatory to sp
net/sfc: multiply of specs w/o inner frame destination MAC
Knowledge of a network identifier is not sufficient to construct a workable hardware filter for encapsulated traffic. It's obligatory to specify one of the match flags associated with inner frame destination MAC. If the address is unknown, then one needs to specify either unknown unicast or unknown multicast destination match flag.
In terms of RTE flow API, this would require adding multiple flow rules with corresponding ETH items besides the tunnel item. In order to avoid such a complication, the patch implements a mechanism to auto-complete an underlying filter representation of a flow rule in order to create additional filter specifications featuring the missing match flags.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
show more ...
|
| #
94f9db9a |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: multiply of specs with an unknown EtherType
Hardware filter specification for encapsulated traffic must contain EtherType. In terms of RTE flow API, this would require L3 item to be used in
net/sfc: multiply of specs with an unknown EtherType
Hardware filter specification for encapsulated traffic must contain EtherType. In terms of RTE flow API, this would require L3 item to be used in the flow rule. In the simplest case, if the user needs to filter encapsulated traffic without knowledge of exact EtherType, they will have to create multiple variants of the flow rule featuring all possible L3 items (IPv4, IPv6), respectively. In order to hide the gory details and avoid such a complication, this patch implements a mechanism to auto-complete the filter specifications if need be.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
show more ...
|
| #
814260e0 |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: add infrastructure to make many filters from flow
Not all flow rules can be expressed in one hardware filter, so some flow rules have to be expressed in terms of multiple hardware filters.
net/sfc: add infrastructure to make many filters from flow
Not all flow rules can be expressed in one hardware filter, so some flow rules have to be expressed in terms of multiple hardware filters. This patch provides a means to produce a filter spec template from the flow rule which then can be used to produce a set of fully elaborated specs to be inserted.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
show more ...
|
| #
10e1c305 |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: support inner frame ETH in flow API filters
Support destination MAC address match in inner frames.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <
net/sfc: support inner frame ETH in flow API filters
Support destination MAC address match in inner frames.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
show more ...
|
| #
735783c4 |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: support GENEVE in flow API filters
Exact match of virtual network identifier is supported by parser. IP protocol match are enforced to UDP. Only Ethernet protocol type is supported.
Signed
net/sfc: support GENEVE in flow API filters
Exact match of virtual network identifier is supported by parser. IP protocol match are enforced to UDP. Only Ethernet protocol type is supported.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
show more ...
|
| #
8ffe4845 |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: support NVGRE in flow API filters
Exact match of virtual subnet ID is supported by parser. IP protocol match are enforced to GRE.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Si
net/sfc: support NVGRE in flow API filters
Exact match of virtual subnet ID is supported by parser. IP protocol match are enforced to GRE.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
show more ...
|
| #
17a7787c |
| 06-Mar-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: support VXLAN in flow API filters
Exact match of VXLAN network identifier is supported by parser. IP protocol match are enforced to UDP.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs
net/sfc: support VXLAN in flow API filters
Exact match of VXLAN network identifier is supported by parser. IP protocol match are enforced to UDP.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
show more ...
|
| #
3b39cc76 |
| 26-Feb-2018 |
Zhiyong Yang <zhiyong.yang@intel.com> |
net/sfc: remove void pointer cast
Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
|
| #
ffc905f3 |
| 22-Jan-2018 |
Ferruh Yigit <ferruh.yigit@intel.com> |
ethdev: separate driver APIs
Create a rte_ethdev_driver.h file and move PMD specific APIs here. Drivers updated to include this new header file.
There is no update in header content and since ethde
ethdev: separate driver APIs
Create a rte_ethdev_driver.h file and move PMD specific APIs here. Drivers updated to include this new header file.
There is no update in header content and since ethdev.h included by ethdev_driver.h, nothing changed from driver point of view, only logically grouping of APIs. From applications point of view they can't access to driver specific APIs anymore and they shouldn't.
More PMD specific data structures still remain in ethdev.h because of inline functions in header use them. Those will be handled separately.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
show more ...
|
| #
66070f08 |
| 18-Jan-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: fix flow RSS check in error handling
RSS is a local variable with address which is never NULL.
Fixes: d77d07391d4d ("net/sfc: support flow API RSS action") Cc: stable@dpdk.org
Signed-off-
net/sfc: fix flow RSS check in error handling
RSS is a local variable with address which is never NULL.
Fixes: d77d07391d4d ("net/sfc: support flow API RSS action") Cc: stable@dpdk.org
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
| #
13195b55 |
| 18-Jan-2018 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: fix initialization of flow structure
The rte_flow is already filled in with zeros in the case of create. So memset() with zeros is needed only in validation.
Fixes: a9825ccf5bb8 ("net/sfc:
net/sfc: fix initialization of flow structure
The rte_flow is already filled in with zeros in the case of create. So memset() with zeros is needed only in validation.
Fixes: a9825ccf5bb8 ("net/sfc: support flow API filters") Cc: stable@dpdk.org
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
| #
44c0947b |
| 08-Jan-2018 |
Andrew Rybchenko <arybchenko@solarflare.com> |
net/sfc: change license to BSD-3-Clause
Change license from BSD-2-Clause to BSD-3-Clause. Bump copyright year.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Hemant Agrawal <
net/sfc: change license to BSD-3-Clause
Change license from BSD-2-Clause to BSD-3-Clause. Bump copyright year.
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
show more ...
|
| #
d77d0739 |
| 30-Aug-2017 |
Ivan Malov <ivan.malov@oktetlabs.ru> |
net/sfc: support flow API RSS action
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com> Rev
net/sfc: support flow API RSS action
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
show more ...
|
| #
ec850627 |
| 30-Aug-2017 |
Mark Spender <mspender@solarflare.com> |
net/sfc/base: define a handle to denote default RSS context
Make the existing filter-specific define more general. This is the same as MC_CMD_RSS_CONTEXT_ALLOC_OUT_RSS_CONTEXT_ID_INVALID.
Signed-of
net/sfc/base: define a handle to denote default RSS context
Make the existing filter-specific define more general. This is the same as MC_CMD_RSS_CONTEXT_ALLOC_OUT_RSS_CONTEXT_ID_INVALID.
Signed-off-by: Mark Spender <mspender@solarflare.com> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
show more ...
|
| #
84a9b481 |
| 20-Jun-2017 |
Ivan Malov <ivan.malov@oktetlabs.ru> |
net/sfc: support flow API isolated mode
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
|
| #
8e07acbb |
| 18-Apr-2017 |
Andrew Rybchenko <arybchenko@solarflare.com> |
net/sfc: remove logically dead code
Coverity issue: 1419717 Fixes: a9825ccf5bb8 ("net/sfc: support flow API filters")
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andy M
net/sfc: remove logically dead code
Coverity issue: 1419717 Fixes: a9825ccf5bb8 ("net/sfc: support flow API filters")
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andy Moreton <amoreton@solarflare.com>
show more ...
|
| #
244cfa79 |
| 16-Mar-2017 |
Andrew Rybchenko <arybchenko@solarflare.com> |
net/sfc: add missing BSD license line and update year
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
|
| #
8cb45c97 |
| 09-Mar-2017 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: add unknown unicast/multicast match in flow API
Support individual/group destination address match (unknown unicast and all-multicast correspondingly in terms of firmware).
Signed-off-by:
net/sfc: add unknown unicast/multicast match in flow API
Support individual/group destination address match (unknown unicast and all-multicast correspondingly in terms of firmware).
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com>
show more ...
|
| #
e01f84f4 |
| 09-Mar-2017 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: support UDP in flow API filters
Exact match of source and destination ports is supported by parser. IP protocol match is enforced to UDP.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlab
net/sfc: support UDP in flow API filters
Exact match of source and destination ports is supported by parser. IP protocol match is enforced to UDP.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com>
show more ...
|
| #
e2675132 |
| 09-Mar-2017 |
Roman Zhukov <roman.zhukov@oktetlabs.ru> |
net/sfc: support TCP in flow API filters
Exact match of source and destination ports is supported by parser. IP protocol match is enforced to TCP.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlab
net/sfc: support TCP in flow API filters
Exact match of source and destination ports is supported by parser. IP protocol match is enforced to TCP.
Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andrew Lee <alee@solarflare.com>
show more ...
|