On Fri, Mar 25, 2016 at 9:10 AM, Ben Greear <gree...@candelatech.com> wrote: > I am suspicious that this will break at least some drivers. I grepped > around > for ip_summed, and found this, for instance: > > davicom/dm9000.c > > /* The DM9000 is not smart enough to leave fragmented packets alone. > */ > if (dm->ip_summed != ip_summed) { > if (ip_summed == CHECKSUM_NONE) > iow(dm, DM9000_TCCR, 0); > else > iow(dm, DM9000_TCCR, TCCR_IP | TCCR_UDP | TCCR_TCP); > dm->ip_summed = ip_summed; > } > > > It is taking action based on ip_summed == CHECKSUM_NONE, and your change > will probably break that. > > I would suggest that we try to make any fix specific only to veth, > at least for now. A tree-wide audit of drivers is probably required > to safely make the kind of change you propose above. > > So, unless you can explain why your change is safe, then I do not plan > to test it.
I just blindly trust the comments there: * CHECKSUM_UNNECESSARY: * * This has the same meaning on as CHECKSUM_NONE for checksum offload on * output. Let's Cc Tom who wrote this comment. On the other hand, hyperv got this correctly: if ((skb->ip_summed == CHECKSUM_NONE) || (skb->ip_summed == CHECKSUM_UNNECESSARY)) goto do_send; So I believe dm9000 needs to fix. Thanks.