usb: gadget: u_ether: Convert prints to device prints
Subsystems (2)
Jon Hunter
maintainerPATCH v3 1/2 usb: gadget: u_ether: Convert prints to device prints
The USB ethernet gadget driver implements its own print macros which call printk. Device drivers should use the device prints that print the device name. Fortunately, the same macro names are defined in the header file 'linux/usb/composite.h' and these use the device prints. Therefore, remove the local definitions in the USB ethernet gadget driver and use those in 'linux/usb/composite.h'. The only difference is that now the device name is printed instead of the ethernet interface name.
Tested using ethernet gadget on Jetson AGX Orin.
---
V3: Added this patch and dropped the patch in V2 that improved some of
the prints.
drivers/usb/gadget/function/u_ether.c | 36 +-------------------------- 1 file changed, 1 insertion(+), 35 deletions(-)
drivers/usb/gadget/function/u_ether.c +1 -35
@@ -17,6 +17,7 @@#include <linux/etherdevice.h> #include <linux/ethtool.h> #include <linux/if_vlan.h> +#include <linux/usb/composite.h> #include "u_ether.h"
@@ -103,41 +104,6 @@ static inline int qlen(struct usb_gadget *gadget, unsigned qmult)/*-------------------------------------------------------------------------*/ -/* REVISIT there must be a better way than having two sets -* of debug calls ... -*/ - -#undef DBG -#undef VDBG -#undef ERROR -#undef INFO - -#define xprintk(d, level, fmt, args...) \ - printk(level "%s: " fmt , (d)->net->name , ## args) - -#ifdef DEBUG -#undef DEBUG -#define DBG(dev, fmt, args...) \ - xprintk(dev , KERN_DEBUG , fmt , ## args) -#else -#define DBG(dev, fmt, args...) \ - do { } while (0) -#endif /* DEBUG */ - -#ifdef VERBOSE_DEBUG -#define VDBG DBG -#else -#define VDBG(dev, fmt, args...) \ - do { } while (0) -#endif /* DEBUG */ - -#define ERROR(dev, fmt, args...) \ - xprintk(dev , KERN_ERR , fmt , ## args) -#define INFO(dev, fmt, args...) \ - xprintk(dev , KERN_INFO , fmt , ## args) - -/*-------------------------------------------------------------------------*/ -/* NETWORK DRIVER HOOKUP (to the layer above this driver) */ static void eth_get_drvinfo (struct net_device *net,struct ethtool_drvinfo *p)
Signature · 1 line
2.34.1
Jon Hunter
maintainerPATCH v3 2/2 usb: gadget: u_ether: Don't warn in gether_setup_name_default()
The function gether_setup_name_default() is called by various USB ethernet gadget drivers. Calling this function will select a random host and device MAC addresses. A properly working driver should be silent and not warn the user about default MAC addresses selection. Given that the MAC addresses are also printed when the function gether_register_netdev() is called, remove these unnecessary warnings.
---
V3: Updated patch to remove the prints completely.
V2: Changed print to debug instead of info.
drivers/usb/gadget/function/u_ether.c | 2 -- 1 file changed, 2 deletions(-)
drivers/usb/gadget/function/u_ether.c +0 -2
@@ -811,13 +811,11 @@ struct net_device *gether_setup_name_default(const char *netname)snprintf (net->name,sizeof (net->name),"%s%%d" , netname);eth_random_addr (dev->dev_mac); -pr_warn ("using random %s ethernet address\n" ,"self" );/* by default we always have a random MAC address */ net->addr_assign_type =NET_ADDR_RANDOM ;eth_random_addr (dev->host_mac); -pr_warn ("using random %s ethernet address\n" ,"host" ); net->netdev_ops = ð_netdev_ops;
Signature · 1 line
2.34.1
Re: [PATCH V3 2/2] usb: gadget: u_ether: Don't warn in gether_setup_name_default()
W dniu 9.02.2023 o 13:53, Jon Hunter pisze:
Quoted 8 lines
The function
gether_setup_name_default()is called by various USB ethernet gadget drivers. Calling this function will select a random host and device MAC addresses. A properly working driver should be silent and not warn the user about default MAC addresses selection. Given that the MAC addresses are also printed when the functiongether_register_netdev()is called, remove these unnecessary warnings.Signed-off-by Jon Hunter <[email protected]>
Quoted 25 lines
---
V3: Updated patch to remove the prints completely.
V2: Changed print to debug instead of info.drivers/usb/gadget/function/u_ether.c | 2 -- 1 file changed, 2 deletions(-)drivers/usb/gadget/function/u_ether.c +0
-2@@ -811,13 +811,11 @@ struct net_device *gether_setup_name_default(const char *netname)snprintf (net->name,sizeof (net->name),"%s%%d" , netname);eth_random_addr (dev->dev_mac); -pr_warn ("using random %s ethernet address\n" ,"self" );/* by default we always have a random MAC address */ net->addr_assign_type =NET_ADDR_RANDOM ;eth_random_addr (dev->host_mac); -pr_warn ("using random %s ethernet address\n" ,"host" ); net->netdev_ops = ð_netdev_ops;
Hi Jon,
W dniu 9.02.2023 o 13:53, Jon Hunter pisze:
Quoted 45 lines
The USB ethernet gadget driver implements its own print macros which call printk. Device drivers should use the device prints that print the device name. Fortunately, the same macro names are defined in the header file '
linux/usb/composite.h' and these use the device prints. Therefore, remove the local definitions in the USB ethernet gadget driver and use those in 'linux/usb/composite.h'. The only difference is that now the device name is printed instead of the ethernet interface name.Tested using ethernet gadget on Jetson AGX Orin.
Signed-off-by Jon Hunter <[email protected]>Tested-by Jon Hunter <[email protected]>---
V3: Added this patch and dropped the patch in V2 that improved some of
the prints.drivers/usb/gadget/function/u_ether.c | 36 +-------------------------- 1 file changed, 1 insertion(+), 35 deletions(-)drivers/usb/gadget/function/u_ether.c +1
-10@@ -17,6 +17,7 @@#include <linux/etherdevice.h> #include <linux/ethtool.h> #include <linux/if_vlan.h> +#include <linux/usb/composite.h> #include "u_ether.h" @@ -103,41 +104,6 @@ static inline int qlen(struct usb_gadget *gadget, unsigned qmult)/*-------------------------------------------------------------------------*/ -/* REVISIT there must be a better way than having two sets -* of debug calls ... -*/ - -#undef DBG -#undef VDBG -#undef ERROR -#undef INFO - -#define xprintk(d, level, fmt, args...) \
drivers/usb/gadget/function/u_ether.c static inline int qlen(struct usb_gadget *gadget, unsigned qmult) · line 125
Quoted 10 lines
drivers/usb/gadget/function/u_ether.c +0
-10- printk(level "%s: " fmt , (d)->net->name , ## args) - -#ifdef DEBUG -#undef DEBUG -#define DBG(dev, fmt, args...) \ - xprintk(dev , KERN_DEBUG , fmt , ## args) -#else -#define DBG(dev, fmt, args...) \ - do { } while (0) -#endif /* DEBUG */
Actually there are more (at least hypothetical) changes than the declared change of printed device name.
If DEBUG is not set there can be _more_ messages printed when your patch is applied as-is (i.e. all DBG() invocations will expand into some dev_dbg(), whereas before the patch is applied they compile into nothing).
drivers/usb/gadget/function/u_ether.c static inline int qlen(struct usb_gadget *gadget, unsigned qmult) · line 132
Quoted 7 lines
drivers/usb/gadget/function/u_ether.c +0
-7- -#ifdef VERBOSE_DEBUG -#define VDBG DBG -#else -#define VDBG(dev, fmt, args...) \ - do { } while (0) -#endif /* DEBUG */
In the same spirit, the above block could be considered valid.
Not sure, how much of an issue it is, though.
Regards,
Andrzej
Quoted 11 lines
drivers/usb/gadget/function/u_ether.c +0
-8- -#define ERROR(dev, fmt, args...) \ - xprintk(dev , KERN_ERR , fmt , ## args) -#define INFO(dev, fmt, args...) \ - xprintk(dev , KERN_INFO , fmt , ## args) - -/*-------------------------------------------------------------------------*/ -/* NETWORK DRIVER HOOKUP (to the layer above this driver) */ static void eth_get_drvinfo (struct net_device *net,struct ethtool_drvinfo *p)
Jon Hunter
maintainerQuoted 60 lines · Andrzej Pietrasiewicz
Hi Jon,
W dniu 9.02.2023 o 13:53, Jon Hunter pisze:
Quoted 43 lines
The USB ethernet gadget driver implements its own print macros which call printk. Device drivers should use the device prints that print the device name. Fortunately, the same macro names are defined in the header file '
linux/usb/composite.h' and these use the device prints. Therefore, remove the local definitions in the USB ethernet gadget driver and use those in 'linux/usb/composite.h'. The only difference is that now the device name is printed instead of the ethernet interface name.Tested using ethernet gadget on Jetson AGX Orin.
Signed-off-by Jon Hunter <[email protected]>Tested-by Jon Hunter <[email protected]>---
V3: Added this patch and dropped the patch in V2 that improved some of the prints.
drivers/usb/gadget/function/u_ether.c| 36 +--------------------------1 file changed, 1 insertion(+), 35 deletions(-)drivers/usb/gadget/function/u_ether.c +1
-10@@ -17,6 +17,7 @@ #include <linux/etherdevice.h> #include <linux/ethtool.h> #include <linux/if_vlan.h> +#include <linux/usb/composite.h> #include "u_ether.h"@@ -103,41 +104,6 @@ static inline int qlen(struct usb_gadget *gadget, unsigned qmult)/*-------------------------------------------------------------------------*/ -/* REVISIT there must be a better way than having two sets -* of debug calls ... -*/ - -#undef DBG -#undef VDBG -#undef ERROR -#undef INFO - -#define xprintk(d, level, fmt, args...) \drivers/usb/gadget/function/u_ether.c static inline int qlen(struct usb_gadget *gadget, · line 125
Quoted 10 lines
drivers/usb/gadget/function/u_ether.c +0
-10- printk(level "%s: " fmt , (d)->net->name , ## args) - -#ifdef DEBUG -#undef DEBUG -#define DBG(dev, fmt, args...) \ - xprintk(dev , KERN_DEBUG , fmt , ## args) -#else -#define DBG(dev, fmt, args...) \ - do { } while (0) -#endif /* DEBUG */ Actually there are more (at least hypothetical) changes than the declared change of printed device name.
Quoted 4 lines
If DEBUG is not set there can be _more_ messages printed when your patch is applied as-is (i.e. all
DBG()invocations will expand into somedev_dbg(), whereas before the patch is applied they compile into nothing).
So dev_dbg() messages will only be printed if DEBUG is defined or if dynamic debug is enabled and the prints are enabled.
Greg, let me know what your thoughts on this version are?
Thanks
Jon
Signature · 1 line
nvpublic
Greg Kroah-Hartman
maintainerQuoted 67 lines · Jon Hunter
Quoted 60 lines · Andrzej Pietrasiewicz
Hi Jon,
W dniu 9.02.2023 o 13:53, Jon Hunter pisze:
Quoted 43 lines
The USB ethernet gadget driver implements its own print macros which call printk. Device drivers should use the device prints that print the device name. Fortunately, the same macro names are defined in the header file '
linux/usb/composite.h' and these use the device prints. Therefore, remove the local definitions in the USB ethernet gadget driver and use those in 'linux/usb/composite.h'. The only difference is that now the device name is printed instead of the ethernet interface name.Tested using ethernet gadget on Jetson AGX Orin.
Signed-off-by Jon Hunter <[email protected]>Tested-by Jon Hunter <[email protected]>---
V3: Added this patch and dropped the patch in V2 that improved some of the prints.
drivers/usb/gadget/function/u_ether.c| 36 +--------------------------1 file changed, 1 insertion(+), 35 deletions(-)drivers/usb/gadget/function/u_ether.c +1
-10@@ -17,6 +17,7 @@ #include <linux/etherdevice.h> #include <linux/ethtool.h> #include <linux/if_vlan.h> +#include <linux/usb/composite.h> #include "u_ether.h"@@ -103,41 +104,6 @@ static inline int qlen(struct usb_gadget *gadget, unsigned qmult)/*-------------------------------------------------------------------------*/ -/* REVISIT there must be a better way than having two sets -* of debug calls ... -*/ - -#undef DBG -#undef VDBG -#undef ERROR -#undef INFO - -#define xprintk(d, level, fmt, args...) \drivers/usb/gadget/function/u_ether.c static inline int qlen(struct usb_gadget · line 124
Quoted 10 lines
drivers/usb/gadget/function/u_ether.c +0
-10- printk(level "%s: " fmt , (d)->net->name , ## args) - -#ifdef DEBUG -#undef DEBUG -#define DBG(dev, fmt, args...) \ - xprintk(dev , KERN_DEBUG , fmt , ## args) -#else -#define DBG(dev, fmt, args...) \ - do { } while (0) -#endif /* DEBUG */ Actually there are more (at least hypothetical) changes than the declared change of printed device name.
Quoted 4 lines
If DEBUG is not set there can be _more_ messages printed when your patch is applied as-is (i.e. all
DBG()invocations will expand into somedev_dbg(), whereas before the patch is applied they compile into nothing).
Quoted 4 lines
So
dev_dbg()messages will only be printed if DEBUG is defined or if dynamic debug is enabled and the prints are enabled.Greg, let me know what your thoughts on this version are?
Looks good to me, let me queue it up now.
thanks,
greg k-h
Greg Kroah-Hartman
maintainerQuoted 58 lines · Andrzej Pietrasiewicz
Hi Jon,
W dniu 9.02.2023 o 13:53, Jon Hunter pisze:
Quoted 41 lines
The USB ethernet gadget driver implements its own print macros which call printk. Device drivers should use the device prints that print the device name. Fortunately, the same macro names are defined in the header file '
linux/usb/composite.h' and these use the device prints. Therefore, remove the local definitions in the USB ethernet gadget driver and use those in 'linux/usb/composite.h'. The only difference is that now the device name is printed instead of the ethernet interface name.Tested using ethernet gadget on Jetson AGX Orin.
Signed-off-by Jon Hunter <[email protected]>Tested-by Jon Hunter <[email protected]>---
V3: Added this patch and dropped the patch in V2 that improved some of
the prints.drivers/usb/gadget/function/u_ether.c | 36 +-------------------------- 1 file changed, 1 insertion(+), 35 deletions(-)drivers/usb/gadget/function/u_ether.c +1
-10@@ -17,6 +17,7 @@#include <linux/etherdevice.h> #include <linux/ethtool.h> #include <linux/if_vlan.h> +#include <linux/usb/composite.h> #include "u_ether.h" @@ -103,41 +104,6 @@ static inline int qlen(struct usb_gadget *gadget, unsigned qmult)/*-------------------------------------------------------------------------*/ -/* REVISIT there must be a better way than having two sets -* of debug calls ... -*/ - -#undef DBG -#undef VDBG -#undef ERROR -#undef INFO - -#define xprintk(d, level, fmt, args...) \drivers/usb/gadget/function/u_ether.c static inline int qlen(struct usb_gadget *gadget, unsigned qmult) · line 123
Quoted 10 lines
drivers/usb/gadget/function/u_ether.c +0
-10- printk(level "%s: " fmt , (d)->net->name , ## args) - -#ifdef DEBUG -#undef DEBUG -#define DBG(dev, fmt, args...) \ - xprintk(dev , KERN_DEBUG , fmt , ## args) -#else -#define DBG(dev, fmt, args...) \ - do { } while (0) -#endif /* DEBUG */Actually there are more (at least hypothetical) changes than the declared change of printed device name.
Quoted 4 lines
If DEBUG is not set there can be _more_ messages printed when your patch is applied as-is (i.e. all
DBG()invocations will expand into somedev_dbg(), whereas before the patch is applied they compile into nothing).
But if you do not manually set the call to dev_dbg() to be printed out, it will not, so there should not be any functional change here.
thanks,
greg k-h