aboutsummaryrefslogtreecommitdiffstats
path: root/net/ieee802154
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2014-10-06 05:00:51 -0400
committerMarcel Holtmann <marcel@holtmann.org>2014-10-25 01:56:22 -0400
commitf870b8c6314c85712ff1e82765a902d895b73f21 (patch)
treec797d7c6bf992b63433a43c68b159a60eb41379d /net/ieee802154
parentcd97a713acbc1b63feb67ba137c3b827fa4f2308 (diff)
ieee802154: reassembly: fix tag byteorder
This patch fix byte order handling in reassembly code of 802.15.4 6LoWPAN fragmentation handling. net/ieee802154/reassembly.c:58:43: warning: restricted __be16 degrades to integer Signed-off-by: Alexander Aring <alex.aring@gmail.com> Reported-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/ieee802154')
-rw-r--r--net/ieee802154/reassembly.c8
-rw-r--r--net/ieee802154/reassembly.h4
2 files changed, 7 insertions, 5 deletions
diff --git a/net/ieee802154/reassembly.c b/net/ieee802154/reassembly.c
index 7cfcd6885225..9d980ed3ffe2 100644
--- a/net/ieee802154/reassembly.c
+++ b/net/ieee802154/reassembly.c
@@ -33,7 +33,7 @@
33static const char lowpan_frags_cache_name[] = "lowpan-frags"; 33static const char lowpan_frags_cache_name[] = "lowpan-frags";
34 34
35struct lowpan_frag_info { 35struct lowpan_frag_info {
36 __be16 d_tag; 36 u16 d_tag;
37 u16 d_size; 37 u16 d_size;
38 u8 d_offset; 38 u8 d_offset;
39}; 39};
@@ -48,7 +48,7 @@ static struct inet_frags lowpan_frags;
48static int lowpan_frag_reasm(struct lowpan_frag_queue *fq, 48static int lowpan_frag_reasm(struct lowpan_frag_queue *fq,
49 struct sk_buff *prev, struct net_device *dev); 49 struct sk_buff *prev, struct net_device *dev);
50 50
51static unsigned int lowpan_hash_frag(__be16 tag, u16 d_size, 51static unsigned int lowpan_hash_frag(u16 tag, u16 d_size,
52 const struct ieee802154_addr *saddr, 52 const struct ieee802154_addr *saddr,
53 const struct ieee802154_addr *daddr) 53 const struct ieee802154_addr *daddr)
54{ 54{
@@ -330,11 +330,13 @@ static int lowpan_get_frag_info(struct sk_buff *skb, const u8 frag_type,
330{ 330{
331 bool fail; 331 bool fail;
332 u8 pattern = 0, low = 0; 332 u8 pattern = 0, low = 0;
333 __be16 d_tag = 0;
333 334
334 fail = lowpan_fetch_skb(skb, &pattern, 1); 335 fail = lowpan_fetch_skb(skb, &pattern, 1);
335 fail |= lowpan_fetch_skb(skb, &low, 1); 336 fail |= lowpan_fetch_skb(skb, &low, 1);
336 frag_info->d_size = (pattern & 7) << 8 | low; 337 frag_info->d_size = (pattern & 7) << 8 | low;
337 fail |= lowpan_fetch_skb(skb, &frag_info->d_tag, 2); 338 fail |= lowpan_fetch_skb(skb, &d_tag, 2);
339 frag_info->d_tag = ntohs(d_tag);
338 340
339 if (frag_type == LOWPAN_DISPATCH_FRAGN) { 341 if (frag_type == LOWPAN_DISPATCH_FRAGN) {
340 fail |= lowpan_fetch_skb(skb, &frag_info->d_offset, 1); 342 fail |= lowpan_fetch_skb(skb, &frag_info->d_offset, 1);
diff --git a/net/ieee802154/reassembly.h b/net/ieee802154/reassembly.h
index 74e4a7c98191..836b16fa001f 100644
--- a/net/ieee802154/reassembly.h
+++ b/net/ieee802154/reassembly.h
@@ -4,7 +4,7 @@
4#include <net/inet_frag.h> 4#include <net/inet_frag.h>
5 5
6struct lowpan_create_arg { 6struct lowpan_create_arg {
7 __be16 tag; 7 u16 tag;
8 u16 d_size; 8 u16 d_size;
9 const struct ieee802154_addr *src; 9 const struct ieee802154_addr *src;
10 const struct ieee802154_addr *dst; 10 const struct ieee802154_addr *dst;
@@ -15,7 +15,7 @@ struct lowpan_create_arg {
15struct lowpan_frag_queue { 15struct lowpan_frag_queue {
16 struct inet_frag_queue q; 16 struct inet_frag_queue q;
17 17
18 __be16 tag; 18 u16 tag;
19 u16 d_size; 19 u16 d_size;
20 struct ieee802154_addr saddr; 20 struct ieee802154_addr saddr;
21 struct ieee802154_addr daddr; 21 struct ieee802154_addr daddr;