Revision 5885b9b3f030f9b430f6b1c7fa396c885033f2f8 authored by Linus Torvalds on 16 December 2011, 19:14:42 UTC, committed by Linus Torvalds on 16 December 2011, 19:14:42 UTC
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: HDA: Use LPIB Position fix for Intel SCH Poulsbo
  ALSA: hda: fix mute led polarity for HP laptops with buggy BIOS
  ALSA: HDA: Set position fix to LPIB for an Atom/Poulsbo based device
  ASoC: Fix hx4700 error handling to free gpios if snd_soc_register_card fails
  ASoC: WM8958: correctly show firmware magic on mismatch
  ASoC: mxs: Add appropriate MODULE_ALIAS()
  ASoC: mxs: Add missing MODULE_LICENSE("GPL")
  ASoC: Fix WM8996 24.576MHz clock operation
  ASoC: Include linux/module.h for smdk2443_wm9710
  ASoC: Fix a typo in jive_wm8750
  ASoC: Fix build dependency for SND_SOC_JZ4740_CODEC
  ASoC: Include linux/io.h for jz4740 codec
2 parent s 1c5ff0f + 844ec31
Raw File
netif-msg.txt

________________
NETIF Msg Level

The design of the network interface message level setting.

History

 The design of the debugging message interface was guided and
 constrained by backwards compatibility previous practice.  It is useful
 to understand the history and evolution in order to understand current
 practice and relate it to older driver source code.

 From the beginning of Linux, each network device driver has had a local
 integer variable that controls the debug message level.  The message
 level ranged from 0 to 7, and monotonically increased in verbosity.

 The message level was not precisely defined past level 3, but were
 always implemented within +-1 of the specified level.  Drivers tended
 to shed the more verbose level messages as they matured.
    0  Minimal messages, only essential information on fatal errors.
    1  Standard messages, initialization status.  No run-time messages
    2  Special media selection messages, generally timer-driver.
    3  Interface starts and stops, including normal status messages
    4  Tx and Rx frame error messages, and abnormal driver operation
    5  Tx packet queue information, interrupt events.
    6  Status on each completed Tx packet and received Rx packets
    7  Initial contents of Tx and Rx packets

 Initially this message level variable was uniquely named in each driver
 e.g. "lance_debug", so that a kernel symbolic debugger could locate and
 modify the setting.  When kernel modules became common, the variables
 were consistently renamed to "debug" and allowed to be set as a module
 parameter.

 This approach worked well.  However there is always a demand for
 additional features.  Over the years the following emerged as
 reasonable and easily implemented enhancements
   Using an ioctl() call to modify the level.
   Per-interface rather than per-driver message level setting.
   More selective control over the type of messages emitted.

 The netif_msg recommendation adds these features with only a minor
 complexity and code size increase.

 The recommendation is the following points
    Retaining the per-driver integer variable "debug" as a module
    parameter with a default level of '1'.

    Adding a per-interface private variable named "msg_enable".  The
    variable is a bit map rather than a level, and is initialized as
       1 << debug
    Or more precisely
        debug < 0 ? 0 : 1 << min(sizeof(int)-1, debug)

    Messages should changes from
      if (debug > 1)
           printk(MSG_DEBUG "%s: ...
    to
      if (np->msg_enable & NETIF_MSG_LINK)
           printk(MSG_DEBUG "%s: ...


The set of message levels is named
  Old level   Name   Bit position
    0    NETIF_MSG_DRV		0x0001
    1    NETIF_MSG_PROBE	0x0002
    2    NETIF_MSG_LINK		0x0004
    2    NETIF_MSG_TIMER	0x0004
    3    NETIF_MSG_IFDOWN	0x0008
    3    NETIF_MSG_IFUP		0x0008
    4    NETIF_MSG_RX_ERR	0x0010
    4    NETIF_MSG_TX_ERR	0x0010
    5    NETIF_MSG_TX_QUEUED	0x0020
    5    NETIF_MSG_INTR		0x0020
    6    NETIF_MSG_TX_DONE	0x0040
    6    NETIF_MSG_RX_STATUS	0x0040
    7    NETIF_MSG_PKTDATA	0x0080

back to top