Bug 9089
Summary: | sky2 do not write UDP checksum after reinitialisation | ||
---|---|---|---|
Product: | Drivers | Reporter: | Karsten Keil (kernel) |
Component: | Network | Assignee: | Stephen Hemminger (stephen) |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | stephen |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.23 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: | Restore transmit state on resume |
Description
Karsten Keil
2007-09-27 09:07:52 UTC
Digging a little bit deeper into this issue, I found out that if I change sky2_xmit_frame the tx offload code to execute the following code always (remove the if) the issue is not longer reproducible. if (tcpsum != sky2->tx_tcpsum) { sky2->tx_tcpsum = tcpsum; le = get_tx_le(sky2); le->addr = cpu_to_le32(tcpsum); le->length = 0; /* initial checksum value */ le->ctrl = 1; /* one packet */ le->opcode = OP_TCPLISW | HW_OWNER; } So it seems to me, that after down/up the interface it is always needed to do this. Since I do not have too much insight into the sky2 HW and driver, I do not know how to handle this properly. Created attachment 12962 [details]
Restore transmit state on resume
Patch against 2.6.23-rc8, but should work for older kernels as well
|