linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size
@ 2016-06-25 22:46 Joe Perches
  2016-06-27  0:19 ` Larry Finger
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Joe Perches @ 2016-06-25 22:46 UTC (permalink / raw)
  To: Larry Finger, Chaoming Li
  Cc: Kalle Valo, linux-wireless, netdev, linux-kernel

This debugging macro can expand to a lot of code.
Make it a function to reduce code size.

(x86-64 defconfig w/ all rtlwifi drivers and allyesconfig)
$ size drivers/net/wireless/realtek/rtlwifi/built-in.o*
   text	   data	    bss	    dec	    hex	filename
 900083	 200499	   1907	1102489	 10d299	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.new
1113597	 200499	   1907	1316003	 1414a3	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.old
1746879	 453503	   8512	2208894	 21b47e	drivers/net/wireless/realtek/rtlwifi/built-in.o.new
2051965	 503311	   8512	2563788	 271ecc	drivers/net/wireless/realtek/rtlwifi/built-in.o.old

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/wireless/realtek/rtlwifi/debug.c | 25 +++++++++++++++++++++++++
 drivers/net/wireless/realtek/rtlwifi/debug.h | 17 +++++++++--------
 2 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/debug.c b/drivers/net/wireless/realtek/rtlwifi/debug.c
index fd25aba..33905bb 100644
--- a/drivers/net/wireless/realtek/rtlwifi/debug.c
+++ b/drivers/net/wireless/realtek/rtlwifi/debug.c
@@ -48,3 +48,28 @@ void rtl_dbgp_flag_init(struct ieee80211_hw *hw)
 	/*Init Debug flag enable condition */
 }
 EXPORT_SYMBOL_GPL(rtl_dbgp_flag_init);
+
+#ifdef CONFIG_RTLWIFI_DEBUG
+void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level,
+		    const char *modname, const char *fmt, ...)
+{
+	if (unlikely((comp & rtlpriv->dbg.global_debugcomponents) &&
+		     (level <= rtlpriv->dbg.global_debuglevel))) {
+		struct va_format vaf;
+		va_list args;
+
+		va_start(args, fmt);
+
+		vaf.fmt = fmt;
+		vaf.va = &args;
+
+		printk(KERN_DEBUG "%s:%ps:<%lx-%x> %pV",
+		       modname, __builtin_return_address(0),
+		       in_interrupt(), in_atomic(),
+		       &vaf);
+
+		va_end(args);
+	}
+}
+EXPORT_SYMBOL_GPL(_rtl_dbg_trace);
+#endif
diff --git a/drivers/net/wireless/realtek/rtlwifi/debug.h b/drivers/net/wireless/realtek/rtlwifi/debug.h
index fc794b3..6156a79 100644
--- a/drivers/net/wireless/realtek/rtlwifi/debug.h
+++ b/drivers/net/wireless/realtek/rtlwifi/debug.h
@@ -174,15 +174,16 @@ do {									\
 	}								\
 } while (0)
 
+
+struct rtl_priv;
+
+__printf(5, 6)
+void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level,
+		    const char *modname, const char *fmt, ...);
+
 #define RT_TRACE(rtlpriv, comp, level, fmt, ...)			\
-do {									\
-	if (unlikely(((comp) & rtlpriv->dbg.global_debugcomponents) &&	\
-		     ((level) <= rtlpriv->dbg.global_debuglevel))) {	\
-		printk(KERN_DEBUG KBUILD_MODNAME ":%s():<%lx-%x> " fmt,	\
-		       __func__, in_interrupt(), in_atomic(),		\
-		       ##__VA_ARGS__);					\
-	}								\
-} while (0)
+	_rtl_dbg_trace(rtlpriv, comp, level,				\
+		       KBUILD_MODNAME, fmt, ##__VA_ARGS__)
 
 #define RTPRINT(rtlpriv, dbgtype, dbgflag, fmt, ...)			\
 do {									\
-- 
2.8.0.rc4.16.g56331f8

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size
  2016-06-25 22:46 [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size Joe Perches
@ 2016-06-27  0:19 ` Larry Finger
  2016-06-28  0:53 ` Larry Finger
  2016-07-08  9:55 ` Kalle Valo
  2 siblings, 0 replies; 6+ messages in thread
From: Larry Finger @ 2016-06-27  0:19 UTC (permalink / raw)
  To: Joe Perches; +Cc: Kalle Valo, linux-wireless, netdev, linux-kernel

