Adi Masputra writes:
 > Andrew Gallatin wrote:
 > 
 > > I was just playing with IPv6 on a GLDv2 driver I maintain, and noticed
 > > that transmit checksums seem to be only offloaded for IPv4, not IPv6.
 > > This is in 10U1.  
 > 
 > I forgot which S10 Update the changes went into, but I'm
 > sure it's not in Update 1.  Perhaps Update 2?  (Someone
 > from Sun can confirm this.)

Thanks.  This is handy to know.  I won't worry about
TX until 10U2.

 > > My driver claims to do GLD_CAP_CKSUM_PARTIAL.  Am I claiming the wrong
 > > thing?  What does it mean to claim GLD_CAP_CKSUM_FULL_V4?
 > > GLD_CAP_CKSUM_FULL_V6?
 > 
 > All the flags you specify will affect the way the network
 > stack generates checksum info for outbound packets.  For
 > inbound, it'll take anything it recognizes.  That means
 > the feature can be asymmetric, e.g. partial on transmit
 > and full/partial/both/none on receive.

Hmm.. This does not seem to happen, at least on 10U1.  On 10U1,
I claim to be GLD_CAP_CKSUM_PARTIAL.  For IPv6, I attach
the correct start/suff/end/csum and call it HCK_PARTIALCKSUM
and dtrace shows that it is ignored (hot stacks below).  If
I cheat and claim a 0xffff HCK_FULLCKSUM, then it is still
ignored.  Eg:

                        (void)hcksum_assoc(mp, NULL, NULL, 0, 0, 0,
                                               0xffff, HCK_FULLCKSUM, 0);


Dtrace (profiling hot stacsk) shows:

              unix`ip_ocsum+0x26
              ip`ip_cksum+0x5d
              ip`ip_rput_data_v6+0x1fdb
              ip`ip_rput_v6+0x193
              unix`putnext+0x1f1
              gld`gld_recv_tagged+0x21d
<.....>

Am I doing something wrong?

Thanks,

Drew
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to