浏览代码

Merge branch 'ovs-8021AD-fixes'

Jiri Benc says:

====================
openvswitch: vlan fixes

Fix three issues introduced by the 802.1AD patchset.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 8 年之前
父节点
当前提交
4013bee5f0
共有 3 个文件被更改,包括 4 次插入3 次删除
  1. 1 1
      net/openvswitch/flow.c
  2. 1 1
      net/openvswitch/vport-internal_dev.c
  3. 2 1
      net/openvswitch/vport.c

+ 1 - 1
net/openvswitch/flow.c

@@ -343,7 +343,7 @@ static int parse_vlan(struct sk_buff *skb, struct sw_flow_key *key)
 	key->eth.cvlan.tci = 0;
 	key->eth.cvlan.tci = 0;
 	key->eth.cvlan.tpid = 0;
 	key->eth.cvlan.tpid = 0;
 
 
-	if (likely(skb_vlan_tag_present(skb))) {
+	if (skb_vlan_tag_present(skb)) {
 		key->eth.vlan.tci = htons(skb->vlan_tci);
 		key->eth.vlan.tci = htons(skb->vlan_tci);
 		key->eth.vlan.tpid = skb->vlan_proto;
 		key->eth.vlan.tpid = skb->vlan_proto;
 	} else {
 	} else {

+ 1 - 1
net/openvswitch/vport-internal_dev.c

@@ -176,7 +176,7 @@ static void do_setup(struct net_device *netdev)
 
 
 	netdev->vlan_features = netdev->features;
 	netdev->vlan_features = netdev->features;
 	netdev->hw_enc_features = netdev->features;
 	netdev->hw_enc_features = netdev->features;
-	netdev->features |= NETIF_F_HW_VLAN_CTAG_TX;
+	netdev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
 	netdev->hw_features = netdev->features & ~NETIF_F_LLTX;
 	netdev->hw_features = netdev->features & ~NETIF_F_LLTX;
 
 
 	eth_hw_addr_random(netdev);
 	eth_hw_addr_random(netdev);

+ 2 - 1
net/openvswitch/vport.c

@@ -485,7 +485,8 @@ static unsigned int packet_length(const struct sk_buff *skb)
 {
 {
 	unsigned int length = skb->len - ETH_HLEN;
 	unsigned int length = skb->len - ETH_HLEN;
 
 
-	if (skb_vlan_tagged(skb))
+	if (!skb_vlan_tag_present(skb) &&
+	    eth_type_vlan(skb->protocol))
 		length -= VLAN_HLEN;
 		length -= VLAN_HLEN;
 
 
 	/* Don't subtract for multiple VLAN tags. Most (all?) drivers allow
 	/* Don't subtract for multiple VLAN tags. Most (all?) drivers allow