From 3b5fb03e6e1e18f7c2454df0866a50e6d72008e2 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 22 Apr 2010 01:02:07 -0700 Subject: [PATCH] --- yaml --- r: 194322 b: refs/heads/master c: 9ccb8975940c4ee51161152e37058e3d9e06c62f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/core/dev.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index db3c8d9d70c9..901b10455e3f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e326bed2f47d0365da5a8faaf8ee93ed2d86325b +refs/heads/master: 9ccb8975940c4ee51161152e37058e3d9e06c62f diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index 3ba774b6091c..a4a7c36917d1 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -1902,13 +1902,6 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, if (!list_empty(&ptype_all)) dev_queue_xmit_nit(skb, dev); - if (netif_needs_gso(dev, skb)) { - if (unlikely(dev_gso_segment(skb))) - goto out_kfree_skb; - if (skb->next) - goto gso; - } - /* * If device doesnt need skb->dst, release it right now while * its hot in this cpu cache @@ -1917,6 +1910,14 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, skb_dst_drop(skb); skb_orphan_try(skb); + + if (netif_needs_gso(dev, skb)) { + if (unlikely(dev_gso_segment(skb))) + goto out_kfree_skb; + if (skb->next) + goto gso; + } + rc = ops->ndo_start_xmit(skb, dev); if (rc == NETDEV_TX_OK) txq_trans_update(txq);