Upstream OVS is not going to have patch vports. So there is no
need to have special loop-detection in OVS.

Signed-off-by: Pravin B Shelar <[email protected]>
---
 net/openvswitch/actions.c |   45 +--------------------------------------------
 1 files changed, 1 insertions(+), 44 deletions(-)

diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c
index 8eaaea9..f10aaf8 100644
--- a/net/openvswitch/actions.c
+++ b/net/openvswitch/actions.c
@@ -406,54 +406,11 @@ static int do_execute_actions(struct datapath *dp, struct 
sk_buff *skb,
        return 0;
 }
 
-/* We limit the number of times that we pass into execute_actions()
- * to avoid blowing out the stack in the event that we have a loop. */
-#define MAX_LOOPS 5
-
-struct loop_counter {
-       u8 count;               /* Count. */
-       bool looping;           /* Loop detected? */
-};
-
-static DEFINE_PER_CPU(struct loop_counter, loop_counters);
-
-static int loop_suppress(struct datapath *dp, struct sw_flow_actions *actions)
-{
-       if (net_ratelimit())
-               pr_warn("%s: flow looped %d times, dropping\n",
-                               dp_name(dp), MAX_LOOPS);
-       actions->actions_len = 0;
-       return -ELOOP;
-}
-
 /* Execute a list of actions against 'skb'. */
 int execute_actions(struct datapath *dp, struct sk_buff *skb)
 {
        struct sw_flow_actions *acts = 
rcu_dereference(OVS_CB(skb)->flow->sf_acts);
-       struct loop_counter *loop;
-       int error;
-
-       /* Check whether we've looped too much. */
-       loop = &__get_cpu_var(loop_counters);
-       if (unlikely(++loop->count > MAX_LOOPS))
-               loop->looping = true;
-       if (unlikely(loop->looping)) {
-               error = loop_suppress(dp, acts);
-               kfree_skb(skb);
-               goto out_loop;
-       }
 
-       error = do_execute_actions(dp, skb, acts->actions,
+       return do_execute_actions(dp, skb, acts->actions,
                                         acts->actions_len, false);
-
-       /* Check whether sub-actions looped too much. */
-       if (unlikely(loop->looping))
-               error = loop_suppress(dp, acts);
-
-out_loop:
-       /* Decrement loop counter. */
-       if (!--loop->count)
-               loop->looping = false;
-
-       return error;
 }
-- 
1.7.1

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to