net: don't reforward packets already forwarded by offload device
[deliverable/linux.git] / net / core / dev.c
index 8810b6bbebfea237e33dc952e2ed4175a107fe72..2ee15afb412d78a1a9c109717f65da9eaba05bc6 100644 (file)
@@ -3061,6 +3061,16 @@ static int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv)
        else
                skb_dst_force(skb);
 
+#ifdef CONFIG_NET_SWITCHDEV
+       /* Don't forward if offload device already forwarded */
+       if (skb->offload_fwd_mark &&
+           skb->offload_fwd_mark == dev->offload_fwd_mark) {
+               consume_skb(skb);
+               rc = NET_XMIT_SUCCESS;
+               goto out;
+       }
+#endif
+
        txq = netdev_pick_tx(dev, skb, accel_priv);
        q = rcu_dereference_bh(txq->qdisc);
 
This page took 0.027386 seconds and 5 git commands to generate.