diff options
author | Stefan Raspl <raspl@linux.vnet.ibm.com> | 2014-03-19 07:58:02 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-20 00:06:56 -0400 |
commit | a9baf10aafe7001501189099df4b91f90739e182 (patch) | |
tree | 4a69b101aed52cc458bdd1920374c45b8141c3ea | |
parent | 43934077b085151e1f6b19b45d7179760e8fa63d (diff) |
qeth: Fix IP version detection for VLAN traffic
The current code would always return 0 for VLAN-encapsulated IP traffic.
One notable side effect was that VLAN traffic would never get prioritized
on OSD and OSX devices when priority queueing modes prio_queueing_tos or
prio_queueing_prec were enabled.
Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/s390/net/qeth_core.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h index a0de045eb22..5333b2c018e 100644 --- a/drivers/s390/net/qeth_core.h +++ b/drivers/s390/net/qeth_core.h @@ -854,8 +854,11 @@ static inline int qeth_get_micros(void) static inline int qeth_get_ip_version(struct sk_buff *skb) { - struct ethhdr *ehdr = (struct ethhdr *)skb->data; - switch (ehdr->h_proto) { + __be16 *p = &((struct ethhdr *)skb->data)->h_proto; + + if (*p == ETH_P_8021Q) + p += 2; + switch (*p) { case ETH_P_IPV6: return 6; case ETH_P_IP: |