linux/Documentation/networking/netif-msg.txt
<<
>>
Prefs
   1
   2________________
   3NETIF Msg Level
   4
   5The design of the network interface message level setting.
   6
   7History
   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
  64The 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
  79
  80
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.