From 4c7f778e566ac5861b2837ee755d8cdcd1ccacc5 Mon Sep 17 00:00:00 2001 From: Alexander Aring Date: Sun, 2 Mar 2014 08:09:33 +0100 Subject: [PATCH 1/3] 6lowpan: fix type of datagram size parameter Datagram size value is u16 because we convert it to host byte order and we need to read it. Only the tag value belongs to __be16 type. Signed-off-by: Alexander Aring Signed-off-by: David S. Miller --- net/ieee802154/reassembly.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ieee802154/reassembly.c b/net/ieee802154/reassembly.c index eb5995e74316..4511fc22ef16 100644 --- a/net/ieee802154/reassembly.c +++ b/net/ieee802154/reassembly.c @@ -35,7 +35,7 @@ static struct inet_frags lowpan_frags; static int lowpan_frag_reasm(struct lowpan_frag_queue *fq, struct sk_buff *prev, struct net_device *dev); -static unsigned int lowpan_hash_frag(__be16 tag, __be16 d_size, +static unsigned int lowpan_hash_frag(__be16 tag, u16 d_size, const struct ieee802154_addr *saddr, const struct ieee802154_addr *daddr) { From 0234a632486eade1094736a03db9b8fa4dd4d125 Mon Sep 17 00:00:00 2001 From: Alexander Aring Date: Sun, 2 Mar 2014 08:09:34 +0100 Subject: [PATCH 2/3] 6lowpan: remove initialization of tag value The initialization of the tag value doesn't matter at begin of fragmentation. This patch removes the initialization to zero. Signed-off-by: Alexander Aring Signed-off-by: David S. Miller --- net/ieee802154/6lowpan_rtnl.c | 1 - 1 file changed, 1 deletion(-) diff --git a/net/ieee802154/6lowpan_rtnl.c b/net/ieee802154/6lowpan_rtnl.c index c7bd8b55f7ce..178ffb97816b 100644 --- a/net/ieee802154/6lowpan_rtnl.c +++ b/net/ieee802154/6lowpan_rtnl.c @@ -519,7 +519,6 @@ static int lowpan_newlink(struct net *src_net, struct net_device *dev, } lowpan_dev_info(dev)->real_dev = real_dev; - lowpan_dev_info(dev)->fragment_tag = 0; mutex_init(&lowpan_dev_info(dev)->dev_list_mtx); entry = kzalloc(sizeof(*entry), GFP_KERNEL); From b6f82fc05da4d21d03e6171202d8cf181f4da053 Mon Sep 17 00:00:00 2001 From: Alexander Aring Date: Sun, 2 Mar 2014 08:09:35 +0100 Subject: [PATCH 3/3] 6lowpan: use memcpy to set tag value in fraghdr Signed-off-by: Alexander Aring Signed-off-by: David S. Miller --- net/ieee802154/6lowpan_rtnl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/ieee802154/6lowpan_rtnl.c b/net/ieee802154/6lowpan_rtnl.c index 178ffb97816b..e4726180fc36 100644 --- a/net/ieee802154/6lowpan_rtnl.c +++ b/net/ieee802154/6lowpan_rtnl.c @@ -265,8 +265,7 @@ lowpan_skb_fragmentation(struct sk_buff *skb, struct net_device *dev) /* first fragment header */ head[0] = LOWPAN_DISPATCH_FRAG1 | ((dgram_size >> 8) & 0x7); head[1] = dgram_size & 0xff; - head[2] = tag >> 8; - head[3] = tag & 0xff; + memcpy(head + 2, &tag, sizeof(tag)); /* calc the nearest payload length(divided to 8) for first fragment * which fits into a IEEE802154_MTU