]> git.proxmox.com Git - ovs.git/commitdiff
datapath: Print error when ovs_execute_actions() fails
authorYifeng Sun <pkusunyifeng@gmail.com>
Mon, 12 Oct 2020 20:24:51 +0000 (13:24 -0700)
committerIlya Maximets <i.maximets@ovn.org>
Sat, 17 Oct 2020 15:32:06 +0000 (17:32 +0200)
Upstream commit:
    commit aa733660dbd8d9192b8c528ae0f4b84f3fef74e4
    Author: Yifeng Sun <pkusunyifeng@gmail.com>
    Date:   Sun Aug 4 19:56:11 2019 -0700

    openvswitch: Print error when ovs_execute_actions() fails

    Currently in function ovs_dp_process_packet(), return values of
    ovs_execute_actions() are silently discarded. This patch prints out
    an debug message when error happens so as to provide helpful hints
    for debugging.
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Reviewed-by: Yifeng Sun <pkusunyifeng@gmail.com>
Acked-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Greg Rose <gvrose8192@gmail.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
datapath/datapath.c

index 2879f24ef3fc4548b2829201f7d8331808b7d0aa..c8c21d774aca1a99306729937b520c8c6740464d 100644 (file)
@@ -240,6 +240,7 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key)
        struct dp_stats_percpu *stats;
        u64 *stats_counter;
        u32 n_mask_hit;
+       int error;
 
        stats = this_cpu_ptr(dp->stats_percpu);
 
@@ -248,7 +249,6 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key)
                                         &n_mask_hit);
        if (unlikely(!flow)) {
                struct dp_upcall_info upcall;
-               int error;
 
                memset(&upcall, 0, sizeof(upcall));
                upcall.cmd = OVS_PACKET_CMD_MISS;
@@ -265,7 +265,10 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key)
 
        ovs_flow_stats_update(flow, key->tp.flags, skb);
        sf_acts = rcu_dereference(flow->sf_acts);
-       ovs_execute_actions(dp, skb, sf_acts, key);
+       error = ovs_execute_actions(dp, skb, sf_acts, key);
+       if (unlikely(error))
+               net_dbg_ratelimited("ovs: action execution error on datapath %s: %d\n",
+                                                       ovs_dp_name(dp), error);
 
        stats_counter = &stats->n_hit;