[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] netfront/back: do not mark packets of length < MSS as GSO
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1231859874 0 # Node ID 107e10e0e07c3984630b8d3eaecb5bb957be387a # Parent 28acedb66302a29c9ef14a3084b4736d3fc192f1 netfront/back: do not mark packets of length < MSS as GSO Linux assumes that skbs marked for GSO are longer than MSS. In particular tcp_tso_segment assumes that skb_segment will return a chain of at least 2 skbs. Both netfront and back should therefor not pass such a packet up the stack. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- drivers/xen/netback/netback.c | 5 +++++ drivers/xen/netfront/netfront.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff -r 28acedb66302 -r 107e10e0e07c drivers/xen/netback/netback.c --- a/drivers/xen/netback/netback.c Wed Jan 07 12:21:54 2009 +0900 +++ b/drivers/xen/netback/netback.c Tue Jan 13 15:17:54 2009 +0000 @@ -1345,6 +1345,11 @@ static void net_tx_action(unsigned long skb_shinfo(skb)->frags[0].page = (void *)~0UL; } + if (skb->data_len < skb_shinfo(skb)->gso_size) { + skb_shinfo(skb)->gso_size = 0; + skb_shinfo(skb)->gso_type = 0; + } + __skb_queue_tail(&tx_queue, skb); pending_cons++; diff -r 28acedb66302 -r 107e10e0e07c drivers/xen/netfront/netfront.c --- a/drivers/xen/netfront/netfront.c Wed Jan 07 12:21:54 2009 +0900 +++ b/drivers/xen/netfront/netfront.c Tue Jan 13 15:17:54 2009 +0000 @@ -1439,6 +1439,14 @@ err: np->stats.rx_packets++; np->stats.rx_bytes += skb->len; +#if HAVE_TSO + if (skb->data_len < skb_shinfo(skb)->gso_size) { + skb_shinfo(skb)->gso_size = 0; +#if HAVE_GSO + skb_shinfo(skb)->gso_type = 0; +#endif + } +#endif __skb_queue_tail(&rxq, skb); np->rx.rsp_cons = ++i; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |