По следующей ссылке http://pastebin.com/raw/WKyEQAUp
NETIF Msg Level
Дизайн настройки уровня сообщения сетевого интерфейса.
история
Дизайн интерфейса сообщения отладки руководствовался и ограничивался предыдущей практикой обратной совместимости. Полезно понять историю и эволюцию, чтобы понять текущую практику и связать ее с более старым исходным кодом драйвера.
С самого начала Linux у каждого драйвера сетевого устройства была локальная целочисленная переменная, которая контролирует уровень сообщения отладки. Уровень сообщения варьировался от 0 до 7 и монотонно увеличивался в многословности.
Уровень сообщения не был точно определен после уровня 3, но всегда был реализован в пределах +-1 от указанного уровня. Уход за водителями
чтобы пролить более подробные сообщения уровня, как они созрели.
0 Минимальные сообщения, только важная информация о фатальных ошибках.
1 Стандартные сообщения, статус инициализации. Нет сообщений во время выполнения
2 Специальные сообщения выбора носителя, как правило, таймер-драйвер.
3 Интерфейс запускается и останавливается, включая обычные сообщения о состоянии
4 сообщения об ошибках кадра Tx и Rx и ненормальная работа драйвера
5 Информация о очереди пакетов Tx, события прерывания.
6 Состояние каждого завершенного пакета Tx и полученных пакетов Rx
7 Начальное содержимое пакетов Tx и Rx
Первоначально эта переменная уровня сообщения была уникально названа в каждом драйвере, например, "lance_debug", чтобы символический отладчик ядра мог найти и изменить параметр. Когда модули ядра стали общепринятыми, переменные были последовательно переименованы в "debug" и их можно было установить в качестве параметра модуля.
Этот подход работал хорошо. Однако всегда есть спрос на дополнительные функции. За прошедшие годы следующее стало разумным и легко реализуемым улучшением Использование вызова ioctl() для изменения уровня.
Настройка уровня сообщения для каждого интерфейса, а не для драйвера.
Более избирательный контроль над типом отправляемых сообщений.
Рекомендация netif_msg добавляет эти функции с незначительной сложностью и увеличением размера кода.
Рекомендуется следующее: сохранить целочисленную переменную для каждого драйвера "debug" в качестве параметра модуля с уровнем по умолчанию "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