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]