6lowpan: introduce LOWPAN_IPHC_MAX_HC_BUF_LEN
This patch introduces the LOWPAN_IPHC_MAX_HC_BUF_LEN define which represent the worst-case supported IPHC buffer length. It's used to allocate the stack buffer space for creating the IPHC header. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Родитель
cefdb801c8
Коммит
bf513fd6fc
|
@ -64,12 +64,20 @@
|
||||||
#define EUI64_ADDR_LEN 8
|
#define EUI64_ADDR_LEN 8
|
||||||
|
|
||||||
#define LOWPAN_NHC_MAX_ID_LEN 1
|
#define LOWPAN_NHC_MAX_ID_LEN 1
|
||||||
|
/* Maximum next header compression length which we currently support inclusive
|
||||||
|
* possible inline data.
|
||||||
|
*/
|
||||||
|
#define LOWPAN_NHC_MAX_HDR_LEN (sizeof(struct udphdr))
|
||||||
/* Max IPHC Header len without IPv6 hdr specific inline data.
|
/* Max IPHC Header len without IPv6 hdr specific inline data.
|
||||||
* Useful for getting the "extra" bytes we need at worst case compression.
|
* Useful for getting the "extra" bytes we need at worst case compression.
|
||||||
*
|
*
|
||||||
* LOWPAN_IPHC + CID + LOWPAN_NHC_MAX_ID_LEN
|
* LOWPAN_IPHC + CID + LOWPAN_NHC_MAX_ID_LEN
|
||||||
*/
|
*/
|
||||||
#define LOWPAN_IPHC_MAX_HEADER_LEN (2 + 1 + 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)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ipv6 address based on mac
|
* ipv6 address based on mac
|
||||||
|
|
|
@ -429,7 +429,7 @@ int lowpan_header_compress(struct sk_buff *skb, struct net_device *dev,
|
||||||
{
|
{
|
||||||
u8 tmp, iphc0, iphc1, *hc_ptr;
|
u8 tmp, iphc0, iphc1, *hc_ptr;
|
||||||
struct ipv6hdr *hdr;
|
struct ipv6hdr *hdr;
|
||||||
u8 head[100] = {};
|
u8 head[LOWPAN_IPHC_MAX_HC_BUF_LEN] = {};
|
||||||
int ret, addr_type;
|
int ret, addr_type;
|
||||||
|
|
||||||
if (type != ETH_P_IPV6)
|
if (type != ETH_P_IPV6)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче