tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: [yamt-lazymbuf] src/sys/arch/amd64/include



> On Wed, Jan 23, 2008 at 11:09:23PM +0900, YAMAMOTO Takashi wrote:
> > in_cksum is often used for the header portion of a chain.
> > ie. not the whole chain.
> 
> Current usage:
> bridge(4): IP header checksum
> ip_fastforward: IP header checksum
> igmp_input: full packet, should be switched to the generalised version later.
> igmp_sendpkt: partial packet, should be switched as well
> tcp4_segment: header only
> carp: full packet (one exception, but that should be fixed)
> icmp_input: header only
> icmp_send: full
> ip_input: IP header checksum
> ip_mroute: IP header checksum (can be optimised, I think), full in some
> other cases
> ip_output: IP header sum
> tcp_respond: full packet
> udp6_output: full packet
> ipsec4_encapsulate: header
> 
> in4_cksum and in6_cksum seem to be used almost exclusively with the full
> header. I haven't checked which of the above are in the input path and
> would benefit from lazy mbuf chains. I don't think those in the output
> path normally do. So what again was the justification for the added
> complexity?
> 
> Joerg

consider the case where tcp checksumming is h/w offloaded but
ip header checksumming is not.
in that case, ip_output/in_cksum needs to map the ipv4 header portion of
the header (which is unlikely being lazy anyway) but it isn't desirable to
map the entire chain.

are you suggesting to sprinkle manual map calls instead of
"automatic" one in mtod (and its equivalent in asm code)?

YAMAMOTO Takashi



Home | Main Index | Thread Index | Old Index