linux/net/openvswitch
Lance Richardson 2679d04041 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>
2016-09-15 20:35:52 -04:00
..
actions.c openvswitch: avoid deferred execution of recirc actions 2016-09-15 20:35:52 -04:00
conntrack.c openvswitch: Free tmpl with tmpl_free. 2016-09-04 11:38:10 -07:00
conntrack.h openvswitch: Interface with NAT. 2016-03-14 23:47:29 +01:00
datapath.c openvswitch: use alias for genetlink family names 2016-09-10 21:42:46 -07:00
datapath.h openvswitch: Add packet truncation support. 2016-06-10 17:58:03 -07:00
dp_notify.c openvswitch: fix hangup on vxlan/gre/geneve device deletion 2015-12-03 14:29:25 -05:00
flow_netlink.c openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink attributes 2016-09-08 17:10:28 -07:00
flow_netlink.h openvswitch: Fix egress tunnel info. 2015-10-22 19:39:25 -07:00
flow_table.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-10-20 06:08:27 -07:00
flow_table.h openvswitch: Zero flows on allocation. 2015-09-22 17:33:41 -07:00
flow.c openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink attributes 2016-09-08 17:10:28 -07:00
flow.h openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink attributes 2016-09-08 17:10:28 -07:00
Kconfig openvswitch: call only into reachable nf-nat code 2016-03-28 17:58:59 +02:00
Makefile openvswitch: Remove conntrack Kconfig option. 2015-09-06 23:48:33 -07:00
vport-geneve.c openvswitch: do not ignore netdev errors when creating tunnel vports 2016-08-10 23:13:23 -07:00
vport-gre.c openvswitch: do not ignore netdev errors when creating tunnel vports 2016-08-10 23:13:23 -07:00
vport-internal_dev.c OVS: Ignore negative headroom value 2016-08-06 00:06:11 -04:00
vport-internal_dev.h openvswitch: introduce rtnl ops stub 2014-07-01 14:40:17 -07:00
vport-netdev.c net: use skb_postpush_rcsum instead of own implementations 2016-02-19 23:43:10 -05:00
vport-netdev.h openvswitch: Use dev_queue_xmit for vport send. 2015-10-22 06:46:16 -07:00
vport-vxlan.c openvswitch: do not ignore netdev errors when creating tunnel vports 2016-08-10 23:13:23 -07:00
vport.c openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink attributes 2016-09-08 17:10:28 -07:00
vport.h net: use skb_postpush_rcsum instead of own implementations 2016-02-19 23:43:10 -05:00