David S. Miller <[EMAIL PROTECTED]> wrote:
> +                       if (pcount > 1 &&
> +                           (after(start_seq, TCP_SKB_CB(skb)->seq) ||
> +                            before(end_seq, TCP_SKB_CB(skb)->end_seq))) {
> +                               unsigned int pkt_len;
> +
> +                               if (after(start_seq, TCP_SKB_CB(skb)->seq))
> +                                       pkt_len = (start_seq -
> +                                                  TCP_SKB_CB(skb)->seq);
> +                               else
> +                                       pkt_len = (end_seq -
> +                                                  TCP_SKB_CB(skb)->seq);
> +                               if (tcp_fragment(sk, skb, pkt_len, pkt_len))
> +                                       break;
> +                               pcount = tcp_skb_pcount(skb);
> +                       }

You need to update various counters likes packets_out since you're
changing the skb_pcount of a packet that's on the retransmit queue.

I'm also unsure whether pkt_len is a good value to use for the MSS.
For instance, what if the sack acknowledged two consecutive packets?

> +
> +                       fack_count += pcount;
> 
>                        in_sack = !after(start_seq, TCP_SKB_CB(skb)->seq) &&
>                                !before(end_seq, TCP_SKB_CB(skb)->end_seq);

Maybe I'm missing something subtle here :) But it seems to me that
your patch will end up only processing the second half of the result
of tcp_fragment and skip the first bit.

I would've expected to see something like a loop restart right after
the tcp_fragment but starting at the current skb not the next one.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to