mwifiex: Make mwifiex_dbg a function, reduce object size
Subsystems (3)
PATCH 1/1 mwifiex: Make mwifiex_dbg a function, reduce object size
The mwifiex_dbg macro has two tests that could be consolidated into a function reducing overall object size ~10KB (~4%).
So convert the macro into a function.
$ size drivers/net/wireless/mwifiex/built-in.o* (x86-64 defconfig) text data bss dec hex filename 233102 8628 4809 246539 3c30b drivers/net/wireless/mwifiex/built-in.o.new 243949 8628 4809 257386 3ed6a drivers/net/wireless/mwifiex/built-in.o.old
--- drivers/net/wireless/mwifiex/main.c | 20 ++++++++++++++++++++ drivers/net/wireless/mwifiex/main.h | 17 ++++++++--------- 2 files changed, 28 insertions(+), 9 deletions(-)
drivers/net/wireless/mwifiex/main.c +20 -0
@@ -1447,6 +1447,26 @@ exit_sem_err: }EXPORT_SYMBOL_GPL (mwifiex_remove_card); +void _mwifiex_dbg (const struct mwifiex_adapter *adapter,int mask, +const char *fmt, ...) +{ +struct va_format vaf; +va_list args; + +if (!adapter->dev || !(adapter->debug_mask & mask)) +return ; + +va_start (args, fmt); + + vaf.fmt = fmt; + vaf.va = &args; + +dev_info (adapter->dev,"%pV" , &vaf); + +va_end (args); +} +EXPORT_SYMBOL_GPL (_mwifiex_dbg); +/* * This function initializes the module. *
drivers/net/wireless/mwifiex/main.h +8 -9
@@ -48,6 +48,9 @@extern const char driver_version[]; +struct mwifiex_adapter ; +struct mwifiex_private ; +enum {MWIFIEX_ASYNC_CMD ,MWIFIEX_SYNC_CMD
@@ -180,12 +183,11 @@ enum MWIFIEX_DEBUG_LEVEL { MWIFIEX_DBG_FATAL | \ MWIFIEX_DBG_ERROR) -#define mwifiex_dbg(adapter, dbg_mask, fmt, args...) \ -do { \ - if ((adapter)->debug_mask & MWIFIEX_DBG_##dbg_mask) \ - if ((adapter)->dev) \ - dev_info((adapter)->dev, fmt, ## args); \ -} while (0) +__printf(3, 4) +void _mwifiex_dbg (const struct mwifiex_adapter *adapter,int mask, +const char *fmt, ...); +#define mwifiex_dbg (adapter, mask, fmt, ...) \ + _mwifiex_dbg(adapter, MWIFIEX_DBG_##mask, fmt, ##__VA_ARGS__)#define DEBUG_DUMP_DATA_MAX_LEN 128#define mwifiex_dbg_dump (adapter, dbg_mask, str, buf, len) \
@@ -506,9 +508,6 @@ enum mwifiex_iface_work_flags { MWIFIEX_IFACE_WORK_CARD_RESET, }; -struct mwifiex_adapter ; -struct mwifiex_private ; -struct mwifiex_private {struct mwifiex_adapter *adapter;u8 bss_type;
From: Joe Perches
Quoted 6 lines
Sent: 31 August 2015 18:47
The
mwifiex_dbgmacro has two tests that could be consolidated into a function reducing overall object size ~10KB (~4%).So convert the macro into a function.
This looks like it will slow things down somewhat. Maybe inline the tests and then do a call for the dev_info(). Or at least inline the test for the debug flag.
So you end up with something like:
#define mwifiex_dbg(adapter, dbg_mask, fmt, args...) \
do { \
if ((adapter)->debug_mask & MWIFIEX_DBG_##dbg_mask) \
_mwifiex_dbg(adapter, fmt, ##__VA_ARGS__)
} while (0)David
Quoted 75 lines
$ size drivers/net/wireless/mwifiex/built-in.o* (x86-64 defconfig) text data bss dec hex filename 233102 8628 4809 246539 3c30b drivers/net/wireless/mwifiex/built- in.o.new 243949 8628 4809 257386 3ed6a drivers/net/wireless/mwifiex/built- in.o.oldSigned-off-by Joe Perches <[email protected]>--- drivers/net/wireless/mwifiex/main.c | 20 ++++++++++++++++++++ drivers/net/wireless/mwifiex/main.h | 17 ++++++++--------- 2 files changed, 28 insertions(+), 9 deletions(-)drivers/net/wireless/mwifiex/main.c +20
-0@@ -1447,6 +1447,26 @@ exit_sem_err: }EXPORT_SYMBOL_GPL (mwifiex_remove_card); +void _mwifiex_dbg (const struct mwifiex_adapter *adapter,int mask, +const char *fmt, ...) +{ +struct va_format vaf; +va_list args; + +if (!adapter->dev || !(adapter->debug_mask & mask)) +return ; + +va_start (args, fmt); + + vaf.fmt = fmt; + vaf.va = &args; + +dev_info (adapter->dev,"%pV" , &vaf); + +va_end (args); +} +EXPORT_SYMBOL_GPL (_mwifiex_dbg); +/* * This function initializes the module. * drivers/net/wireless/mwifiex/main.h +8
-6@@ -48,6 +48,9 @@extern const char driver_version[]; +struct mwifiex_adapter ; +struct mwifiex_private ; +enum {MWIFIEX_ASYNC_CMD ,MWIFIEX_SYNC_CMD @@ -180,12 +183,11 @@ enum MWIFIEX_DEBUG_LEVEL { MWIFIEX_DBG_FATAL | \ MWIFIEX_DBG_ERROR) -#define mwifiex_dbg(adapter, dbg_mask, fmt, args...) \ -do { \ - if ((adapter)->debug_mask & MWIFIEX_DBG_##dbg_mask) \ - if ((adapter)->dev) \ - dev_info((adapter)->dev, fmt, ## args); \ -} while (0) +__printf(3, 4) +void _mwifiex_dbg (const struct mwifiex_adapter *adapter,int mask, +const char *fmt, ...); +#define mwifiex_dbg (adapter, mask, fmt, ...) \ + _mwifiex_dbg(adapter, MWIFIEX_DBG_##mask, fmt, ##__VA_ARGS__)
...
Quoted 9 lines · David Laight
From: Joe Perches
Quoted 6 lines
Sent: 31 August 2015 18:47
The
mwifiex_dbgmacro has two tests that could be consolidated into a function reducing overall object size ~10KB (~4%).So convert the macro into a function.
This looks like it will slow things down somewhat.
I doubt in any meaningful way.
Kalle Valo
AppliedQuoted 4 lines
The
mwifiex_dbgmacro has two tests that could be consolidated into a function reducing overall object size ~10KB (~4%).
Quoted 8 lines
So convert the macro into a function.
$ size drivers/net/wireless/mwifiex/built-in.o* (x86-64 defconfig) text data bss dec hex filename 233102 8628 4809 246539 3c30b drivers/net/wireless/mwifiex/built-in.o.new 243949 8628 4809 257386 3ed6a drivers/net/wireless/mwifiex/built-in.o.oldSigned-off-by Joe Perches <[email protected]>
Thanks, applied to wireless-drivers-next.git.
Kalle Valo