提交 361ff8a6 编写于 作者: J Jesse Gross 提交者: David S. Miller

bridge: Add support for TX vlan offload.

If some of the underlying devices support it, enable vlan offload on
transmit for bridge devices.  This allows senders to take advantage of the
hardware support, similar to other forms of acceleration.
Signed-off-by: NJesse Gross <jesse@nicira.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 d5dbda23
...@@ -212,6 +212,11 @@ static int br_set_tx_csum(struct net_device *dev, u32 data) ...@@ -212,6 +212,11 @@ static int br_set_tx_csum(struct net_device *dev, u32 data)
return 0; return 0;
} }
static int br_set_flags(struct net_device *netdev, u32 data)
{
return ethtool_op_set_flags(netdev, data, ETH_FLAG_TXVLAN);
}
#ifdef CONFIG_NET_POLL_CONTROLLER #ifdef CONFIG_NET_POLL_CONTROLLER
static void br_poll_controller(struct net_device *br_dev) static void br_poll_controller(struct net_device *br_dev)
{ {
...@@ -304,6 +309,7 @@ static const struct ethtool_ops br_ethtool_ops = { ...@@ -304,6 +309,7 @@ static const struct ethtool_ops br_ethtool_ops = {
.get_ufo = ethtool_op_get_ufo, .get_ufo = ethtool_op_get_ufo,
.set_ufo = ethtool_op_set_ufo, .set_ufo = ethtool_op_set_ufo,
.get_flags = ethtool_op_get_flags, .get_flags = ethtool_op_get_flags,
.set_flags = br_set_flags,
}; };
static const struct net_device_ops br_netdev_ops = { static const struct net_device_ops br_netdev_ops = {
...@@ -343,5 +349,5 @@ void br_dev_setup(struct net_device *dev) ...@@ -343,5 +349,5 @@ void br_dev_setup(struct net_device *dev)
dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA | dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA |
NETIF_F_GSO_MASK | NETIF_F_NO_CSUM | NETIF_F_LLTX | NETIF_F_GSO_MASK | NETIF_F_NO_CSUM | NETIF_F_LLTX |
NETIF_F_NETNS_LOCAL | NETIF_F_GSO; NETIF_F_NETNS_LOCAL | NETIF_F_GSO | NETIF_F_HW_VLAN_TX;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册