|
|
David Young wrote:
On Thu, Sep 06, 2007 at 05:43:00PM +0000, John Klos wrote:
> Any suggestions?
Taking a guess, maybe wm h/w sets received packets' embedded checksums
to 0 (or anything not equal to the actual checksum) when h/w assist
is active? Maybe wm h/w expects for an embedded checksum to be 0 in
transmitted packets, also? I have seen wm(4) lose in a bridge until I
turned off h/w checksum; it may have been for that very reason.
And I see this comment in ip_output(),
/*
* Always initialize the sum to 0! Some HW assisted
* checksumming requires this.
*/
ip->ip_sum = 0;
Correct. For some NICs, the hardware checksum is computed by specifying
a start and end offset: if ip_sum isn't 0, the start is the beginning of
the IP header
and the end is, well, at the end, the checksum placed in ip_sum will be
wrong.
Darren
|
|