Re: [PATCH net-next v4 2/8] 6lowpan: add uncompress header size function
From: Alexander Aring <alex.aring@gmail.com>
Date: 2014-02-26 16:20:17
Hi David, thanks for your reply. On Wed, Feb 26, 2014 at 04:10:05PM +0000, David Laight wrote:
From: Alexander Aringquoted
Signed-off-by: Alexander Aring <alex.aring@gmail.com> --- net/ieee802154/6lowpan.h | 116 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+)diff --git a/net/ieee802154/6lowpan.h b/net/ieee802154/6lowpan.h index 2b835db..b6ae0bc 100644 --- a/net/ieee802154/6lowpan.h +++ b/net/ieee802154/6lowpan.h@@ -306,6 +306,122 @@ static inline void lowpan_push_hc_data(u8 **hc_ptr, const void *data, *hc_ptr += len; } +static inline u8 lowpan_addr_mode_size(const u8 addr_mode) +{ + switch (addr_mode) { + case LOWPAN_IPHC_ADDR_00: + return 16; + case LOWPAN_IPHC_ADDR_01: + return 8; + case LOWPAN_IPHC_ADDR_02: + return 2; + default: + return 0; + } +}The compiler will generate much better code if you index an array instead of using a switch statement.
You mean something like:
static inline u8 lowpan_addr_mode_size(const u8 addr_mode)
{
const u8 res[] = { 16, 8, 2, 0 };
return res[addr_mode];
}
or should I drop the array from the stack and declare it static?
?
- Alex