Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
datapath: avoid deferred execution of recirc actions
Port upstream fix to datapath module. The only notable difference between this patch and the upstream version is that the value of ovs_recursion_limit (5 for upstream kernel, 4 for out-of-tree module) is maintained in this patch. Upstream commit: commit f43e6dfb056b58628e43179d8f6b59eae417754d Author: Lance Richardson <[email protected]> Date: Mon Sep 12 17:07:23 2016 -0400 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 <[email protected]> Signed-off-by: Lance Richardson <[email protected]> Acked-by: Pravin B Shelar <[email protected]>
- Loading branch information