datapath: Unify vport error stats handling.
[sliver-openvswitch.git] / datapath / vport-netdev.c
index 4558079..55592f9 100644 (file)
@@ -291,7 +291,7 @@ static int netdev_send(struct vport *vport, struct sk_buff *skb)
                net_warn_ratelimited("%s: dropped over-mtu packet: %d > %d\n",
                                     netdev_vport->dev->name,
                                     packet_length(skb), mtu);
-               goto error;
+               goto drop;
        }
 
        skb->dev = netdev_vport->dev;
@@ -312,19 +312,15 @@ static int netdev_send(struct vport *vport, struct sk_buff *skb)
                        nskb = skb_gso_segment(skb, features);
                        if (!nskb) {
                                if (unlikely(skb_cloned(skb) &&
-                                   pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) {
-                                       kfree_skb(skb);
-                                       return 0;
-                               }
+                                   pskb_expand_head(skb, 0, 0, GFP_ATOMIC)))
+                                       goto drop;
 
                                skb_shinfo(skb)->gso_type &= ~SKB_GSO_DODGY;
                                goto tag;
                        }
 
-                       if (IS_ERR(nskb)) {
-                               kfree_skb(skb);
-                               return 0;
-                       }
+                       if (IS_ERR(nskb))
+                               goto drop;
                        consume_skb(skb);
                        skb = nskb;
 
@@ -358,9 +354,8 @@ tag:
 
        return len;
 
-error:
+drop:
        kfree_skb(skb);
-       ovs_vport_record_error(vport, VPORT_E_TX_DROPPED);
        return 0;
 }