mbox series

[0/2] net/bonding: fix dedicated queues flow rule issue

Message ID 20211005171613.2879-1-xhavli56@stud.fit.vutbr.cz (mailing list archive)
Headers
Series net/bonding: fix dedicated queues flow rule issue |

Message

Havlík Martin Oct. 5, 2021, 5:16 p.m. UTC
  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.

[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(-)
  

Comments

Ferruh Yigit Oct. 27, 2021, 9:55 a.m. UTC | #1
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?

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?

> [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(-)
>
  
Havlík Martin Nov. 7, 2021, 11:03 a.m. UTC | #2
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(-)
>>