Re: [patch net-next 2/4] net: sched: move the can_offload check from binding phase to rule insertion phase

Jiri Pirko
2017-10-26T15:40:21Z

Thu, Oct 26, 2017 at 05:29:08PM CEST, alexander.duyck@gmail.com wrote:
>On Wed, Oct 25, 2017 at 11:07 PM, Jiri Pirko <jiri@resnulli.us> wrote:
>> Thu, Oct 26, 2017 at 03:01:31AM CEST, davem@davemloft.net wrote:
>>>From: Jiri Pirko <jiri@resnulli.us>
>>>Date: Wed, 25 Oct 2017 16:34:58 +0200
>>>
>>>> From: Jiri Pirko <jiri@mellanox.com>
>>>>
>>>> This restores the original behaviour before the block callbacks were
>>>> introduced. Allow the drivers to do binding of block always, no matter
>>>> if the NETIF_F_HW_TC feature is on or off. Move the check to the block
>>>> callback which is called for rule insertion.
>>>>
>>>> Reported-by: Alexander Duyck <alexander.duyck@gmail.com>
>>>> Signed-off-by: Jiri Pirko <jiri@mellanox.com>
>>>
>>>I agree with Jakub's feedback, if every callback has to make this check
>>>why not just do it in the core where the callback is invoked?
>>
>> We cannot add it to the core. The idea of the block callbacks is to get
>> independent of the "dev". For the block sharing, driver registers one
>> block callback for multiple devs. Core has no access to "dev".
>
>If the plan is to have one block represent multiple devices are we
>then looking at the offload flag potentially being tied together for
>all those devices then at some point in the future? I assume that
>means that this workaround will have to eventually go away for some of
>the Mellanox devices since it wouldn't make sense to have a netdev
>pointer if the context block supports multiple netdevices. Do I have
>that right? If so, is the idea to just assume the offload is always-on

You do.

>(fixed) or do you have some other idea in mind for how to deal with a
>feature that is controlled globally for the device versus a port?

I plan to check the offload feature flag for all ports that share the
block and allow the offload only in case all are on.
Also, there would be forbidden to turn the offload flag off in case
there is at least one offloaded rule for the block. This is how mlx5
does it.