From: Alexander Aring <aar@pengutronix.de>
To: linux-wpan@vger.kernel.org
Cc: kernel@pengutronix.de, luiz.dentz@gmail.com, kaspar@schleiser.de,
jukka.rissanen@linux.intel.com, linux-bluetooth@vger.kernel.org,
Patrik.Flykt@linux.intel.com,
Alexander Aring <aar@pengutronix.de>
Subject: [RFC bluetooth-next 05/20] 6lowpan: remove LOWPAN_IPHC_MAX_HEADER_LEN
Date: Mon, 11 Jul 2016 21:50:29 +0200 [thread overview]
Message-ID: <20160711195044.25343-6-aar@pengutronix.de> (raw)
In-Reply-To: <20160711195044.25343-1-aar@pengutronix.de>
My observations with btle 6lowpan was that such parameter doesn't
exists. IPHC will not increase the packet size of IPv6 afterwards, but
decrease it.
I thought about that LOWPAN_IPHC are the 2 bytes headers, but we will
always save two bytes because the payload_length of ipv6 will be elided.
Then I thought the CID byte will increase the payload at one byte, this
is correct but when we add the CID byte, we need to compress at
worst-case 8 bytes.
After that I thought the nhc id will be at least increase currently the
payload to one byte. This is correct, but when we set the NHC bit, then
we save one byte because ipv6 next header byte will be elided. That's
why everything should be fine until we have NHC's which have two bytes
length until or NHC compression use more bytes than raw next header
format.
Signed-off-by: Alexander Aring <aar@pengutronix.de>
---
include/net/6lowpan.h | 7 -------
net/ieee802154/6lowpan/core.c | 6 ++----
2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/include/net/6lowpan.h b/include/net/6lowpan.h
index 6d56be7..7f4b63c 100644
--- a/include/net/6lowpan.h
+++ b/include/net/6lowpan.h
@@ -68,15 +68,8 @@
* possible inline data.
*/
#define LOWPAN_NHC_MAX_HDR_LEN (sizeof(struct udphdr))
-/* Max IPHC Header len without IPv6 hdr specific inline data.
- * Useful for getting the "extra" bytes we need at worst case compression.
- *
- * LOWPAN_IPHC + CID + LOWPAN_NHC_MAX_ID_LEN
- */
-#define LOWPAN_IPHC_MAX_HEADER_LEN (2 + 1 + LOWPAN_NHC_MAX_ID_LEN)
/* Maximum worst case IPHC header buffer size */
#define LOWPAN_IPHC_MAX_HC_BUF_LEN (sizeof(struct ipv6hdr) + \
- LOWPAN_IPHC_MAX_HEADER_LEN + \
LOWPAN_NHC_MAX_HDR_LEN)
/* SCI/DCI is 4 bit width, so we have maximum 16 entries */
#define LOWPAN_IPHC_CTX_TABLE_SIZE (1 << 4)
diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c
index 6afb8cd..f70edcc 100644
--- a/net/ieee802154/6lowpan/core.c
+++ b/net/ieee802154/6lowpan/core.c
@@ -152,11 +152,9 @@ static int lowpan_newlink(struct net *src_net, struct net_device *ldev,
/* We need headroom for possible wpan_dev_hard_header call and tailroom
* for encryption/fcs handling. The lowpan interface will replace
* the IPv6 header with 6LoWPAN header. At worst case the 6LoWPAN
- * header has LOWPAN_IPHC_MAX_HEADER_LEN more bytes than the IPv6
- * header.
+ * header has one byte more for possible raw IPv6 dispatch.
*/
- ldev->needed_headroom = LOWPAN_IPHC_MAX_HEADER_LEN +
- wdev->needed_headroom;
+ ldev->needed_headroom = 1 + wdev->needed_headroom;
ldev->needed_tailroom = wdev->needed_tailroom;
ldev->neigh_priv_len = sizeof(struct lowpan_802154_neigh);
--
2.9.0
next prev parent reply other threads:[~2016-07-11 19:50 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-11 19:50 [RFC bluetooth-next 00/20] bluetooth: rework 6lowpan implementation Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 01/20] 6lowpan: ndisc: don't remove short address Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 02/20] nhc: add TODO for nhc work Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 03/20] ieee802154: 6lowpan: remove headroom check Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 04/20] ieee802154: 6lowpan: move skb cb BUILD_BUG_ON check Alexander Aring
2016-07-11 19:50 ` Alexander Aring [this message]
2016-07-11 19:50 ` [RFC bluetooth-next 06/20] 6lowpan: hold netdev while unregister Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 07/20] 6lowpan: introduce generic default naming Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 08/20] 6lowpan: move rx defines to generic Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 09/20] bluetooth: introduce l2cap_hdev_chan_connect Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 10/20] bluetooth: add hci dev notifier Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 11/20] bluetooth: export functions and variables Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 12/20] 6lowpan: bluetooth: remove implementation Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 13/20] ieee802154: 6lowpan: move header create to 6lowpan Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 14/20] 6lowpan: move dev_init to generic Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 15/20] 6lowpan: iphc: override l2 packet information Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 16/20] ipv6: addrconf: fix 48 bit 6lowpan autoconfiguration Alexander Aring
2016-07-12 20:16 ` Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 17/20] 6lowpan: iphc: add handling for btle Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 18/20] 6lowpan: move multicast flags to generic Alexander Aring
2016-07-12 20:34 ` Alexander Aring
2016-07-13 11:15 ` Jukka Rissanen
2016-07-14 8:21 ` Alexander Aring
2016-07-14 8:36 ` Alexander Aring
2016-07-19 14:51 ` Michael Richardson
2016-07-19 18:20 ` Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 19/20] 6lowpan: delete addr_len handling " Alexander Aring
2016-07-11 19:50 ` [RFC bluetooth-next 20/20] 6lowpan: bluetooth: add new implementation Alexander Aring
2016-07-12 21:19 ` Alexander Aring
2016-07-14 11:40 ` Luiz Augusto von Dentz
2016-07-17 15:52 ` Alexander Aring
2016-07-18 8:59 ` Luiz Augusto von Dentz
2016-07-18 21:52 ` Alexander Aring
2016-07-19 5:45 ` Johan Hedberg
2016-07-19 8:23 ` Luiz Augusto von Dentz
2016-07-19 21:05 ` Alexander Aring
2016-07-20 7:39 ` Johan Hedberg
2016-07-20 8:14 ` Luiz Augusto von Dentz
2016-07-20 10:22 ` Marcel Holtmann
2016-07-19 8:49 ` Luiz Augusto von Dentz
2016-07-19 14:48 ` Michael Richardson
2016-07-19 21:24 ` Alexander Aring
2016-07-12 14:51 ` [RFC bluetooth-next 00/20] bluetooth: rework 6lowpan implementation Luiz Augusto von Dentz
2016-07-12 18:35 ` Alexander Aring
2016-07-13 9:12 ` Alexander Aring
2016-07-13 10:13 ` Luiz Augusto von Dentz
2016-07-13 10:56 ` Alexander Aring
2016-07-14 12:02 ` Luiz Augusto von Dentz
2016-07-19 12:58 ` Michael Richardson
2016-08-05 7:15 ` Bakke, Glenn Ruben
2016-08-05 9:18 ` Alexander Aring
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160711195044.25343-6-aar@pengutronix.de \
--to=aar@pengutronix.de \
--cc=Patrik.Flykt@linux.intel.com \
--cc=jukka.rissanen@linux.intel.com \
--cc=kaspar@schleiser.de \
--cc=kernel@pengutronix.de \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-wpan@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).