>One solution is to modify tcp_output.c's function tcp_fragment in a way
>somewhat like this:
>
> TCP_SKB_CB(skb)->end_seq -= nsize;
> skb_trim(skb, skb->len - nsize);
>
> /* Fragmenting a packet with a FIN? Don't include the FIN's
> * segment in the first packet!
> */
> if (flags & TCPCB_FLAG_FIN) {
> TCP_SKB_CB(skb)->end_seq--;
> }
I think tcp_fragment is just doing the right thing and this patch looks
bogus to me. But I could be wrong (as 10 minutes ago ;).
And looking at your previous report it looks like flag & TCPCB_FLAG_FIN
would never been true because from your previous report it seems that the
loop starts before the first FIN has a way to be on the wire.
>That corrects this particular problem, but I'm not sure if there are
>any other implications.
So you mean that your change fixed the stall for you? Did you tried it?
Andrea Arcangeli
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/