39b8dda7 | 25-Apr-2018 |
Adrien Mazarguil <adrien.mazarguil@6wind.com> |
ethdev: fix behavior of VF/PF in flow API
Contrary to all other pattern items, these are inconsistently documented as affecting traffic instead of simply matching its origin, without provision for t
ethdev: fix behavior of VF/PF in flow API
Contrary to all other pattern items, these are inconsistently documented as affecting traffic instead of simply matching its origin, without provision for the latter.
This commit clarifies documentation and updates PMDs since the original behavior now has to be explicitly requested using the new transfer attribute.
It breaks ABI compatibility for the following public functions:
- rte_flow_create() - rte_flow_validate()
Impacted PMDs are bnxt and i40e, for which the VF pattern item is now only supported when a transfer attribute is also present.
Fixes: b1a4b4cbc0a8 ("ethdev: introduce generic flow API")
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
show more ...
|
e58638c3 | 25-Apr-2018 |
Adrien Mazarguil <adrien.mazarguil@6wind.com> |
ethdev: fix TPID handling in flow API
TPID handling in rte_flow VLAN and E_TAG pattern item definitions is not consistent with the normal stacking order of pattern items, which is confusing to appli
ethdev: fix TPID handling in flow API
TPID handling in rte_flow VLAN and E_TAG pattern item definitions is not consistent with the normal stacking order of pattern items, which is confusing to applications.
Problem is that when followed by one of these layers, the EtherType field of the preceding layer keeps its "inner" definition, and the "outer" TPID is provided by the subsequent layer, the reverse of how a packet looks like on the wire:
Wire: [ ETH TPID = A | VLAN EtherType = B | B DATA ] rte_flow: [ ETH EtherType = B | VLAN TPID = A | B DATA ]
Worse, when QinQ is involved, the stacking order of VLAN layers is unspecified. It is unclear whether it should be reversed (innermost to outermost) as well given TPID applies to the previous layer:
Wire: [ ETH TPID = A | VLAN TPID = B | VLAN EtherType = C | C DATA ] rte_flow 1: [ ETH EtherType = C | VLAN TPID = B | VLAN TPID = A | C DATA ] rte_flow 2: [ ETH EtherType = C | VLAN TPID = A | VLAN TPID = B | C DATA ]
While specifying EtherType/TPID is hopefully rarely necessary, the stacking order in case of QinQ and the lack of documentation remain an issue.
This patch replaces TPID in the VLAN pattern item with an inner EtherType/TPID as is usually done everywhere else (e.g. struct vlan_hdr), clarifies documentation and updates all relevant code.
It breaks ABI compatibility for the following public functions:
- rte_flow_copy() - rte_flow_create() - rte_flow_query() - rte_flow_validate()
Summary of changes for PMDs that implement ETH, VLAN or E_TAG pattern items:
- bnxt: EtherType matching is supported with and without VLAN, but TPID matching is not and triggers an error.
- e1000: EtherType matching is only supported with the ETHERTYPE filter, which does not support VLAN matching, therefore no impact.
- enic: same as bnxt.
- i40e: same as bnxt with existing FDIR limitations on allowed EtherType values. The remaining filter types (VXLAN, NVGRE, QINQ) do not support EtherType matching.
- ixgbe: same as e1000, with additional minor change to rely on the new E-Tag macro definition.
- mlx4: EtherType/TPID matching is not supported, no impact.
- mlx5: same as bnxt.
- mvpp2: same as bnxt.
- sfc: same as bnxt.
- tap: same as bnxt.
Fixes: b1a4b4cbc0a8 ("ethdev: introduce generic flow API") Fixes: 99e7003831c3 ("net/ixgbe: parse L2 tunnel filter")
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
18aee286 | 25-Apr-2018 |
Adrien Mazarguil <adrien.mazarguil@6wind.com> |
ethdev: add encap level to RSS flow API action
RSS hash types (ETH_RSS_* macros defined in rte_ethdev.h) describe the protocol header fields of a packet that must be taken into account while computi
ethdev: add encap level to RSS flow API action
RSS hash types (ETH_RSS_* macros defined in rte_ethdev.h) describe the protocol header fields of a packet that must be taken into account while computing RSS.
When facing encapsulated (e.g. tunneled) packets, there is an ambiguity as to whether these should apply to inner or outer packets. Applications need the ability to tell exactly "where" RSS must be performed.
This is addressed by adding encapsulation level information to the RSS flow action. Its default value is 0 and stands for the usual unspecified behavior. Other values provide a specific encapsulation level.
Contrary to the change announced by commit 676b605182a5 ("doc: announce ethdev API change for RSS configuration"), this patch does not affect struct rte_eth_rss_conf but struct rte_flow_action_rss as the former is not used anymore by the RSS flow action. ABI impact is therefore limited to rte_flow.
This breaks ABI compatibility for the following public functions:
- rte_flow_copy() - rte_flow_create() - rte_flow_query() - rte_flow_validate()
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
929e3319 | 25-Apr-2018 |
Adrien Mazarguil <adrien.mazarguil@6wind.com> |
ethdev: add hash function to RSS flow API action
By definition, RSS involves some kind of hash algorithm, usually Toeplitz.
Until now it could not be modified on a flow rule basis and PMDs had to a
ethdev: add hash function to RSS flow API action
By definition, RSS involves some kind of hash algorithm, usually Toeplitz.
Until now it could not be modified on a flow rule basis and PMDs had to always assume RTE_ETH_HASH_FUNCTION_DEFAULT, which remains the default behavior when unspecified (0).
This breaks ABI compatibility for the following public functions:
- rte_flow_copy() - rte_flow_create() - rte_flow_query() - rte_flow_validate()
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
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 ...
|
1a77cffa | 24-Apr-2018 |
Qi Zhang <qi.z.zhang@intel.com> |
app/testpmd: enable queue ring size configure
Add command to change specific queue's ring size configure, the new value will only take effect after command that restart the device(port stop <port_id
app/testpmd: enable queue ring size configure
Add command to change specific queue's ring size configure, the new value will only take effect after command that restart the device(port stop <port_id>/port start <port_id>) or command that setup the queue(port <port_id> rxq <qid> setup) at runtime.
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
c7217b9d | 22-Jan-2018 |
Elza Mathew <elza.mathew@intel.com> |
app/testpmd: change log level at run time
Introduced a run time command to change the log level for a given log type. Added the necessary documentation.
Signed-off-by: Elza Mathew <elza.mathew@inte
app/testpmd: change log level at run time
Introduced a run time command to change the log level for a given log type. Added the necessary documentation.
Signed-off-by: Elza Mathew <elza.mathew@intel.com>
show more ...
|