1
0
Fork 0

6lowpan: nhc: move iphc manipulation out of nhc

This patch moves the iphc setting of next header commpression bit inside
iphc functionality. Setting of IPHC bits should be happen at iphc.c file
only.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
steinar/wifi_calib_4_9_kernel
Alexander Aring 2015-10-20 08:31:21 +02:00 committed by Marcel Holtmann
parent 478208e3b9
commit 607b0bd3f2
3 changed files with 14 additions and 17 deletions

View File

@ -532,9 +532,12 @@ int lowpan_header_compress(struct sk_buff *skb, const struct net_device *dev,
/* Check if we provide the nhc format for nexthdr and compression
* functionality. If not nexthdr is handled inline and not compressed.
*/
ret = lowpan_nhc_check_compression(skb, hdr, &hc_ptr, &iphc0);
if (ret < 0)
return ret;
ret = lowpan_nhc_check_compression(skb, hdr, &hc_ptr);
if (ret == -ENOENT)
lowpan_push_hc_data(&hc_ptr, &hdr->nexthdr,
sizeof(hdr->nexthdr));
else
iphc0 |= LOWPAN_IPHC_NH_C;
/* Hop limit
* if 1: compress, encoding is 01

View File

@ -95,23 +95,20 @@ static struct lowpan_nhc *lowpan_nhc_by_nhcid(const struct sk_buff *skb)
}
int lowpan_nhc_check_compression(struct sk_buff *skb,
const struct ipv6hdr *hdr, u8 **hc_ptr,
u8 *iphc0)
const struct ipv6hdr *hdr, u8 **hc_ptr)
{
struct lowpan_nhc *nhc;
int ret = 0;
spin_lock_bh(&lowpan_nhc_lock);
nhc = lowpan_nexthdr_nhcs[hdr->nexthdr];
if (nhc && nhc->compress)
*iphc0 |= LOWPAN_IPHC_NH_C;
else
lowpan_push_hc_data(hc_ptr, &hdr->nexthdr,
sizeof(hdr->nexthdr));
if (!(nhc && nhc->compress))
ret = -ENOENT;
spin_unlock_bh(&lowpan_nhc_lock);
return 0;
return ret;
}
int lowpan_nhc_do_compression(struct sk_buff *skb, const struct ipv6hdr *hdr,

View File

@ -86,19 +86,16 @@ struct lowpan_nhc *lowpan_nhc_by_nexthdr(u8 nexthdr);
/**
* lowpan_nhc_check_compression - checks if we support compression format. If
* we support the nhc by nexthdr field, the 6LoWPAN iphc NHC bit will be
* set. If we don't support nexthdr will be added as inline data to the
* 6LoWPAN header.
* we support the nhc by nexthdr field, the function will return 0. If we
* don't support the nhc by nexthdr this function will return -ENOENT.
*
* @skb: skb of 6LoWPAN header to read nhc and replace header.
* @hdr: ipv6hdr to check the nexthdr value
* @hc_ptr: pointer for 6LoWPAN header which should increment at the end of
* replaced header.
* @iphc0: iphc0 pointer to set the 6LoWPAN NHC bit
*/
int lowpan_nhc_check_compression(struct sk_buff *skb,
const struct ipv6hdr *hdr, u8 **hc_ptr,
u8 *iphc0);
const struct ipv6hdr *hdr, u8 **hc_ptr);
/**
* lowpan_nhc_do_compression - calling compress callback for nhc