On 06/25/2016 05:46 PM, Joe Perches wrote:
> This debugging macro can expand to a lot of code.
> Make it a function to reduce code size.
>
> (x86-64 defconfig w/ all rtlwifi drivers and allyesconfig)
> $ size drivers/net/wireless/realtek/rtlwifi/built-in.o*
>     text	   data	    bss	    dec	    hex	filename
>   900083	 200499	   1907	1102489	 10d299	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.new
> 1113597	 200499	   1907	1316003	 1414a3	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.old
> 1746879	 453503	   8512	2208894	 21b47e	drivers/net/wireless/realtek/rtlwifi/built-in.o.new
> 2051965	 503311	   8512	2563788	 271ecc	drivers/net/wireless/realtek/rtlwifi/built-in.o.old
>
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
>   drivers/net/wireless/realtek/rtlwifi/debug.c | 25 +++++++++++++++++++++++++
>   drivers/net/wireless/realtek/rtlwifi/debug.h | 17 +++++++++--------
>   2 files changed, 34 insertions(+), 8 deletions(-)

This change is a good one.

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

Thanks,

Larry

>
> diff --git a/drivers/net/wireless/realtek/rtlwifi/debug.c b/drivers/net/wireless/realtek/rtlwifi/debug.c
> index fd25aba..33905bb 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/debug.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/debug.c
> @@ -48,3 +48,28 @@ void rtl_dbgp_flag_init(struct ieee80211_hw *hw)
>   	/*Init Debug flag enable condition */
>   }
>   EXPORT_SYMBOL_GPL(rtl_dbgp_flag_init);
> +
> +#ifdef CONFIG_RTLWIFI_DEBUG
> +void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level,
> +		    const char *modname, const char *fmt, ...)
> +{
> +	if (unlikely((comp & rtlpriv->dbg.global_debugcomponents) &&
> +		     (level <= rtlpriv->dbg.global_debuglevel))) {
> +		struct va_format vaf;
> +		va_list args;
> +
> +		va_start(args, fmt);
> +
> +		vaf.fmt = fmt;
> +		vaf.va = &args;
> +
> +		printk(KERN_DEBUG "%s:%ps:<%lx-%x> %pV",
> +		       modname, __builtin_return_address(0),
> +		       in_interrupt(), in_atomic(),
> +		       &vaf);
> +
> +		va_end(args);
> +	}
> +}
> +EXPORT_SYMBOL_GPL(_rtl_dbg_trace);
> +#endif
> diff --git a/drivers/net/wireless/realtek/rtlwifi/debug.h b/drivers/net/wireless/realtek/rtlwifi/debug.h
> index fc794b3..6156a79 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/debug.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/debug.h
> @@ -174,15 +174,16 @@ do {									\
>   	}								\
>   } while (0)
>
> +
> +struct rtl_priv;
> +
> +__printf(5, 6)
> +void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level,
> +		    const char *modname, const char *fmt, ...);
> +
>   #define RT_TRACE(rtlpriv, comp, level, fmt, ...)			\
> -do {									\
> -	if (unlikely(((comp) & rtlpriv->dbg.global_debugcomponents) &&	\
> -		     ((level) <= rtlpriv->dbg.global_debuglevel))) {	\
> -		printk(KERN_DEBUG KBUILD_MODNAME ":%s():<%lx-%x> " fmt,	\
> -		       __func__, in_interrupt(), in_atomic(),		\
> -		       ##__VA_ARGS__);					\
> -	}								\
> -} while (0)
> +	_rtl_dbg_trace(rtlpriv, comp, level,				\
> +		       KBUILD_MODNAME, fmt, ##__VA_ARGS__)
>
>   #define RTPRINT(rtlpriv, dbgtype, dbgflag, fmt, ...)			\
>   do {									\
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size
  2016-06-25 22:46 [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size Joe Perches
  2016-06-27  0:19 ` Larry Finger
@ 2016-06-28  0:53 ` Larry Finger
  2016-06-28  3:55   ` Joe Perches
  2016-07-08  9:55 ` Kalle Valo
  2 siblings, 1 reply; 6+ messages in thread
From: Larry Finger @ 2016-06-28  0:53 UTC (permalink / raw)
  To: Joe Perches, Chaoming Li; +Cc: Kalle Valo, linux-wireless, netdev, linux-kernel

On 06/25/2016 05:46 PM, Joe Perches wrote:
> This debugging macro can expand to a lot of code.
> Make it a function to reduce code size.
>
> (x86-64 defconfig w/ all rtlwifi drivers and allyesconfig)
> $ size drivers/net/wireless/realtek/rtlwifi/built-in.o*
>     text	   data	    bss	    dec	    hex	filename
>   900083	 200499	   1907	1102489	 10d299	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.new
> 1113597	 200499	   1907	1316003	 1414a3	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.old
> 1746879	 453503	   8512	2208894	 21b47e	drivers/net/wireless/realtek/rtlwifi/built-in.o.new
> 2051965	 503311	   8512	2563788	 271ecc	drivers/net/wireless/realtek/rtlwifi/built-in.o.old
>
> Signed-off-by: Joe Perches <joe@perches.com>

I acked this before; however there is a bug that breaks the build if 
CONFIG_RTLWIFI_DEBUG is not defined. The rest of the code calls 
_rtl_dbg_trace(), but that symbol is never defined. The problem can be fixed in 
debug.c or debug.h.

Larry

> ---
>   drivers/net/wireless/realtek/rtlwifi/debug.c | 25 +++++++++++++++++++++++++
>   drivers/net/wireless/realtek/rtlwifi/debug.h | 17 +++++++++--------
>   2 files changed, 34 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtlwifi/debug.c b/drivers/net/wireless/realtek/rtlwifi/debug.c
> index fd25aba..33905bb 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/debug.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/debug.c
> @@ -48,3 +48,28 @@ void rtl_dbgp_flag_init(struct ieee80211_hw *hw)
>   	/*Init Debug flag enable condition */
>   }
>   EXPORT_SYMBOL_GPL(rtl_dbgp_flag_init);
> +
> +#ifdef CONFIG_RTLWIFI_DEBUG
> +void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level,
> +		    const char *modname, const char *fmt, ...)
> +{
> +	if (unlikely((comp & rtlpriv->dbg.global_debugcomponents) &&
> +		     (level <= rtlpriv->dbg.global_debuglevel))) {
> +		struct va_format vaf;
> +		va_list args;
> +
> +		va_start(args, fmt);
> +
> +		vaf.fmt = fmt;
> +		vaf.va = &args;
> +
> +		printk(KERN_DEBUG "%s:%ps:<%lx-%x> %pV",
> +		       modname, __builtin_return_address(0),
> +		       in_interrupt(), in_atomic(),
> +		       &vaf);
> +
> +		va_end(args);
> +	}
> +}
> +EXPORT_SYMBOL_GPL(_rtl_dbg_trace);
> +#endif
> diff --git a/drivers/net/wireless/realtek/rtlwifi/debug.h b/drivers/net/wireless/realtek/rtlwifi/debug.h
> index fc794b3..6156a79 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/debug.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/debug.h
> @@ -174,15 +174,16 @@ do {									\
>   	}								\
>   } while (0)
>
> +
> +struct rtl_priv;
> +
> +__printf(5, 6)
> +void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level,
> +		    const char *modname, const char *fmt, ...);
> +
>   #define RT_TRACE(rtlpriv, comp, level, fmt, ...)			\
> -do {									\
> -	if (unlikely(((comp) & rtlpriv->dbg.global_debugcomponents) &&	\
> -		     ((level) <= rtlpriv->dbg.global_debuglevel))) {	\
> -		printk(KERN_DEBUG KBUILD_MODNAME ":%s():<%lx-%x> " fmt,	\
> -		       __func__, in_interrupt(), in_atomic(),		\
> -		       ##__VA_ARGS__);					\
> -	}								\
> -} while (0)
> +	_rtl_dbg_trace(rtlpriv, comp, level,				\
> +		       KBUILD_MODNAME, fmt, ##__VA_ARGS__)
>
>   #define RTPRINT(rtlpriv, dbgtype, dbgflag, fmt, ...)			\
>   do {									\
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size
  2016-06-28  0:53 ` Larry Finger
@ 2016-06-28  3:55   ` Joe Perches
  2016-06-28 14:19     ` Larry Finger
  0 siblings, 1 reply; 6+ messages in thread
From: Joe Perches @ 2016-06-28  3:55 UTC (permalink / raw)
  To: Larry Finger, Chaoming Li
  Cc: Kalle Valo, linux-wireless, netdev, linux-kernel

On Mon, 2016-06-27 at 19:53 -0500, Larry Finger wrote:
> On 06/25/2016 05:46 PM, Joe Perches wrote:
> > 
> > This debugging macro can expand to a lot of code.
> > Make it a function to reduce code size.
> > 
> > (x86-64 defconfig w/ all rtlwifi drivers and allyesconfig)
> > $ size drivers/net/wireless/realtek/rtlwifi/built-in.o*
> >     text	   data	    bss	    dec	    hex	filename
> >   900083	 200499	   1907	1102489	 10d299	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.new
> > 1113597	 200499	   1907	1316003	 1414a3	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.old
> > 1746879	 453503	   8512	2208894	 21b47e	drivers/net/wireless/realtek/rtlwifi/built-in.o.new
> > 2051965	 503311	   8512	2563788	 271ecc	drivers/net/wireless/realtek/rtlwifi/built-in.o.old
> > 
> > Signed-off-by: Joe Perches <joe@perches.com>
> I acked this before; however there is a bug that breaks the build if 
> CONFIG_RTLWIFI_DEBUG is not defined. The rest of the code calls 
> _rtl_dbg_trace(), but that symbol is never defined. The problem can be fixed in 
> debug.c or debug.h.

Confused a bit.  What breaks again?

debug.h:

#ifdef CONFIG_RTLWIFI_DEBUG
[]
__printf(5, 6)
void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level,
		    const char *modname, const char *fmt, ...);

#define RT_TRACE(rtlpriv, comp, level, fmt, ...)			\
	_rtl_dbg_trace(rtlpriv, comp, level,				\
		       KBUILD_MODNAME, fmt, ##__VA_ARGS__)
[]
#else
[]
__printf(4, 5)
static inline void RT_TRACE(struct rtl_priv *rtlpriv,
			    int comp, int level,
			    const char *fmt, ...)
{
}
[]
#endif

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size
  2016-06-28  3:55   ` Joe Perches
@ 2016-06-28 14:19     ` Larry Finger
  0 siblings, 0 replies; 6+ messages in thread
From: Larry Finger @ 2016-06-28 14:19 UTC (permalink / raw)
  To: Joe Perches, Chaoming Li; +Cc: Kalle Valo, linux-wireless, netdev, linux-kernel

On 06/27/2016 10:55 PM, Joe Perches wrote:
> On Mon, 2016-06-27 at 19:53 -0500, Larry Finger wrote:
>> On 06/25/2016 05:46 PM, Joe Perches wrote:
>>>
>>> This debugging macro can expand to a lot of code.
>>> Make it a function to reduce code size.
>>>
>>> (x86-64 defconfig w/ all rtlwifi drivers and allyesconfig)
>>> $ size drivers/net/wireless/realtek/rtlwifi/built-in.o*
>>>      text	   data	    bss	    dec	    hex	filename
>>>    900083	 200499	   1907	1102489	 10d299	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.new
>>> 1113597	 200499	   1907	1316003	 1414a3	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.old
>>> 1746879	 453503	   8512	2208894	 21b47e	drivers/net/wireless/realtek/rtlwifi/built-in.o.new
>>> 2051965	 503311	   8512	2563788	 271ecc	drivers/net/wireless/realtek/rtlwifi/built-in.o.old
>>>
>>> Signed-off-by: Joe Perches <joe@perches.com>
>> I acked this before; however there is a bug that breaks the build if
>> CONFIG_RTLWIFI_DEBUG is not defined. The rest of the code calls
>> _rtl_dbg_trace(), but that symbol is never defined. The problem can be fixed in
>> debug.c or debug.h.
>
> Confused a bit.  What breaks again?

Nothing breaks and your patch is OK. I had ported it to a GitHub repo of these 
drivers, which had a different debug.h. That led to the missing global when 
CONFIG_RTLWIFI_DEBUG was not defined. That has now been fixed.

Sorry for the confusion.

Larry

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size
  2016-06-25 22:46 [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size Joe Perches
  2016-06-27  0:19 ` Larry Finger
  2016-06-28  0:53 ` Larry Finger
@ 2016-07-08  9:55 ` Kalle Valo
  2 siblings, 0 replies; 6+ messages in thread
From: Kalle Valo @ 2016-07-08  9:55 UTC (permalink / raw)
  To: Joe Perches
  Cc: Larry Finger, Chaoming Li, linux-wireless, netdev, linux-kernel

Joe Perches <joe@perches.com> wrote:
> This debugging macro can expand to a lot of code.
> Make it a function to reduce code size.
> 
> (x86-64 defconfig w/ all rtlwifi drivers and allyesconfig)
> $ size drivers/net/wireless/realtek/rtlwifi/built-in.o*
>    text	   data	    bss	    dec	    hex	filename
>  900083	 200499	   1907	1102489	 10d299	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.new
> 1113597	 200499	   1907	1316003	 1414a3	drivers/net/wireless/realtek/rtlwifi/built-in.o.defconfig.old
> 1746879	 453503	   8512	2208894	 21b47e	drivers/net/wireless/realtek/rtlwifi/built-in.o.new
> 2051965	 503311	   8512	2563788	 271ecc	drivers/net/wireless/realtek/rtlwifi/built-in.o.old
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

Thanks, 1 patch applied to wireless-drivers-next.git:

9ce221915a94 rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size

-- 
Sent by pwcli
https://patchwork.kernel.org/patch/9198897/

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-07-08  9:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-25 22:46 [PATCH] rtlwifi: Create _rtl_dbg_trace function to reduce RT_TRACE code size Joe Perches
2016-06-27  0:19 ` Larry Finger
2016-06-28  0:53 ` Larry Finger
2016-06-28  3:55   ` Joe Perches
2016-06-28 14:19     ` Larry Finger
2016-07-08  9:55 ` Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).