summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller2015-08-03 23:24:50 +0200
committerDavid S. Miller2015-08-03 23:24:50 +0200
commit0edc535e96621e41e2d3e7c240e68524d1968807 (patch)
treebfe9af6d3a54042fd56324e88a042f23ec881ca3
parentvirtio_net: add gro capability (diff)
parenttuntap: Don't segment multiple tagged packets on tap device (diff)
downloadkernel-qcow2-linux-0edc535e96621e41e2d3e7c240e68524d1968807.tar.gz
kernel-qcow2-linux-0edc535e96621e41e2d3e7c240e68524d1968807.tar.xz
kernel-qcow2-linux-0edc535e96621e41e2d3e7c240e68524d1968807.zip
Merge branch 'stacked-vlan-TSO'
Toshiaki Makita says: ==================== Stacked vlan TSO for virtual devices Basically virtual devices do not need to segment double tagged packets. This patch set adds TSO feature for double tagged packets to several virtual devices, which can be realized by simply setting .ndo_features_check to passthru_features_check. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/macvlan.c1
-rw-r--r--drivers/net/tun.c1
-rw-r--r--drivers/net/veth.c1
-rw-r--r--net/bridge/br_device.c1
4 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 9f59f17dc317..47da43595ac2 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -1047,6 +1047,7 @@ static const struct net_device_ops macvlan_netdev_ops = {
.ndo_netpoll_cleanup = macvlan_dev_netpoll_cleanup,
#endif
.ndo_get_iflink = macvlan_dev_get_iflink,
+ .ndo_features_check = passthru_features_check,
};
void macvlan_common_setup(struct net_device *dev)
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 06a039414628..976aa9704297 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -961,6 +961,7 @@ static const struct net_device_ops tap_netdev_ops = {
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = tun_poll_controller,
#endif
+ .ndo_features_check = passthru_features_check,
};
static void tun_flow_init(struct tun_struct *tun)
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index c8186ffda1a3..343592c4315f 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -290,6 +290,7 @@ static const struct net_device_ops veth_netdev_ops = {
.ndo_poll_controller = veth_poll_controller,
#endif
.ndo_get_iflink = veth_get_iflink,
+ .ndo_features_check = passthru_features_check,
};
#define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index 4ff77a16956c..0aa8f5cf46a1 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -339,6 +339,7 @@ static const struct net_device_ops br_netdev_ops = {
.ndo_bridge_getlink = br_getlink,
.ndo_bridge_setlink = br_setlink,
.ndo_bridge_dellink = br_dellink,
+ .ndo_features_check = passthru_features_check,
};
static void br_dev_free(struct net_device *dev)