€•½jŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ(/translations/zh_CN/networking/netif-msg”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/zh_TW/networking/netif-msg”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/it_IT/networking/netif-msg”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/ja_JP/networking/netif-msg”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/ko_KR/networking/netif-msg”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/pt_BR/networking/netif-msg”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/sp_SP/networking/netif-msg”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒB/var/lib/git/docbuild/linux/Documentation/networking/netif-msg.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒNETIF Msg Level”h]”hŒNETIF Msg Level”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ:The design of the network interface message level setting.”h]”hŒ:The design of the network interface message level setting.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒHistory”h]”hŒHistory”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhíh²hh³hÇh´K ubhŒ block_quote”“”)�”}”(hX· 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: ... ”h]”(hÞ)�”}”(hŒÿ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.”h]”hŒÿ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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hjubhÞ)�”}”(hŒÐ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.”h]”hŒÐ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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjubhÞ)�”}”(hŒÁ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.”h]”hŒÁ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.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubhÿ)�”}”(hXë- 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 ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ@0 Minimal messages, only essential information on fatal errors.”h]”hÞ)�”}”(hj;h]”hŒ@0 Minimal messages, only essential information on fatal errors.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubj8)�”}”(hŒB1 Standard messages, initialization status. No run-time messages”h]”hÞ)�”}”(hjRh]”hŒB1 Standard messages, initialization status. No run-time messages”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubj8)�”}”(hŒ<2 Special media selection messages, generally timer-driver.”h]”hÞ)�”}”(hjih]”hŒ<2 Special media selection messages, generally timer-driver.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubj8)�”}”(hŒ?3 Interface starts and stops, including normal status messages”h]”hÞ)�”}”(hj€h]”hŒ?3 Interface starts and stops, including normal status messages”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubj8)�”}”(hŒ@4 Tx and Rx frame error messages, and abnormal driver operation”h]”hÞ)�”}”(hj—h]”hŒ@4 Tx and Rx frame error messages, and abnormal driver operation”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubj8)�”}”(hŒ15 Tx packet queue information, interrupt events.”h]”hÞ)�”}”(hj®h]”hŒ15 Tx packet queue information, interrupt events.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubj8)�”}”(hŒ=6 Status on each completed Tx packet and received Rx packets”h]”hÞ)�”}”(hjÅh]”hŒ=6 Status on each completed Tx packet and received Rx packets”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubj8)�”}”(hŒ)7 Initial contents of Tx and Rx packets ”h]”hÞ)�”}”(hŒ(7 Initial contents of Tx and Rx packets”h]”hŒ(7 Initial contents of Tx and Rx packets”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j2h³hÇh´Khj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþh³hÇh´KhjubhÞ)�”}”(hX'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.”h]”hX/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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K"hjubhÞ)�”}”(hŒ­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”h]”hŒ­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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hjubhÿ)�”}”(hŒ§- 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. ”h]”j3)�”}”(hhh]”(j8)�”}”(hŒ*Using an ioctl() call to modify the level.”h]”hÞ)�”}”(hj%h]”hŒ*Using an ioctl() call to modify the level.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K,hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj ubj8)�”}”(hŒ;Per-interface rather than per-driver message level setting.”h]”hÞ)�”}”(hj<h]”hŒ;Per-interface rather than per-driver message level setting.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj ubj8)�”}”(hŒ:More selective control over the type of messages emitted. ”h]”hÞ)�”}”(hŒ9More selective control over the type of messages emitted.”h]”hŒ9More selective control over the type of messages emitted.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj ubeh}”(h]”h ]”h"]”h$]”h&]”jøjùuh1j2h³hÇh´K,hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþh³hÇh´K,hjubhÞ)�”}”(hŒeThe netif_msg recommendation adds these features with only a minor complexity and code size increase.”h]”hŒeThe netif_msg recommendation adds these features with only a minor complexity and code size increase.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hjubhÞ)�”}”(hŒ*The recommendation is the following points”h]”hŒ*The recommendation is the following points”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hjubhÿ)�”}”(hXÿ- 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: ... ”h]”j3)�”}”(hhh]”(j8)�”}”(hŒeRetaining the per-driver integer variable "debug" as a module parameter with a default level of '1'. ”h]”hÞ)�”}”(hŒdRetaining the per-driver integer variable "debug" as a module parameter with a default level of '1'.”h]”hŒlRetaining the per-driver integer variable “debugâ€� as a module parameter with a default level of ‘1’.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K5hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj•ubj8)�”}”(hXAdding 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: ... ”h]”(hÞ)�”}”(hŒƒAdding a per-interface private variable named "msg_enable". The variable is a bit map rather than a level, and is initialized as::”h]”hŒ†Adding a per-interface private variable named “msg_enableâ€�. The variable is a bit map rather than a level, and is initialized as:”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K8hj°ubhŒ literal_block”“”)�”}”(hŒ 1 << debug”h]”hŒ 1 << debug”…”�”}”hjÄsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÂh³hÇh´K;hj°ubhÞ)�”}”(hŒOr more precisely::”h]”hŒOr more precisely:”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K=hj°ubjÃ)�”}”(hŒ.debug < 0 ? 0 : 1 << min(sizeof(int)-1, debug)”h]”hŒ.debug < 0 ? 0 : 1 << min(sizeof(int)-1, debug)”…”�”}”hjàsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÂh³hÇh´K?hj°ubhÞ)�”}”(hŒMessages should changes from::”h]”hŒMessages should changes from:”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KAhj°ubjÃ)�”}”(hŒ-if (debug > 1) printk(MSG_DEBUG "%s: ...”h]”hŒ-if (debug > 1) printk(MSG_DEBUG "%s: ...”…”�”}”hjüsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÂh³hÇh´KChj°ubhÞ)�”}”(hŒto::”h]”hŒto:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KFhj°ubjÃ)�”}”(hŒCif (np->msg_enable & NETIF_MSG_LINK) printk(MSG_DEBUG "%s: ...”h]”hŒCif (np->msg_enable & NETIF_MSG_LINK) printk(MSG_DEBUG "%s: ...”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÂh³hÇh´KHhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j7hj•ubeh}”(h]”h ]”h"]”h$]”h&]”jøjùuh1j2h³hÇh´K5hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþh³hÇh´K5hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþh³hÇh´K hhíh²hubhÞ)�”}”(hŒ"The set of message levels is named”h]”hŒ"The set of message levels is named”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KLhhíh²hubhÿ)�”}”(hX========= =================== ============ 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 ========= =================== ============”h]”hŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jZhjWubj[)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jZhjWubj[)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jZhjWubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒ Old level”h]”hŒ Old level”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj�ubj…)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj�ubj…)�”}”(hhh]”hÞ)�”}”(hŒ Bit position”h]”hŒ Bit position”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhjWubhŒtbody”“”)�”}”(hhh]”(j€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ0”h]”hŒ0”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjÜubj…)�”}”(hhh]”hÞ)�”}”(hŒ NETIF_MSG_DRV”h]”hŒ NETIF_MSG_DRV”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjÜubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0001”h]”hŒ0x0001”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ1”h]”hŒ1”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KShj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj*ubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_PROBE”h]”hŒNETIF_MSG_PROBE”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KShjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj*ubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0002”h]”hŒ0x0002”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KShj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ2”h]”hŒ2”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KThj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjxubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_LINK”h]”hŒNETIF_MSG_LINK”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KThj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjxubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0004”h]”hŒ0x0004”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KThj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hj€h]”hŒ2”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KUhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjÆubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_TIMER”h]”hŒNETIF_MSG_TIMER”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KUhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjÆubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0004”h]”hŒ0x0004”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KUhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ3”h]”hŒ3”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_IFDOWN”h]”hŒNETIF_MSG_IFDOWN”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0008”h]”hŒ0x0008”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hjh]”hŒ3”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KWhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjaubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_IFUP”h]”hŒNETIF_MSG_IFUP”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KWhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjaubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0008”h]”hŒ0x0008”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KWhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ4”h]”hŒ4”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj®ubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_RX_ERR”h]”hŒNETIF_MSG_RX_ERR”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj®ubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0010”h]”hŒ0x0010”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hj¶h]”hŒ4”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KYhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjüubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_TX_ERR”h]”hŒNETIF_MSG_TX_ERR”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjüubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0010”h]”hŒ0x0010”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KYhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ5”h]”hŒ5”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KZhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjIubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_TX_QUEUED”h]”hŒNETIF_MSG_TX_QUEUED”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KZhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjIubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0020”h]”hŒ0x0020”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KZhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hjQh]”hŒ5”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K[hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj—ubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_INTR”h]”hŒNETIF_MSG_INTR”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K[hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj—ubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0020”h]”hŒ0x0020”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K[hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ6”h]”hŒ6”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K\hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjäubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_TX_DONE”h]”hŒNETIF_MSG_TX_DONE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K\hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjäubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0040”h]”hŒ0x0040”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K\hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hjìh]”hŒ6”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K]hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj2ubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_RX_STATUS”h]”hŒNETIF_MSG_RX_STATUS”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K]hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj2ubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0040”h]”hŒ0x0040”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K]hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubj€)�”}”(hhh]”(j…)�”}”(hhh]”hÞ)�”}”(hŒ7”h]”hŒ7”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K^hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjubj…)�”}”(hhh]”hÞ)�”}”(hŒNETIF_MSG_PKTDATA”h]”hŒNETIF_MSG_PKTDATA”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K^hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjubj…)�”}”(hhh]”hÞ)�”}”(hŒ0x0080”h]”hŒ0x0080”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K^hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjWubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jUhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hþh³hÇh´KOhhíh²hubeh}”(h]”Œhistory”ah ]”h"]”Œhistory”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubeh}”(h]”Œnetif-msg-level”ah ]”h"]”Œnetif msg level”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j„Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jójðjëjèuŒ nametypes”}”(jó‰jë‰uh}”(jðhÊjèhíuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.