Message ID | 1441043205.3276.28.camel@perches.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Kalle Valo |
Headers | show |
From: Joe Perches > Sent: 31 August 2015 18:47 > > 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. 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 > > $ 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 > > Signed-off-by: Joe Perches <joe@perches.com> > --- > drivers/net/wireless/mwifiex/main.c | 20 ++++++++++++++++++++ > drivers/net/wireless/mwifiex/main.h | 17 ++++++++--------- > 2 files changed, 28 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c > index 278dc94..4fa8ca3 100644 > --- a/drivers/net/wireless/mwifiex/main.c > +++ b/drivers/net/wireless/mwifiex/main.c > @@ -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. > * > diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h > index 6b95121..96663214 100644 > --- a/drivers/net/wireless/mwifiex/main.h > +++ b/drivers/net/wireless/mwifiex/main.h > @@ -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__) > ... -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 2015-09-01 at 15:09 +0000, David Laight wrote: > From: Joe Perches > > Sent: 31 August 2015 18:47 > > > > 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. > > This looks like it will slow things down somewhat. I doubt in any meaningful way. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> 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 > > Signed-off-by: Joe Perches <joe@perches.com> Thanks, applied to wireless-drivers-next.git. Kalle Valo -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c index 278dc94..4fa8ca3 100644 --- a/drivers/net/wireless/mwifiex/main.c +++ b/drivers/net/wireless/mwifiex/main.c @@ -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. * diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h index 6b95121..96663214 100644 --- a/drivers/net/wireless/mwifiex/main.h +++ b/drivers/net/wireless/mwifiex/main.h @@ -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;
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 Signed-off-by: Joe Perches <joe@perches.com> --- drivers/net/wireless/mwifiex/main.c | 20 ++++++++++++++++++++ drivers/net/wireless/mwifiex/main.h | 17 ++++++++--------- 2 files changed, 28 insertions(+), 9 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html