Message ID | 26dfeea6053e4dce108037ecee0fec25b1182937.1292347522.git.mirq-linux@rere.qmqm.pl |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Michał Mirosław <mirq-linux@rere.qmqm.pl> Date: Tue, 14 Dec 2010 23:35:13 +0100 (CET) > We can't change ip_summed from CHECKSUM_PARTIAL to CHECKSUM_NONE > or CHECKSUM_UNNECESSARY because checksum in packet's headers is > not valid and will cause invalid checksum when frame is forwarded. > > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Applied to net-2.6, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index 0bbc0c3..cca6a71 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -166,7 +166,9 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev) if (!(rcv->flags & IFF_UP)) goto tx_drop; - if (dev->features & NETIF_F_NO_CSUM) + /* don't change ip_summed == CHECKSUM_PARTIAL, as that + will cause bad checksum on forwarded packets */ + if (skb->ip_summed == CHECKSUM_NONE) skb->ip_summed = rcv_priv->ip_summed; length = skb->len + ETH_HLEN;
We can't change ip_summed from CHECKSUM_PARTIAL to CHECKSUM_NONE or CHECKSUM_UNNECESSARY because checksum in packet's headers is not valid and will cause invalid checksum when frame is forwarded. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> --- drivers/net/veth.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)