About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / networking / netif-msg.txt




Custom Search

Based on kernel version 3.15.4. Page generated on 2014-07-07 09:04 EST.

1	
2	________________
3	NETIF Msg Level
4	
5	The design of the network interface message level setting.
6	
7	History
8	
9	 The design of the debugging message interface was guided and
10	 constrained by backwards compatibility previous practice.  It is useful
11	 to understand the history and evolution in order to understand current
12	 practice and relate it to older driver source code.
13	
14	 From the beginning of Linux, each network device driver has had a local
15	 integer variable that controls the debug message level.  The message
16	 level ranged from 0 to 7, and monotonically increased in verbosity.
17	
18	 The message level was not precisely defined past level 3, but were
19	 always implemented within +-1 of the specified level.  Drivers tended
20	 to shed the more verbose level messages as they matured.
21	    0  Minimal messages, only essential information on fatal errors.
22	    1  Standard messages, initialization status.  No run-time messages
23	    2  Special media selection messages, generally timer-driver.
24	    3  Interface starts and stops, including normal status messages
25	    4  Tx and Rx frame error messages, and abnormal driver operation
26	    5  Tx packet queue information, interrupt events.
27	    6  Status on each completed Tx packet and received Rx packets
28	    7  Initial contents of Tx and Rx packets
29	
30	 Initially this message level variable was uniquely named in each driver
31	 e.g. "lance_debug", so that a kernel symbolic debugger could locate and
32	 modify the setting.  When kernel modules became common, the variables
33	 were consistently renamed to "debug" and allowed to be set as a module
34	 parameter.
35	
36	 This approach worked well.  However there is always a demand for
37	 additional features.  Over the years the following emerged as
38	 reasonable and easily implemented enhancements
39	   Using an ioctl() call to modify the level.
40	   Per-interface rather than per-driver message level setting.
41	   More selective control over the type of messages emitted.
42	
43	 The netif_msg recommendation adds these features with only a minor
44	 complexity and code size increase.
45	
46	 The recommendation is the following points
47	    Retaining the per-driver integer variable "debug" as a module
48	    parameter with a default level of '1'.
49	
50	    Adding a per-interface private variable named "msg_enable".  The
51	    variable is a bit map rather than a level, and is initialized as
52	       1 << debug
53	    Or more precisely
54	        debug < 0 ? 0 : 1 << min(sizeof(int)-1, debug)
55	
56	    Messages should changes from
57	      if (debug > 1)
58	           printk(MSG_DEBUG "%s: ...
59	    to
60	      if (np->msg_enable & NETIF_MSG_LINK)
61	           printk(MSG_DEBUG "%s: ...
62	
63	
64	The set of message levels is named
65	  Old level   Name   Bit position
66	    0    NETIF_MSG_DRV		0x0001
67	    1    NETIF_MSG_PROBE	0x0002
68	    2    NETIF_MSG_LINK		0x0004
69	    2    NETIF_MSG_TIMER	0x0004
70	    3    NETIF_MSG_IFDOWN	0x0008
71	    3    NETIF_MSG_IFUP		0x0008
72	    4    NETIF_MSG_RX_ERR	0x0010
73	    4    NETIF_MSG_TX_ERR	0x0010
74	    5    NETIF_MSG_TX_QUEUED	0x0020
75	    5    NETIF_MSG_INTR		0x0020
76	    6    NETIF_MSG_TX_DONE	0x0040
77	    6    NETIF_MSG_RX_STATUS	0x0040
78	    7    NETIF_MSG_PKTDATA	0x0080
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.