On Tue, 2014-11-18 at 21:27 -0800, Mahesh Bandewar wrote: > On Tue, Nov 18, 2014 at 12:54 PM, David Miller wrote: > > > > From: Mahesh Bandewar > > Date: Sun, 16 Nov 2014 22:27:14 -0800 > > > > > +/* Define IPVL_DEBUG and set the appropriate dbg_level for debugging. */ > > > +#ifdef IPVL_DEBUG > > > +/* > > > + * 1 : non-datapath debugging > > > + * 2 : Custom > > > + * 3 : function enters and exists. > > > + * 4 : printk in data path (be careful!) > > > + */ > > > +#define IPVL_DBG_LEVEL 1 > > > +#define ipvlan_dbg(level, msg...) do { \ > > > + if (level <= IPVL_DBG_LEVEL) \ > > > + printk(KERN_DEBUG msg); \ > > > + } while (0) > > > +#else > > > +#define ipvlan_dbg(level, msg...) do { ; } while (0) > > > +#endif > > > > The day of having code use custom local debug logging facilities is long > > gone, please use a standard mechanism for this rather than home cooked > > reimplementations. > > > Do you mean pr_err() / pr_warn() / pr_debug() etc.? or something else? [...] There are also netdev_err() etc. for logging with a net device as context. You can use the netif_err(), netif_dbg() etc. functions and implement the ethtool {get,set}_msglevel operations to allow turning on and off broad classes of log messages. Finally, if CONFIG_DYNAMIC_DEBUG is enabled then debug logging messages can be turned on and off at run-time (individually or by function, file or module). Ben. -- Ben Hutchings Beware of bugs in the above code; I have only proved it correct, not tried it. - Donald Knuth