Re: [PATCH net-next v4 2/8] 6lowpan: add uncompress header size function
From: Alexander Aring <hidden>
Date: 2014-02-26 18:32:11
On Wed, Feb 26, 2014 at 10:24:45AM -0800, Joe Perches wrote:
On Wed, 2014-02-26 at 16:10 +0000, David Laight wrote:quoted
From: Alexander Aring[]quoted
quoted
diff --git a/net/ieee802154/6lowpan.h b/net/ieee802154/6lowpan.h[]quoted
quoted
+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.Are you sure of that? Perhaps the compiler would inline the assignment anyway if addr_mode is __builtin_constant_p gcc 4.8 here does the same thing with: static inline unsigned char f1(unsigned char a) { switch (a) { case 0: return 16; case 1: return 8; case 2: return 2; default: return 0; } } static inline unsigned char f2(unsigned char a) { static const unsigned char rtns[] = { 16, 8, 2, 0 }; return rtns[a & 3]; }
to make a mask with & 3 is already done, so we don't need that. I am not sure what I should do now, change or not change? :-) - Alex ------------------------------------------------------------------------------ Flow-based real-time traffic analytics software. Cisco certified tool. Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer Customize your own dashboards, set traffic alerts and generate reports. Network behavioral analysis & security monitoring. All-in-one tool. http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk