android_kernel_google_msm/net/ieee802154
Jukka Rissanen 9ea5140565 6lowpan: Uncompression of traffic class field was incorrect
[ Upstream commit 1188f05497 ]

If priority/traffic class field in IPv6 header is set (seen when
using ssh), the uncompression sets the TC and Flow fields incorrectly.

Example:

This is IPv6 header of a sent packet. Note the priority/TC (=1) in
the first byte.

00000000: 61 00 00 00 00 2c 06 40 fe 80 00 00 00 00 00 00
00000010: 02 02 72 ff fe c6 42 10 fe 80 00 00 00 00 00 00
00000020: 02 1e ab ff fe 4c 52 57

This gets compressed like this in the sending side

00000000: 72 31 04 06 02 1e ab ff fe 4c 52 57 ec c2 00 16
00000010: aa 2d fe 92 86 4e be c6 ....

In the receiving end, the packet gets uncompressed to this
IPv6 header

00000000: 60 06 06 02 00 2a 1e 40 fe 80 00 00 00 00 00 00
00000010: 02 02 72 ff fe c6 42 10 fe 80 00 00 00 00 00 00
00000020: ab ff fe 4c 52 57 ec c2

First four bytes are set incorrectly and we have also lost
two bytes from destination address.

The fix is to switch the case values in switch statement
when checking the TC field.

Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-08 07:29:41 -08:00
..
6lowpan.c 6lowpan: Uncompression of traffic class field was incorrect 2013-12-08 07:29:41 -08:00
6lowpan.h 6lowpan: Fix endianness issue in is_addr_link_local(). 2013-03-20 13:05:02 -07:00
Kconfig IEEE802.15.4: 6LoWPAN basic support 2011-08-24 19:36:06 -07:00
Makefile IEEE802.15.4: 6LoWPAN basic support 2011-08-24 19:36:06 -07:00
af802154.h
af_ieee802154.c
dgram.c net: Remove all uses of LL_ALLOCATED_SPACE 2011-11-18 14:37:09 -05:00
ieee802154.h
netlink.c
nl-mac.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
nl-phy.c
nl_policy.c
raw.c net: Remove all uses of LL_ALLOCATED_SPACE 2011-11-18 14:37:09 -05:00
wpan-class.c