On 2021/3/16 4:00, Jakub Kicinski wrote:
On Mon, 15 Mar 2021 20:23:47 +0800 Huazhong Tan wrote:
From: Jian Shen <shenjia...@huawei.com>
Currently, there are 3 flow director work modes in HNS3 driver,
include EP(ethtool), tc flower and aRFS. The flow director rules
are configured synchronously and need holding spin lock. With this
limitation, all the commands with firmware are also needed to use
spin lock.
To eliminate the limitation, configure flow director rules
asynchronously. The rules are still kept in the fd_rule_list
with below states.
TO_ADD: the rule is waiting to add to hardware
TO_DEL: the rule is waiting to remove from hardware
ADDING: the rule is adding to hardware
ACTIVE: the rule is already added in hardware
When receive a new request to add or delete flow director rule,
check whether the rule location is existent, update the rule
content and state, and request to schedule the service task to
finish the configuration.
Signed-off-by: Jian Shen <shenjia...@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazh...@huawei.com>
How is the application supposed to know if the ethtool rule was already
installed or installation is still pending?
Yes, it's unable for the application to know whether pending or installed.
The primitive motivation is to move out the aRFS rule configuration from
IO path. To keep consistent, so does the ethtool way. We thought
of it before, considered that the time window between the two state is
very small.
How about keep aRFS asynchronously, and the ethtool synchronously?
With the firmware bloat on all devices this sort of async mechanism
seems to be popping up in more and more drivers but IMHO we shouldn't
weaken the semantics without amending the kernel <> user space API.
.