]> git.baikalelectronics.ru Git - kernel.git/commit
openvswitch: avoid deferred execution of recirc actions
authorLance Richardson <lrichard@redhat.com>
Tue, 13 Sep 2016 14:08:54 +0000 (10:08 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Sep 2016 00:35:52 +0000 (20:35 -0400)
commit513f34185b8a76502c868bf3c2d43a6a3c132c71
tree6c248ecad9b1fe9fa94aab9ae9ba265e9d61ee23
parent6491d17e7bb75b6f5a897e8cf7aa566091625ecf
openvswitch: avoid deferred execution of recirc actions

The ovs kernel data path currently defers the execution of all
recirc actions until stack utilization is at a minimum.
This is too limiting for some packet forwarding scenarios due to
the small size of the deferred action FIFO (10 entries). For
example, broadcast traffic sent out more than 10 ports with
recirculation results in packet drops when the deferred action
FIFO becomes full, as reported here:

     http://openvswitch.org/pipermail/dev/2016-March/067672.html

Since the current recursion depth is available (it is already tracked
by the exec_actions_level pcpu variable), we can use it to determine
whether to execute recirculation actions immediately (safe when
recursion depth is low) or defer execution until more stack space is
available.

With this change, the deferred action fifo size becomes a non-issue
for currently failing scenarios because it is no longer used when
there are three or fewer recursions through ovs_execute_actions().

Suggested-by: Pravin Shelar <pshelar@ovn.org>
Signed-off-by: Lance Richardson <lrichard@redhat.com>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/actions.c