Dne 2021-10-27 11:55, Ferruh Yigit napsal:
On 10/5/2021 6:16 PM, Martin Havlik wrote:
This patchset stems from [1].
Not all PMDs allow RTE flow rule creation before device start.
Introduced capability marks the ones that allow it.
The capability is then used to fix flow rule creation for
dedicated queues in slave devices in bonding.
The introduced capa _will need to be set_ for all appropriate PMDs
in `rte_eth_dev_info->dev_capa`.
That is not pretty, but it holds the semantics of a capability
correctly, as opposed to making it a requirement to have the device
started before creating flow rules.
+Ori & Dmitry.
I think right now the method to check if device supports adding flow
rules when stopped is run 'rte_flow_create()' when device is stopped
and check return value.
Can we do similar in the bonding?
It might be a possible solution. The only thing I'm not sure about is
that different PMDs may require different flow rule specifications for
the rule to be valid, e.g. what pattern and action to set to this tryout
flow rule? We would have to make sure the rule can be created on any PMD
so failure would mean only one thing - device doesn't support creating
flow rules when stopped.
Is that possible? Is it already a thing that is used somewhere?
I am not clear if there is an error to differentiate flow create is
failed because device is stopped (or from some other reason).
And other option is, what happens if rule is always created after
device started?
That is what I originally proposed [here], but it didn't gain much
favour so the idea got lost in the discussion.
[here] https://mails.dpdk.org/archives/dev/2021-June/212210.html
[1] https://www.mail-archive.com/dev@dpdk.org/msg214840.html
Martin Havlik (2):
lib/ethdev: introduce RTE_ETH_DEV_CAPA_FLOW_CREATE_BEFORE_START
net/bonding: require started device for dedicated queues
drivers/net/bonding/rte_eth_bond_pmd.c | 25
+++++++++++++++++++------
lib/ethdev/rte_ethdev.h | 2 ++
2 files changed, 21 insertions(+), 6 deletions(-)