cvs commit: src/sys/dev/msk if_msk.c

Pyun YongHyeon pyunyh at gmail.com
Tue Jun 19 01:52:12 UTC 2007


On Mon, Jun 18, 2007 at 02:04:03PM +0100, Tom Judge wrote:
 > Andre Oppermann wrote:
 > >Pyun YongHyeon wrote:
 > >>On Mon, Jun 11, 2007 at 09:38:10AM +0200, Andre Oppermann wrote:
 > >> > Pyun YongHyeon wrote:
 > >> > >yongari     2007-06-11 01:55:09 UTC
 > >> > >
 > >> > >  FreeBSD src repository
 > >> > >
 > >> > >  Modified files:
 > >> > >    sys/dev/msk          if_msk.c  > >  Log:
 > >> > >  Disable automatic IP ID increment. Due to a hardware bug the 
 > >>automatic
 > >> > >  IP ID increment in TSO case generated corrupted IP packets.
 > >> > >  This change brings back TSO capability.
 > >> > >   > >  Revision  Changes    Path
 > >> > >  1.16      +0 -15     src/sys/dev/msk/if_msk.c
 > >> >  > Please add check for the DF (Don't fragment) bit in the IP header.
 > >> > Otherwise we may run into trouble when fragmentation happens along
 > >> > the path.  We almost always set DF on TCP connections. If it is not
 > >> > set please return EMSGSIZE which will cause TSO to be turned off.
 > >> >
 > >>Is there any way to return EMSGSIZE to upper layer?
 > >>if_start has return type void.
 > >>Or just dropping the packet if DF bit was not set is enough?
 > >
 > >Dropping the packet is not enough.  I forgot the IF queue which
 > >separates the downpath from the encap function...  Don't know
 > >how you can pass up the error.  Robert wanted to change the drivers
 > >queuing model, that would make it possible.  CC'ed.
 > >
 > 
 > Sorry for jumping in here, but could you not pass the message back up by 
 > dropping the packet and sending a ICMP error back up the stack with the 
 > Error code set for "Fragmentation needed and DF set" and set the MTU 
 > hint to the current interface MTU?  Or is this a stupid idea?
 > 

I'm unsure but it wouldn't work as TSO is an interface capability.
The ICMP error may restart PMTU discovery but it wouldn't disable
TSO for the connection, I guess. The only way that disables TSO for
the connection would be returning EMSGSIZE to TCP stack. The TCP
stack would disable TSO and retry to MTU discovery if it get an
EMSGSIZE error.

 > Tom

-- 
Regards,
Pyun YongHyeon


More information about the cvs-src mailing list