[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1422531430-32012-1-git-send-email-makita.toshiaki@lab.ntt.co.jp>
Date: Thu, 29 Jan 2015 20:37:06 +0900
From: Toshiaki Makita <makita.toshiaki@....ntt.co.jp>
To: "David S . Miller" <davem@...emloft.net>,
Linux NICS <linux.nics@...el.com>
Cc: Toshiaki Makita <makita.toshiaki@....ntt.co.jp>,
e1000-devel@...ts.sourceforge.net, netdev@...r.kernel.org
Subject: [PATCH net 0/4] Fix checksum error when using stacked vlan
When I was testing 802.1ad, I found several drivers don't take into
account 802.1ad or multiple vlans when retrieving L3 (IP/IPv6) or
L4 (TCP/UDP) protocol for checksum offload.
It is mainly due to vlan_get_protocol(), which extracts ether type only
when it is tagged with single 802.1Q. When 802.1ad is used or there are
multiple vlans, it extracts vlan protocol and drivers cannot determine
which L3/L4 protocol is used.
Those drivers, most of which have IP_CSUM/IPV6_CSUM features, get L3/L4
header-offset by software, so it seems that their checksum offload works
with multiple vlans if we can parse protocols correctly.
(They know mac header length, and probably don't care about what is in it.)
And another thing, some of Intel's drivers seem to use skb->protocol where
vlan_get_protocol() is more suitable.
I tested that at least igb/igbvf on I350 works with this patch set.
Note:
We can hand a double tagged packet with CHECKSUM_PARTIAL to a HW driver
by creating a vlan device on a bridge device and enabling vlan_filtering
of the bridge with 802.1ad protocol.
Toshiaki Makita (4):
net: Fix vlan_get_protocol for stacked vlan
igbvf: Fix checksum error when using stacked vlan
ixgbe: Fix checksum error when using stacked vlan
ixgbevf: Fix checksum error when using stacked vlan
drivers/net/ethernet/intel/igbvf/netdev.c | 19 ++++---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 4 +-
include/linux/if_vlan.h | 60 +++++++++++++++++------
net/core/dev.c | 31 +-----------
5 files changed, 61 insertions(+), 55 deletions(-)
--
1.8.1.2
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists