diff -Naur linux.org/include/linux/netdevice.h linux.netdev_printk.patched/include/linux/netdevice.h --- linux.org/include/linux/netdevice.h Fri May 23 21:35:22 2003 +++ linux.netdev_printk.patched/include/linux/netdevice.h Fri May 23 21:35:22 2003 @@ -444,6 +444,9 @@ struct divert_blk *divert; #endif /* CONFIG_NET_DIVERT */ + /* NETIF_MSG_* flags to control the types of events we log */ + int msg_enable; + /* generic object representation */ struct kobject kobj; }; @@ -708,6 +711,8 @@ NETIF_MSG_PKTDATA = 0x1000, NETIF_MSG_HW = 0x2000, NETIF_MSG_WOL = 0x4000, + NETIF_MSG_ALL = -1, /* always log message */ + NETIF_MSG_ = -1 /* always log message */ }; #define netif_msg_drv(p) ((p)->msg_enable & NETIF_MSG_DRV) @@ -835,6 +840,35 @@ extern void dev_clear_fastroute(struct net_device *dev); #endif +/* debugging and troubleshooting/diagnostic helpers. */ +/** + * netdev_printk() - Log message with interface name, driver name, bus ID. + * @sevlevel: severity level -- e.g., KERN_INFO + * @netdev: net_device pointer + * @msglevel: a standard message-level flag with the NETIF_MSG_ prefix removed. + * Unless msglevel is NETIF_MSG_ALL, or omitted, log the message only if + * that flag is set in netdev->msg_enable. + * @format: as with printk + * @args: as with printk + */ +#define netdev_printk(sevlevel, netdev, msglevel, format, arg...) \ + (void) ( (NETIF_MSG_##msglevel == NETIF_MSG_ALL \ + || ((netdev)->msg_enable & NETIF_MSG_##msglevel)) && \ + printk(sevlevel "%s: " format , (netdev)->name , ## arg) ) + +#ifdef DEBUG +#define netdev_dbg(netdev, msglevel, format, arg...) \ + netdev_printk(KERN_DEBUG , netdev , msglevel , format , ## arg) +#else +#define netdev_dbg(netdev, msglevel, format, arg...) do {} while (0) +#endif + +#define netdev_err(netdev, msglevel, format, arg...) \ + netdev_printk(KERN_ERR , netdev , msglevel , format , ## arg) +#define netdev_info(netdev, msglevel, format, arg...) \ + netdev_printk(KERN_INFO , netdev , msglevel , format , ## arg) +#define netdev_warn(netdev, msglevel, format, arg...) \ + netdev_printk(KERN_WARNING , netdev , msglevel , format , ## arg) #endif /* __KERNEL__ */