On Mon, May 19, 2014 at 1:44 PM, Eric Dumazet <eric.duma...@gmail.com> wrote: > > On Mon, 2014-05-19 at 13:24 -0400, Michael Spang wrote: > > Changing ip_summed from CHECKSUM_PARTIAL to CHECKSUM_UNNECESSARY > > will result in an incorrect checksum if the packet is sent off the box. > > > > Cc: sta...@vger.kernel.org > > Signed-off-by: Michael Spang <sp...@chromium.org> > > --- > > drivers/net/macvlan.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c > > index 753a8c2..806b56a 100644 > > --- a/drivers/net/macvlan.c > > +++ b/drivers/net/macvlan.c > > @@ -267,7 +267,9 @@ static int macvlan_queue_xmit(struct sk_buff *skb, > > struct net_device *dev) > > > > if (vlan->mode == MACVLAN_MODE_BRIDGE) { > > const struct ethhdr *eth = (void *)skb->data; > > - skb->ip_summed = CHECKSUM_UNNECESSARY; > > + > > + if (skb->ip_summed == CHECKSUM_NONE) > > + skb->ip_summed = CHECKSUM_UNNECESSARY; > > > > /* send to other bridge ports directly */ > > if (is_multicast_ether_addr(eth->h_dest)) { > > Hi Michael > > Any idea why commit 12a2856b604476c27d85a5f9a57ae1661fc46019 > added this stuff then ? >
I think that patch is wrong. It's not OK to change CHECKSUM_PARTIAL to CHECKSUM_UNNECESSARY. This code is changing the meaning of the ip_summed field from "the checksum is incomplete" to "the checksum is complete and correct". So if the packet bounces around the network stack and eventually gets sent out a physical NIC, the checksum was never completed anywhere and the packet is dropped by the receiving box. Look at 0b7967503dc97864f283a3a06fbe23e041876138 for a patch that fixes exactly this problem on veth devices. > > You should give more infos of your use case. > > CC Daniel Lezcano <daniel.lezc...@free.fr> > > I removed stable@ , as stable submissions are not done like that. > Perhaps I've misunderstood something, but this suggestion is right from https://www.kernel.org/doc/Documentation/stable_kernel_rules.txt - To have the patch automatically included in the stable tree, add the tag Cc: sta...@vger.kernel.org in the sign-off area. Once the patch is merged it will be applied to the stable tree without anything else needing to be done by the author or subsystem maintainer. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/