OVS: remove use of VLAN_TAG_PRESENT
This is a minimal change to allow removing of VLAN_TAG_PRESENT. It leaves OVS unable to use CFI bit, as fixing this would need a deeper surgery involving userspace interface. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
f723a1a293
commit
9df46aefaf
@@ -301,7 +301,7 @@ static int push_vlan(struct sk_buff *skb, struct sw_flow_key *key,
|
||||
key->eth.vlan.tpid = vlan->vlan_tpid;
|
||||
}
|
||||
return skb_vlan_push(skb, vlan->vlan_tpid,
|
||||
ntohs(vlan->vlan_tci) & ~VLAN_TAG_PRESENT);
|
||||
ntohs(vlan->vlan_tci) & ~VLAN_CFI_MASK);
|
||||
}
|
||||
|
||||
/* 'src' is already properly masked. */
|
||||
@@ -822,8 +822,10 @@ static int ovs_vport_output(struct net *net, struct sock *sk, struct sk_buff *sk
|
||||
__skb_dst_copy(skb, data->dst);
|
||||
*OVS_CB(skb) = data->cb;
|
||||
skb->inner_protocol = data->inner_protocol;
|
||||
skb->vlan_tci = data->vlan_tci;
|
||||
skb->vlan_proto = data->vlan_proto;
|
||||
if (data->vlan_tci & VLAN_CFI_MASK)
|
||||
__vlan_hwaccel_put_tag(skb, data->vlan_proto, data->vlan_tci & ~VLAN_CFI_MASK);
|
||||
else
|
||||
__vlan_hwaccel_clear_tag(skb);
|
||||
|
||||
/* Reconstruct the MAC header. */
|
||||
skb_push(skb, data->l2_len);
|
||||
@@ -867,7 +869,10 @@ static void prepare_frag(struct vport *vport, struct sk_buff *skb,
|
||||
data->cb = *OVS_CB(skb);
|
||||
data->inner_protocol = skb->inner_protocol;
|
||||
data->network_offset = orig_network_offset;
|
||||
data->vlan_tci = skb->vlan_tci;
|
||||
if (skb_vlan_tag_present(skb))
|
||||
data->vlan_tci = skb_vlan_tag_get(skb) | VLAN_CFI_MASK;
|
||||
else
|
||||
data->vlan_tci = 0;
|
||||
data->vlan_proto = skb->vlan_proto;
|
||||
data->mac_proto = mac_proto;
|
||||
data->l2_len = hlen;
|
||||
|
Reference in New Issue
Block a user