Thread (47 messages) 47 messages, 5 authors, 2008-12-26

Re: [PATCH] tcp: make urg+gso work for real this time

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2008-12-17 10:13:28

Ilpo J??rvinen [off-list ref] wrote:
This is certainly nice and possible but as mention earlier, the harder 
problem is that the urg_ptr is only 16-bits so there will be still be 
problem if the urgent seq-64k mark is within a super-skb as tail segments 
need urg while the head ones won't. I think we would need out-of-band 
means to communicate the extra bit (17th) from tcp if we want to solve 
that one. It would be rather easy to change TCP to only do splitting for 
that particular skb though and keep everything else intact.
I think you've got it the wrong way around.  The test for setting
urg_ptr is:

        if (unlikely(tcp_urg_mode(tp) &&
                     between(tp->snd_up, tcb->seq + 1, tcb->seq + 0xFFFF))) {

So if this is true for the super-packet, then by definition it is
also true for the first packet.  In fact, it will be true for the
first n packets where

	tcb->seq + n * mss + 1 <= tp->snd_up

The only time when this will fall apart is if we had super-packets
bigger than 64K.  Fortunately or unfortunately that is a long way
off.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help