Kacheong Poon wrote: > Andrew Gallatin wrote: >> Is there any way, short of re-compiling tcp, to set SO_WROFF to zero >> (and thereby put the headers in a different mblk for TCP transmits) >> via some kind of ndd tunable or mdb procedure? > > > ndd -set /dev/tcp tcp_wroff_xtra 0
Thanks, that worked. > >> I *think* the offset left at the front of mblks may be causing >> a performance problem in my gldv3 driver, and a way to zero >> out this offset (so mp->b_rptr in payload segments is right at >> the front of dblk) would help me see if this is true. > > > What is your reason behind this guess? I'm seeing some DMAs with ridiculously small sizes which I think might be causing poor bus utilization in a scenerio where I'm debugging some performance problems. The traffic is TCP, written on a socket by uperf or netperf. For a large LSO'ed packet, I'd expect to see a DMA lengths of something like this (and do, in linux & bsd): 54 (4096-epsilon) 4096 4096 4096 4096 4096 4096 <...> 4096-epsilon What I actually see on solaris (b86, amd64), even after disabling tcp_wroff_xtra is something like this: 54 2420 252 3908 4096 188 3908 4096 188 3844 3380 It is like the allocb_cred() used by mcopyinuio() is actually trying to keep things horribly misaligned on purpose just to spite me :( Is there anyway to get things more nicely aligned, other than using sendfile (which works quite well, and produces the DMA pattern I would expect) Thanks, Drew _______________________________________________ networking-discuss mailing list [email protected]
