Skip to content

Commit

Permalink
6lowpan: nhc: move iphc manipulation out of nhc
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Marcel Holtmann <[email protected]>
  • Loading branch information
alexaring authored and holtmann committed Oct 20, 2015
1 parent 478208e commit 607b0bd
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 17 deletions.
9 changes: 6 additions & 3 deletions net/6lowpan/iphc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 5 additions & 8 deletions net/6lowpan/nhc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
9 changes: 3 additions & 6 deletions net/6lowpan/nhc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 607b0bd

Please sign in to comment.