From: Stefan Raspl Date: Wed, 19 Mar 2014 06:58:02 +0000 (+0100) Subject: qeth: Fix IP version detection for VLAN traffic X-Git-Tag: v3.15-rc1~113^2~120 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=a9baf10aafe7001501189099df4b91f90739e182;p=linux.git 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 Signed-off-by: Frank Blaschka Signed-off-by: David S. Miller --- diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h index a0de045eb227..5333b2c018e7 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: