* [PATCH]NET: Fix GSO problems in dev_hard_start_xmit()
@ 2006-06-25 22:38 Michael Chan
2006-06-25 23:36 ` Herbert Xu
0 siblings, 1 reply; 3+ messages in thread
From: Michael Chan @ 2006-06-25 22:38 UTC (permalink / raw)
To: herbert, davem; +Cc: netdev
Fix 2 problems in dev_hard_start_xmit():
1. nskb->next needs to link back to skb->next if hard_start_xmit()
returns non-zero.
2. Since the total number of GSO fragments may exceed MAX_SKB_FRAGS + 1,
it needs to stop transmitting if the netif_queue is stopped.
Signed-off-by: Michael Chan <mchan@broadcom.com>
diff --git a/net/core/dev.c b/net/core/dev.c
index d293e0f..84e06ae 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1325,9 +1325,12 @@ int dev_hard_start_xmit(struct sk_buff *
nskb->next = NULL;
rc = dev->hard_start_xmit(nskb, dev);
if (unlikely(rc)) {
+ nskb->next = skb->next;
skb->next = nskb;
return rc;
}
+ if (unlikely(netif_queue_stopped(dev) && skb->next))
+ return NETDEV_TX_BUSY;
} while (skb->next);
skb->destructor = DEV_GSO_CB(skb)->destructor;
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH]NET: Fix GSO problems in dev_hard_start_xmit()
2006-06-25 22:38 [PATCH]NET: Fix GSO problems in dev_hard_start_xmit() Michael Chan
@ 2006-06-25 23:36 ` Herbert Xu
2006-06-26 6:57 ` David Miller
0 siblings, 1 reply; 3+ messages in thread
From: Herbert Xu @ 2006-06-25 23:36 UTC (permalink / raw)
To: Michael Chan; +Cc: davem, netdev
On Sun, Jun 25, 2006 at 03:38:05PM -0700, Michael Chan wrote:
> Fix 2 problems in dev_hard_start_xmit():
>
> 1. nskb->next needs to link back to skb->next if hard_start_xmit()
> returns non-zero.
>
> 2. Since the total number of GSO fragments may exceed MAX_SKB_FRAGS + 1,
> it needs to stop transmitting if the netif_queue is stopped.
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
Good catch.
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH]NET: Fix GSO problems in dev_hard_start_xmit()
2006-06-25 23:36 ` Herbert Xu
@ 2006-06-26 6:57 ` David Miller
0 siblings, 0 replies; 3+ messages in thread
From: David Miller @ 2006-06-26 6:57 UTC (permalink / raw)
To: herbert; +Cc: mchan, netdev
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Mon, 26 Jun 2006 09:36:02 +1000
> On Sun, Jun 25, 2006 at 03:38:05PM -0700, Michael Chan wrote:
> > Fix 2 problems in dev_hard_start_xmit():
> >
> > 1. nskb->next needs to link back to skb->next if hard_start_xmit()
> > returns non-zero.
> >
> > 2. Since the total number of GSO fragments may exceed MAX_SKB_FRAGS + 1,
> > it needs to stop transmitting if the netif_queue is stopped.
> >
> > Signed-off-by: Michael Chan <mchan@broadcom.com>
>
> Good catch.
>
> Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Applied, thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-06-26 6:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-25 22:38 [PATCH]NET: Fix GSO problems in dev_hard_start_xmit() Michael Chan
2006-06-25 23:36 ` Herbert Xu
2006-06-26 6:57 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).