diff options
author | Patrick McHardy <kaber@trash.net> | 2013-04-18 22:04:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-04-19 14:45:27 -0400 |
commit | 1fd9b1fc310314911f66d2f14a8e4f0ef37bf47b (patch) | |
tree | 20422146c46fb38a5cdd0d14e671a0793c3389b4 /net/8021q/vlan_dev.c | |
parent | 80d5c3689b886308247da295a228a54df49a44f6 (diff) |
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>
Diffstat (limited to 'net/8021q/vlan_dev.c')
-rw-r--r-- | net/8021q/vlan_dev.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 5c4892a86410..d7457b7e1b95 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
@@ -99,6 +99,7 @@ static int vlan_dev_hard_header(struct sk_buff *skb, struct net_device *dev, | |||
99 | const void *daddr, const void *saddr, | 99 | const void *daddr, const void *saddr, |
100 | unsigned int len) | 100 | unsigned int len) |
101 | { | 101 | { |
102 | struct vlan_dev_priv *vlan = vlan_dev_priv(dev); | ||
102 | struct vlan_hdr *vhdr; | 103 | struct vlan_hdr *vhdr; |
103 | unsigned int vhdrlen = 0; | 104 | unsigned int vhdrlen = 0; |
104 | u16 vlan_tci = 0; | 105 | u16 vlan_tci = 0; |
@@ -120,8 +121,8 @@ static int vlan_dev_hard_header(struct sk_buff *skb, struct net_device *dev, | |||
120 | else | 121 | else |
121 | vhdr->h_vlan_encapsulated_proto = htons(len); | 122 | vhdr->h_vlan_encapsulated_proto = htons(len); |
122 | 123 | ||
123 | skb->protocol = htons(ETH_P_8021Q); | 124 | skb->protocol = vlan->vlan_proto; |
124 | type = ETH_P_8021Q; | 125 | type = ntohs(vlan->vlan_proto); |
125 | vhdrlen = VLAN_HLEN; | 126 | vhdrlen = VLAN_HLEN; |
126 | } | 127 | } |
127 | 128 | ||
@@ -161,7 +162,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb, | |||
161 | * NOTE: THIS ASSUMES DIX ETHERNET, SPECIFICALLY NOT SUPPORTING | 162 | * NOTE: THIS ASSUMES DIX ETHERNET, SPECIFICALLY NOT SUPPORTING |
162 | * OTHER THINGS LIKE FDDI/TokenRing/802.3 SNAPs... | 163 | * OTHER THINGS LIKE FDDI/TokenRing/802.3 SNAPs... |
163 | */ | 164 | */ |
164 | if (veth->h_vlan_proto != htons(ETH_P_8021Q) || | 165 | if (veth->h_vlan_proto != vlan->vlan_proto || |
165 | vlan->flags & VLAN_FLAG_REORDER_HDR) { | 166 | vlan->flags & VLAN_FLAG_REORDER_HDR) { |
166 | u16 vlan_tci; | 167 | u16 vlan_tci; |
167 | vlan_tci = vlan->vlan_id; | 168 | vlan_tci = vlan->vlan_id; |