net: vlan: prepare for 802.1ad support
Make the encapsulation protocol value a property of VLAN devices and change the device lookup functions to take the protocol value into account. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
80d5c3689b
commit
1fd9b1fc31
@@ -99,6 +99,7 @@ static int vlan_dev_hard_header(struct sk_buff *skb, struct net_device *dev,
|
||||
const void *daddr, const void *saddr,
|
||||
unsigned int len)
|
||||
{
|
||||
struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
|
||||
struct vlan_hdr *vhdr;
|
||||
unsigned int vhdrlen = 0;
|
||||
u16 vlan_tci = 0;
|
||||
@@ -120,8 +121,8 @@ static int vlan_dev_hard_header(struct sk_buff *skb, struct net_device *dev,
|
||||
else
|
||||
vhdr->h_vlan_encapsulated_proto = htons(len);
|
||||
|
||||
skb->protocol = htons(ETH_P_8021Q);
|
||||
type = ETH_P_8021Q;
|
||||
skb->protocol = vlan->vlan_proto;
|
||||
type = ntohs(vlan->vlan_proto);
|
||||
vhdrlen = VLAN_HLEN;
|
||||
}
|
||||
|
||||
@@ -161,7 +162,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb,
|
||||
* NOTE: THIS ASSUMES DIX ETHERNET, SPECIFICALLY NOT SUPPORTING
|
||||
* OTHER THINGS LIKE FDDI/TokenRing/802.3 SNAPs...
|
||||
*/
|
||||
if (veth->h_vlan_proto != htons(ETH_P_8021Q) ||
|
||||
if (veth->h_vlan_proto != vlan->vlan_proto ||
|
||||
vlan->flags & VLAN_FLAG_REORDER_HDR) {
|
||||
u16 vlan_tci;
|
||||
vlan_tci = vlan->vlan_id;
|
||||
|
Reference in New Issue
Block a user