€•Œ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/kapi”Œ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/kapi”Œ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/kapi”Œ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/kapi”Œ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/kapi”Œ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/kapi”Œ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/kapi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ)Linux Networking and Network Devices APIs”h]”hŒ)Linux Networking and Network Devices APIs”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ=/var/lib/git/docbuild/linux/Documentation/networking/kapi.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒLinux Networking”h]”hŒLinux Networking”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒNetworking Base Types”h]”hŒNetworking Base Types”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhÜh²hh³hÊh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œsockopt (C struct)”Œ c.sockopt”hNt”auh1híhhÜh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒsockopt”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct sockopt”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhj h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j!hj h²hh³j h´KubhŒ desc_name”“”)�”}”(hŒsockopt”h]”hŒ desc_sig_name”“”)�”}”(hjh]”hŒsockopt”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j8hj4ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j2hj h²hh³j h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQŒ add_permalink”ˆuh1j Œsphinx_line_type”Œ declarator”hjh²hh³j h´Kubah}”(h]”hüah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j h´Khjh²hubhŒ desc_content”“”)�”}”(hhh]”hŒ paragraph”“”)�”}”(hŒsocket option value container”h]”hŒsocket option value container”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´Khjhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j h´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”j…Œobjtype”j†Œdesctype”j†Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1hþh²hhhÜh³Nh´NubhŒ container”“”)�”}”(hXæ**Definition**:: struct sockopt { struct iov_iter iter_in; struct iov_iter iter_out; int optlen; }; **Members** ``iter_in`` iov_iter for reading optval with the content from the caller. Use copy_from_iter() given this iov direction is ITER_SOURCE ``iter_out`` iov_iter for protocols to update optval data to userspace Use _copy_to_iter() given iov direction is ITER_DEST ``optlen`` serves as both input (buffer size) and output (returned data size).”h]”(jl)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj–ubhŒ:”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K#hj’ubhŒ literal_block”“”)�”}”(hŒ^struct sockopt { struct iov_iter iter_in; struct iov_iter iter_out; int optlen; };”h]”hŒ^struct sockopt { struct iov_iter iter_in; struct iov_iter iter_out; int optlen; };”…”�”}”hj·sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K%hj’ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjÈh]”hŒMembers”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K+hj’ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ‡``iter_in`` iov_iter for reading optval with the content from the caller. Use copy_from_iter() given this iov direction is ITER_SOURCE ”h]”(hŒterm”“”)�”}”(hŒ ``iter_in``”h]”hŒliteral”“”)�”}”(hjíh]”hŒiter_in”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K"hjåubhŒ definition”“”)�”}”(hhh]”jl)�”}”(hŒziov_iter for reading optval with the content from the caller. Use copy_from_iter() given this iov direction is ITER_SOURCE”h]”hŒziov_iter for reading optval with the content from the caller. Use copy_from_iter() given this iov direction is ITER_SOURCE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K!hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´K"hjàubjä)�”}”(hŒ|``iter_out`` iov_iter for protocols to update optval data to userspace Use _copy_to_iter() given iov direction is ITER_DEST ”h]”(jê)�”}”(hŒ ``iter_out``”h]”jð)�”}”(hj+h]”hŒiter_out”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K$hj%ubj)�”}”(hhh]”jl)�”}”(hŒniov_iter for protocols to update optval data to userspace Use _copy_to_iter() given iov direction is ITER_DEST”h]”hŒniov_iter for protocols to update optval data to userspace Use _copy_to_iter() given iov direction is ITER_DEST”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K#hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@h´K$hjàubjä)�”}”(hŒN``optlen`` serves as both input (buffer size) and output (returned data size).”h]”(jê)�”}”(hŒ ``optlen``”h]”jð)�”}”(hjeh]”hŒoptlen”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K$hj_ubj)�”}”(hhh]”jl)�”}”(hŒCserves as both input (buffer size) and output (returned data size).”h]”hŒCserves as both input (buffer size) and output (returned data size).”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K%hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jzh´K$hjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÜh²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¨h]”hŒ Description”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K(hhÜh²hubjl)�”}”(hŒVType-safe wrapper for socket option data that works with both user and kernel buffers.”h]”hŒVType-safe wrapper for socket option data that works with both user and kernel buffers.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K%hhÜh²hubjl)�”}”(hŒxThe optlen field allows callbacks to return a specific length value independent of the bytes written via copy_to_iter().”h]”hŒxThe optlen field allows callbacks to return a specific length value independent of the bytes written via copy_to_iter().”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K(hhÜh²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_type (C enum)”Œ c.sock_type”hNt”auh1híhhÜh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ sock_type”h]”j )�”}”(hŒenum sock_type”h]”(j)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñh²hh³jh´K.ubj3)�”}”(hŒ sock_type”h]”j9)�”}”(hjïh]”hŒ sock_type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjñh²hh³jh´K.ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjíh²hh³jh´K.ubah}”(h]”jèah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´K.hjêh²hubjg)�”}”(hhh]”jl)�”}”(hŒ Socket types”h]”hŒ Socket types”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K}hj5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjêh²hh³jh´K.ubeh}”(h]”h ]”(j…Œenum”eh"]”h$]”h&]”jŠj…j‹jPjŒjPj�‰jމj�‰uh1hþh²hhhÜh³Nh´Nubj‘)�”}”(hX¥**Constants** ``SOCK_STREAM`` stream (connection) socket ``SOCK_DGRAM`` datagram (conn.less) socket ``SOCK_RAW`` raw socket ``SOCK_RDM`` reliably-delivered message ``SOCK_SEQPACKET`` sequential packet socket ``SOCK_DCCP`` Datagram Congestion Control Protocol socket ``SOCK_PACKET`` linux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level.”h]”(jl)�”}”(hŒ **Constants**”h]”j›)�”}”(hjZh]”hŒ Constants”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K�hjTubjß)�”}”(hhh]”(jä)�”}”(hŒ+``SOCK_STREAM`` stream (connection) socket ”h]”(jê)�”}”(hŒ``SOCK_STREAM``”h]”jð)�”}”(hjyh]”hŒ SOCK_STREAM”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K„hjsubj)�”}”(hhh]”jl)�”}”(hŒstream (connection) socket”h]”hŒstream (connection) socket”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽh´K„hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽh´K„hjpubjä)�”}”(hŒ+``SOCK_DGRAM`` datagram (conn.less) socket ”h]”(jê)�”}”(hŒ``SOCK_DGRAM``”h]”jð)�”}”(hj²h]”hŒ SOCK_DGRAM”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K‡hj¬ubj)�”}”(hhh]”jl)�”}”(hŒdatagram (conn.less) socket”h]”hŒdatagram (conn.less) socket”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇh´K‡hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇh´K‡hjpubjä)�”}”(hŒ``SOCK_RAW`` raw socket ”h]”(jê)�”}”(hŒ ``SOCK_RAW``”h]”jð)�”}”(hjëh]”hŒSOCK_RAW”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´KŠhjåubj)�”}”(hhh]”jl)�”}”(hŒ raw socket”h]”hŒ raw socket”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´KŠhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´KŠhjpubjä)�”}”(hŒ(``SOCK_RDM`` reliably-delivered message ”h]”(jê)�”}”(hŒ ``SOCK_RDM``”h]”jð)�”}”(hj$h]”hŒSOCK_RDM”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K�hjubj)�”}”(hhh]”jl)�”}”(hŒreliably-delivered message”h]”hŒreliably-delivered message”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9h´K�hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9h´K�hjpubjä)�”}”(hŒ,``SOCK_SEQPACKET`` sequential packet socket ”h]”(jê)�”}”(hŒ``SOCK_SEQPACKET``”h]”jð)�”}”(hj]h]”hŒSOCK_SEQPACKET”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K�hjWubj)�”}”(hhh]”jl)�”}”(hŒsequential packet socket”h]”hŒsequential packet socket”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jrh´K�hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrh´K�hjpubjä)�”}”(hŒ:``SOCK_DCCP`` Datagram Congestion Control Protocol socket ”h]”(jê)�”}”(hŒ ``SOCK_DCCP``”h]”jð)�”}”(hj–h]”hŒ SOCK_DCCP”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K“hj�ubj)�”}”(hhh]”jl)�”}”(hŒ+Datagram Congestion Control Protocol socket”h]”hŒ+Datagram Congestion Control Protocol socket”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«h´K“hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«h´K“hjpubjä)�”}”(hŒ„``SOCK_PACKET`` linux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level.”h]”(jê)�”}”(hŒ``SOCK_PACKET``”h]”jð)�”}”(hjÏh]”hŒ SOCK_PACKET”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K–hjÉubj)�”}”(hhh]”jl)�”}”(hŒtlinux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level.”h]”hŒtlinux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jäh´K–hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jäh´K–hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÜh²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K™hhÜh²hubjl)�”}”(hŒ—When adding some new socket type please grep ARCH_HAS_SOCKET_TYPE include/asm-* /socket.h, at least MIPS overrides this enum for binary compat reasons.”h]”hŒ—When adding some new socket type please grep ARCH_HAS_SOCKET_TYPE include/asm-* /socket.h, at least MIPS overrides this enum for binary compat reasons.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K†hhÜh²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_shutdown_cmd (C enum)”Œc.sock_shutdown_cmd”hNt”auh1híhhÜh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsock_shutdown_cmd”h]”j )�”}”(hŒenum sock_shutdown_cmd”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKh²hh³j\h´K�ubj3)�”}”(hŒsock_shutdown_cmd”h]”j9)�”}”(hjIh]”hŒsock_shutdown_cmd”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjKh²hh³j\h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjGh²hh³j\h´K�ubah}”(h]”jBah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j\h´K�hjDh²hubjg)�”}”(hhh]”jl)�”}”(hŒShutdown types”h]”hŒShutdown types”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K£hjŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjDh²hh³j\h´K�ubeh}”(h]”h ]”(j…Œenum”eh"]”h$]”h&]”jŠj…j‹j©jŒj©j�‰jމj�‰uh1hþh²hhhÜh³Nh´Nubj‘)�”}”(hŒ‰**Constants** ``SHUT_RD`` shutdown receptions ``SHUT_WR`` shutdown transmissions ``SHUT_RDWR`` shutdown receptions/transmissions”h]”(jl)�”}”(hŒ **Constants**”h]”j›)�”}”(hj³h]”hŒ Constants”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K§hj­ubjß)�”}”(hhh]”(jä)�”}”(hŒ ``SHUT_RD`` shutdown receptions ”h]”(jê)�”}”(hŒ ``SHUT_RD``”h]”jð)�”}”(hjÒh]”hŒSHUT_RD”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´KªhjÌubj)�”}”(hhh]”jl)�”}”(hŒshutdown receptions”h]”hŒshutdown receptions”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçh´Kªhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçh´KªhjÉubjä)�”}”(hŒ#``SHUT_WR`` shutdown transmissions ”h]”(jê)�”}”(hŒ ``SHUT_WR``”h]”jð)�”}”(hj h]”hŒSHUT_WR”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K­hjubj)�”}”(hhh]”jl)�”}”(hŒshutdown transmissions”h]”hŒshutdown transmissions”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´K­hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´K­hjÉubjä)�”}”(hŒ/``SHUT_RDWR`` shutdown receptions/transmissions”h]”(jê)�”}”(hŒ ``SHUT_RDWR``”h]”jð)�”}”(hjDh]”hŒ SHUT_RDWR”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K¯hj>ubj)�”}”(hhh]”jl)�”}”(hŒ!shutdown receptions/transmissions”h]”hŒ!shutdown receptions/transmissions”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K°hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYh´K¯hjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÜh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsocket (C struct)”Œc.socket”hNt”auh1híhhÜh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsocket”h]”j )�”}”(hŒ struct socket”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´Kµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšh²hh³j«h´Kµubj3)�”}”(hŒsocket”h]”j9)�”}”(hj˜h]”hŒsocket”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjšh²hh³j«h´Kµubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj–h²hh³j«h´Kµubah}”(h]”j‘ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j«h´Kµhj“h²hubjg)�”}”(hhh]”jl)�”}”(hŒgeneral BSD socket”h]”hŒgeneral BSD socket”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K·hjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj“h²hh³j«h´Kµubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jøjŒjøj�‰jމj�‰uh1hþh²hhhÜh³Nh´Nubj‘)�”}”(hXg**Definition**:: struct socket { socket_state state; short type; unsigned long flags; struct file *file; struct sock *sk; const struct proto_ops *ops; struct socket_wq wq; }; **Members** ``state`` socket state (``SS_CONNECTED``, etc) ``type`` socket type (``SOCK_STREAM``, etc) ``flags`` socket flags (``SOCK_NOSPACE``, etc) ``file`` File back pointer for gc ``sk`` internal networking protocol agnostic socket representation ``ops`` protocol specific socket operations ``wq`` wait queue for several uses”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K»hjüubj¶)�”}”(hŒãstruct socket { socket_state state; short type; unsigned long flags; struct file *file; struct sock *sk; const struct proto_ops *ops; struct socket_wq wq; };”h]”hŒãstruct socket { socket_state state; short type; unsigned long flags; struct file *file; struct sock *sk; const struct proto_ops *ops; struct socket_wq wq; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K½hjüubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj.h]”hŒMembers”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´KÇhjüubjß)�”}”(hhh]”(jä)�”}”(hŒ/``state`` socket state (``SS_CONNECTED``, etc) ”h]”(jê)�”}”(hŒ ``state``”h]”jð)�”}”(hjMh]”hŒstate”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K¹hjGubj)�”}”(hhh]”jl)�”}”(hŒ$socket state (``SS_CONNECTED``, etc)”h]”(hŒsocket state (”…”�”}”(hjfh²hh³Nh´Nubjð)�”}”(hŒ``SS_CONNECTED``”h]”hŒ SS_CONNECTED”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjfubhŒ, etc)”…”�”}”(hjfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbh´K¹hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbh´K¹hjDubjä)�”}”(hŒ,``type`` socket type (``SOCK_STREAM``, etc) ”h]”(jê)�”}”(hŒ``type``”h]”jð)�”}”(hj˜h]”hŒtype”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´Kºhj’ubj)�”}”(hhh]”jl)�”}”(hŒ"socket type (``SOCK_STREAM``, etc)”h]”(hŒ socket type (”…”�”}”(hj±h²hh³Nh´Nubjð)�”}”(hŒ``SOCK_STREAM``”h]”hŒ SOCK_STREAM”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±ubhŒ, etc)”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­h´Kºhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­h´KºhjDubjä)�”}”(hŒ/``flags`` socket flags (``SOCK_NOSPACE``, etc) ”h]”(jê)�”}”(hŒ ``flags``”h]”jð)�”}”(hjãh]”hŒflags”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K»hjÝubj)�”}”(hhh]”jl)�”}”(hŒ$socket flags (``SOCK_NOSPACE``, etc)”h]”(hŒsocket flags (”…”�”}”(hjüh²hh³Nh´Nubjð)�”}”(hŒ``SOCK_NOSPACE``”h]”hŒ SOCK_NOSPACE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjüubhŒ, etc)”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jøh´K»hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jøh´K»hjDubjä)�”}”(hŒ"``file`` File back pointer for gc ”h]”(jê)�”}”(hŒ``file``”h]”jð)�”}”(hj.h]”hŒfile”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K½hj(ubj)�”}”(hhh]”jl)�”}”(hŒFile back pointer for gc”h]”hŒFile back pointer for gc”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jCh´K½hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jCh´K½hjDubjä)�”}”(hŒC``sk`` internal networking protocol agnostic socket representation ”h]”(jê)�”}”(hŒ``sk``”h]”jð)�”}”(hjgh]”hŒsk”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K¾hjaubj)�”}”(hhh]”jl)�”}”(hŒ;internal networking protocol agnostic socket representation”h]”hŒ;internal networking protocol agnostic socket representation”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|h´K¾hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|h´K¾hjDubjä)�”}”(hŒ,``ops`` protocol specific socket operations ”h]”(jê)�”}”(hŒ``ops``”h]”jð)�”}”(hj h]”hŒops”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K¼hjšubj)�”}”(hhh]”jl)�”}”(hŒ#protocol specific socket operations”h]”hŒ#protocol specific socket operations”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµh´K¼hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµh´K¼hjDubjä)�”}”(hŒ"``wq`` wait queue for several uses”h]”(jê)�”}”(hŒ``wq``”h]”jð)�”}”(hjÙh]”hŒwq”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K¾hjÓubj)�”}”(hhh]”jl)�”}”(hŒwait queue for several uses”h]”hŒwait queue for several uses”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:11: ./include/linux/net.h”h´K¿hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîh´K¾hjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hhÜh²hh³Nh´Nubeh}”(h]”Œnetworking-base-types”ah ]”h"]”Œnetworking base types”ah$]”h&]”uh1hµhhËh²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒSocket Buffer Functions”h]”hŒSocket Buffer Functions”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj" h²hh³hÊh´Kubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_size (C function)”Œc.skb_frag_size”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3unsigned int skb_frag_size (const skb_frag_t *frag)”h]”j )�”}”(hŒ2unsigned int skb_frag_size(const skb_frag_t *frag)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jL hjH h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mvubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjH h²hh³j] h´MvubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjH h²hh³j] h´Mvubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjH h²hh³j] h´Mvubj3)�”}”(hŒ skb_frag_size”h]”j9)�”}”(hŒ skb_frag_size”h]”hŒ skb_frag_size”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆ ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjH h²hh³j] h´MvubhŒdesc_parameterlist”“”)�”}”(hŒ(const skb_frag_t *frag)”h]”hŒdesc_parameter”“”)�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨ ubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”Œ identifier”Œ reftarget”jÍ Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jæ Œ ASTIdentifier”“”)�”}”já jŽ sbŒc.skb_frag_size”†”asbuh1hhj¨ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨ ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j hj¨ ubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢ ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjH h²hh³j] h´Mvubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjD h²hh³j] h´Mvubah}”(h]”j? ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j] h´MvhjA h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Returns the size of a skb fragment”h]”hŒ"Returns the size of a skb fragment”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mvhj9 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjA h²hh³j] h´Mvubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jT jŒjT j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ9**Parameters** ``const skb_frag_t *frag`` skb fragment”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj^ h]”hŒ Parameters”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj\ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MzhjX ubjß)�”}”(hhh]”jä)�”}”(hŒ'``const skb_frag_t *frag`` skb fragment”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hj} h]”hŒconst skb_frag_t *frag”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M|hjw ubj)�”}”(hhh]”jl)�”}”(hŒ skb fragment”h]”hŒ skb fragment”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mwhj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’ h´M|hjt ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjX ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_size_set (C function)”Œc.skb_frag_size_set”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒnetmem ``f_len`` length from f_off to loop over ``p`` (temp var) current page ``p_off`` (temp var) offset from start of current page, non-zero only on first page. ``p_len`` (temp var) length in current page, < PAGE_SIZE only on first and last page. ``copied`` (temp var) length so far, excluding current p_len. **Description** A fragment can hold a compound page, in which case per-page operations, notably kmap_atomic, must be called for each regular page.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjòh]”hŒ Parameters”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M®hjìubjß)�”}”(hhh]”(jä)�”}”(hŒ``f`` skb frag to operate on ”h]”(jê)�”}”(hŒ``f``”h]”jð)�”}”(hjh]”hŒf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¬hj ubj)�”}”(hhh]”jl)�”}”(hŒskb frag to operate on”h]”hŒskb frag to operate on”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j&h´M¬hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j&h´M¬hjubjä)�”}”(hŒ)``f_off`` offset from start of f->netmem ”h]”(jê)�”}”(hŒ ``f_off``”h]”jð)�”}”(hjJh]”hŒf_off”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M­hjDubj)�”}”(hhh]”jl)�”}”(hŒoffset from start of f->netmem”h]”hŒoffset from start of f->netmem”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_h´M­hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_h´M­hjubjä)�”}”(hŒ)``f_len`` length from f_off to loop over ”h]”(jê)�”}”(hŒ ``f_len``”h]”jð)�”}”(hjƒh]”hŒf_len”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M®hj}ubj)�”}”(hhh]”jl)�”}”(hŒlength from f_off to loop over”h]”hŒlength from f_off to loop over”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜h´M®hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜h´M®hjubjä)�”}”(hŒ``p`` (temp var) current page ”h]”(jê)�”}”(hŒ``p``”h]”jð)�”}”(hj¼h]”hŒp”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¯hj¶ubj)�”}”(hhh]”jl)�”}”(hŒ(temp var) current page”h]”hŒ(temp var) current page”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÑh´M¯hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÑh´M¯hjubjä)�”}”(hŒU``p_off`` (temp var) offset from start of current page, non-zero only on first page. ”h]”(jê)�”}”(hŒ ``p_off``”h]”jð)�”}”(hjõh]”hŒp_off”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M±hjïubj)�”}”(hhh]”jl)�”}”(hŒJ(temp var) offset from start of current page, non-zero only on first page.”h]”hŒJ(temp var) offset from start of current page, non-zero only on first page.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M°hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M±hjubjä)�”}”(hŒV``p_len`` (temp var) length in current page, < PAGE_SIZE only on first and last page. ”h]”(jê)�”}”(hŒ ``p_len``”h]”jð)�”}”(hj/h]”hŒp_len”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M³hj)ubj)�”}”(hhh]”jl)�”}”(hŒK(temp var) length in current page, < PAGE_SIZE only on first and last page.”h]”hŒK(temp var) length in current page, < PAGE_SIZE only on first and last page.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M²hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jDh´M³hjubjä)�”}”(hŒ>``copied`` (temp var) length so far, excluding current p_len. ”h]”(jê)�”}”(hŒ ``copied``”h]”jð)�”}”(hjih]”hŒcopied”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M´hjcubj)�”}”(hhh]”jl)�”}”(hŒ2(temp var) length so far, excluding current p_len.”h]”hŒ2(temp var) length so far, excluding current p_len.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~h´M´hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~h´M´hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjìubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¤h]”hŒ Description”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¶hjìubjÒ)�”}”(hŒ‚A fragment can hold a compound page, in which case per-page operations, notably kmap_atomic, must be called for each regular page.”h]”jl)�”}”(hŒ‚A fragment can hold a compound page, in which case per-page operations, notably kmap_atomic, must be called for each regular page.”h]”hŒ‚A fragment can hold a compound page, in which case per-page operations, notably kmap_atomic, must be called for each regular page.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mµhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÌh´Mµhjìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_shared_hwtstamps (C struct)”Œc.skb_shared_hwtstamps”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒskb_shared_hwtstamps”h]”j )�”}”(hŒstruct skb_shared_hwtstamps”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïh²hh³jh´M¼ubj3)�”}”(hŒskb_shared_hwtstamps”h]”j9)�”}”(hjíh]”hŒskb_shared_hwtstamps”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjïh²hh³jh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjëh²hh³jh´M¼ubah}”(h]”jæah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´M¼hjèh²hubjg)�”}”(hhh]”jl)�”}”(hŒhardware time stamps”h]”hŒhardware time stamps”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÅhj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjèh²hh³jh´M¼ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jMjŒjMj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Definition**:: struct skb_shared_hwtstamps { union { ktime_t hwtstamp; void *netdev_data; }; }; **Members** ``{unnamed_union}`` anonymous ``hwtstamp`` hardware time stamp transformed into duration since arbitrary point in time ``netdev_data`` address/cookie of network device driver used as reference to actual hardware time stamp”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjUubhŒ:”…”�”}”(hjUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÉhjQubj¶)�”}”(hŒhstruct skb_shared_hwtstamps { union { ktime_t hwtstamp; void *netdev_data; }; };”h]”hŒhstruct skb_shared_hwtstamps { union { ktime_t hwtstamp; void *netdev_data; }; };”…”�”}”hjrsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MËhjQubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjƒh]”hŒMembers”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÒhjQubjß)�”}”(hhh]”(jä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj¢h]”hŒ{unnamed_union}”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khjœubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j·h´Khj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·h´Khj™ubjä)�”}”(hŒY``hwtstamp`` hardware time stamp transformed into duration since arbitrary point in time ”h]”(jê)�”}”(hŒ ``hwtstamp``”h]”jð)�”}”(hjÛh]”hŒhwtstamp”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÈhjÕubj)�”}”(hhh]”jl)�”}”(hŒKhardware time stamp transformed into duration since arbitrary point in time”h]”hŒKhardware time stamp transformed into duration since arbitrary point in time”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÇhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðh´MÈhj™ubjä)�”}”(hŒg``netdev_data`` address/cookie of network device driver used as reference to actual hardware time stamp”h]”(jê)�”}”(hŒ``netdev_data``”h]”jð)�”}”(hjh]”hŒ netdev_data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÉhjubj)�”}”(hhh]”jl)�”}”(hŒWaddress/cookie of network device driver used as reference to actual hardware time stamp”h]”hŒWaddress/cookie of network device driver used as reference to actual hardware time stamp”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*h´MÉhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*h´MÉhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjWh]”hŒ Description”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÍhj" h²hubjl)�”}”(hŒMSoftware time stamps generated by ktime_get_real() are stored in skb->tstamp.”h]”hŒMSoftware time stamps generated by ktime_get_real() are stored in skb->tstamp.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÊhj" h²hubjl)�”}”(hŒLhwtstamps can only be compared against other hwtstamps from the same device.”•h]”hŒLhwtstamps can only be compared against other hwtstamps from the same device.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÍhj" h²hubjl)�”}”(hŒuThis structure is attached to packets as part of the :c:type:`skb_shared_info`. Use skb_hwtstamps() to get a pointer.”h]”(hŒ5This structure is attached to packets as part of the ”…”�”}”(hj‹h²hh³Nh´Nubh)�”}”(hŒ:c:type:`skb_shared_info`”h]”jð)�”}”(hj•h]”hŒskb_shared_info”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”(Œxref”j…Œc-type”eh"]”h$]”h&]”uh1jïhj“ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œnetworking/kapi”Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå jè )�”}”jë ]”sbŒ reftarget”Œskb_shared_info”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÐhj‹ubhŒ'. Use skb_hwtstamps() to get a pointer.”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¸h´MÐhj" h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_buff (C struct)”Œ c.sk_buff”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsk_buff”h]”j )�”}”(hŒstruct sk_buff”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØh²hh³jéh´MÖubj3)�”}”(hŒsk_buff”h]”j9)�”}”(hjÖh]”hŒsk_buff”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjØh²hh³jéh´MÖubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÔh²hh³jéh´MÖubah}”(h]”jÏah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jéh´MÖhjÑh²hubjg)�”}”(hhh]”jl)�”}”(hŒ socket buffer”h]”hŒ socket buffer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÑh²hh³jéh´MÖubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j6jŒj6j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX›(**Definition**:: struct sk_buff { union { struct { struct sk_buff *next; struct sk_buff *prev; union { struct net_device *dev; unsigned long dev_scratch; }; }; struct rb_node rbnode; struct list_head list; struct llist_node ll_node; }; struct sock *sk; union { ktime_t tstamp; u64 skb_mstamp_ns; }; char cb[48]; union { struct { unsigned long _skb_refdst; void (*destructor)(struct sk_buff *skb); }; struct list_head tcp_tsorted_anchor; #ifdef CONFIG_NET_SOCK_MSG; unsigned long _sk_redir; #endif; }; #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE); unsigned long _nfct; #endif; unsigned int len, data_len; __u16 mac_len, hdr_len; __u16 queue_mapping; #ifdef __BIG_ENDIAN_BITFIELD; #define CLONED_MASK (1 << 7); #else; #define CLONED_MASK 1; #endif; #define CLONED_OFFSET offsetof(struct sk_buff, __cloned_offset); __u8 cloned:1, nohdr:1, fclone:2, peeked:1, head_frag:1, pfmemalloc:1, pp_recycle:1; #ifdef CONFIG_SKB_EXTENSIONS; __u8 active_extensions; #endif; struct { __u8 pkt_type:3; __u8 ignore_df:1; __u8 dst_pending_confirm:1; __u8 ip_summed:2; __u8 ooo_okay:1; __u8 tstamp_type:2; #ifdef CONFIG_NET_XGRESS; __u8 tc_at_ingress:1; __u8 tc_skip_classify:1; #endif; __u8 remcsum_offload:1; __u8 csum_complete_sw:1; __u8 csum_level:2; __u8 inner_protocol_type:1; __u8 l4_hash:1; __u8 sw_hash:1; #ifdef CONFIG_WIRELESS; __u8 wifi_acked_valid:1; __u8 wifi_acked:1; #endif; __u8 no_fcs:1; __u8 encapsulation:1; __u8 encap_hdr_csum:1; __u8 csum_valid:1; #ifdef CONFIG_IPV6_NDISC_NODETYPE; __u8 ndisc_nodetype:2; #endif; #if IS_ENABLED(CONFIG_IP_VS); __u8 ipvs_property:1; #endif; #if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) || IS_ENABLED(CONFIG_NF_TABLES); __u8 nf_trace:1; #endif; #ifdef CONFIG_NET_SWITCHDEV; __u8 offload_fwd_mark:1; __u8 offload_l3_fwd_mark:1; #endif; __u8 redirected:1; #ifdef CONFIG_NET_REDIRECT; __u8 from_ingress:1; #endif; #ifdef CONFIG_NET_EGRESS; __u8 nf_skip_egress:1; #endif; #ifdef CONFIG_SKB_DECRYPTED; __u8 decrypted:1; #endif; __u8 slow_gro:1; #if IS_ENABLED(CONFIG_IP_SCTP); __u8 csum_not_inet:1; #endif; __u8 unreadable:1; __u8 tc_depth:2; #if defined(CONFIG_NET_SCHED) || defined(CONFIG_NET_XGRESS); __u16 tc_index; #endif; union { __wsum csum; struct { __u16 csum_start; __u16 csum_offset; }; }; __u32 priority; int skb_iif; __u32 hash; union { u32 vlan_all; struct { __be16 vlan_proto; __u16 vlan_tci; }; }; #if defined(CONFIG_NET_RX_BUSY_POLL) || defined(CONFIG_XPS); union { unsigned int napi_id; unsigned int sender_cpu; }; #endif; #ifdef CONFIG_NETWORK_SECMARK; __u32 secmark; #endif; union { __u32 mark; __u32 reserved_tailroom; }; union { __be16 inner_protocol; __u8 inner_ipproto; }; __u16 inner_transport_header; __u16 inner_network_header; __u16 inner_mac_header; __be16 protocol; __u16 transport_header; __u16 network_header; __u16 mac_header; struct kcov_common_handle_id kcov_handle; }; u16 alloc_cpu; sk_buff_data_t tail; sk_buff_data_t end; unsigned char *head, *data; unsigned int truesize; refcount_t users; #ifdef CONFIG_SKB_EXTENSIONS; struct skb_ext *extensions; #endif; }; **Members** ``{unnamed_union}`` anonymous ``{unnamed_struct}`` anonymous ``next`` Next buffer in list ``prev`` Previous buffer in list ``{unnamed_union}`` anonymous ``dev`` Device we arrived on/are leaving by ``dev_scratch`` (aka **dev**) alternate use of **dev** when **dev** would be ``NULL`` ``rbnode`` RB tree node, alternative to next/prev for netem/tcp ``list`` queue head ``ll_node`` anchor in an llist (eg socket defer_list) ``sk`` Socket we are owned by ``{unnamed_union}`` anonymous ``tstamp`` Time we arrived/left ``skb_mstamp_ns`` (aka **tstamp**) earliest departure time; start point for retransmit timer ``cb`` Control buffer. Free for use by every layer. Put private vars here ``{unnamed_union}`` anonymous ``{unnamed_struct}`` anonymous ``_skb_refdst`` destination entry (with norefcount bit) ``destructor`` Destruct function ``tcp_tsorted_anchor`` list structure for TCP (tp->tsorted_sent_queue) ``_sk_redir`` socket redirection information for skmsg ``_nfct`` Associated connection, if any (with nfctinfo bits) ``len`` Length of actual data ``data_len`` Data length ``mac_len`` Length of link layer header ``hdr_len`` writable header length of cloned skb ``queue_mapping`` Queue mapping for multiqueue devices ``cloned`` Head may be cloned (check refcnt to be sure) ``nohdr`` Payload reference only, must not modify header ``fclone`` skbuff clone status ``peeked`` this packet has been seen already, so stats have been done for it, don't do them again ``head_frag`` skb was allocated from page fragments, not allocated by kmalloc() or vmalloc(). ``pfmemalloc`` skbuff was allocated from PFMEMALLOC reserves ``pp_recycle`` mark the packet for recycling instead of freeing (implies page_pool support on driver) ``active_extensions`` active extensions (skb_ext_id types) ``{unnamed_struct}`` anonymous ``pkt_type`` Packet class ``ignore_df`` allow local fragmentation ``dst_pending_confirm`` need to confirm neighbour ``ip_summed`` Driver fed us an IP checksum ``ooo_okay`` allow the mapping of a socket to a queue to be changed ``tstamp_type`` When set, skb->tstamp has the delivery_time clock base of skb->tstamp. ``tc_at_ingress`` used within tc_classify to distinguish in/egress ``tc_skip_classify`` do not classify packet. set by IFB device ``remcsum_offload`` remote checksum offload is enabled ``csum_complete_sw`` checksum was completed by software ``csum_level`` indicates the number of consecutive checksums found in the packet minus one that have been verified as CHECKSUM_UNNECESSARY (max 3) ``inner_protocol_type`` whether the inner protocol is ENCAP_TYPE_ETHER or ENCAP_TYPE_IPPROTO ``l4_hash`` indicate hash is a canonical 4-tuple hash over transport ports. ``sw_hash`` indicates hash was computed in software stack ``wifi_acked_valid`` wifi_acked was set ``wifi_acked`` whether frame was acked on wifi or not ``no_fcs`` Request NIC to treat last 4 bytes as Ethernet FCS ``encapsulation`` indicates the inner headers in the skbuff are valid ``encap_hdr_csum`` software checksum is needed ``csum_valid`` checksum is already valid ``ndisc_nodetype`` router type (from link layer) ``ipvs_property`` skbuff is owned by ipvs ``nf_trace`` netfilter packet trace flag ``offload_fwd_mark`` Packet was L2-forwarded in hardware ``offload_l3_fwd_mark`` Packet was L3-forwarded in hardware ``redirected`` packet was redirected by packet classifier ``from_ingress`` packet was redirected from the ingress path ``nf_skip_egress`` packet shall skip nf egress - see netfilter_netdev.h ``decrypted`` Decrypted SKB ``slow_gro`` state present at GRO time, slower prepare step required ``csum_not_inet`` use CRC32c to resolve CHECKSUM_PARTIAL ``unreadable`` indicates that at least 1 of the fragments in this skb is unreadable. ``tc_depth`` counter for packet duplication ``tc_index`` Traffic control index ``{unnamed_union}`` anonymous ``csum`` Checksum (must include start/offset pair) ``{unnamed_struct}`` anonymous ``csum_start`` Offset from skb->head where checksumming should start ``csum_offset`` Offset from csum_start where checksum should be stored ``priority`` Packet queueing priority ``skb_iif`` ifindex of device we arrived on ``hash`` the packet hash ``{unnamed_union}`` anonymous ``vlan_all`` vlan fields (proto & tci) ``{unnamed_struct}`` anonymous ``vlan_proto`` vlan encapsulation protocol ``vlan_tci`` vlan tag control information ``{unnamed_union}`` anonymous ``napi_id`` id of the NAPI struct this skb came from ``sender_cpu`` (aka **napi_id**) source CPU in XPS ``secmark`` security marking ``{unnamed_union}`` anonymous ``mark`` Generic packet mark ``reserved_tailroom`` (aka **mark**) number of bytes of free space available at the tail of an sk_buff ``{unnamed_union}`` anonymous ``inner_protocol`` Protocol (encapsulation) ``inner_ipproto`` (aka **inner_protocol**) stores ipproto when skb->inner_protocol_type == ENCAP_TYPE_IPPROTO; ``inner_transport_header`` Inner transport layer header (encapsulation) ``inner_network_header`` Network layer header (encapsulation) ``inner_mac_header`` Link layer header (encapsulation) ``protocol`` Packet protocol from driver ``transport_header`` Transport layer header ``network_header`` Network layer header ``mac_header`` Link layer header ``kcov_handle`` KCOV remote handle for remote coverage collection ``alloc_cpu`` CPU which did the skb allocation. ``tail`` Tail pointer ``end`` End pointer ``head`` Head of buffer ``data`` Data head pointer ``truesize`` Buffer size ``users`` User count - see {datagram,tcp}.c ``extensions`` allocated extensions, valid if active_extensions is nonzero”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj>ubhŒ:”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj:ubj¶)�”}”(hX0struct sk_buff { union { struct { struct sk_buff *next; struct sk_buff *prev; union { struct net_device *dev; unsigned long dev_scratch; }; }; struct rb_node rbnode; struct list_head list; struct llist_node ll_node; }; struct sock *sk; union { ktime_t tstamp; u64 skb_mstamp_ns; }; char cb[48]; union { struct { unsigned long _skb_refdst; void (*destructor)(struct sk_buff *skb); }; struct list_head tcp_tsorted_anchor; #ifdef CONFIG_NET_SOCK_MSG; unsigned long _sk_redir; #endif; }; #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE); unsigned long _nfct; #endif; unsigned int len, data_len; __u16 mac_len, hdr_len; __u16 queue_mapping; #ifdef __BIG_ENDIAN_BITFIELD; #define CLONED_MASK (1 << 7); #else; #define CLONED_MASK 1; #endif; #define CLONED_OFFSET offsetof(struct sk_buff, __cloned_offset); __u8 cloned:1, nohdr:1, fclone:2, peeked:1, head_frag:1, pfmemalloc:1, pp_recycle:1; #ifdef CONFIG_SKB_EXTENSIONS; __u8 active_extensions; #endif; struct { __u8 pkt_type:3; __u8 ignore_df:1; __u8 dst_pending_confirm:1; __u8 ip_summed:2; __u8 ooo_okay:1; __u8 tstamp_type:2; #ifdef CONFIG_NET_XGRESS; __u8 tc_at_ingress:1; __u8 tc_skip_classify:1; #endif; __u8 remcsum_offload:1; __u8 csum_complete_sw:1; __u8 csum_level:2; __u8 inner_protocol_type:1; __u8 l4_hash:1; __u8 sw_hash:1; #ifdef CONFIG_WIRELESS; __u8 wifi_acked_valid:1; __u8 wifi_acked:1; #endif; __u8 no_fcs:1; __u8 encapsulation:1; __u8 encap_hdr_csum:1; __u8 csum_valid:1; #ifdef CONFIG_IPV6_NDISC_NODETYPE; __u8 ndisc_nodetype:2; #endif; #if IS_ENABLED(CONFIG_IP_VS); __u8 ipvs_property:1; #endif; #if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) || IS_ENABLED(CONFIG_NF_TABLES); __u8 nf_trace:1; #endif; #ifdef CONFIG_NET_SWITCHDEV; __u8 offload_fwd_mark:1; __u8 offload_l3_fwd_mark:1; #endif; __u8 redirected:1; #ifdef CONFIG_NET_REDIRECT; __u8 from_ingress:1; #endif; #ifdef CONFIG_NET_EGRESS; __u8 nf_skip_egress:1; #endif; #ifdef CONFIG_SKB_DECRYPTED; __u8 decrypted:1; #endif; __u8 slow_gro:1; #if IS_ENABLED(CONFIG_IP_SCTP); __u8 csum_not_inet:1; #endif; __u8 unreadable:1; __u8 tc_depth:2; #if defined(CONFIG_NET_SCHED) || defined(CONFIG_NET_XGRESS); __u16 tc_index; #endif; union { __wsum csum; struct { __u16 csum_start; __u16 csum_offset; }; }; __u32 priority; int skb_iif; __u32 hash; union { u32 vlan_all; struct { __be16 vlan_proto; __u16 vlan_tci; }; }; #if defined(CONFIG_NET_RX_BUSY_POLL) || defined(CONFIG_XPS); union { unsigned int napi_id; unsigned int sender_cpu; }; #endif; #ifdef CONFIG_NETWORK_SECMARK; __u32 secmark; #endif; union { __u32 mark; __u32 reserved_tailroom; }; union { __be16 inner_protocol; __u8 inner_ipproto; }; __u16 inner_transport_header; __u16 inner_network_header; __u16 inner_mac_header; __be16 protocol; __u16 transport_header; __u16 network_header; __u16 mac_header; struct kcov_common_handle_id kcov_handle; }; u16 alloc_cpu; sk_buff_data_t tail; sk_buff_data_t end; unsigned char *head, *data; unsigned int truesize; refcount_t users; #ifdef CONFIG_SKB_EXTENSIONS; struct skb_ext *extensions; #endif; };”h]”hX0struct sk_buff { union { struct { struct sk_buff *next; struct sk_buff *prev; union { struct net_device *dev; unsigned long dev_scratch; }; }; struct rb_node rbnode; struct list_head list; struct llist_node ll_node; }; struct sock *sk; union { ktime_t tstamp; u64 skb_mstamp_ns; }; char cb[48]; union { struct { unsigned long _skb_refdst; void (*destructor)(struct sk_buff *skb); }; struct list_head tcp_tsorted_anchor; #ifdef CONFIG_NET_SOCK_MSG; unsigned long _sk_redir; #endif; }; #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE); unsigned long _nfct; #endif; unsigned int len, data_len; __u16 mac_len, hdr_len; __u16 queue_mapping; #ifdef __BIG_ENDIAN_BITFIELD; #define CLONED_MASK (1 << 7); #else; #define CLONED_MASK 1; #endif; #define CLONED_OFFSET offsetof(struct sk_buff, __cloned_offset); __u8 cloned:1, nohdr:1, fclone:2, peeked:1, head_frag:1, pfmemalloc:1, pp_recycle:1; #ifdef CONFIG_SKB_EXTENSIONS; __u8 active_extensions; #endif; struct { __u8 pkt_type:3; __u8 ignore_df:1; __u8 dst_pending_confirm:1; __u8 ip_summed:2; __u8 ooo_okay:1; __u8 tstamp_type:2; #ifdef CONFIG_NET_XGRESS; __u8 tc_at_ingress:1; __u8 tc_skip_classify:1; #endif; __u8 remcsum_offload:1; __u8 csum_complete_sw:1; __u8 csum_level:2; __u8 inner_protocol_type:1; __u8 l4_hash:1; __u8 sw_hash:1; #ifdef CONFIG_WIRELESS; __u8 wifi_acked_valid:1; __u8 wifi_acked:1; #endif; __u8 no_fcs:1; __u8 encapsulation:1; __u8 encap_hdr_csum:1; __u8 csum_valid:1; #ifdef CONFIG_IPV6_NDISC_NODETYPE; __u8 ndisc_nodetype:2; #endif; #if IS_ENABLED(CONFIG_IP_VS); __u8 ipvs_property:1; #endif; #if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) || IS_ENABLED(CONFIG_NF_TABLES); __u8 nf_trace:1; #endif; #ifdef CONFIG_NET_SWITCHDEV; __u8 offload_fwd_mark:1; __u8 offload_l3_fwd_mark:1; #endif; __u8 redirected:1; #ifdef CONFIG_NET_REDIRECT; __u8 from_ingress:1; #endif; #ifdef CONFIG_NET_EGRESS; __u8 nf_skip_egress:1; #endif; #ifdef CONFIG_SKB_DECRYPTED; __u8 decrypted:1; #endif; __u8 slow_gro:1; #if IS_ENABLED(CONFIG_IP_SCTP); __u8 csum_not_inet:1; #endif; __u8 unreadable:1; __u8 tc_depth:2; #if defined(CONFIG_NET_SCHED) || defined(CONFIG_NET_XGRESS); __u16 tc_index; #endif; union { __wsum csum; struct { __u16 csum_start; __u16 csum_offset; }; }; __u32 priority; int skb_iif; __u32 hash; union { u32 vlan_all; struct { __be16 vlan_proto; __u16 vlan_tci; }; }; #if defined(CONFIG_NET_RX_BUSY_POLL) || defined(CONFIG_XPS); union { unsigned int napi_id; unsigned int sender_cpu; }; #endif; #ifdef CONFIG_NETWORK_SECMARK; __u32 secmark; #endif; union { __u32 mark; __u32 reserved_tailroom; }; union { __be16 inner_protocol; __u8 inner_ipproto; }; __u16 inner_transport_header; __u16 inner_network_header; __u16 inner_mac_header; __be16 protocol; __u16 transport_header; __u16 network_header; __u16 mac_header; struct kcov_common_handle_id kcov_handle; }; u16 alloc_cpu; sk_buff_data_t tail; sk_buff_data_t end; unsigned char *head, *data; unsigned int truesize; refcount_t users; #ifdef CONFIG_SKB_EXTENSIONS; struct skb_ext *extensions; #endif; };”…”�”}”hj[sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj:ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjlh]”hŒMembers”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M±hj:ubjß)�”}”(hhh]”(jä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj‹h]”hŒ{unnamed_union}”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khj…ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´Khj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Khj‚ubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hjÄh]”hŒ{unnamed_struct}”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khj¾ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÙh´KhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙh´Khj‚ubjä)�”}”(hŒ``next`` Next buffer in list ”h]”(jê)�”}”(hŒ``next``”h]”jð)�”}”(hjýh]”hŒnext”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj÷ubj)�”}”(hhh]”jl)�”}”(hŒNext buffer in list”h]”hŒNext buffer in list”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhj‚ubjä)�”}”(hŒ!``prev`` Previous buffer in list ”h]”(jê)�”}”(hŒ``prev``”h]”jð)�”}”(hj6h]”hŒprev”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj0ubj)�”}”(hhh]”jl)�”}”(hŒPrevious buffer in list”h]”hŒPrevious buffer in list”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKh´MhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKh´Mhj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjoh]”hŒ{unnamed_union}”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khjiubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„h´Khj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„h´Khj‚ubjä)�”}”(hŒ,``dev`` Device we arrived on/are leaving by ”h]”(jê)�”}”(hŒ``dev``”h]”jð)�”}”(hj¨h]”hŒdev”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj¢ubj)�”}”(hhh]”jl)�”}”(hŒ#Device we arrived on/are leaving by”h]”hŒ#Device we arrived on/are leaving by”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½h´Mhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½h´Mhj‚ubjä)�”}”(hŒV``dev_scratch`` (aka **dev**) alternate use of **dev** when **dev** would be ``NULL`` ”h]”(jê)�”}”(hŒ``dev_scratch``”h]”jð)�”}”(hjáh]”hŒ dev_scratch”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjÛubj)�”}”(hhh]”jl)�”}”(hŒE(aka **dev**) alternate use of **dev** when **dev** would be ``NULL``”h]”(hŒ(aka ”…”�”}”(hjúh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjúubhŒ) alternate use of ”…”�”}”(hjúh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjúubhŒ when ”…”�”}”(hjúh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjúubhŒ would be ”…”�”}”(hjúh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöh´Mhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöh´Mhj‚ubjä)�”}”(hŒ@``rbnode`` RB tree node, alternative to next/prev for netem/tcp ”h]”(jê)�”}”(hŒ ``rbnode``”h]”jð)�”}”(hj^h]”hŒrbnode”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjXubj)�”}”(hhh]”jl)�”}”(hŒ4RB tree node, alternative to next/prev for netem/tcp”h]”hŒ4RB tree node, alternative to next/prev for netem/tcp”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsh´Mhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsh´Mhj‚ubjä)�”}”(hŒ``list`` queue head ”h]”(jê)�”}”(hŒ``list``”h]”jð)�”}”(hj—h]”hŒlist”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj‘ubj)�”}”(hhh]”jl)�”}”(hŒ queue head”h]”hŒ queue head”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬h´Mhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬h´Mhj‚ubjä)�”}”(hŒ6``ll_node`` anchor in an llist (eg socket defer_list) ”h]”(jê)�”}”(hŒ ``ll_node``”h]”jð)�”}”(hjÐh]”hŒll_node”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjÊubj)�”}”(hhh]”jl)�”}”(hŒ)anchor in an llist (eg socket defer_list)”h]”hŒ)anchor in an llist (eg socket defer_list)”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåh´Mhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåh´Mhj‚ubjä)�”}”(hŒ``sk`` Socket we are owned by ”h]”(jê)�”}”(hŒ``sk``”h]”jð)�”}”(hj h]”hŒsk”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒSocket we are owned by”h]”hŒSocket we are owned by”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjBh]”hŒ{unnamed_union}”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khj<ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jWh´KhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jWh´Khj‚ubjä)�”}”(hŒ ``tstamp`` Time we arrived/left ”h]”(jê)�”}”(hŒ ``tstamp``”h]”jð)�”}”(hj{h]”hŒtstamp”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjuubj)�”}”(hhh]”jl)�”}”(hŒTime we arrived/left”h]”hŒTime we arrived/left”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´Mhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´Mhj‚ubjä)�”}”(hŒ]``skb_mstamp_ns`` (aka **tstamp**) earliest departure time; start point for retransmit timer ”h]”(jê)�”}”(hŒ``skb_mstamp_ns``”h]”jð)�”}”(hj´h]”hŒ skb_mstamp_ns”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj®ubj)�”}”(hhh]”jl)�”}”(hŒJ(aka **tstamp**) earliest departure time; start point for retransmit timer”h]”(hŒ(aka ”…”�”}”(hjÍh²hh³Nh´Nubj›)�”}”(hŒ **tstamp**”h]”hŒtstamp”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍubhŒ;) earliest departure time; start point for retransmit timer”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉh´Mhj‚ubjä)�”}”(hŒJ``cb`` Control buffer. Free for use by every layer. Put private vars here ”h]”(jê)�”}”(hŒ``cb``”h]”jð)�”}”(hjh]”hŒcb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjúubj)�”}”(hhh]”jl)�”}”(hŒBControl buffer. Free for use by every layer. Put private vars here”h]”hŒBControl buffer. Free for use by every layer. Put private vars here”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj9h]”hŒ{unnamed_union}”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khj3ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNh´KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNh´Khj‚ubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hjrh]”hŒ{unnamed_struct}”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khjlubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡h´Khjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡h´Khj‚ubjä)�”}”(hŒ8``_skb_refdst`` destination entry (with norefcount bit) ”h]”(jê)�”}”(hŒ``_skb_refdst``”h]”jð)�”}”(hj«h]”hŒ _skb_refdst”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj¥ubj)�”}”(hhh]”jl)�”}”(hŒ'destination entry (with norefcount bit)”h]”hŒ'destination entry (with norefcount bit)”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀh´MhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀh´Mhj‚ubjä)�”}”(hŒ!``destructor`` Destruct function ”h]”(jê)�”}”(hŒ``destructor``”h]”jð)�”}”(hjäh]”hŒ destructor”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M:hjÞubj)�”}”(hhh]”jl)�”}”(hŒDestruct function”h]”hŒDestruct function”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jùh´M:hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jùh´M:hj‚ubjä)�”}”(hŒG``tcp_tsorted_anchor`` list structure for TCP (tp->tsorted_sent_queue) ”h]”(jê)�”}”(hŒ``tcp_tsorted_anchor``”h]”jð)�”}”(hjh]”hŒtcp_tsorted_anchor”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M;hjubj)�”}”(hhh]”jl)�”}”(hŒ/list structure for TCP (tp->tsorted_sent_queue)”h]”hŒ/list structure for TCP (tp->tsorted_sent_queue)”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2h´M;hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2h´M;hj‚ubjä)�”}”(hŒ7``_sk_redir`` socket redirection information for skmsg ”h]”(jê)�”}”(hŒ ``_sk_redir``”h]”jð)�”}”(hjVh]”hŒ _sk_redir”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M<hjPubj)�”}”(hhh]”jl)�”}”(hŒ(socket redirection information for skmsg”h]”hŒ(socket redirection information for skmsg”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jkh´M<hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jkh´M<hj‚ubjä)�”}”(hŒ=``_nfct`` Associated connection, if any (with nfctinfo bits) ”h]”(jê)�”}”(hŒ ``_nfct``”h]”jð)�”}”(hj�h]”hŒ_nfct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M=hj‰ubj)�”}”(hhh]”jl)�”}”(hŒ2Associated connection, if any (with nfctinfo bits)”h]”hŒ2Associated connection, if any (with nfctinfo bits)”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤h´M=hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤h´M=hj‚ubjä)�”}”(hŒ``len`` Length of actual data ”h]”(jê)�”}”(hŒ``len``”h]”jð)�”}”(hjÈh]”hŒlen”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjÂubj)�”}”(hhh]”jl)�”}”(hŒLength of actual data”h]”hŒLength of actual data”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝh´MhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝh´Mhj‚ubjä)�”}”(hŒ``data_len`` Data length ”h]”(jê)�”}”(hŒ ``data_len``”h]”jð)�”}”(hjh]”hŒdata_len”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjûubj)�”}”(hhh]”jl)�”}”(hŒ Data length”h]”hŒ Data length”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhj‚ubjä)�”}”(hŒ(``mac_len`` Length of link layer header ”h]”(jê)�”}”(hŒ ``mac_len``”h]”jð)�”}”(hj:h]”hŒmac_len”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj4ubj)�”}”(hhh]”jl)�”}”(hŒLength of link layer header”h]”hŒLength of link layer header”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jOh´MhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOh´Mhj‚ubjä)�”}”(hŒ1``hdr_len`` writable header length of cloned skb ”h]”(jê)�”}”(hŒ ``hdr_len``”h]”jð)�”}”(hjsh]”hŒhdr_len”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjmubj)�”}”(hhh]”jl)�”}”(hŒ$writable header length of cloned skb”h]”hŒ$writable header length of cloned skb”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆh´M hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆh´M hj‚ubjä)�”}”(hŒ7``queue_mapping`` Queue mapping for multiqueue devices ”h]”(jê)�”}”(hŒ``queue_mapping``”h]”jð)�”}”(hj¬h]”hŒ queue_mapping”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MBhj¦ubj)�”}”(hhh]”jl)�”}”(hŒ$Queue mapping for multiqueue devices”h]”hŒ$Queue mapping for multiqueue devices”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁh´MBhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁh´MBhj‚ubjä)�”}”(hŒ8``cloned`` Head may be cloned (check refcnt to be sure) ”h]”(jê)�”}”(hŒ ``cloned``”h]”jð)�”}”(hjåh]”hŒcloned”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M&hjßubj)�”}”(hhh]”jl)�”}”(hŒ,Head may be cloned (check refcnt to be sure)”h]”hŒ,Head may be cloned (check refcnt to be sure)”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³júh´M&hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³júh´M&hj‚ubjä)�”}”(hŒ9``nohdr`` Payload reference only, must not modify header ”h]”(jê)�”}”(hŒ ``nohdr``”h]”jð)�”}”(hjh]”hŒnohdr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M(hjubj)�”}”(hhh]”jl)�”}”(hŒ.Payload reference only, must not modify header”h]”hŒ.Payload reference only, must not modify header”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j3h´M(hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3h´M(hj‚ubjä)�”}”(hŒ``fclone`` skbuff clone status ”h]”(jê)�”}”(hŒ ``fclone``”h]”jð)�”}”(hjWh]”hŒfclone”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M*hjQubj)�”}”(hhh]”jl)�”}”(hŒskbuff clone status”h]”hŒskbuff clone status”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jlh´M*hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlh´M*hj‚ubjä)�”}”(hŒb``peeked`` this packet has been seen already, so stats have been done for it, don't do them again ”h]”(jê)�”}”(hŒ ``peeked``”h]”jð)�”}”(hj�h]”hŒpeeked”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M7hjŠubj)�”}”(hhh]”jl)�”}”(hŒVthis packet has been seen already, so stats have been done for it, don't do them again”h]”hŒXthis packet has been seen already, so stats have been done for it, don’t do them again”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M6hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥h´M7hj‚ubjä)�”}”(hŒ^``head_frag`` skb was allocated from page fragments, not allocated by kmalloc() or vmalloc(). ”h]”(jê)�”}”(hŒ ``head_frag``”h]”jð)�”}”(hjÊh]”hŒ head_frag”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MDhjÄubj)�”}”(hhh]”jl)�”}”(hŒOskb was allocated from page fragments, not allocated by kmalloc() or vmalloc().”h]”hŒOskb was allocated from page fragments, not allocated by kmalloc() or vmalloc().”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MChjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßh´MDhj‚ubjä)�”}”(hŒ=``pfmemalloc`` skbuff was allocated from PFMEMALLOC reserves ”h]”(jê)�”}”(hŒ``pfmemalloc``”h]”jð)�”}”(hjh]”hŒ pfmemalloc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MEhjþubj)�”}”(hhh]”jl)�”}”(hŒ-skbuff was allocated from PFMEMALLOC reserves”h]”hŒ-skbuff was allocated from PFMEMALLOC reserves”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MEhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MEhj‚ubjä)�”}”(hŒf``pp_recycle`` mark the packet for recycling instead of freeing (implies page_pool support on driver) ”h]”(jê)�”}”(hŒ``pp_recycle``”h]”jð)�”}”(hj=h]”hŒ pp_recycle”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MGhj7ubj)�”}”(hhh]”jl)�”}”(hŒVmark the packet for recycling instead of freeing (implies page_pool support on driver)”h]”hŒVmark the packet for recycling instead of freeing (implies page_pool support on driver)”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MFhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jRh´MGhj‚ubjä)�”}”(hŒ;``active_extensions`` active extensions (skb_ext_id types) ”h]”(jê)�”}”(hŒ``active_extensions``”h]”jð)�”}”(hjwh]”hŒactive_extensions”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MHhjqubj)�”}”(hhh]”jl)�”}”(hŒ$active extensions (skb_ext_id types)”h]”hŒ$active extensions (skb_ext_id types)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒh´MHhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒh´MHhj‚ubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hj°h]”hŒ{unnamed_struct}”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khjªubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÅh´KhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÅh´Khj‚ubjä)�”}”(hŒ``pkt_type`` Packet class ”h]”(jê)�”}”(hŒ ``pkt_type``”h]”jð)�”}”(hjéh]”hŒpkt_type”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M)hjãubj)�”}”(hhh]”jl)�”}”(hŒ Packet class”h]”hŒ Packet class”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþh´M)hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþh´M)hj‚ubjä)�”}”(hŒ(``ignore_df`` allow local fragmentation ”h]”(jê)�”}”(hŒ ``ignore_df``”h]”jð)�”}”(hj"h]”hŒ ignore_df”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M%hjubj)�”}”(hhh]”jl)�”}”(hŒallow local fragmentation”h]”hŒallow local fragmentation”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7h´M%hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7h´M%hj‚ubjä)�”}”(hŒ2``dst_pending_confirm`` need to confirm neighbour ”h]”(jê)�”}”(hŒ``dst_pending_confirm``”h]”jð)�”}”(hj[h]”hŒdst_pending_confirm”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M[hjUubj)�”}”(hhh]”jl)�”}”(hŒneed to confirm neighbour”h]”hŒneed to confirm neighbour”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jph´M[hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jph´M[hj‚ubjä)�”}”(hŒ+``ip_summed`` Driver fed us an IP checksum ”h]”(jê)�”}”(hŒ ``ip_summed``”h]”jð)�”}”(hj”h]”hŒ ip_summed”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M'hjŽubj)�”}”(hhh]”jl)�”}”(hŒDriver fed us an IP checksum”h]”hŒDriver fed us an IP checksum”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©h´M'hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©h´M'hj‚ubjä)�”}”(hŒD``ooo_okay`` allow the mapping of a socket to a queue to be changed ”h]”(jê)�”}”(hŒ ``ooo_okay``”h]”jð)�”}”(hjÍh]”hŒooo_okay”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MJhjÇubj)�”}”(hhh]”jl)�”}”(hŒ6allow the mapping of a socket to a queue to be changed”h]”hŒ6allow the mapping of a socket to a queue to be changed”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâh´MJhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâh´MJhj‚ubjä)�”}”(hŒW``tstamp_type`` When set, skb->tstamp has the delivery_time clock base of skb->tstamp. ”h]”(jê)�”}”(hŒ``tstamp_type``”h]”jð)�”}”(hj h]”hŒ tstamp_type”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M_hj ubj)�”}”(hhh]”jl)�”}”(hŒFWhen set, skb->tstamp has the delivery_time clock base of skb->tstamp.”h]”hŒFWhen set, skb->tstamp has the delivery_time clock base of skb->tstamp.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M^hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M_hj‚ubjä)�”}”(hŒC``tc_at_ingress`` used within tc_classify to distinguish in/egress ”h]”(jê)�”}”(hŒ``tc_at_ingress``”h]”jð)�”}”(hj@ h]”hŒ tc_at_ingress”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M2hj: ubj)�”}”(hhh]”jl)�”}”(hŒ0used within tc_classify to distinguish in/egress”h]”hŒ0used within tc_classify to distinguish in/egress”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jU h´M2hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj: ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jU h´M2hj‚ubjä)�”}”(hŒ?``tc_skip_classify`` do not classify packet. set by IFB device ”h]”(jê)�”}”(hŒ``tc_skip_classify``”h]”jð)�”}”(hjy h]”hŒtc_skip_classify”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M1hjs ubj)�”}”(hhh]”jl)�”}”(hŒ)do not classify packet. set by IFB device”h]”hŒ)do not classify packet. set by IFB device”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽ h´M1hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ h´M1hj‚ubjä)�”}”(hŒ7``remcsum_offload`` remote checksum offload is enabled ”h]”(jê)�”}”(hŒ``remcsum_offload``”h]”jð)�”}”(hj² h]”hŒremcsum_offload”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M.hj¬ ubj)�”}”(hhh]”jl)�”}”(hŒ"remote checksum offload is enabled”h]”hŒ"remote checksum offload is enabled”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇ h´M.hjÈ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇ h´M.hj‚ubjä)�”}”(hŒ8``csum_complete_sw`` checksum was completed by software ”h]”(jê)�”}”(hŒ``csum_complete_sw``”h]”jð)�”}”(hjë h]”hŒcsum_complete_sw”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MUhjå ubj)�”}”(hhh]”jl)�”}”(hŒ"checksum was completed by software”h]”hŒ"checksum was completed by software”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!h´MUhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!h´MUhj‚ubjä)�”}”(hŒ“``csum_level`` indicates the number of consecutive checksums found in the packet minus one that have been verified as CHECKSUM_UNNECESSARY (max 3) ”h]”(jê)�”}”(hŒ``csum_level``”h]”jð)�”}”(hj$!h]”hŒ csum_level”…”�”}”(hj&!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MXhj!ubj)�”}”(hhh]”jl)�”}”(hŒƒindicates the number of consecutive checksums found in the packet minus one that have been verified as CHECKSUM_UNNECESSARY (max 3)”h]”hŒƒindicates the number of consecutive checksums found in the packet minus one that have been verified as CHECKSUM_UNNECESSARY (max 3)”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MVhj:!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9!h´MXhj‚ubjä)�”}”(hŒ]``inner_protocol_type`` whether the inner protocol is ENCAP_TYPE_ETHER or ENCAP_TYPE_IPPROTO ”h]”(jê)�”}”(hŒ``inner_protocol_type``”h]”jð)�”}”(hj^!h]”hŒinner_protocol_type”…”�”}”(hj`!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M-hjX!ubj)�”}”(hhh]”jl)�”}”(hŒDwhether the inner protocol is ENCAP_TYPE_ETHER or ENCAP_TYPE_IPPROTO”h]”hŒDwhether the inner protocol is ENCAP_TYPE_ETHER or ENCAP_TYPE_IPPROTO”…”�”}”(hjw!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M,hjt!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³js!h´M-hj‚ubjä)�”}”(hŒL``l4_hash`` indicate hash is a canonical 4-tuple hash over transport ports. ”h]”(jê)�”}”(hŒ ``l4_hash``”h]”jð)�”}”(hj˜!h]”hŒl4_hash”…”�”}”(hjš!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MLhj’!ubj)�”}”(hhh]”jl)�”}”(hŒ?indicate hash is a canonical 4-tuple hash over transport ports.”h]”hŒ?indicate hash is a canonical 4-tuple hash over transport ports.”…”�”}”(hj±!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MKhj®!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­!h´MLhj‚ubjä)�”}”(hŒ:``sw_hash`` indicates hash was computed in software stack ”h]”(jê)�”}”(hŒ ``sw_hash``”h]”jð)�”}”(hjÒ!h]”hŒsw_hash”…”�”}”(hjÔ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MMhjÌ!ubj)�”}”(hhh]”jl)�”}”(hŒ-indicates hash was computed in software stack”h]”hŒ-indicates hash was computed in software stack”…”�”}”(hjë!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jç!h´MMhjè!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jç!h´MMhj‚ubjä)�”}”(hŒ(``wifi_acked_valid`` wifi_acked was set ”h]”(jê)�”}”(hŒ``wifi_acked_valid``”h]”jð)�”}”(hj "h]”hŒwifi_acked_valid”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MNhj"ubj)�”}”(hhh]”jl)�”}”(hŒwifi_acked was set”h]”hŒwifi_acked was set”…”�”}”(hj$"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j "h´MNhj!"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j "h´MNhj‚ubjä)�”}”(hŒ6``wifi_acked`` whether frame was acked on wifi or not ”h]”(jê)�”}”(hŒ``wifi_acked``”h]”jð)�”}”(hjD"h]”hŒ wifi_acked”…”�”}”(hjF"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MOhj>"ubj)�”}”(hhh]”jl)�”}”(hŒ&whether frame was acked on wifi or not”h]”hŒ&whether frame was acked on wifi or not”…”�”}”(hj]"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY"h´MOhjZ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY"h´MOhj‚ubjä)�”}”(hŒ=``no_fcs`` Request NIC to treat last 4 bytes as Ethernet FCS ”h]”(jê)�”}”(hŒ ``no_fcs``”h]”jð)�”}”(hj}"h]”hŒno_fcs”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MPhjw"ubj)�”}”(hhh]”jl)�”}”(hŒ1Request NIC to treat last 4 bytes as Ethernet FCS”h]”hŒ1Request NIC to treat last 4 bytes as Ethernet FCS”…”�”}”(hj–"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’"h´MPhj“"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’"h´MPhj‚ubjä)�”}”(hŒF``encapsulation`` indicates the inner headers in the skbuff are valid ”h]”(jê)�”}”(hŒ``encapsulation``”h]”jð)�”}”(hj¶"h]”hŒ encapsulation”…”�”}”(hj¸"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MQhj°"ubj)�”}”(hhh]”jl)�”}”(hŒ3indicates the inner headers in the skbuff are valid”h]”hŒ3indicates the inner headers in the skbuff are valid”…”�”}”(hjÏ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jË"h´MQhjÌ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jË"h´MQhj‚ubjä)�”}”(hŒ/``encap_hdr_csum`` software checksum is needed ”h]”(jê)�”}”(hŒ``encap_hdr_csum``”h]”jð)�”}”(hjï"h]”hŒencap_hdr_csum”…”�”}”(hjñ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjí"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MRhjé"ubj)�”}”(hhh]”jl)�”}”(hŒsoftware checksum is needed”h]”hŒsoftware checksum is needed”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#h´MRhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#h´MRhj‚ubjä)�”}”(hŒ)``csum_valid`` checksum is already valid ”h]”(jê)�”}”(hŒ``csum_valid``”h]”jð)�”}”(hj(#h]”hŒ csum_valid”…”�”}”(hj*#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MShj"#ubj)�”}”(hhh]”jl)�”}”(hŒchecksum is already valid”h]”hŒchecksum is already valid”…”�”}”(hjA#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=#h´MShj>#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=#h´MShj‚ubjä)�”}”(hŒ1``ndisc_nodetype`` router type (from link layer) ”h]”(jê)�”}”(hŒ``ndisc_nodetype``”h]”jð)�”}”(hja#h]”hŒndisc_nodetype”…”�”}”(hjc#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MIhj[#ubj)�”}”(hhh]”jl)�”}”(hŒrouter type (from link layer)”h]”hŒrouter type (from link layer)”…”�”}”(hjz#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jv#h´MIhjw#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jv#h´MIhj‚ubjä)�”}”(hŒ*``ipvs_property`` skbuff is owned by ipvs ”h]”(jê)�”}”(hŒ``ipvs_property``”h]”jð)�”}”(hjš#h]”hŒ ipvs_property”…”�”}”(hjœ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M+hj”#ubj)�”}”(hhh]”jl)�”}”(hŒskbuff is owned by ipvs”h]”hŒskbuff is owned by ipvs”…”�”}”(hj³#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯#h´M+hj°#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯#h´M+hj‚ubjä)�”}”(hŒ)``nf_trace`` netfilter packet trace flag ”h]”(jê)�”}”(hŒ ``nf_trace``”h]”jð)�”}”(hjÓ#h]”hŒnf_trace”…”�”}”(hjÕ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M8hjÍ#ubj)�”}”(hhh]”jl)�”}”(hŒnetfilter packet trace flag”h]”hŒnetfilter packet trace flag”…”�”}”(hjì#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jè#h´M8hjé#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jè#h´M8hj‚ubjä)�”}”(hŒ9``offload_fwd_mark`` Packet was L2-forwarded in hardware ”h]”(jê)�”}”(hŒ``offload_fwd_mark``”h]”jð)�”}”(hj $h]”hŒoffload_fwd_mark”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj $ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M/hj$ubj)�”}”(hhh]”jl)�”}”(hŒ#Packet was L2-forwarded in hardware”h]”hŒ#Packet was L2-forwarded in hardware”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!$h´M/hj"$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!$h´M/hj‚ubjä)�”}”(hŒ<``offload_l3_fwd_mark`` Packet was L3-forwarded in hardware ”h]”(jê)�”}”(hŒ``offload_l3_fwd_mark``”h]”jð)�”}”(hjE$h]”hŒoffload_l3_fwd_mark”…”�”}”(hjG$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjC$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M0hj?$ubj)�”}”(hhh]”jl)�”}”(hŒ#Packet was L3-forwarded in hardware”h]”hŒ#Packet was L3-forwarded in hardware”…”�”}”(hj^$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZ$h´M0hj[$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZ$h´M0hj‚ubjä)�”}”(hŒ:``redirected`` packet was redirected by packet classifier ”h]”(jê)�”}”(hŒ``redirected``”h]”jð)�”}”(hj~$h]”hŒ redirected”…”�”}”(hj€$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M3hjx$ubj)�”}”(hhh]”jl)�”}”(hŒ*packet was redirected by packet classifier”h]”hŒ*packet was redirected by packet classifier”…”�”}”(hj—$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“$h´M3hj”$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“$h´M3hj‚ubjä)�”}”(hŒ=``from_ingress`` packet was redirected from the ingress path ”h]”(jê)�”}”(hŒ``from_ingress``”h]”jð)�”}”(hj·$h]”hŒ from_ingress”…”�”}”(hj¹$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M4hj±$ubj)�”}”(hhh]”jl)�”}”(hŒ+packet was redirected from the ingress path”h]”hŒ+packet was redirected from the ingress path”…”�”}”(hjÐ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌ$h´M4hjÍ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌ$h´M4hj‚ubjä)�”}”(hŒH``nf_skip_egress`` packet shall skip nf egress - see netfilter_netdev.h ”h]”(jê)�”}”(hŒ``nf_skip_egress``”h]”jð)�”}”(hjð$h]”hŒnf_skip_egress”…”�”}”(hjò$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjî$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5hjê$ubj)�”}”(hhh]”jl)�”}”(hŒ4packet shall skip nf egress - see netfilter_netdev.h”h]”hŒ4packet shall skip nf egress - see netfilter_netdev.h”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%h´M5hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjê$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%h´M5hj‚ubjä)�”}”(hŒ``decrypted`` Decrypted SKB ”h]”(jê)�”}”(hŒ ``decrypted``”h]”jð)�”}”(hj)%h]”hŒ decrypted”…”�”}”(hj+%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M\hj#%ubj)�”}”(hhh]”jl)�”}”(hŒ Decrypted SKB”h]”hŒ Decrypted SKB”…”�”}”(hjB%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>%h´M\h•.j?%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>%h´M\hj‚ubjä)�”}”(hŒE``slow_gro`` state present at GRO time, slower prepare step required ”h]”(jê)�”}”(hŒ ``slow_gro``”h]”jð)�”}”(hjb%h]”hŒslow_gro”…”�”}”(hjd%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M]hj\%ubj)�”}”(hhh]”jl)�”}”(hŒ7state present at GRO time, slower prepare step required”h]”hŒ7state present at GRO time, slower prepare step required”…”�”}”(hj{%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jw%h´M]hjx%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jw%h´M]hj‚ubjä)�”}”(hŒ9``csum_not_inet`` use CRC32c to resolve CHECKSUM_PARTIAL ”h]”(jê)�”}”(hŒ``csum_not_inet``”h]”jð)�”}”(hj›%h]”hŒ csum_not_inet”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MThj•%ubj)�”}”(hhh]”jl)�”}”(hŒ&use CRC32c to resolve CHECKSUM_PARTIAL”h]”hŒ&use CRC32c to resolve CHECKSUM_PARTIAL”…”�”}”(hj´%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°%h´MThj±%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°%h´MThj‚ubjä)�”}”(hŒU``unreadable`` indicates that at least 1 of the fragments in this skb is unreadable. ”h]”(jê)�”}”(hŒ``unreadable``”h]”jð)�”}”(hjÔ%h]”hŒ unreadable”…”�”}”(hjÖ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MZhjÎ%ubj)�”}”(hhh]”jl)�”}”(hŒEindicates that at least 1 of the fragments in this skb is unreadable.”h]”hŒEindicates that at least 1 of the fragments in this skb is unreadable.”…”�”}”(hjí%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MYhjê%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jé%h´MZhj‚ubjä)�”}”(hŒ,``tc_depth`` counter for packet duplication ”h]”(jê)�”}”(hŒ ``tc_depth``”h]”jð)�”}”(hj&h]”hŒtc_depth”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj &ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M?hj&ubj)�”}”(hhh]”jl)�”}”(hŒcounter for packet duplication”h]”hŒcounter for packet duplication”…”�”}”(hj'&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#&h´M?hj$&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#&h´M?hj‚ubjä)�”}”(hŒ#``tc_index`` Traffic control index ”h]”(jê)�”}”(hŒ ``tc_index``”h]”jð)�”}”(hjG&h]”hŒtc_index”…”�”}”(hjI&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M@hjA&ubj)�”}”(hhh]”jl)�”}”(hŒTraffic control index”h]”hŒTraffic control index”…”�”}”(hj`&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\&h´M@hj]&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\&h´M@hj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj€&h]”hŒ{unnamed_union}”…”�”}”(hj‚&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khjz&ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj™&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•&h´Khj–&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•&h´Khj‚ubjä)�”}”(hŒ3``csum`` Checksum (must include start/offset pair) ”h]”(jê)�”}”(hŒ``csum``”h]”jð)�”}”(hj¹&h]”hŒcsum”…”�”}”(hj»&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M!hj³&ubj)�”}”(hhh]”jl)�”}”(hŒ)Checksum (must include start/offset pair)”h]”hŒ)Checksum (must include start/offset pair)”…”�”}”(hjÒ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÎ&h´M!hjÏ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÎ&h´M!hj‚ubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hjò&h]”hŒ{unnamed_struct}”…”�”}”(hjô&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjð&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khjì&ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'h´Khj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjì&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'h´Khj‚ubjä)�”}”(hŒE``csum_start`` Offset from skb->head where checksumming should start ”h]”(jê)�”}”(hŒ``csum_start``”h]”jð)�”}”(hj+'h]”hŒ csum_start”…”�”}”(hj-'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M"hj%'ubj)�”}”(hhh]”jl)�”}”(hŒ5Offset from skb->head where checksumming should start”h]”hŒ5Offset from skb->head where checksumming should start”…”�”}”(hjD'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@'h´M"hjA'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@'h´M"hj‚ubjä)�”}”(hŒG``csum_offset`` Offset from csum_start where checksum should be stored ”h]”(jê)�”}”(hŒ``csum_offset``”h]”jð)�”}”(hjd'h]”hŒ csum_offset”…”�”}”(hjf'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjb'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M#hj^'ubj)�”}”(hhh]”jl)�”}”(hŒ6Offset from csum_start where checksum should be stored”h]”hŒ6Offset from csum_start where checksum should be stored”…”�”}”(hj}'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jy'h´M#hjz'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jy'h´M#hj‚ubjä)�”}”(hŒ&``priority`` Packet queueing priority ”h]”(jê)�”}”(hŒ ``priority``”h]”jð)�”}”(hj�'h]”hŒpriority”…”�”}”(hjŸ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj›'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M$hj—'ubj)�”}”(hhh]”jl)�”}”(hŒPacket queueing priority”h]”hŒPacket queueing priority”…”�”}”(hj¶'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j²'h´M$hj³'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j²'h´M$hj‚ubjä)�”}”(hŒ,``skb_iif`` ifindex of device we arrived on ”h]”(jê)�”}”(hŒ ``skb_iif``”h]”jð)�”}”(hjÖ'h]”hŒskb_iif”…”�”}”(hjØ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÔ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M>hjÐ'ubj)�”}”(hhh]”jl)�”}”(hŒifindex of device we arrived on”h]”hŒifindex of device we arrived on”…”�”}”(hjï'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jë'h´M>hjì'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jë'h´M>hj‚ubjä)�”}”(hŒ``hash`` the packet hash ”h]”(jê)�”}”(hŒ``hash``”h]”jð)�”}”(hj(h]”hŒhash”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MAhj (ubj)�”}”(hhh]”jl)�”}”(hŒthe packet hash”h]”hŒthe packet hash”…”�”}”(hj((h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j$(h´MAhj%(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj (ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j$(h´MAhj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjH(h]”hŒ{unnamed_union}”…”�”}”(hjJ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjF(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´KhjB(ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hja(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j](h´Khj^(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j](h´Khj‚ubjä)�”}”(hŒ'``vlan_all`` vlan fields (proto & tci) ”h]”(jê)�”}”(hŒ ``vlan_all``”h]”jð)�”}”(hj�(h]”hŒvlan_all”…”�”}”(hjƒ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mghj{(ubj)�”}”(hhh]”jl)�”}”(hŒvlan fields (proto & tci)”h]”hŒvlan fields (proto & tci)”…”�”}”(hjš(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j–(h´Mghj—(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–(h´Mghj‚ubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hjº(h]”hŒ{unnamed_struct}”…”�”}”(hj¼(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khj´(ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÓ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏ(h´KhjÐ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏ(h´Khj‚ubjä)�”}”(hŒ+``vlan_proto`` vlan encapsulation protocol ”h]”(jê)�”}”(hŒ``vlan_proto``”h]”jð)�”}”(hjó(h]”hŒ vlan_proto”…”�”}”(hjõ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhhjí(ubj)�”}”(hhh]”jl)�”}”(hŒvlan encapsulation protocol”h]”hŒvlan encapsulation protocol”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)h´Mhhj )ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjí(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)h´Mhhj‚ubjä)�”}”(hŒ*``vlan_tci`` vlan tag control information ”h]”(jê)�”}”(hŒ ``vlan_tci``”h]”jð)�”}”(hj,)h]”hŒvlan_tci”…”�”}”(hj.)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mihj&)ubj)�”}”(hhh]”jl)�”}”(hŒvlan tag control information”h]”hŒvlan tag control information”…”�”}”(hjE)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jA)h´MihjB)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jA)h´Mihj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hje)h]”hŒ{unnamed_union}”…”�”}”(hjg)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjc)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khj_)ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj~)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jz)h´Khj{)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jz)h´Khj‚ubjä)�”}”(hŒ5``napi_id`` id of the NAPI struct this skb came from ”h]”(jê)�”}”(hŒ ``napi_id``”h]”jð)�”}”(hjž)h]”hŒnapi_id”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M`hj˜)ubj)�”}”(hhh]”jl)�”}”(hŒ(id of the NAPI struct this skb came from”h]”hŒ(id of the NAPI struct this skb came from”…”�”}”(hj·)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³)h´M`hj´)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³)h´M`hj‚ubjä)�”}”(hŒ3``sender_cpu`` (aka **napi_id**) source CPU in XPS ”h]”(jê)�”}”(hŒ``sender_cpu``”h]”jð)�”}”(hj×)h]”hŒ sender_cpu”…”�”}”(hjÙ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MahjÑ)ubj)�”}”(hhh]”jl)�”}”(hŒ#(aka **napi_id**) source CPU in XPS”h]”(hŒ(aka ”…”�”}”(hjð)h²hh³Nh´Nubj›)�”}”(hŒ **napi_id**”h]”hŒnapi_id”…”�”}”(hjø)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjð)ubhŒ) source CPU in XPS”…”�”}”(hjð)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì)h´Mahjí)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì)h´Mahj‚ubjä)�”}”(hŒ``secmark`` security marking ”h]”(jê)�”}”(hŒ ``secmark``”h]”jð)�”}”(hj"*h]”hŒsecmark”…”�”}”(hj$*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mchj*ubj)�”}”(hhh]”jl)�”}”(hŒsecurity marking”h]”hŒsecurity marking”…”�”}”(hj;*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7*h´Mchj8*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7*h´Mchj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj[*h]”hŒ{unnamed_union}”…”�”}”(hj]*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjY*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´KhjU*ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jp*h´Khjq*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jp*h´Khj‚ubjä)�”}”(hŒ``mark`` Generic packet mark ”h]”(jê)�”}”(hŒ``mark``”h]”jð)�”}”(hj”*h]”hŒmark”…”�”}”(hj–*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MdhjŽ*ubj)�”}”(hhh]”jl)�”}”(hŒGeneric packet mark”h]”hŒGeneric packet mark”…”�”}”(hj­*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©*h´Mdhjª*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©*h´Mdhj‚ubjä)�”}”(hŒg``reserved_tailroom`` (aka **mark**) number of bytes of free space available at the tail of an sk_buff ”h]”(jê)�”}”(hŒ``reserved_tailroom``”h]”jð)�”}”(hjÍ*h]”hŒreserved_tailroom”…”�”}”(hjÏ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjË*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MfhjÇ*ubj)�”}”(hhh]”jl)�”}”(hŒP(aka **mark**) number of bytes of free space available at the tail of an sk_buff”h]”(hŒ(aka ”…”�”}”(hjæ*h²hh³Nh´Nubj›)�”}”(hŒ**mark**”h]”hŒmark”…”�”}”(hjî*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæ*ubhŒC) number of bytes of free space available at the tail of an sk_buff”…”�”}”(hjæ*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mehjã*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâ*h´Mfhj‚ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj+h]”hŒ{unnamed_union}”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Khj+ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj2+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.+h´Khj/+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.+h´Khj‚ubjä)�”}”(hŒ,``inner_protocol`` Protocol (encapsulation) ”h]”(jê)�”}”(hŒ``inner_protocol``”h]”jð)�”}”(hjR+h]”hŒinner_protocol”…”�”}”(hjT+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjP+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MjhjL+ubj)�”}”(hhh]”jl)�”}”(hŒProtocol (encapsulation)”h]”hŒProtocol (encapsulation)”…”�”}”(hjk+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jg+h´Mjhjh+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jg+h´Mjhj‚ubjä)�”}”(hŒo``inner_ipproto`` (aka **inner_protocol**) stores ipproto when skb->inner_protocol_type == ENCAP_TYPE_IPPROTO; ”h]”(jê)�”}”(hŒ``inner_ipproto``”h]”jð)�”}”(hj‹+h]”hŒ inner_ipproto”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mlhj…+ubj)�”}”(hhh]”jl)�”}”(hŒ\(aka **inner_protocol**) stores ipproto when skb->inner_protocol_type == ENCAP_TYPE_IPPROTO;”h]”(hŒ(aka ”…”�”}”(hj¤+h²hh³Nh´Nubj›)�”}”(hŒ**inner_protocol**”h]”hŒinner_protocol”…”�”}”(hj¬+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤+ubhŒE) stores ipproto when skb->inner_protocol_type == ENCAP_TYPE_IPPROTO;”…”�”}”(hj¤+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mkhj¡+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j +h´Mlhj‚ubjä)�”}”(hŒH``inner_transport_header`` Inner transport layer header (encapsulation) ”h]”(jê)�”}”(hŒ``inner_transport_header``”h]”jð)�”}”(hj×+h]”hŒinner_transport_header”…”�”}”(hjÙ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MmhjÑ+ubj)�”}”(hhh]”jl)�”}”(hŒ,Inner transport layer header (encapsulation)”h]”hŒ,Inner transport layer header (encapsulation)”…”�”}”(hjð+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì+h´Mmhjí+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì+h´Mmhj‚ubjä)�”}”(hŒ>``inner_network_header`` Network layer header (encapsulation) ”h]”(jê)�”}”(hŒ``inner_network_header``”h]”jð)�”}”(hj,h]”hŒinner_network_header”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mnhj ,ubj)�”}”(hhh]”jl)�”}”(hŒ$Network layer header (encapsulation)”h]”hŒ$Network layer header (encapsulation)”…”�”}”(hj),h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%,h´Mnhj&,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%,h´Mnhj‚ubjä)�”}”(hŒ7``inner_mac_header`` Link layer header (encapsulation) ”h]”(jê)�”}”(hŒ``inner_mac_header``”h]”jð)�”}”(hjI,h]”hŒinner_mac_header”…”�”}”(hjK,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjG,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MohjC,ubj)�”}”(hhh]”jl)�”}”(hŒ!Link layer header (encapsulation)”h]”hŒ!Link layer header (encapsulation)”…”�”}”(hjb,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^,h´Mohj_,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^,h´Mohj‚ubjä)�”}”(hŒ)``protocol`` Packet protocol from driver ”h]”(jê)�”}”(hŒ ``protocol``”h]”jð)�”}”(hj‚,h]”hŒprotocol”…”�”}”(hj„,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M9hj|,ubj)�”}”(hhh]”jl)�”}”(hŒPacket protocol from driver”h]”hŒPacket protocol from driver”…”�”}”(hj›,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—,h´M9hj˜,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—,h´M9hj‚ubjä)�”}”(hŒ,``transport_header`` Transport layer header ”h]”(jê)�”}”(hŒ``transport_header``”h]”jð)�”}”(hj»,h]”hŒtransport_header”…”�”}”(hj½,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mphjµ,ubj)�”}”(hhh]”jl)�”}”(hŒTransport layer header”h]”hŒTransport layer header”…”�”}”(hjÔ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐ,h´MphjÑ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐ,h´Mphj‚ubjä)�”}”(hŒ(``network_header`` Network layer header ”h]”(jê)�”}”(hŒ``network_header``”h]”jð)�”}”(hjô,h]”hŒnetwork_header”…”�”}”(hjö,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mqhjî,ubj)�”}”(hhh]”jl)�”}”(hŒNetwork layer header”h]”hŒNetwork layer header”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j -h´Mqhj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j -h´Mqhj‚ubjä)�”}”(hŒ!``mac_header`` Link layer header ”h]”(jê)�”}”(hŒ``mac_header``”h]”jð)�”}”(hj--h]”hŒ mac_header”…”�”}”(hj/-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mrhj'-ubj)�”}”(hhh]”jl)�”}”(hŒLink layer header”h]”hŒLink layer header”…”�”}”(hjF-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jB-h´MrhjC-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jB-h´Mrhj‚ubjä)�”}”(hŒB``kcov_handle`` KCOV remote handle for remote coverage collection ”h]”(jê)�”}”(hŒ``kcov_handle``”h]”jð)�”}”(hjf-h]”hŒ kcov_handle”…”�”}”(hjh-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjd-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mshj`-ubj)�”}”(hhh]”jl)�”}”(hŒ1KCOV remote handle for remote coverage collection”h]”hŒ1KCOV remote handle for remote coverage collection”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{-h´Mshj|-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{-h´Mshj‚ubjä)�”}”(hŒ0``alloc_cpu`` CPU which did the skb allocation. ”h]”(jê)�”}”(hŒ ``alloc_cpu``”h]”jð)�”}”(hjŸ-h]”hŒ alloc_cpu”…”�”}”(hj¡-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mbhj™-ubj)�”}”(hhh]”jl)�”}”(hŒ!CPU which did the skb allocation.”h]”hŒ!CPU which did the skb allocation.”…”�”}”(hj¸-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´-h´Mbhjµ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´-h´Mbhj‚ubjä)�”}”(hŒ``tail`` Tail pointer ”h]”(jê)�”}”(hŒ``tail``”h]”jð)�”}”(hjØ-h]”hŒtail”…”�”}”(hjÚ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MthjÒ-ubj)�”}”(hhh]”jl)�”}”(hŒ Tail pointer”h]”hŒ Tail pointer”…”�”}”(hjñ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jí-h´Mthjî-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jí-h´Mthj‚ubjä)�”}”(hŒ``end`` End pointer ”h]”(jê)�”}”(hŒ``end``”h]”jð)�”}”(hj.h]”hŒend”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Muhj .ubj)�”}”(hhh]”jl)�”}”(hŒ End pointer”h]”hŒ End pointer”…”�”}”(hj*.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j&.h´Muhj'.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj .ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j&.h´Muhj‚ubjä)�”}”(hŒ``head`` Head of buffer ”h]”(jê)�”}”(hŒ``head``”h]”jð)�”}”(hjJ.h]”hŒhead”…”�”}”(hjL.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjH.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MvhjD.ubj)�”}”(hhh]”jl)�”}”(hŒHead of buffer”h]”hŒHead of buffer”…”�”}”(hjc.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_.h´Mvhj`.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_.h´Mvhj‚ubjä)�”}”(hŒ``data`` Data head pointer ”h]”(jê)�”}”(hŒ``data``”h]”jð)�”}”(hjƒ.h]”hŒdata”…”�”}”(hj….h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mwhj}.ubj)�”}”(hhh]”jl)�”}”(hŒData head pointer”h]”hŒData head pointer”…”�”}”(hjœ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜.h´Mwhj™.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜.h´Mwhj‚ubjä)�”}”(hŒ``truesize`` Buffer size ”h]”(jê)�”}”(hŒ ``truesize``”h]”jð)�”}”(hj¼.h]”hŒtruesize”…”�”}”(hj¾.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjº.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mxhj¶.ubj)�”}”(hhh]”jl)�”}”(hŒ Buffer size”h]”hŒ Buffer size”…”�”}”(hjÕ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÑ.h´MxhjÒ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÑ.h´Mxhj‚ubjä)�”}”(hŒ,``users`` User count - see {datagram,tcp}.c ”h]”(jê)�”}”(hŒ ``users``”h]”jð)�”}”(hjõ.h]”hŒusers”…”�”}”(hj÷.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjó.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Myhjï.ubj)�”}”(hhh]”jl)�”}”(hŒ!User count - see {datagram,tcp}.c”h]”hŒ!User count - see {datagram,tcp}.c”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j /h´Myhj /ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjï.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j /h´Myhj‚ubjä)�”}”(hŒJ``extensions`` allocated extensions, valid if active_extensions is nonzero”h]”(jê)�”}”(hŒ``extensions``”h]”jð)�”}”(hj./h]”hŒ extensions”…”�”}”(hj0/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Myhj(/ubj)�”}”(hhh]”jl)�”}”(hŒ;allocated extensions, valid if active_extensions is nonzero”h]”hŒ;allocated extensions, valid if active_extensions is nonzero”…”�”}”(hjG/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MzhjD/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jC/h´Myhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_pfmemalloc (C function)”Œc.skb_pfmemalloc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/bool skb_pfmemalloc (const struct sk_buff *skb)”h]”j )�”}”(hŒ.bool skb_pfmemalloc(const struct sk_buff *skb)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjˆ/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„/h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mvubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„/h²hh³j•/h´Mvubj3)�”}”(hŒskb_pfmemalloc”h]”j9)�”}”(hŒskb_pfmemalloc”h]”hŒskb_pfmemalloc”…”�”}”(hj¨/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤/ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj„/h²hh³j•/h´Mvubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÄ/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ/ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjß/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ/ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjý/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjú/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿ/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jª/sbŒc.skb_pfmemalloc”†”asbuh1hhjÀ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj+0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀ/ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj80h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼/ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj„/h²hh³j•/h´Mvubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj€/h²hh³j•/h´Mvubah}”(h]”j{/ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j•/h´Mvhj}/h²hubjg)�”}”(hhh]”jl)�”}”(hŒ6Test if the skb was allocated from PFMEMALLOC reserves”h]”hŒ6Test if the skb was allocated from PFMEMALLOC reserves”…”�”}”(hjb0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mvhj_0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj}/h²hh³j•/h´Mvubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jz0jŒjz0j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ6**Parameters** ``const struct sk_buff *skb`` buffer”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj„0h]”hŒ Parameters”…”�”}”(hj†0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mzhj~0ubjß)�”}”(hhh]”jä)�”}”(hŒ$``const struct sk_buff *skb`` buffer”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj£0h]”hŒconst struct sk_buff *skb”…”�”}”(hj¥0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M|hj�0ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj¼0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mwhj¹0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸0h´M|hjš0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj~0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_dst (C function)”Œ c.skb_dst”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6struct dst_entry * skb_dst (const struct sk_buff *skb)”h]”j )�”}”(hŒ4struct dst_entry *skb_dst(const struct sk_buff *skb)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù0h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù0h²hh³j 1h´M†ubh)�”}”(hhh]”j9)�”}”(hŒ dst_entry”h]”hŒ dst_entry”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_dst”sbŒ c.skb_dst”†”asbuh1hhjù0h²hh³j 1h´M†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù0h²hh³j 1h´M†ubj )�”}”(hj h]”hŒ*”…”�”}”(hjK1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjù0h²hh³j 1h´M†ubj3)�”}”(hŒskb_dst”h]”j9)�”}”(hj:1h]”hŒskb_dst”…”�”}”(hj\1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX1ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjù0h²hh³j 1h´M†ubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjw1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjs1ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj’1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjs1ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj°1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j²1Œmodname”NŒ classname”Njå jè )�”}”jë ]”j81Œ c.skb_dst”†”asbuh1hhjs1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjs1ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜ1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjs1ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjé1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjo1ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjù0h²hh³j 1h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjõ0h²hh³j 1h´M†ubah}”(h]”jð0ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j 1h´M†hjò0h²hubjg)�”}”(hhh]”jl)�”}”(hŒreturns skb dst_entry”h]”hŒreturns skb dst_entry”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M†hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjò0h²hh³j 1h´M†ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j+2jŒj+2j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒx**Parameters** ``const struct sk_buff *skb`` buffer **Return** skb dst_entry, regardless of reference taken or not.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj52h]”hŒ Parameters”…”�”}”(hj72h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj32ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŠhj/2ubjß)�”}”(hhh]”jä)�”}”(hŒ%``const struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjT2h]”hŒconst struct sk_buff *skb”…”�”}”(hjV2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‡hjN2ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjm2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ji2h´M‡hjj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji2h´M‡hjK2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/2ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj�2h]”hŒReturn”…”�”}”(hj‘2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‰hj/2ubjl)�”}”(hŒ4skb dst_entry, regardless of reference taken or not.”h]”hŒ4skb dst_entry, regardless of reference taken or not.”…”�”}”(hj¥2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‰hj/2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_dstref_steal (C function)”Œc.skb_dstref_steal”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4unsigned long skb_dstref_steal (struct sk_buff *skb)”h]”j )�”}”(hŒ3unsigned long skb_dstref_steal(struct sk_buff *skb)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÔ2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÐ2h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐ2h²hh³jâ2h´M�ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjñ2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÐ2h²hh³jâ2h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐ2h²hh³jâ2h´M�ubj3)�”}”(hŒskb_dstref_steal”h]”j9)�”}”(hŒskb_dstref_steal”h]”hŒskb_dstref_steal”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj 3ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÐ2h²hh³jâ2h´M�ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj-3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)3ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjK3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjH3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jM3Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j3sbŒc.skb_dstref_steal”†”asbuh1hhj)3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)3ubj )�”}”(hj h]”hŒ*”…”�”}”(hjy3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj)3ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj†3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%3ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÐ2h²hh³jâ2h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÌ2h²hh³jâ2h´M�ubah}”(h]”jÇ2ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jâ2h´M�hjÉ2h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+return current dst_entry value and clear it”h]”hŒ+return current dst_entry value and clear it”…”�”}”(hj°3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hj­3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÉ2h²hh³jâ2h´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÈ3jŒjÈ3j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÀ**Parameters** ``struct sk_buff *skb`` buffer **Description** Resets skb dst_entry without adjusting its reference count. Useful in cases where dst_entry needs to be temporarily reset and restored. Note that the returned value cannot be used directly because it might contain SKB_DST_NOREF bit. When in doubt, prefer skb_dst_drop() over skb_dstref_steal() to correctly handle dst_entry reference counting. **Return** original skb dst_entry.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÒ3h]”hŒ Parameters”…”�”}”(hjÔ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¡hjÌ3ubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjñ3h]”hŒstruct sk_buff *skb”…”�”}”(hjó3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjï3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mžhjë3ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4h´Mžhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4h´Mžhjè3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌ3ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj,4h]”hŒ Description”…”�”}”(hj.4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjÌ3ubjl)�”}”(hŒèResets skb dst_entry without adjusting its reference count. Useful in cases where dst_entry needs to be temporarily reset and restored. Note that the returned value cannot be used directly because it might contain SKB_DST_NOREF bit.”h]”hŒèResets skb dst_entry without adjusting its reference count. Useful in cases where dst_entry needs to be temporarily reset and restored. Note that the returned value cannot be used directly because it might contain SKB_DST_NOREF bit.”…”�”}”(hjB4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŸhjÌ3ubjl)�”}”(hŒnWhen in doubt, prefer skb_dst_drop() over skb_dstref_steal() to correctly handle dst_entry reference counting.”h]”hŒnWhen in doubt, prefer skb_dst_drop() over skb_dstref_steal() to correctly handle dst_entry reference counting.”…”�”}”(hjQ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¤hjÌ3ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjb4h]”hŒReturn”…”�”}”(hjd4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj`4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M§hjÌ3ubjl)�”}”(hŒoriginal skb dst_entry.”h]”hŒoriginal skb dst_entry.”…”�”}”(hjx4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¨hjÌ3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_dstref_restore (C function)”Œc.skb_dstref_restore”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCvoid skb_dstref_restore (struct sk_buff *skb, unsigned long refdst)”h]”j )�”}”(hŒBvoid skb_dstref_restore(struct sk_buff *skb, unsigned long refdst)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj£4h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£4h²hh³jµ4h´M³ubj3)�”}”(hŒskb_dstref_restore”h]”j9)�”}”(hŒskb_dstref_restore”h]”hŒskb_dstref_restore”…”�”}”(hjÈ4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄ4ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj£4h²hh³jµ4h´M³ubj¡ )�”}”(hŒ+(struct sk_buff *skb, unsigned long refdst)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjä4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjà4ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿ4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j5Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÊ4sbŒc.skb_dstref_restore”†”asbuh1hhjà4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjà4ubj )�”}”(hj h]”hŒ*”…”�”}”(hj05h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjà4ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj=5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÜ4ubj§ )�”}”(hŒunsigned long refdst”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjV5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjR5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR5ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjr5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjR5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR5ubj9)�”}”(hŒrefdst”h]”hŒrefdst”…”�”}”(hjŽ5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjR5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÜ4ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj£4h²hh³jµ4h´M³ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŸ4h²hh³jµ4h´M³ubah}”(h]”jš4ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jµ4h´M³hjœ4h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4restore skb dst_entry removed via skb_dstref_steal()”h]”hŒ4restore skb dst_entry removed via skb_dstref_steal()”…”�”}”(hj¸5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M³hjµ5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjœ4h²hh³jµ4h´M³ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÐ5jŒjÐ5j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒx**Parameters** ``struct sk_buff *skb`` buffer ``unsigned long refdst`` dst entry from a call to skb_dstref_steal()”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÚ5h]”hŒ Parameters”…”�”}”(hjÜ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M·hjÔ5ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjù5h]”hŒstruct sk_buff *skb”…”�”}”(hjû5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M´hjó5ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6h´M´hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6h´M´hjð5ubjä)�”}”(hŒD``unsigned long refdst`` dst entry from a call to skb_dstref_steal()”h]”(jê)�”}”(hŒ``unsigned long refdst``”h]”jð)�”}”(hj26h]”hŒunsigned long refdst”…”�”}”(hj46h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj06ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¶hj,6ubj)�”}”(hhh]”jl)�”}”(hŒ+dst entry from a call to skb_dstref_steal()”h]”hŒ+dst entry from a call to skb_dstref_steal()”…”�”}”(hjK6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MµhjH6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jG6h´M¶hjð5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÔ5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_dst_set (C function)”Œ c.skb_dst_set”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void skb_dst_set (struct sk_buff *skb, struct dst_entry *dst)”h]”j )�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjã=h²hh³jô=h´Mubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj#>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjA>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jC>Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j >sbŒ c.skb_unref”†”asbuh1hhj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hja>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubj )�”}”(hj h]”hŒ*”…”�”}”(hjo>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj|>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjã=h²hh³jô=h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjß=h²hh³jô=h´Mubah}”(h]”jÚ=ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jô=h´MhjÜ=h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#decrement the skb's reference count”h]”hŒ%decrement the skb’s reference count”…”�”}”(hj¦>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj£>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÜ=h²hh³jô=h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¾>jŒj¾>j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒZ**Parameters** ``struct sk_buff *skb`` buffer **Return** true if we can free the skb.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÈ>h]”hŒ Parameters”…”�”}”(hjÊ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjÂ>ubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjç>h]”hŒstruct sk_buff *skb”…”�”}”(hjé>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjå>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjá>ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jü>h´Mhjý>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jü>h´MhjÞ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÂ>ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj"?h]”hŒReturn”…”�”}”(hj$?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjÂ>ubjl)�”}”(hŒtrue if we can free the skb.”h]”hŒtrue if we can free the skb.”…”�”}”(hj8?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjÂ>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒkfree_skb (C function)”Œ c.kfree_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ$void kfree_skb (struct sk_buff *skb)”h]”j )�”}”(hŒ#void kfree_skb(struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjg?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjc?h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjc?h²hh³ju?h´M5ubj3)�”}”(hŒ kfree_skb”h]”j9)�”}”(hŒ kfree_skb”h]”hŒ kfree_skb”…”�”}”(hjˆ?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„?ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjc?h²hh³ju?h´M5ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¤?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ?ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÂ?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÄ?Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŠ?sbŒ c.kfree_skb”†”asbuh1hhj ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ?ubj )�”}”(hj h]”hŒ*”…”�”}”(hjð?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ?ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjý?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœ?ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjc?h²hh³ju?h´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj_?h²hh³ju?h´M5ubah}”(h]”jZ?ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³ju?h´M5hj\?h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+free an sk_buff with 'NOT_SPECIFIED' reason”h]”hŒ/free an sk_buff with ‘NOT_SPECIFIED’ reason”…”�”}”(hj'@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5hj$@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj\?h²hh³ju?h´M5ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j?@jŒj?@j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ8**Parameters** ``struct sk_buff *skb`` buffer to free”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjI@h]”hŒ Parameters”…”�”}”(hjK@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjG@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M9hjC@ubjß)�”}”(hhh]”jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to free”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjh@h]”hŒstruct sk_buff *skb”…”�”}”(hjj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjf@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M;hjb@ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to free”h]”hŒbuffer to free”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M6hj~@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}@h´M;hj_@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjC@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒalloc_skb (C function)”Œ c.alloc_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>struct sk_buff * alloc_skb (unsigned int size, gfp_t priority)”h]”j )�”}”(hŒbool skb_queue_empty_lockless(const struct sk_buff_head *list)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKh²hh³jKh´M€ubj3)�”}”(hŒskb_queue_empty_lockless”h]”j9)�”}”(hŒskb_queue_empty_lockless”h]”hŒskb_queue_empty_lockless”…”�”}”(hj*Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&Kubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjKh²hh³jKh´M€ubj¡ )�”}”(hŒ!(const struct sk_buff_head *list)”h]”j§ )�”}”(hŒconst struct sk_buff_head *list”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjFKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBKubj)�”}”(hjh]”hŒstruct”…”�”}”(hjaKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBKubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�KŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j,KsbŒc.skb_queue_empty_lockless”†”asbuh1hhjBKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBKubj )�”}”(hj h]”hŒ*”…”�”}”(hj­Kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjBKubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjºKh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>Kubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjKh²hh³jKh´M€ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjKh²hh³jKh´M€ubah}”(h]”jýJah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jKh´M€hjÿJh²hubjg)�”}”(hhh]”jl)�”}”(hŒcheck if a queue is empty”h]”hŒcheck if a queue is empty”…”�”}”(hjäKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M€hjáKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÿJh²hh³jKh´M€ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jüKjŒjüKj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒÀ**Parameters** ``const struct sk_buff_head *list`` queue head **Description** Returns true if the queue is empty, false otherwise. This variant can be used in lockless contexts.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjLh]”hŒ Parameters”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M„hjLubjß)�”}”(hhh]”jä)�”}”(hŒ/``const struct sk_buff_head *list`` queue head ”h]”(jê)�”}”(hŒ#``const struct sk_buff_head *list``”h]”jð)�”}”(hj%Lh]”hŒconst struct sk_buff_head *list”…”�”}”(hj'Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjLubj)�”}”(hhh]”jl)�”}”(hŒ queue head”h]”hŒ queue head”…”�”}”(hj>Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:Lh´M�hj;Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:Lh´M�hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj`Lh]”hŒ Description”…”�”}”(hjbLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MƒhjLubjÒ)�”}”(hŒcReturns true if the queue is empty, false otherwise. This variant can be used in lockless contexts.”h]”jl)�”}”(hŒcReturns true if the queue is empty, false otherwise. This variant can be used in lockless contexts.”h]”hŒcReturns true if the queue is empty, false otherwise. This variant can be used in lockless contexts.”…”�”}”(hjzLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‚hjvLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jˆLh´M‚hjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_queue_is_last (C function)”Œc.skb_queue_is_last”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSbool skb_queue_is_last (const struct sk_buff_head *list, const struct sk_buff *skb)”h]”j )�”}”(hŒRbool skb_queue_is_last(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¯Lh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj«Lh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj«Lh²hh³j¼Lh´M�ubj3)�”}”(hŒskb_queue_is_last”h]”j9)�”}”(hŒskb_queue_is_last”h]”hŒskb_queue_is_last”…”�”}”(hjÏLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËLubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj«Lh²hh³j¼Lh´M�ubj¡ )�”}”(hŒ<(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(j§ )�”}”(hŒconst struct sk_buff_head *list”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjëLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçLubj)�”}”(hjh]”hŒstruct”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçLubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj$Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j&MŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÑLsbŒc.skb_queue_is_last”†”asbuh1hhjçLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçLubj )�”}”(hj h]”hŒ*”…”�”}”(hjRMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçLubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj_Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjãLubj§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjxMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtMubj)�”}”(hjh]”hŒstruct”…”�”}”(hj“Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtMubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj±Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³MŒmodname”NŒ classname”Njå jè )�”}”jë ]”j@MŒc.skb_queue_is_last”†”asbuh1hhjtMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtMubj )�”}”(hj h]”hŒ*”…”�”}”(hjÝMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjtMubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjêMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjãLubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj«Lh²hh³j¼Lh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj§Lh²hh³j¼Lh´M�ubah}”(h]”j¢Lah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¼Lh´M�hj¤Lh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+check if skb is the last entry in the queue”h]”hŒ+check if skb is the last entry in the queue”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¤Lh²hh³j¼Lh´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j,NjŒj,Nj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ·**Parameters** ``const struct sk_buff_head *list`` queue head ``const struct sk_buff *skb`` buffer **Description** Returns true if **skb** is the last buffer on the list.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj6Nh]”hŒ Parameters”…”�”}”(hj8Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‘hj0Nubjß)�”}”(hhh]”(jä)�”}”(hŒ/``const struct sk_buff_head *list`` queue head ”h]”(jê)�”}”(hŒ#``const struct sk_buff_head *list``”h]”jð)�”}”(hjUNh]”hŒconst struct sk_buff_head *list”…”�”}”(hjWNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSNubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŽhjONubj)�”}”(hhh]”jl)�”}”(hŒ queue head”h]”hŒ queue head”…”�”}”(hjnNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jjNh´MŽhjkNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjONubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jjNh´MŽhjLNubjä)�”}”(hŒ%``const struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjŽNh]”hŒconst struct sk_buff *skb”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒNubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjˆNubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj§Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£Nh´M�hj¤Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£Nh´M�hjLNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj0Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÉNh]”hŒ Description”…”�”}”(hjËNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇNubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‘hj0NubjÒ)�”}”(hŒ7Returns true if **skb** is the last buffer on the list.”h]”jl)�”}”(hjáNh]”(hŒReturns true if ”…”�”}”(hjãNh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hjêNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjãNubhŒ is the last buffer on the list.”…”�”}”(hjãNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjßNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jOh´M�hj0Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_queue_is_first (C function)”Œc.skb_queue_is_first”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒTbool skb_queue_is_first (const struct sk_buff_head *list, const struct sk_buff *skb)”h]”j )�”}”(hŒSbool skb_queue_is_first(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj)Oh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj%Oh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%Oh²hh³j6Oh´Mšubj3)�”}”(hŒskb_queue_is_first”h]”j9)�”}”(hŒskb_queue_is_first”h]”hŒskb_queue_is_first”…”�”}”(hjIOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEOubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj%Oh²hh³j6Oh´Mšubj¡ )�”}”(hŒ<(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(j§ )�”}”(hŒconst struct sk_buff_head *list”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjeOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaOubj)�”}”(hjh]”hŒstruct”…”�”}”(hj€Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaOubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjžOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j OŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jKOsbŒc.skb_queue_is_first”†”asbuh1hhjaOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaOubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌOh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjaOubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjÙOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]Oubj§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjòOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîOubj)�”}”(hjh]”hŒstruct”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîOubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj+Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j-PŒmodname”NŒ classname”Njå jè )�”}”jë ]”jºOŒc.skb_queue_is_first”†”asbuh1hhjîOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîOubj )�”}”(hj h]”hŒ*”…”�”}”(hjWPh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjîOubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjdPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]Oubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj%Oh²hh³j6Oh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj!Oh²hh³j6Oh´Mšubah}”(h]”jOah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j6Oh´MšhjOh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,check if skb is the first entry in the queue”h]”hŒ,check if skb is the first entry in the queue”…”�”}”(hjŽPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mšhj‹Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjOh²hh³j6Oh´Mšubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¦PjŒj¦Pj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ¸**Parameters** ``const struct sk_buff_head *list`` queue head ``const struct sk_buff *skb`` buffer **Description** Returns true if **skb** is the first buffer on the list.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj°Ph]”hŒ Parameters”…”�”}”(hj²Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj®Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MžhjªPubjß)�”}”(hhh]”(jä)�”}”(hŒ/``const struct sk_buff_head *list`` queue head ”h]”(jê)�”}”(hŒ#``const struct sk_buff_head *list``”h]”jð)�”}”(hjÏPh]”hŒconst struct sk_buff_head *list”…”�”}”(hjÑPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍPubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M›hjÉPubj)�”}”(hhh]”jl)�”}”(hŒ queue head”h]”hŒ queue head”…”�”}”(hjèPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jäPh´M›hjåPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jäPh´M›hjÆPubjä)�”}”(hŒ%``const struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjQh]”hŒconst struct sk_buff *skb”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MœhjQubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj!Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQh´MœhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQh´MœhjÆPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjªPubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjCQh]”hŒ Description”…”�”}”(hjEQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjAQubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MžhjªPubjÒ)�”}”(hŒ8Returns true if **skb** is the first buffer on the list.”h]”jl)�”}”(hj[Qh]”(hŒReturns true if ”…”�”}”(hj]Qh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hjdQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]QubhŒ! is the first buffer on the list.”…”�”}”(hj]Qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjYQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j|Qh´M�hjªPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_queue_next (C function)”Œc.skb_queue_next”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\struct sk_buff * skb_queue_next (const struct sk_buff_head *list, const struct sk_buff *skb)”h]”j )�”}”(hŒZstruct sk_buff *skb_queue_next(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj£Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸQh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸQh²hh³j°Qh´M§ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÂQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÄQŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_queue_next”sbŒc.skb_queue_next”†”asbuh1hhjŸQh²hh³j°Qh´M§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸQh²hh³j°Qh´M§ubj )�”}”(hj h]”hŒ*”…”�”}”(hjñQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŸQh²hh³j°Qh´M§ubj3)�”}”(hŒskb_queue_next”h]”j9)�”}”(hjàQh]”hŒskb_queue_next”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþQubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŸQh²hh³j°Qh´M§ubj¡ )�”}”(hŒ<(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(j§ )�”}”(hŒconst struct sk_buff_head *list”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRubj)�”}”(hjh]”hŒstruct”…”�”}”(hj8Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjERh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjVRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jXRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÞQŒc.skb_queue_next”†”asbuh1hhjRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRubj )�”}”(hj h]”hŒ*”…”�”}”(hj‚Rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjRubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjRubj§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¨Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤Rubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÃRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤Rubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjáRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jãRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÞQŒc.skb_queue_next”†”asbuh1hhj¤Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤Rubj )�”}”(hj h]”hŒ*”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¤Rubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjRubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŸQh²hh³j°Qh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj›Qh²hh³j°Qh´M§ubah}”(h]”j–Qah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j°Qh´M§hj˜Qh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#return the next packet in the queue”h]”hŒ#return the next packet in the queue”…”�”}”(hjDSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M§hjASh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj˜Qh²hh³j°Qh´M§ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j\SjŒj\Sj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``const struct sk_buff_head *list`` queue head ``const struct sk_buff *skb`` current buffer **Description** Return the next packet in **list** after **skb**. It is only valid to call this if skb_queue_is_last() evaluates to false.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjfSh]”hŒ Parameters”…”�”}”(hjhSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M«hj`Subjß)�”}”(hhh]”(jä)�”}”(hŒ/``const struct sk_buff_head *list`` queue head ”h]”(jê)�”}”(hŒ#``const struct sk_buff_head *list``”h]”jð)�”}”(hj…Sh]”hŒconst struct sk_buff_head *list”…”�”}”(hj‡Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¨hjSubj)�”}”(hhh]”jl)�”}”(hŒ queue head”h]”hŒ queue head”…”�”}”(hjžSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jšSh´M¨hj›Subah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšSh´M¨hj|Subjä)�”}”(hŒ-``const struct sk_buff *skb`` current buffer ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj¾Sh]”hŒconst struct sk_buff *skb”…”�”}”(hjÀSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼Subah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M©hj¸Subj)�”}”(hhh]”jl)�”}”(hŒcurrent buffer”h]”hŒcurrent buffer”…”�”}”(hj×Sh²hh³Nh´Nubah}”(h]”h ]”•h"]”h$]”h&]”uh1jkh³jÓSh´M©hjÔSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓSh´M©hj|Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj`Subjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjùSh]”hŒ Description”…”�”}”(hjûSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj÷Subah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M«hj`SubjÒ)�”}”(hŒ{Return the next packet in **list** after **skb**. It is only valid to call this if skb_queue_is_last() evaluates to false.”h]”jl)�”}”(hŒ{Return the next packet in **list** after **skb**. It is only valid to call this if skb_queue_is_last() evaluates to false.”h]”(hŒReturn the next packet in ”…”�”}”(hjTh²hh³Nh´Nubj›)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjTubhŒ after ”…”�”}”(hjTh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj-Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjTubhŒK. It is only valid to call this if skb_queue_is_last() evaluates to false.”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MªhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jETh´Mªhj`Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_queue_prev (C function)”Œc.skb_queue_prev”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\struct sk_buff * skb_queue_prev (const struct sk_buff_head *list, const struct sk_buff *skb)”h]”j )�”}”(hŒZstruct sk_buff *skb_queue_prev(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjlTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhTh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhTh²hh³jyTh´M¹ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj‹Th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�TŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_queue_prev”sbŒc.skb_queue_prev”†”asbuh1hhjhTh²hh³jyTh´M¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhTh²hh³jyTh´M¹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjºTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjhTh²hh³jyTh´M¹ubj3)�”}”(hŒskb_queue_prev”h]”j9)�”}”(hj©Th]”hŒskb_queue_prev”…”�”}”(hjËTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇTubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjhTh²hh³jyTh´M¹ubj¡ )�”}”(hŒ<(const struct sk_buff_head *list, const struct sk_buff *skb)”h]”(j§ )�”}”(hŒconst struct sk_buff_head *list”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjæTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâTubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâTubj)�”}”(hjh]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâTubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâTubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j!UŒmodname”NŒ classname”Njå jè )�”}”jë ]”j§TŒc.skb_queue_prev”†”asbuh1hhjâTubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâTubj )�”}”(hj h]”hŒ*”…”�”}”(hjKUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjâTubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjXUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÞTubj§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjqUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmUubj)�”}”(hjh]”hŒstruct”…”�”}”(hjŒUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmUubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjªUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¬UŒmodname”NŒ classname”Njå jè )�”}”jë ]”j§TŒc.skb_queue_prev”†”asbuh1hhjmUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmUubj )�”}”(hj h]”hŒ*”…”�”}”(hjÖUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjmUubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjãUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÞTubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjhTh²hh³jyTh´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjdTh²hh³jyTh´M¹ubah}”(h]”j_Tah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jyTh´M¹hjaTh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#return the prev packet in the queue”h]”hŒ#return the prev packet in the queue”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¹hj Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjaTh²hh³jyTh´M¹ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j%VjŒj%Vj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX **Parameters** ``const struct sk_buff_head *list`` queue head ``const struct sk_buff *skb`` current buffer **Description** Return the prev packet in **list** before **skb**. It is only valid to call this if skb_queue_is_first() evaluates to false.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj/Vh]”hŒ Parameters”…”�”}”(hj1Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M½hj)Vubjß)�”}”(hhh]”(jä)�”}”(hŒ/``const struct sk_buff_head *list`` queue head ”h]”(jê)�”}”(hŒ#``const struct sk_buff_head *list``”h]”jð)�”}”(hjNVh]”hŒconst struct sk_buff_head *list”…”�”}”(hjPVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MºhjHVubj)�”}”(hhh]”jl)�”}”(hŒ queue head”h]”hŒ queue head”…”�”}”(hjgVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jcVh´MºhjdVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jcVh´MºhjEVubjä)�”}”(hŒ-``const struct sk_buff *skb`` current buffer ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj‡Vh]”hŒconst struct sk_buff *skb”…”�”}”(hj‰Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M»hj�Vubj)�”}”(hhh]”jl)�”}”(hŒcurrent buffer”h]”hŒcurrent buffer”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœVh´M»hj�Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœVh´M»hjEVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj)Vubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÂVh]”hŒ Description”…”�”}”(hjÄVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀVubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M½hj)VubjÒ)�”}”(hŒ}Return the prev packet in **list** before **skb**. It is only valid to call this if skb_queue_is_first() evaluates to false.”h]”jl)�”}”(hŒ}Return the prev packet in **list** before **skb**. It is only valid to call this if skb_queue_is_first() evaluates to false.”h]”(hŒReturn the prev packet in ”…”�”}”(hjÜVh²hh³Nh´Nubj›)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjäVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜVubhŒ before ”…”�”}”(hjÜVh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hjöVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜVubhŒL. It is only valid to call this if skb_queue_is_first() evaluates to false.”…”�”}”(hjÜVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¼hjØVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jWh´M¼hj)Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_get (C function)”Œ c.skb_get”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.struct sk_buff * skb_get (struct sk_buff *skb)”h]”j )�”}”(hŒ,struct sk_buff *skb_get(struct sk_buff *skb)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj5Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1Wh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1Wh²hh³jBWh´MËubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjTWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jVWŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_get”sbŒ c.skb_get”†”asbuh1hhj1Wh²hh³jBWh´MËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1Wh²hh³jBWh´MËubj )�”}”(hj h]”hŒ*”…”�”}”(hjƒWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj1Wh²hh³jBWh´MËubj3)�”}”(hŒskb_get”h]”j9)�”}”(hjrWh]”hŒskb_get”…”�”}”(hj”Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Wubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj1Wh²hh³jBWh´MËubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¯Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj«Wubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÍWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÏWŒmodname”NŒ classname”Njå jè )�”}”jë ]”jpWŒ c.skb_get”†”asbuh1hhj«Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj«Wubj )�”}”(hj h]”hŒ*”…”�”}”(hjùWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj«Wubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj§Wubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj1Wh²hh³jBWh´MËubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj-Wh²hh³jBWh´MËubah}”(h]”j(Wah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jBWh´MËhj*Wh²hubjg)�”}”(hhh]”jl)�”}”(hŒreference buffer”h]”hŒreference buffer”…”�”}”(hj0Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MËhj-Xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj*Wh²hh³jBWh´MËubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jHXjŒjHXj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ©**Parameters** ``struct sk_buff *skb`` buffer to reference **Description** Makes another reference to a socket buffer and returns a pointer to the buffer.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjRXh]”hŒ Parameters”…”�”}”(hjTXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjPXubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÏhjLXubjß)�”}”(hhh]”jä)�”}”(hŒ,``struct sk_buff *skb`` buffer to reference ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjqXh]”hŒstruct sk_buff *skb”…”�”}”(hjsXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjoXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÌhjkXubj)�”}”(hhh]”jl)�”}”(hŒbuffer to reference”h]”hŒbuffer to reference”…”�”}”(hjŠXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†Xh´MÌhj‡Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†Xh´MÌhjhXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLXubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¬Xh]”hŒ Description”…”�”}”(hj®Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjªXubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÎhjLXubjÒ)�”}”(hŒOMakes another reference to a socket buffer and returns a pointer to the buffer.”h]”jl)�”}”(hŒOMakes another reference to a socket buffer and returns a pointer to the buffer.”h]”hŒOMakes another reference to a socket buffer and returns a pointer to the buffer.”…”�”}”(hjÆXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÍhjÂXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÔXh´MÍhjLXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_cloned (C function)”Œ c.skb_cloned”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*int skb_cloned (const struct sk_buff *skb)”h]”j )�”}”(hŒ)int skb_cloned(const struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjûXh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj÷Xh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÜubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷Xh²hh³j Yh´MÜubj3)�”}”(hŒ skb_cloned”h]”j9)�”}”(hŒ skb_cloned”h]”hŒ skb_cloned”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj÷Xh²hh³j Yh´MÜubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj8Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Yubj)�”}”(hjh]”hŒstruct”…”�”}”(hjSYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Yubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjqYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jsYŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jYsbŒ c.skb_cloned”†”asbuh1hhj4Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Yubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj4Yubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¬Yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4Yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0Yubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj÷Xh²hh³j Yh´MÜubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjóXh²hh³j Yh´MÜubah}”(h]”jîXah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j Yh´MÜhjðXh²hubjg)�”}”(hhh]”jl)�”}”(hŒis the buffer a clone”h]”hŒis the buffer a clone”…”�”}”(hjÖYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÜhjÓYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjðXh²hh³j Yh´MÜubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jîYjŒjîYj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX#**Parameters** ``const struct sk_buff *skb`` buffer to check **Description** Returns true if the buffer was generated with skb_clone() and is one of multiple shared copies of the buffer. Cloned buffers are shared data so must not be written to under normal circumstances.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjøYh]”hŒ Parameters”…”�”}”(hjúYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöYubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MàhjòYubjß)�”}”(hhh]”jä)�”}”(hŒ.``const struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjZh]”hŒconst struct sk_buff *skb”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÝhjZubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hj0Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,Zh´MÝhj-Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,Zh´MÝhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjòYubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjRZh]”hŒ Description”…”�”}”(hjTZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjPZubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MßhjòYubjÒ)�”}”(hŒÂReturns true if the buffer was generated with skb_clone() and is one of multiple shared copies of the buffer. Cloned buffers are shared data so must not be written to under normal circumstances.”h]”jl)�”}”(hŒÂReturns true if the buffer was generated with skb_clone() and is one of multiple shared copies of the buffer. Cloned buffers are shared data so must not be written to under normal circumstances.”h]”hŒÂReturns true if the buffer was generated with skb_clone() and is one of multiple shared copies of the buffer. Cloned buffers are shared data so must not be written to under normal circumstances.”…”�”}”(hjlZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÞhjhZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jzZh´MÞhjòYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_header_cloned (C function)”Œc.skb_header_cloned”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1int skb_header_cloned (const struct sk_buff *skb)”h]”j )�”}”(hŒ0int skb_header_cloned(const struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¡Zh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�Zh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Zh²hh³j¯Zh´Mubj3)�”}”(hŒskb_header_cloned”h]”j9)�”}”(hŒskb_header_cloned”h]”hŒskb_header_cloned”…”�”}”(hjÂZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾Zubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�Zh²hh³j¯Zh´Mubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÞZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëZh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚZubj)�”}”(hjh]”hŒstruct”…”�”}”(hjùZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚZubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j[Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÄZsbŒc.skb_header_cloned”†”asbuh1hhjÚZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚZubj )�”}”(hj h]”hŒ*”…”�”}”(hjE[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚZubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjR[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖZubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�Zh²hh³j¯Zh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj™Zh²hh³j¯Zh´Mubah}”(h]”j”Zah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¯Zh´Mhj–Zh²hubjg)�”}”(hhh]”jl)�”}”(hŒis the header a clone”h]”hŒis the header a clone”…”�”}”(hj|[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjy[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj–Zh²hh³j¯Zh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j”[jŒj”[j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ³**Parameters** ``const struct sk_buff *skb`` buffer to check **Description** Returns true if modifying the header part of the buffer requires the data to be copied.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjž[h]”hŒ Parameters”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj˜[ubjß)�”}”(hhh]”jä)�”}”(hŒ.``const struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj½[h]”hŒconst struct sk_buff *skb”…”�”}”(hj¿[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj·[ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hjÖ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒ[h´MhjÓ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒ[h´Mhj´[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj˜[ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjø[h]”hŒ Description”…”�”}”(hjú[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjö[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj˜[ubjÒ)�”}”(hŒWReturns true if modifying the header part of the buffer requires the data to be copied.”h]”jl)�”}”(hŒWReturns true if modifying the header part of the buffer requires the data to be copied.”h]”hŒWReturns true if modifying the header part of the buffer requires the data to be copied.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j \h´Mhj˜[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!__skb_header_release (C function)”Œc.__skb_header_release”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void __skb_header_release (struct sk_buff *skb)”h]”j )�”}”(hŒ.void __skb_header_release(struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjG\h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjC\h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC\h²hh³jU\h´M!ubj3)�”}”(hŒ__skb_header_release”h]”j9)�”}”(hŒ__skb_header_release”h]”hŒ__skb_header_release”…”�”}”(hjh\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjd\ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjC\h²hh³jU\h´M!ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj„\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€\ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj¢\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸ\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¤\Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jj\sbŒc.__skb_header_release”†”asbuh1hhj€\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€\ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÐ\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€\ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÝ\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj|\ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjC\h²hh³jU\h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj?\h²hh³jU\h´M!ubah}”(h]”j:\ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jU\h´M!hj<\h²hubjg)�”}”(hhh]”jl)�”}”(hŒ allow clones to use the headroom”h]”hŒ allow clones to use the headroom”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M!hj]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj<\h²hh³jU\h´M!ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j]jŒj]j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒx**Parameters** ``struct sk_buff *skb`` buffer to operate on **Description** See "DOC: dataref and headerless skbs".”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj)]h]”hŒ Parameters”…”�”}”(hj+]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj']ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M%hj#]ubjß)�”}”(hhh]”jä)�”}”(hŒ-``struct sk_buff *skb`` buffer to operate on ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjH]h]”hŒstruct sk_buff *skb”…”�”}”(hjJ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjF]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M"hjB]ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to operate on”h]”hŒbuffer to operate on”…”�”}”(hja]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]]h´M"hj^]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]]h´M"hj?]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj#]ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjƒ]h]”hŒ Description”…”�”}”(hj…]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M$hj#]ubjl)�”}”(hŒ'See "DOC: dataref and headerless skbs".”h]”hŒ+See “DOC: dataref and headerless skbsâ€�.”…”�”}”(hj™]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M#hj#]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_shared (C function)”Œ c.skb_shared”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*int skb_shared (const struct sk_buff *skb)”h]”j )�”}”(hŒ)int skb_shared(const struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÈ]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÄ]h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄ]h²hh³jÖ]h´M.ubj3)�”}”(hŒ skb_shared”h]”j9)�”}”(hŒ skb_shared”h]”hŒ skb_shared”…”�”}”(hjé]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjå]ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÄ]h²hh³jÖ]h´M.ubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj>^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@^Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jë]sbŒ c.skb_shared”†”asbuh1hhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubj )�”}”(hj h]”hŒ*”…”�”}”(hjl^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjy^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjý]ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÄ]h²hh³jÖ]h´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÀ]h²hh³jÖ]h´M.ubah}”(h]”j»]ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÖ]h´M.hj½]h²hubjg)�”}”(hhh]”jl)�”}”(hŒis the buffer shared”h]”hŒis the buffer shared”…”�”}”(hj£^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M.hj ^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½]h²hh³jÖ]h´M.ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j»^jŒj»^j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ **Parameters** ``const struct sk_buff *skb`` buffer to check **Description** Returns true if more than one person has a reference to this buffer.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÅ^h]”hŒ Parameters”…”�”}”(hjÇ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÃ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M2hj¿^ubjß)�”}”(hhh]”jä)�”}”(hŒ.``const struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjä^h]”hŒconst struct sk_buff *skb”…”�”}”(hjæ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M/hjÞ^ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hjý^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jù^h´M/hjú^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jù^h´M/hjÛ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿^ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj_h]”hŒ Description”…”�”}”(hj!_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M1hj¿^ubjÒ)�”}”(hŒDReturns true if more than one person has a reference to this buffer.”h]”jl)�”}”(hŒDReturns true if more than one person has a reference to this buffer.”h]”hŒDReturns true if more than one person has a reference to this buffer.”…”�”}”(hj9_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M0hj5_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jG_h´M0hj¿^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_share_check (C function)”Œc.skb_share_check”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAstruct sk_buff * skb_share_check (struct sk_buff *skb, gfp_t pri)”h]”j )�”}”(hŒ?struct sk_buff *skb_share_check(struct sk_buff *skb, gfp_t pri)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjn_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj_h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj_h²hh³j{_h´M:ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�_Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_share_check”sbŒc.skb_share_check”†”asbuh1hhjj_h²hh³j{_h´M:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj_h²hh³j{_h´M:ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¼_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjj_h²hh³j{_h´M:ubj3)�”}”(hŒskb_share_check”h]”j9)�”}”(hj«_h]”hŒskb_share_check”…”�”}”(hjÍ_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉ_ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjj_h²hh³j{_h´M:ubj¡ )�”}”(hŒ (struct sk_buff *skb, gfp_t pri)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjè_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä_ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j`Œmodname”NŒ classname”Njå jè )�”}”jë ]”j©_Œc.skb_share_check”†”asbuh1hhjä_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä_ubj )�”}”(hj h]”hŒ*”…”�”}”(hj2`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjä_ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj?`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjà_ubj§ )�”}”(hŒ gfp_t pri”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj[`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]`Œmodname”NŒ classname”Njå jè )�”}”jë ]”j©_Œc.skb_share_check”†”asbuh1hhjT`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT`ubj9)�”}”(hŒpri”h]”hŒpri”…”�”}”(hj‡`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjà_ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjj_h²hh³j{_h´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjf_h²hh³j{_h´M:ubah}”(h]”ja_ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j{_h´M:hjc_h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,check if buffer is shared and if so clone it”h]”hŒ,check if buffer is shared and if so clone it”…”�”}”(hj±`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M:hj®`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjc_h²hh³j{_h´M:ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÉ`jŒjÉ`j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXá**Parameters** ``struct sk_buff *skb`` buffer to check ``gfp_t pri`` priority for memory allocation **Description** If the buffer is shared the buffer is cloned and the old copy drops a reference. A new clone with a single reference is returned. If the buffer is not shared the original buffer is returned. When being called from interrupt status or with spinlocks held pri must be GFP_ATOMIC. NULL is returned on a memory allocation failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÓ`h]”hŒ Parameters”…”�”}”(hjÕ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÑ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M>hjÍ`ubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjò`h]”hŒstruct sk_buff *skb”…”�”}”(hjô`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjð`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M;hjì`ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jah´M;hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjì`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jah´M;hjé`ubjä)�”}”(hŒ-``gfp_t pri`` priority for memory allocation ”h]”(jê)�”}”(hŒ ``gfp_t pri``”h]”jð)�”}”(hj+ah]”hŒ gfp_t pri”…”�”}”(hj-ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)aubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M<hj%aubj)�”}”(hhh]”jl)�”}”(hŒpriority for memory allocation”h]”hŒpriority for memory allocation”…”�”}”(hjDah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@ah´M<hjAaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@ah´M<hjé`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÍ`ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjfah]”hŒ Description”…”�”}”(hjhah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdaubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M>hjÍ`ubjÒ)�”}”(hXGIf the buffer is shared the buffer is cloned and the old copy drops a reference. A new clone with a single reference is returned. If the buffer is not shared the original buffer is returned. When being called from interrupt status or with spinlocks held pri must be GFP_ATOMIC. NULL is returned on a memory allocation failure.”h]”(jl)�”}”(hXIf the buffer is shared the buffer is cloned and the old copy drops a reference. A new clone with a single reference is returned. If the buffer is not shared the original buffer is returned. When being called from interrupt status or with spinlocks held pri must be GFP_ATOMIC.”h]”hXIf the buffer is shared the buffer is cloned and the old copy drops a reference. A new clone with a single reference is returned. If the buffer is not shared the original buffer is returned. When being called from interrupt status or with spinlocks held pri must be GFP_ATOMIC.”…”�”}”(hj€ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M=hj|aubjl)�”}”(hŒ0NULL is returned on a memory allocation failure.”h]”hŒ0NULL is returned on a memory allocation failure.”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MChj|aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jŽah´M=hjÍ`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_unclone_full (C function)”Œc.skb_unclone_full”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBstruct sk_buff * skb_unclone_full (struct sk_buff *skb, gfp_t pri)”h]”j )�”}”(hŒ@struct sk_buff *skb_unclone_full(struct sk_buff *skb, gfp_t pri)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÄah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀah²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀah²hh³jÑah´M]ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjãah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jåaŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_unclone_full”sbŒc.skb_unclone_full”†”asbuh1hhjÀah²hh³jÑah´M]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀah²hh³jÑah´M]ubj )�”}”(hj h]”hŒ*”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀah²hh³jÑah´M]ubj3)�”}”(hŒskb_unclone_full”h]”j9)�”}”(hjbh]”hŒskb_unclone_full”…”�”}”(hj#bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÀah²hh³jÑah´M]ubj¡ )�”}”(hŒ (struct sk_buff *skb, gfp_t pri)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj>bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:bubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:bubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj\bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j^bŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÿaŒc.skb_unclone_full”†”asbuh1hhj:bubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:bubj )�”}”(hj h]”hŒ*”…”�”}”(hjˆbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj:bubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj•bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6bubj§ )�”}”(hŒ gfp_t pri”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj±bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³bŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÿaŒc.skb_unclone_full”†”asbuh1hhjªbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªbubj9)�”}”(hŒpri”h]”hŒpri”…”�”}”(hjÝbh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6bubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÀah²hh³jÑah´M]ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¼ah²hh³jÑah´M]ubah}”(h]”j·aah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÑah´M]hj¹ah²hubjg)�”}”(hhh]”jl)�”}”(hŒ&make a private copy of a cloned buffer”h]”hŒ&make a private copy of a cloned buffer”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M]hjch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¹ah²hh³jÑah´M]ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jcjŒjcj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÉ**Parameters** ``struct sk_buff *skb`` buffer to check ``gfp_t pri`` priority for memory allocation **Description** If the socket buffer is a clone then this function creates a new copy of the data, drops a reference count on the old copy and returns the new copy with the reference count at 1. If the buffer is not a clone the original buffer is returned. When called with a spinlock held or from interrupt state **pri** must be ``GFP_ATOMIC`` Unlike skb_unclone(), the paged data is copied as well. A buffer with skb->users > 1 that is not a clone is returned as is, use skb_share_check() for that case. ``NULL`` is returned on a memory allocation failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj)ch]”hŒ Parameters”…”�”}”(hj+ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'cubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mahj#cubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjHch]”hŒstruct sk_buff *skb”…”�”}”(hjJch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjFcubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M^hjBcubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hjach²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]ch´M^hj^cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]ch´M^hj?cubjä)�”}”(hŒ-``gfp_t pri`` priority for memory allocation ”h]”(jê)�”}”(hŒ ``gfp_t pri``”h]”jð)�”}”(hj�ch]”hŒ gfp_t pri”…”�”}”(hjƒch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M_hj{cubj)�”}”(hhh]”jl)�”}”(hŒpriority for memory allocation”h]”hŒpriority for memory allocation”…”�”}”(hjšch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j–ch´M_hj—cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–ch´M_hj?cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj#cubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¼ch]”hŒ Description”…”�”}”(hj¾ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjºcubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mahj#cubjÒ)�”}”(hX If the socket buffer is a clone then this function creates a new copy of the data, drops a reference count on the old copy and returns the new copy with the reference count at 1. If the buffer is not a clone the original buffer is returned. When called with a spinlock held or from interrupt state **pri** must be ``GFP_ATOMIC`` Unlike skb_unclone(), the paged data is copied as well. A buffer with skb->users > 1 that is not a clone is returned as is, use skb_share_check() for that case. ``NULL`` is returned on a memory allocation failure.”h]”(jl)�”}”(hXHIf the socket buffer is a clone then this function creates a new copy of the data, drops a reference count on the old copy and returns the new copy with the reference count at 1. If the buffer is not a clone the original buffer is returned. When called with a spinlock held or from interrupt state **pri** must be ``GFP_ATOMIC``”h]”(hX*If the socket buffer is a clone then this function creates a new copy of the data, drops a reference count on the old copy and returns the new copy with the reference count at 1. If the buffer is not a clone the original buffer is returned. When called with a spinlock held or from interrupt state ”…”�”}”(hjÖch²hh³Nh´Nubj›)�”}”(hŒ**pri**”h]”hŒpri”…”�”}”(hjÞch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÖcubhŒ must be ”…”�”}”(hjÖch²hh³Nh´Nubjð)�”}”(hŒ``GFP_ATOMIC``”h]”hŒ GFP_ATOMIC”…”�”}”(hjðch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M`hjÒcubjl)�”}”(hŒ Unlike skb_unclone(), the paged data is copied as well. A buffer with skb->users > 1 that is not a clone is returned as is, use skb_share_check() for that case.”h]”hŒ Unlike skb_unclone(), the paged data is copied as well. A buffer with skb->users > 1 that is not a clone is returned as is, use skb_share_check() for that case.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MfhjÒcubjl)�”}”(hŒ4``NULL`` is returned on a memory allocation failure.”h]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdubhŒ, is returned on a memory allocation failure.”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MjhjÒcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jdh´M`hj#cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_peek (C function)”Œ c.skb_peek”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒstruct sk_buff * __skb_peek (const struct sk_buff_head *list_)”h]”j )�”}”(hŒiŒmodname”NŒ classname”Njå jè )�”}”jë ]”jßhŒc.skb_peek_next”†”asbuh1hhjiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjiubj )�”}”(hj h]”hŒ*”…”�”}”(hjhih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjiubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjuih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQu•h1j¦ hjiubj§ )�”}”(hŒ const struct sk_buff_head *list_”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjŽih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠiubj)�”}”(hjh]”hŒstruct”…”�”}”(hj©ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠiubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjÇih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÉiŒmodname”NŒ classname”Njå jè )�”}”jë ]”jßhŒc.skb_peek_next”†”asbuh1hhjŠiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠiubj )�”}”(hj h]”hŒ*”…”�”}”(hjóih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŠiubj9)�”}”(hŒlist_”h]”hŒlist_”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjiubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj hh²hh³j±hh´MŸubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjœhh²hh³j±hh´MŸubah}”(h]”j—hah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j±hh´MŸhj™hh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-peek skb following the given one from a queue”h]”hŒ-peek skb following the given one from a queue”…”�”}”(hj*jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŸhj'jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj™hh²hh³j±hh´MŸubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jBjjŒjBjj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXI**Parameters** ``struct sk_buff *skb`` skb to start from ``const struct sk_buff_head *list_`` list to peek at **Description** Returns ``NULL`` when the end of the list is met or a pointer to the next element. The reference count is not incremented and the reference is therefore volatile. Use with caution.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjLjh]”hŒ Parameters”…”�”}”(hjNjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjJjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M£hjFjubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff *skb`` skb to start from ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjkjh]”hŒstruct sk_buff *skb”…”�”}”(hjmjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjijubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjejubj)�”}”(hhh]”jl)�”}”(hŒskb to start from”h]”hŒskb to start from”…”�”}”(hj„jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€jh´M hj�jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjejubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€jh´M hjbjubjä)�”}”(hŒ5``const struct sk_buff_head *list_`` list to peek at ”h]”(jê)�”}”(hŒ$``const struct sk_buff_head *list_``”h]”jð)�”}”(hj¤jh]”hŒ const struct sk_buff_head *list_”…”�”}”(hj¦jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢jubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¡hjžjubj)�”}”(hhh]”jl)�”}”(hŒlist to peek at”h]”hŒlist to peek at”…”�”}”(hj½jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹jh´M¡hjºjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹jh´M¡hjbjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjFjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjßjh]”hŒ Description”…”�”}”(hjájh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÝjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M£hjFjubjÒ)�”}”(hŒ´Returns ``NULL`` when the end of the list is met or a pointer to the next element. The reference count is not incremented and the reference is therefore volatile. Use with caution.”h]”jl)�”}”(hŒ´Returns ``NULL`` when the end of the list is met or a pointer to the next element. The reference count is not incremented and the reference is therefore volatile. Use with caution.”h]”(hŒReturns ”…”�”}”(hjùjh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùjubhŒ¤ when the end of the list is met or a pointer to the next element. The reference count is not incremented and the reference is therefore volatile. Use with caution.”…”�”}”(hjùjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¢hjõjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jkh´M¢hjFjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_peek_tail (C function)”Œc.skb_peek_tail”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAstruct sk_buff * skb_peek_tail (const struct sk_buff_head *list_)”h]”j )�”}”(hŒ?struct sk_buff *skb_peek_tail(const struct sk_buff_head *list_)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj@kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj__u32 skb_queue_len_lockless(const struct sk_buff_head *list_)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__u32”h]”hŒ__u32”…”�”}”(hjgoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jioŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_queue_len_lockless”sbŒc.skb_queue_len_lockless”†”asbuh1hhj`oh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`oh²hh³jˆoh´MÔubj3)�”}”(hŒskb_queue_len_lockless”h]”j9)�”}”(hj…oh]”hŒskb_queue_len_lockless”…”�”}”(hj›oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—oubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj`oh²hh³jˆoh´MÔubj¡ )�”}”(hŒ"(const struct sk_buff_head *list_)”h]”j§ )�”}”(hŒ const struct sk_buff_head *list_”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¶oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²oubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÑoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²oubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjïoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñoŒmodname”NŒ classname”Njå jè )�”}”jë ]”jƒoŒc.skb_queue_len_lockless”†”asbuh1hhj²oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²oubj )�”}”(hj h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj²oubj9)�”}”(hŒlist_”h]”hŒlist_”…”�”}”(hj(ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®oubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj`oh²hh³jˆoh´MÔubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj\oh²hh³jˆoh´MÔubah}”(h]”jWoah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jˆoh´MÔhjYoh²hubjg)�”}”(hhh]”jl)�”}”(hŒget queue length”h]”hŒget queue length”…”�”}”(hjRph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÔhjOph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjYoh²hh³jˆoh´MÔubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjpjŒjjpj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒÂ**Parameters** ``const struct sk_buff_head *list_`` list to measure **Description** Return the length of an :c:type:`sk_buff` queue. This variant can be used in lockless contexts.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjtph]”hŒ Parameters”…”�”}”(hjvph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjrpubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MØhjnpubjß)�”}”(hhh]”jä)�”}”(hŒ5``const struct sk_buff_head *list_`` list to measure ”h]”(jê)�”}”(hŒ$``const struct sk_buff_head *list_``”h]”jð)�”}”(hj“ph]”hŒ const struct sk_buff_head *list_”…”�”}”(hj•ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘pubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÕhj�pubj)�”}”(hhh]”jl)�”}”(hŒlist to measure”h]”hŒlist to measure”…”�”}”(hj¬ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨ph´MÕhj©pubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨ph´MÕhjŠpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjnpubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÎph]”hŒ Description”…”�”}”(hjÐph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌpubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M×hjnpubjÒ)�”}”(hŒ_Return the length of an :c:type:`sk_buff` queue. This variant can be used in lockless contexts.”h]”jl)�”}”(hŒ_Return the length of an :c:type:`sk_buff` queue. This variant can be used in lockless contexts.”h]”(hŒReturn the length of an ”…”�”}”(hjèph²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjòph]”hŒsk_buff”…”�”}”(hjôph²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjðpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÖhjèpubhŒ6 queue. This variant can be used in lockless contexts.”…”�”}”(hjèph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqh´MÖhjäpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jqh´MÖhjnpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"__skb_queue_head_init (C function)”Œc.__skb_queue_head_init”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void __skb_queue_head_init (struct sk_buff_head *list)”h]”j )�”}”(hŒ5void __skb_queue_head_init(struct sk_buff_head *list)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj@qh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jCsŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jîrsbŒc.skb_queue_splice”†”asbuh1hhjsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjash²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsubj )�”}”(hj h]”hŒ*”…”�”}”(hjosh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjsubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj|sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjsubj§ )�”}”(hŒstruct sk_buff_head *head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj•sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘subj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘subh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj³sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jµsŒmodname”NŒ classname”Njå jè )�”}”jë ]”j]sŒc.skb_queue_splice”†”asbuh1hhj‘subj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑsh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘subj )�”}”(hj h]”hŒ*”…”�”}”(hjßsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‘subj9)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjìsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjsubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÇrh²hh³jÙrh´M' ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÃrh²hh³jÙrh´M' ubah}”(h]”j¾rah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÙrh´M' hjÀrh²hubjg)�”}”(hhh]”jl)�”}”(hŒ/join two skb lists, this is designed for stacks”h]”hŒ/join two skb lists, this is designed for stacks”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M' hjth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÀrh²hh³jÙrh´M' ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j.tjŒj.tj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``const struct sk_buff_head *list`` the new list to add ``struct sk_buff_head *head`` the place to add it in the first list”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8th]”hŒ Parameters”…”�”}”(hj:th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6tubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M+ hj2tubjß)�”}”(hhh]”(jä)�”}”(hŒ8``const struct sk_buff_head *list`` the new list to add ”h]”(jê)�”}”(hŒ#``const struct sk_buff_head *list``”h]”jð)�”}”(hjWth]”hŒconst struct sk_buff_head *list”…”�”}”(hjYth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjUtubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M( hjQtubj)�”}”(hhh]”jl)�”}”(hŒthe new list to add”h]”hŒthe new list to add”…”�”}”(hjpth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jlth´M( hjmtubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlth´M( hjNtubjä)�”}”(hŒC``struct sk_buff_head *head`` the place to add it in the first list”h]”(jê)�”}”(hŒ``struct sk_buff_head *head``”h]”jð)�”}”(hj�th]”hŒstruct sk_buff_head *head”…”�”}”(hj’th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽtubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M* hjŠtubj)�”}”(hhh]”jl)�”}”(hŒ%the place to add it in the first list”h]”hŒ%the place to add it in the first list”…”�”}”(hj©th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M) hj¦tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥th´M* hjNtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"skb_queue_splice_init (C function)”Œc.skb_queue_splice_init”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQvoid skb_queue_splice_init (struct sk_buff_head *list, struct sk_buff_head *head)”h]”j )�”}”(hŒPvoid skb_queue_splice_init(struct sk_buff_head *list, struct sk_buff_head *head)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjêth²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjæth²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæth²hh³jøth´M5 ubj3)�”}”(hŒskb_queue_splice_init”h]”j9)�”}”(hŒskb_queue_splice_init”h]”hŒskb_queue_splice_init”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjæth²hh³jøth´M5 ubj¡ )�”}”(hŒ6(struct sk_buff_head *list, struct sk_buff_head *head)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj'uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#uubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjEuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGuŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j usbŒc.skb_queue_splice_init”†”asbuh1hhj#uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#uubj )�”}”(hj h]”hŒ*”…”�”}”(hjsuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#uubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj€uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjuubj§ )�”}”(hŒstruct sk_buff_head *head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj™uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•uubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj·uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¹uŒmodname”NŒ classname”Njå jè )�”}”jë ]”jauŒc.skb_queue_splice_init”†”asbuh1hhj•uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•uubj )�”}”(hj h]”hŒ*”…”�”}”(hjãuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•uubj9)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjðuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjuubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjæth²hh³jøth´M5 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjâth²hh³jøth´M5 ubah}”(h]”jÝtah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jøth´M5 hjßth²hubjg)�”}”(hhh]”jl)�”}”(hŒ4join two skb lists and reinitialise the emptied list”h]”hŒ4join two skb lists and reinitialise the emptied list”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5 hjvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjßth²hh³jøth´M5 ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j2vjŒj2vj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒÇ**Parameters** ``struct sk_buff_head *list`` the new list to add ``struct sk_buff_head *head`` the place to add it in the first list **Description** The list at **list** is reinitialised”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M9 hj6vubjß)�”}”(hhh]”(jä)�”}”(hŒ2``struct sk_buff_head *list`` the new list to add ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj[vh]”hŒstruct sk_buff_head *list”…”�”}”(hj]vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYvubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M6 hjUvubj)�”}”(hhh]”jl)�”}”(hŒthe new list to add”h]”hŒthe new list to add”…”�”}”(hjtvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jpvh´M6 hjqvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpvh´M6 hjRvubjä)�”}”(hŒD``struct sk_buff_head *head`` the place to add it in the first list ”h]”(jê)�”}”(hŒ``struct sk_buff_head *head``”h]”jð)�”}”(hj”vh]”hŒstruct sk_buff_head *head”…”�”}”(hj–vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M7 hjŽvubj)�”}”(hhh]”jl)�”}”(hŒ%the place to add it in the first list”h]”hŒ%the place to add it in the first list”…”�”}”(hj­vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©vh´M7 hjªvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©vh´M7 hjRvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6vubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÏvh]”hŒ Description”…”�”}”(hjÑvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M9 hj6vubjÒ)�”}”(hŒ%The list at **list** is reinitialised”h]”jl)�”}”(hjçvh]”(hŒ The list at ”…”�”}”(hjévh²hh³Nh´Nubj›)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjðvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjévubhŒ is reinitialised”…”�”}”(hjévh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M8 hjåvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jwh´M8 hj6vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"skb_queue_splice_tail (C function)”Œc.skb_queue_splice_tail”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWvoid skb_queue_splice_tail (const struct sk_buff_head *list, struct sk_buff_head *head)”h]”j )�”}”(hŒVvoid skb_queue_splice_tail(const struct sk_buff_head *list, struct sk_buff_head *head)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj/wh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj+wh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MF ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+wh²hh³j=wh´MF ubj3)�”}”(hŒskb_queue_splice_tail”h]”j9)�”}”(hŒskb_queue_splice_tail”h]”hŒskb_queue_splice_tail”…”�”}”(hjPwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLwubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj+wh²hh³j=wh´MF ubj¡ )�”}”(hŒ<(const struct sk_buff_head *list, struct sk_buff_head *head)”h]”(j§ )�”}”(hŒconst struct sk_buff_head *list”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjlwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjywh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhwubj)�”}”(hjh]”hŒstruct”…”�”}”(hj‡wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhwubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj¥wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§wŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jRwsbŒc.skb_queue_splice_tail”†”asbuh1hhjhwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhwubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjhwubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjàwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjdwubj§ )�”}”(hŒstruct sk_buff_head *head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjùwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõwubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jxŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÁwŒc.skb_queue_splice_tail”†”asbuh1hhjõwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõwubj )�”}”(hj h]”hŒ*”…”�”}”(hjCxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõwubj9)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjPxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjdwubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj+wh²hh³j=wh´MF ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj'wh²hh³j=wh´MF ubah}”(h]”j"wah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j=wh´MF hj$wh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+join two skb lists, each list being a queue”h]”hŒ+join two skb lists, each list being a queue”…”�”}”(hjzxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MF hjwxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj$wh²hh³j=wh´MF ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j’xjŒj’xj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``const struct sk_buff_head *list`` the new list to add ``struct sk_buff_head *head`` the place to add it in the first list”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjœxh]”hŒ Parameters”…”�”}”(hjžxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MJ hj–xubjß)�”}”(hhh]”(jä)�”}”(hŒ8``const struct sk_buff_head *list`` the new list to add ”h]”(jê)�”}”(hŒ#``const struct sk_buff_head *list``”h]”jð)�”}”(hj»xh]”hŒconst struct sk_buff_head *list”…”�”}”(hj½xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹xubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MG hjµxubj)�”}”(hhh]”jl)�”}”(hŒthe new list to add”h]”hŒthe new list to add”…”�”}”(hjÔxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐxh´MG hjÑxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐxh´MG hj²xubjä)�”}”(hŒC``struct sk_buff_head *head`` the place to add it in the first list”h]”(jê)�”}”(hŒ``struct sk_buff_head *head``”h]”jð)�”}”(hjôxh]”hŒstruct sk_buff_head *head”…”�”}”(hjöxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòxubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MI hjîxubj)�”}”(hhh]”jl)�”}”(hŒ%the place to add it in the first list”h]”hŒ%the place to add it in the first list”…”�”}”(hj yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MH hj yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j yh´MI hj²xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'skb_queue_splice_tail_init (C function)”Œc.skb_queue_splice_tail_init”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVvoid skb_queue_splice_tail_init (struct sk_buff_head *list, struct sk_buff_head *head)”h]”j )�”}”(hŒUvoid skb_queue_splice_tail_init(struct sk_buff_head *list, struct sk_buff_head *head)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjNyh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjJyh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MT ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJyh²hh³j\yh´MT ubj3)�”}”(hŒskb_queue_splice_tail_init”h]”j9)�”}”(hŒskb_queue_splice_tail_init”h]”hŒskb_queue_splice_tail_init”…”�”}”(hjoyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkyubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjJyh²hh³j\yh´MT ubj¡ )�”}”(hŒ6(struct sk_buff_head *list, struct sk_buff_head *head)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‹yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡yubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj©yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«yŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jqysbŒc.skb_queue_splice_tail_init”†”asbuh1hhj‡yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉyh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡yubj )�”}”(hj h]”hŒ*”…”�”}”(hj×yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‡yubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjäyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒyubj§ )�”}”(hŒstruct sk_buff_head *head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjýyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùyubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jzŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÅyŒc.skb_queue_splice_tail_init”†”asbuh1hhjùyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùyubj )�”}”(hj h]”hŒ*”…”�”}”(hjGzh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjùyubj9)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjTzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒyubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjJyh²hh³j\yh´MT ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjFyh²hh³j\yh´MT ubah}”(h]”jAyah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j\yh´MT hjCyh²hubjg)�”}”(hhh]”jl)�”}”(hŒ4join two skb lists and reinitialise the emptied list”h]”hŒ4join two skb lists and reinitialise the emptied list”…”�”}”(hj~zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MT hj{zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjCyh²hh³j\yh´MT ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j–zjŒj–zj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒê**Parameters** ``struct sk_buff_head *list`` the new list to add ``struct sk_buff_head *head`` the place to add it in the first list **Description** Each of the lists is a queue. The list at **list** is reinitialised”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj zh]”hŒ Parameters”…”�”}”(hj¢zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjžzubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MX hjšzubjß)�”}”(hhh]”(jä)�”}”(hŒ2``struct sk_buff_head *list`` the new list to add ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj¿zh]”hŒstruct sk_buff_head *list”…”�”}”(hjÁzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½zubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MU hj¹zubj)�”}”(hhh]”jl)�”}”(hŒthe new list to add”h]”hŒthe new list to add”…”�”}”(hjØzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÔzh´MU hjÕzubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔzh´MU hj¶zubjä)�”}”(hŒD``struct sk_buff_head *head`` the place to add it in the first list ”h]”(jê)�”}”(hŒ``struct sk_buff_head *head``”h]”jð)�”}”(hjøzh]”hŒstruct sk_buff_head *head”…”�”}”(hjúzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjözubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MV hjòzubj)�”}”(hhh]”jl)�”}”(hŒ%the place to add it in the first list”h]”hŒ%the place to add it in the first list”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j {h´MV hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j {h´MV hj¶zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjšzubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj3{h]”hŒ Description”…”�”}”(hj5{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MX hjšzubjÒ)�”}”(hŒCEach of the lists is a queue. The list at **list** is reinitialised”h]”jl)�”}”(hŒCEach of the lists is a queue. The list at **list** is reinitialised”h]”(hŒ*Each of the lists is a queue. The list at ”…”�”}”(hjM{h²hh³Nh´Nubj›)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjU{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjM{ubhŒ is reinitialised”…”�”}”(hjM{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MW hjI{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jm{h´MW hjšzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_queue_after (C function)”Œc.__skb_queue_after”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ_void __skb_queue_after (struct sk_buff_head *list, struct sk_buff *prev, struct sk_buff *newsk)”h]”j )�”}”(hŒ^void __skb_queue_after(struct sk_buff_head *list, struct sk_buff *prev, struct sk_buff *newsk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�{h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mf ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�{h²hh³j¢{h´Mf ubj3)�”}”(hŒ__skb_queue_after”h]”j9)�”}”(hŒ__skb_queue_after”h]”hŒ__skb_queue_after”…”�”}”(hjµ{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±{ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�{h²hh³j¢{h´Mf ubj¡ )�”}”(hŒH(struct sk_buff_head *list, struct sk_buff *prev, struct sk_buff *newsk)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑ{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍ{ubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjï{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjì{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñ{Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·{sbŒc.__skb_queue_after”†”asbuh1hhjÍ{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍ{ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍ{ubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj*|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍ{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉ{ubj§ )�”}”(hŒstruct sk_buff *prev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjC|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?|ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hja|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jc|Œmodname”NŒ classname”Njå jè )�”}”jë ]”j |Œc.__skb_queue_after”†”asbuh1hhj?|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?|ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?|ubj9)�”}”(hŒprev”h]”hŒprev”…”�”}”(hjš|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉ{ubj§ )�”}”(hŒstruct sk_buff *newsk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj³|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯|ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÑ|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎ|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÓ|Œmodname”NŒ classname”Njå jè )�”}”jë ]”j |Œc.__skb_queue_after”†”asbuh1hhj¯|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯|ubj )�”}”(hj h]”hŒ*”…”�”}”(hjý|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¯|ubj9)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉ{ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�{h²hh³j¢{h´Mf ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒ{h²hh³j¢{h´Mf ubah}”(h]”j‡{ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢{h´Mf hj‰{h²hubjg)�”}”(hhh]”jl)�”}”(hŒqueue a buffer at the list head”h]”hŒqueue a buffer at the list head”…”�”}”(hj4}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mf hj1}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰{h²hh³j¢{h´Mf ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jL}jŒjL}j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX{**Parameters** ``struct sk_buff_head *list`` list to use ``struct sk_buff *prev`` place after this buffer ``struct sk_buff *newsk`` buffer to queue **Description** Queue a buffer int the middle of a list. This function takes no locks and you must therefore hold required locks before calling it. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjV}h]”hŒ Parameters”…”�”}”(hjX}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjT}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mj hjP}ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff_head *list`` list to use ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hju}h]”hŒstruct sk_buff_head *list”…”�”}”(hjw}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjs}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mg hjo}ubj)�”}”(hhh]”jl)�”}”(hŒ list to use”h]”hŒ list to use”…”�”}”(hjŽ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠ}h´Mg hj‹}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠ}h´Mg hjl}ubjä)�”}”(hŒ1``struct sk_buff *prev`` place after this buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *prev``”h]”jð)�”}”(hj®}h]”hŒstruct sk_buff *prev”…”�”}”(hj°}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mh hj¨}ubj)�”}”(hhh]”jl)�”}”(hŒplace after this buffer”h]”hŒplace after this buffer”…”�”}”(hjÇ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÃ}h´Mh hjÄ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃ}h´Mh hjl}ubjä)�”}”(hŒ*``struct sk_buff *newsk`` buffer to queue ”h]”(jê)�”}”(hŒ``struct sk_buff *newsk``”h]”jð)�”}”(hjç}h]”hŒstruct sk_buff *newsk”…”�”}”(hjé}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjå}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mi hjá}ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to queue”h]”hŒbuffer to queue”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jü}h´Mi hjý}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jü}h´Mi hjl}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjP}ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj"~h]”hŒ Description”…”�”}”(hj$~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mk hjP}ubjÒ)�”}”(hŒ½Queue a buffer int the middle of a list. This function takes no locks and you must therefore hold required locks before calling it. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒƒQueue a buffer int the middle of a list. This function takes no locks and you must therefore hold required locks before calling it.”h]”hŒƒQueue a buffer int the middle of a list. This function takes no locks and you must therefore hold required locks before calling it.”…”�”}”(hj<~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mj hj8~ubjl)�”}”(hŒ8A buffer cannot be placed on two lists at the same time.”h]”hŒ8A buffer cannot be placed on two lists at the same time.”…”�”}”(hjK~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mm hj8~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jJ~h´Mj hjP}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_queue_head (C function)”Œc.__skb_queue_head”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHvoid __skb_queue_head (struct sk_buff_head *list, struct sk_buff *newsk)”h]”j )�”}”(hŒGvoid __skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€~h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj|~h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‚ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|~h²hh³jŽ~h´M‚ ubj3)�”}”(hŒ__skb_queue_head”h]”j9)�”}”(hŒ__skb_queue_head”h]”hŒ__skb_queue_head”…”�”}”(hj¡~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�~ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj|~h²hh³jŽ~h´M‚ ubj¡ )�”}”(hŒ2(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj½~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹~ubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjÛ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØ~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÝ~Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j£~sbŒc.__skb_queue_head”†”asbuh1hhj¹~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹~ubj )�”}”(hj h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¹~ubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjµ~ubj§ )�”}”(hŒstruct sk_buff *newsk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jOŒmodname”NŒ classname”Njå jè )�”}”jë ]”j÷~Œc.__skb_queue_head”†”asbuh1hhj+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+ubj )�”}”(hj h]”hŒ*”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj+ubj9)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjµ~ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj|~h²hh³jŽ~h´M‚ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjx~h²hh³jŽ~h´M‚ ubah}”(h]”js~ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŽ~h´M‚ hju~h²hubjg)�”}”(hhh]”jl)�”}”(hŒqueue a buffer at the list head”•h]”hŒqueue a buffer at the list head”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‚ hj­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhju~h²hh³jŽ~h´M‚ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÈjŒjÈj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXE**Parameters** ``struct sk_buff_head *list`` list to use ``struct sk_buff *newsk`` buffer to queue **Description** Queue a buffer at the start of a list. This function takes no locks and you must therefore hold required locks before calling it. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÒh]”hŒ Parameters”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M† hjÌubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff_head *list`` list to use ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hjñh]”hŒstruct sk_buff_head *list”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mƒ hjëubj)�”}”(hhh]”jl)�”}”(hŒ list to use”h]”hŒ list to use”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€h´Mƒ hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€h´Mƒ hjèubjä)�”}”(hŒ*``struct sk_buff *newsk`` buffer to queue ”h]”(jê)�”}”(hŒ``struct sk_buff *newsk``”h]”jð)�”}”(hj*€h]”hŒstruct sk_buff *newsk”…”�”}”(hj,€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M„ hj$€ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to queue”h]”hŒbuffer to queue”…”�”}”(hjC€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?€h´M„ hj@€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?€h´M„ hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hje€h]”hŒ Description”…”�”}”(hjg€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjc€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M† hjÌubjÒ)�”}”(hŒ»Queue a buffer at the start of a list. This function takes no locks and you must therefore hold required locks before calling it. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ�Queue a buffer at the start of a list. This function takes no locks and you must therefore hold required locks before calling it.”h]”hŒ�Queue a buffer at the start of a list. This function takes no locks and you must therefore hold required locks before calling it.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M… hj{€ubjl)�”}”(hŒ8A buffer cannot be placed on two lists at the same time.”h]”hŒ8A buffer cannot be placed on two lists at the same time.”…”�”}”(hjŽ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mˆ hj{€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j�€h´M… hjÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_queue_tail (C function)”Œc.__skb_queue_tail”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHvoid __skb_queue_tail (struct sk_buff_head *list, struct sk_buff *newsk)”h]”j )�”}”(hŒGvoid __skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¿€h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M“ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿€h²hh³jÑ€h´M“ ubj3)�”}”(hŒ__skb_queue_tail”h]”j9)�”}”(hŒ__skb_queue_tail”h]”hŒ__skb_queue_tail”…”�”}”(hjä€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà€ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¿€h²hh³jÑ€h´M“ ubj¡ )�”}”(hŒ2(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjü€ubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j �Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jæ€sbŒc.__skb_queue_tail”†”asbuh1hhjü€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjü€ubj )�”}”(hj h]”hŒ*”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjü€ubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjY�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjü€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjø€ubj§ )�”}”(hŒstruct sk_buff *newsk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjn�ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj��ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’�Œmodname”NŒ classname”Njå jè )�”}”jë ]”j:�Œc.__skb_queue_tail”†”asbuh1hhjn�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjn�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjn�ubj9)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjn�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjø€ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¿€h²hh³jÑ€h´M“ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj»€h²hh³jÑ€h´M“ ubah}”(h]”j¶€ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÑ€h´M“ hj¸€h²hubjg)�”}”(hhh]”jl)�”}”(hŒqueue a buffer at the list tail”h]”hŒqueue a buffer at the list tail”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M“ hjð�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¸€h²hh³jÑ€h´M“ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j ‚jŒj ‚j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXC**Parameters** ``struct sk_buff_head *list`` list to use ``struct sk_buff *newsk`` buffer to queue **Description** Queue a buffer at the end of a list. This function takes no locks and you must therefore hold required locks before calling it. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‚h]”hŒ Parameters”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M— hj‚ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff_head *list`` list to use ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj4‚h]”hŒstruct sk_buff_head *list”…”�”}”(hj6‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M” hj.‚ubj)�”}”(hhh]”jl)�”}”(hŒ list to use”h]”hŒ list to use”…”�”}”(hjM‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jI‚h´M” hjJ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jI‚h´M” hj+‚ubjä)�”}”(hŒ*``struct sk_buff *newsk`` buffer to queue ”h]”(jê)�”}”(hŒ``struct sk_buff *newsk``”h]”jð)�”}”(hjm‚h]”hŒstruct sk_buff *newsk”…”�”}”(hjo‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjk‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M• hjg‚ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to queue”h]”hŒbuffer to queue”…”�”}”(hj†‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚‚h´M• hjƒ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚‚h´M• hj+‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¨‚h]”hŒ Description”…”�”}”(hjª‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M— hj‚ubjÒ)�”}”(hŒ¹Queue a buffer at the end of a list. This function takes no locks and you must therefore hold required locks before calling it. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒQueue a buffer at the end of a list. This function takes no locks and you must therefore hold required locks before calling it.”h]”hŒQueue a buffer at the end of a list. This function takes no locks and you must therefore hold required locks before calling it.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M– hj¾‚ubjl)�”}”(hŒ8A buffer cannot be placed on two lists at the same time.”h]”hŒ8A buffer cannot be placed on two lists at the same time.”…”�”}”(hjÑ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M™ hj¾‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jЂh´M– hj‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_dequeue (C function)”Œc.__skb_dequeue”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:struct sk_buff * __skb_dequeue (struct sk_buff_head *list)”h]”j )�”}”(hŒ8struct sk_buff *__skb_dequeue(struct sk_buff_head *list)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mµ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒh²hh³jƒh´Mµ ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj%ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j'ƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ __skb_dequeue”sbŒc.__skb_dequeue”†”asbuh1hhjƒh²hh³jƒh´Mµ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒh²hh³jƒh´Mµ ubj )�”}”(hj h]”hŒ*”…”�”}”(hjTƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒh²hh³jƒh´Mµ ubj3)�”}”(hŒ __skb_dequeue”h]”j9)�”}”(hjCƒh]”hŒ __skb_dequeue”…”�”}”(hjeƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaƒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjƒh²hh³jƒh´Mµ ubj¡ )�”}”(hŒ(struct sk_buff_head *list)”h]”j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj€ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|ƒubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjžƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jAƒŒc.__skb_dequeue”†”asbuh1hhj|ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|ƒubj )�”}”(hj h]”hŒ*”…”�”}”(hjʃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj|ƒubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj׃h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjxƒubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjƒh²hh³jƒh´Mµ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjþ‚h²hh³jƒh´Mµ ubah}”(h]”jù‚ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jƒh´Mµ hjû‚h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!remove from the head of the queue”h]”hŒ!remove from the head of the queue”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mµ hjþƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjû‚h²hh³jƒh´Mµ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j„jŒj„j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff_head *list`` list to dequeue from **Description** Remove the head of the list. This function does not take any locks so must be used with appropriate locks held only. The head item is returned or ``NULL`` if the list is empty.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj#„h]”hŒ Parameters”…”�”}”(hj%„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¹ hj„ubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct sk_buff_head *list`` list to dequeue from ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hjB„h]”hŒstruct sk_buff_head *list”…”�”}”(hjD„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¶ hj<„ubj)�”}”(hhh]”jl)�”}”(hŒlist to dequeue from”h]”hŒlist to dequeue from”…”�”}”(hj[„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jW„h´M¶ hjX„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jW„h´M¶ hj9„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj„ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj}„h]”hŒ Description”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¸ hj„ubjÒ)�”}”(hŒ°Remove the head of the list. This function does not take any locks so must be used with appropriate locks held only. The head item is returned or ``NULL`` if the list is empty.”h]”jl)�”}”(hŒ°Remove the head of the list. This function does not take any locks so must be used with appropriate locks held only. The head item is returned or ``NULL`` if the list is empty.”h]”(hŒ’Remove the head of the list. This function does not take any locks so must be used with appropriate locks held only. The head item is returned or ”…”�”}”(hj—„h²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŸ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—„ubhŒ if the list is empty.”…”�”}”(hj—„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M· hj“„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j·„h´M· hj„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_dequeue_tail (C function)”Œc.__skb_dequeue_tail”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ?struct sk_buff * __skb_dequeue_tail (struct sk_buff_head *list)”h]”j )�”}”(hŒ=struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÞ„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ„h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÆ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ„h²hh³jë„h´MÆ ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjý„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjú„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿ„Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ__skb_dequeue_tail”sbŒc.__skb_dequeue_tail”†”asbuh1hhjÚ„h²hh³jë„h´MÆ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ„h²hh³jë„h´MÆ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj,…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚ„h²hh³jë„h´MÆ ubj3)�”}”(hŒ__skb_dequeue_tail”h]”j9)�”}”(hj…h]”hŒ__skb_dequeue_tail”…”�”}”(hj=…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9…ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÚ„h²hh³jë„h´MÆ ubj¡ )�”}”(hŒ(struct sk_buff_head *list)”h]”j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjX…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT…ubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjv…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jx…Œmodname”NŒ classname”Njå jè )�”}”jë ]”j…Œc.__skb_dequeue_tail”†”asbuh1hhjT…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT…ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¢…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjT…ubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj¯…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjP…ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÚ„h²hh³jë„h´MÆ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÖ„h²hh³jë„h´MÆ ubah}”(h]”jÑ„ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jë„h´MÆ hjÓ„h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!remove from the tail of the queue”h]”hŒ!remove from the tail of the queue”…”�”}”(hjÙ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÆ hjÖ…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÓ„h²hh³jë„h´MÆ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñ…jŒjñ…j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff_head *list`` list to dequeue from **Description** Remove the tail of the list. This function does not take any locks so must be used with appropriate locks held only. The tail item is returned or ``NULL`` if the list is empty.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjû…h]”hŒ Parameters”…”�”}”(hjý…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjù…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÊ hjõ…ubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct sk_buff_head *list`` list to dequeue from ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj†h]”hŒstruct sk_buff_head *list”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÇ hj†ubj)�”}”(hhh]”jl)�”}”(hŒlist to dequeue from”h]”hŒlist to dequeue from”…”�”}”(hj3†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/†h´MÇ hj0†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/†h´MÇ hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõ…ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjU†h]”hŒ Description”…”�”}”(hjW†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjS†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÉ hjõ…ubjÒ)�”}”(hŒ°Remove the tail of the list. This function does not take any locks so must be used with appropriate locks held only. The tail item is returned or ``NULL`` if the list is empty.”h]”jl)�”}”(hŒ°Remove the tail of the list. This function does not take any locks so must be used with appropriate locks held only. The tail item is returned or ``NULL`` if the list is empty.”h]”(hŒ’Remove the tail of the list. This function does not take any locks so must be used with appropriate locks held only. The tail item is returned or ”…”�”}”(hjo†h²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjw†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjo†ubhŒ if the list is empty.”…”�”}”(hjo†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÈ hjk†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j�†h´MÈ hjõ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_len_add (C function)”Œ c.skb_len_add”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void skb_len_add (struct sk_buff *skb, int delta)”h]”j )�”}”(hŒ0void skb_len_add(struct sk_buff *skb, int delta)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶†h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj²†h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjņh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²†h²hh³jĆh´M ubj3)�”}”(hŒ skb_len_add”h]”j9)�”}”(hŒ skb_len_add”h]”hŒ skb_len_add”…”�”}”(hj׆h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ†ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj²†h²hh³jĆh´M ubj¡ )�”}”(hŒ (struct sk_buff *skb, int delta)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjó†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjï†ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‡Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÙ†sbŒ c.skb_len_add”†”asbuh1hhjï†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjï†ubj )�”}”(hj h]”hŒ*”…”�”}”(hj?‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjï†ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjL‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë†ubj§ )�”}”(hŒ int delta”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hje‡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hja‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja‡ubj9)�”}”(hŒdelta”h]”hŒdelta”…”�”}”(hj�‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë†ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj²†h²hh³jĆh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj®†h²hh³jĆh´M ubah}”(h]”j©†ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jĆh´M hj«†h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"adds a number to len fields of skb”h]”hŒ"adds a number to len fields of skb”…”�”}”(hj«‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hj¨‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj«†h²hh³jĆh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÇjŒjÇj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒf**Parameters** ``struct sk_buff *skb`` buffer to add len to ``int delta`` number of bytes to add”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj͇h]”hŒ Parameters”…”�”}”(hjχh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˇubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjLJubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` buffer to add len to ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjì‡h]”hŒstruct sk_buff *skb”…”�”}”(hjî‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjê‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjæ‡ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to add len to”h]”hŒbuffer to add len to”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆh´M hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæ‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆh´M hjã‡ubjä)�”}”(hŒ$``int delta`` number of bytes to add”h]”(jê)�”}”(hŒ ``int delta``”h]”jð)�”}”(hj%ˆh]”hŒ int delta”…”�”}”(hj'ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjˆubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to add”h]”hŒnumber of bytes to add”…”�”}”(hj>ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hj;ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:ˆh´M hjã‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#__skb_fill_netmem_desc (C function)”Œc.__skb_fill_netmem_desc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ^void __skb_fill_netmem_desc (struct sk_buff *skb, int i, netmem_ref netmem, int off, int size)”h]”j )�”}”(hŒ]void __skb_fill_netmem_desc(struct sk_buff *skb, int i, netmem_ref netmem, int off, int size)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj{ˆh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{ˆh²hh³j�ˆh´M ubj3)�”}”(hŒ__skb_fill_netmem_desc”h]”j9)�”}”(hŒ__skb_fill_netmem_desc”h]”hŒ__skb_fill_netmem_desc”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœˆubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj{ˆh²hh³j�ˆh´M ubj¡ )�”}”(hŒB(struct sk_buff *skb, int i, netmem_ref netmem, int off, int size)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¼ˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸ˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸ˆubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÚˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj׈ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j܈Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¢ˆsbŒc.__skb_fill_netmem_desc”†”asbuh1hhj¸ˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸ˆubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¸ˆubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´ˆubj§ )�”}”(hŒint i”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj.‰h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj*‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*‰ubj9)�”}”(hŒi”h]”hŒi”…”�”}”(hjJ‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´ˆubj§ )�”}”(hŒnetmem_ref netmem”h]”(h)�”}”(hhh]”j9)�”}”(hŒ netmem_ref”h]”hŒ netmem_ref”…”�”}”(hjf‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jh‰Œmodname”NŒ classname”Njå jè )�”}”jë ]”jöˆŒc.__skb_fill_netmem_desc”†”asbuh1hhj_‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj_‰ubj9)�”}”(hŒnetmem”h]”hŒnetmem”…”�”}”(hj’‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´ˆubj§ )�”}”(hŒint off”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj«‰h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj§‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§‰ubj9)�”}”(hŒoff”h]”hŒoff”…”�”}”(hjljh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´ˆubj§ )�”}”(hŒint size”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjà‰h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj܉ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj܉ubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjü‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj܉ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´ˆubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj{ˆh²hh³j�ˆh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjwˆh²hh³j�ˆh´M ubah}”(h]”jrˆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�ˆh´M hjtˆh²hubjg)�”}”(hhh]”jl)�”}”(hŒinitialise a fragment in an skb”h]”hŒinitialise a fragment in an skb”…”�”}”(hj&Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hj#Šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjtˆh²hh³j�ˆh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j>ŠjŒj>Šj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÔ**Parameters** ``struct sk_buff *skb`` buffer containing fragment to be initialised ``int i`` fragment index to initialise ``netmem_ref netmem`` the netmem to use for this fragment ``int off`` the offset to the data with **page** ``int size`` the length of the data **Description** Initialises the **i**'th fragment of **skb** to point to :c:type:`size` bytes at offset **off** within **page**. Does not take any additional reference on the fragment.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjHŠh]”hŒ Parameters”…”�”}”(hjJŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjFŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M! hjBŠubjß)�”}”(hhh]”(jä)�”}”(hŒE``struct sk_buff *skb`` buffer containing fragment to be initialised ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjgŠh]”hŒstruct sk_buff *skb”…”�”}”(hjiŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjeŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjaŠubj)�”}”(hhh]”jl)�”}”(hŒ,buffer containing fragment to be initialised”h]”hŒ,buffer containing fragment to be initialised”…”�”}”(hj€Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|Šh´M hj}Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|Šh´M hj^Šubjä)�”}”(hŒ'``int i`` fragment index to initialise ”h]”(jê)�”}”(hŒ ``int i``”h]”jð)�”}”(hj Šh]”hŒint i”…”�”}”(hj¢Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjšŠubj)�”}”(hhh]”jl)�”}”(hŒfragment index to initialise”h]”hŒfragment index to initialise”…”�”}”(hj¹Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµŠh´M hj¶Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµŠh´M hj^Šubjä)�”}”(hŒ:``netmem_ref netmem`` the netmem to use for this fragment ”h]”(jê)�”}”(hŒ``netmem_ref netmem``”h]”jð)�”}”(hjÙŠh]”hŒnetmem_ref netmem”…”�”}”(hjÛŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj׊ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjÓŠubj)�”}”(hhh]”jl)�”}”(hŒ#the netmem to use for this fragment”h]”hŒ#the netmem to use for this fragment”…”�”}”(hjòŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîŠh´M hjïŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîŠh´M hj^Šubjä)�”}”(hŒ1``int off`` the offset to the data with **page** ”h]”(jê)�”}”(hŒ ``int off``”h]”jð)�”}”(hj‹h]”hŒint off”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M! hj ‹ubj)�”}”(hhh]”jl)�”}”(hŒ$the offset to the data with **page**”h]”(hŒthe offset to the data with ”…”�”}”(hj+‹h²hh³Nh´Nubj›)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hj3‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'‹h´M! hj(‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'‹h´M! hj^Šubjä)�”}”(hŒ$``int size`` the length of the data ”h]”(jê)�”}”(hŒ ``int size``”h]”jð)�”}”(hjY‹h]”hŒint size”…”�”}”(hj[‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjW‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M" hjS‹ubj)�”}”(hhh]”jl)�”}”(hŒthe length of the data”h]”hŒthe length of the data”…”�”}”(hjr‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jn‹h´M" hjo‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjS‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jn‹h´M" hj^Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjBŠubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj”‹h]”hŒ Description”…”�”}”(hj–‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M$ hjBŠubjl)�”}”(hŒpInitialises the **i**'th fragment of **skb** to point to :c:type:`size` bytes at offset **off** within **page**.”h]”(hŒInitialises the ”…”�”}”(hjª‹h²hh³Nh´Nubj›)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj²‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjª‹ubhŒ’th fragment of ”…”�”}”(hjª‹h²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hjÄ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjª‹ubhŒ to point to ”…”�”}”(hjª‹h²hh³Nh´Nubh)�”}”(hŒ:c:type:`size`”h]”jð)�”}”(hjØ‹h]”hŒsize”…”�”}”(hjÚ‹h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÖ‹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsize”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M# hjª‹ubhŒ bytes at offset ”…”�”}”(hjª‹h²hh³Nh´Nubj›)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hjú‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjª‹ubhŒ within ”…”�”}”(hjª‹h²hh³Nh´Nubj›)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjª‹ubhŒ.”…”�”}”(hjª‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõ‹h´M# hjBŠubjl)�”}”(hŒ7Does not take any additional reference on the fragment.”h]”hŒ7Does not take any additional reference on the fragment.”…”�”}”(hj$Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M& hjBŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_fill_page_desc (C function)”Œc.skb_fill_page_desc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZvoid skb_fill_page_desc (struct sk_buff *skb, int i, struct page *page, int off, int size)”h]”j )�”}”(hŒYvoid skb_fill_page_desc(struct sk_buff *skb, int i, struct page *page, int off, int size)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjSŒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjOŒh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MQ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOŒh²hh³jaŒh´MQ ubj3)�”}”(hŒskb_fill_page_desc”h]”j9)�”}”(hŒskb_fill_page_desc”h]”hŒskb_fill_page_desc”…”�”}”(hjtŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpŒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjOŒh²hh³jaŒh´MQ ubj¡ )�”}”(hŒB(struct sk_buff *skb, int i, struct page *page, int off, int size)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒŒubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj®Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°ŒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jvŒsbŒc.skb_fill_page_desc”†”asbuh1hhjŒŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒŒubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒŒubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjéŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆŒubj§ )�”}”(hŒint i”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjþŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþŒubj9)�”}”(hjL‰h]”hŒi”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆŒubj§ )�”}”(hŒstruct page *page”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2�ubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jV�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÊŒŒc.skb_fill_page_desc”†”asbuh1hhj2�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj2�ubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆŒubj§ )�”}”(hŒint off”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¦�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢�ubj9)�”}”(hŒoff”h]”hŒoff”…”�”}”(hjÂ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆŒubj§ )�”}”(hŒint size”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj×�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×�ubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjOŒh²hh³jaŒh´MQ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjKŒh²hh³jaŒh´MQ ubah}”(h]”jFŒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jaŒh´MQ hjHŒh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%initialise a paged fragment in an skb”h]”hŒ%initialise a paged fragment in an skb”…”�”}”(hj!Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MQ hjŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjHŒh²hh³jaŒh´MQ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j9ŽjŒj9Žj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX5**Parameters** ``struct sk_buff *skb`` buffer containing fragment to be initialised ``int i`` paged fragment index to initialise ``struct page *page`` the page to use for this fragment ``int off`` the offset to the data with **page** ``int size`` the length of the data **Description** As per __skb_fill_page_desc() -- initialises the **i**'th fragment of **skb** to point to **size** bytes at offset **off** within **page**. In addition updates **skb** such that **i** is the last fragment. Does not take any additional reference on the fragment.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjCŽh]”hŒ Parameters”…”�”}”(hjEŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjAŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MU hj=Žubjß)�”}”(hhh]”(jä)�”}”(hŒE``struct sk_buff *skb`` buffer containing fragment to be initialised ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjbŽh]”hŒstruct sk_buff *skb”…”�”}”(hjdŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MR hj\Žubj)�”}”(hhh]”jl)�”}”(hŒ,buffer containing fragment to be initialised”h]”hŒ,buffer containing fragment to be initialised”…”�”}”(hj{Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwŽh´MR hjxŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwŽh´MR hjYŽubjä)�”}”(hŒ-``int i`` paged fragment index to initialise ”h]”(jê)�”}”(hŒ ``int i``”h]”jð)�”}”(hj›Žh]”hŒint i”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MS hj•Žubj)�”}”(hhh]”jl)�”}”(hŒ"paged fragment index to initialise”h]”hŒ"paged fragment index to initialise”…”�”}”(hj´Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°Žh´MS hj±Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°Žh´MS hjYŽubjä)�”}”(hŒ8``struct page *page`` the page to use for this fragment ”h]”(jê)�”}”(hŒ``struct page *page``”h]”jð)�”}”(hjÔŽh]”hŒstruct page *page”…”�”}”(hjÖŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MT hjÎŽubj)�”}”(hhh]”jl)�”}”(hŒ!the page to use for this fragment”h]”hŒ!the page to use for this fragment”…”�”}”(hjíŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jéŽh´MT hjêŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéŽh´MT hjYŽubjä)�”}”(hŒ1``int off`` the offset to the data with **page** ”h]”(jê)�”}”(hŒ ``int off``”h]”jð)�”}”(hj �h]”hŒint off”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MU hj�ubj)�”}”(hhh]”jl)�”}”(hŒ$the offset to the data with **page**”h]”(hŒthe offset to the data with ”…”�”}”(hj&�h²hh³Nh´Nubj›)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hj.�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"�h´MU hj#�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j"�h´MU hjYŽubjä)�”}”(hŒ$``int size`` the length of the data ”h]”(jê)�”}”(hŒ ``int size``”h]”jð)�”}”(hjT�h]”hŒint size”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MV hjN�ubj)�”}”(hhh]”jl)�”}”(hŒthe length of the data”h]”hŒthe length of the data”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ji�h´MV hjj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji�h´MV hjYŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj=Žubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj��h]”hŒ Description”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MX hj=Žubjl)�”}”(hŒÍAs per __skb_fill_page_desc() -- initialises the **i**'th fragment of **skb** to point to **size** bytes at offset **off** within **page**. In addition updates **skb** such that **i** is the last fragment.”h]”(hŒ1As per __skb_fill_page_desc() -- initialises the ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj­�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒ’th fragment of ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj¿�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒ to point to ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hjÑ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒ bytes at offset ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hjã�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒ within ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒ. In addition updates ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒ such that ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒ is the last fragment.”…”�”}”(hj¥�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MW hj=Žubjl)�”}”(hŒ7Does not take any additional reference on the fragment.”h]”hŒ7Does not take any additional reference on the fragment.”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M[ hj=Žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%skb_fill_page_desc_noacc (C function)”Œc.skb_fill_page_desc_noacc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`void skb_fill_page_desc_noacc (struct sk_buff *skb, int i, struct page *page, int off, int size)”h]”j )�”}”(hŒ_void skb_fill_page_desc_noacc(struct sk_buff *skb, int i, struct page *page, int off, int size)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj]�h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mf ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]�h²hh³jo�h´Mf ubj3)�”}”(hŒskb_fill_page_desc_noacc”h]”j9)�”}”(hŒskb_fill_page_desc_noacc”h]”hŒskb_fill_page_desc_noacc”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj]�h²hh³jo�h´Mf ubj¡ )�”}”(hŒB(struct sk_buff *skb, int i, struct page *page, int off, int size)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjš�ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¾�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j„�sbŒc.skb_fill_page_desc_noacc”†”asbuh1hhjš�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjš�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjš�ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjš�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–�ubj§ )�”}”(hŒint i”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ‘ubj9)�”}”(hjL‰h]”hŒi”…”�”}”(hj,‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–�ubj§ )�”}”(hŒstruct page *page”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjD‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@‘ubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjb‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jd‘Œmodname”NŒ classname”Njå jè )�”}”jë ]”jØ�Œc.skb_fill_page_desc_noacc”†”asbuh1hhj@‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@‘ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽ‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@‘ubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj›‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–�ubj§ )�”}”(hŒint off”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj´‘h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj°‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°‘ubj9)�”}”(hŒoff”h]”hŒoff”…”�”}”(hjБh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–�ubj§ )�”}”(hŒint size”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjé‘h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjå‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjå‘ubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjå‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj]�h²hh³jo�h´Mf ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjY�h²hh³jo�h´Mf ubah}”(h]”jT�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jo�h´Mf hjV�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ%initialise a paged fragment in an skb”h]”hŒ%initialise a paged fragment in an skb”…”�”}”(hj/’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mf hj,’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjV�h²hh³jo�h´Mf ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jG’jŒjG’j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct sk_buff *skb`` buffer containing fragment to be initialised ``int i`` paged fragment index to initialise ``struct page *page`` the page to use for this fragment ``int off`` the offset to the data with **page** ``int size`` the length of the data **Description** Variant of skb_fill_page_desc() which does not deal with pfmemalloc, if page is not owned by us.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjQ’h]”hŒ Parameters”…”�”}”(hjS’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjO’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mj hjK’ubjß)�”}”(hhh]”(jä)�”}”(hŒE``struct sk_buff *skb`` buffer containing fragment to be initialised ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjp’h]”hŒstruct sk_buff *skb”…”�”}”(hjr’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjn’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mg hjj’ubj)�”}”(hhh]”jl)�”}”(hŒ,buffer containing fragment to be initialised”h]”hŒ,buffer containing fragment to be initialised”…”�”}”(hj‰’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…’h´Mg hj†’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…’h´Mg hjg’ubjä)�”}”(hŒ-``int i`` paged fragment index to initialise ”h]”(jê)�”}”(hŒ ``int i``”h]”jð)�”}”(hj©’h]”hŒint i”…”�”}”(hj«’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mh hj£’ubj)�”}”(hhh]”jl)�”}”(hŒ"paged fragment index to initialise”h]”hŒ"paged fragment index to initialise”…”�”}”(hjÂ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾’h´Mh hj¿’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾’h´Mh hjg’ubjä)�”}”(hŒ8``struct page *page`` the page to use for this fragment ”h]”(jê)�”}”(hŒ``struct page *page``”h]”jð)�”}”(hjâ’h]”hŒstruct page *page”…”�”}”(hjä’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mi hjÜ’ubj)�”}”(hhh]”jl)�”}”(hŒ!the page to use for this fragment”h]”hŒ!the page to use for this fragment”…”�”}”(hjû’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j÷’h´Mi hjø’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j÷’h´Mi hjg’ubjä)�”}”(hŒ1``int off`` the offset to the data with **page** ”h]”(jê)�”}”(hŒ ``int off``”h]”jð)�”}”(hj“h]”hŒint off”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mj hj“ubj)�”}”(hhh]”jl)�”}”(hŒ$the offset to the data with **page**”h]”(hŒthe offset to the data with ”…”�”}”(hj4“h²hh³Nh´Nubj›)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hj<“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j0“h´Mj hj1“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j0“h´Mj hjg’ubjä)�”}”(hŒ$``int size`` the length of the data ”h]”(jê)�”}”(hŒ ``int size``”h]”jð)�”}”(hjb“h]”hŒint size”…”�”}”(hjd“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mk hj\“ubj)�”}”(hhh]”jl)�”}”(hŒthe length of the data”h]”hŒthe length of the data”…”�”}”(hj{“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jw“h´Mk hjx“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jw“h´Mk hjg’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjK’ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�“h]”hŒ Description”…”�”}”(hjŸ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj›“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mm hjK’ubjl)�”}”(hŒ`Variant of skb_fill_page_desc() which does not deal with pfmemalloc, if page is not owned by us.”h]”hŒ`Variant of skb_fill_page_desc() which does not deal with pfmemalloc, if page is not owned by us.”…”�”}”(hj³“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Ml hjK’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_headroom (C function)”Œc.skb_headroom”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5unsigned int skb_headroom (const struct sk_buff *skb)”h]”j )�”}”(hŒ4unsigned int skb_headroom(const struct sk_buff *skb)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjâ“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞ“h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MI ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞ“h²hh³jð“h´MI ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞ“h²hh³jð“h´MI ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞ“h²hh³jð“h´MI ubj3)�”}”(hŒ skb_headroom”h]”j9)�”}”(hŒ skb_headroom”h]”hŒ skb_headroom”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÞ“h²hh³jð“h´MI ubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj;”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7”ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjV”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7”ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjt”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jv”Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j!”sbŒc.skb_headroom”†”asbuh1hhj7”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj””h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7”ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¢”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj7”ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¯”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj3”ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÞ“h²hh³jð“h´MI ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÚ“h²hh³jð“h´MI ubah}”(h]”jÕ“ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jð“h´MI hjדh²hubjg)�”}”(hhh]”jl)�”}”(hŒbytes at buffer head”h]”hŒbytes at buffer head”…”�”}”(hjÙ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MI hjÖ”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjדh²hh³jð“h´MI ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñ”jŒjñ”j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ¤**Parameters** ``const struct sk_buff *skb`` buffer to check **Description** Return the number of bytes of free space at the head of an :c:type:`sk_buff`.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjû”h]”hŒ Parameters”…”�”}”(hjý”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjù”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MM hjõ”ubjß)�”}”(hhh]”jä)�”}”(hŒ.``const struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj•h]”hŒconst struct sk_buff *skb”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MJ hj•ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hj3•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/•h´MJ hj0•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/•h´MJ hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõ”ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjU•h]”hŒ Description”…”�”}”(hjW•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjS•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´ML hjõ”ubjÒ)�”}”(hŒMReturn the number of bytes of free space at the head of an :c:type:`sk_buff`.”h]”jl)�”}”(hjm•h]”(hŒ;Return the number of bytes of free space at the head of an ”…”�”}”(hjo•h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjx•h]”hŒsk_buff”…”�”}”(hjz•h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjv•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MK hjo•ubhŒ.”…”�”}”(hjo•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j••h´MK hjk•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j••h´MK hjõ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_tailroom (C function)”Œc.skb_tailroom”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,int skb_tailroom (const struct sk_buff *skb)”h]”j )�”}”(hŒ+int skb_tailroom(const struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÆ•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj•h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MT ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•h²hh³jÔ•h´MT ubj3)�”}”(hŒ skb_tailroom”h]”j9)�”}”(hŒ skb_tailroom”h]”hŒ skb_tailroom”…”�”}”(hjç•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã•ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj•h²hh³jÔ•h´MT ubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿ•ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿ•ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj<–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j>–Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jé•sbŒc.skb_tailroom”†”asbuh1hhjÿ•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿ•ubj )�”}”(hj h]”hŒ*”…”�”}”(hjj–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÿ•ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjw–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿ•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjû•ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj••h²hh³jÔ•h´MT ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¾•h²hh³jÔ•h´MT ubah}”(h]”j¹•ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÔ•h´MT hj»•h²hubjg)�”}”(hhh]”jl)�”}”(hŒbytes at buffer end”h]”hŒbytes at buffer end”…”�”}”(hj¡–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MT hjž–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj»•h²hh³jÔ•h´MT ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¹–jŒj¹–j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ™**Parameters** ``const struct sk_buff *skb`` buffer to check **Description** Return the number of bytes of free space at the tail of an sk_buff”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÖh]”hŒ Parameters”…”�”}”(hjÅ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MX hj½–ubjß)�”}”(hhh]”jä)�”}”(hŒ.``const struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjâ–h]”hŒconst struct sk_buff *skb”…”�”}”(hjä–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MU hjÜ–ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hjû–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j÷–h´MU hjø–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j÷–h´MU hjÙ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj½–ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj—h]”hŒ Description”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MW hj½–ubjÒ)�”}”(hŒBReturn the number of bytes of free space at the tail of an sk_buff”h]”jl)�”}”(hj5—h]”hŒBReturn the number of bytes of free space at the tail of an sk_buff”…”�”}”(hj7—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MV hj3—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jD—h´MV hj½–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_availroom (C function)”Œc.skb_availroom”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-int skb_availroom (const struct sk_buff *skb)”h]”j )�”}”(hŒ,int skb_availroom(const struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjk—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjg—h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M_ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg—h²hh³jy—h´M_ ubj3)�”}”(hŒ skb_availroom”h]”j9)�”}”(hŒ skb_availroom”h]”hŒ skb_availroom”…”�”}”(hjŒ—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆ—ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjg—h²hh³jy—h´M_ ubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¨—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤—ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjЗh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤—ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjá—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jã—Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŽ—sbŒc.skb_availroom”†”asbuh1hhj¤—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤—ubj )�”}”(hj h]”hŒ*”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¤—ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj —ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjg—h²hh³jy—h´M_ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjc—h²hh³jy—h´M_ ubah}”(h]”j^—ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jy—h´M_ hj`—h²hubjg)�”}”(hhh]”jl)�”}”(hŒbytes at buffer end”h]”hŒbytes at buffer end”…”�”}”(hjF˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M_ hjC˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj`—h²hh³jy—h´M_ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j^˜jŒj^˜j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ½**Parameters** ``const struct sk_buff *skb`` buffer to check **Description** Return the number of bytes of free space at the tail of an sk_buff allocated by sk_stream_alloc()”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh˜h]”hŒ Parameters”…”�”}”(hjj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjf˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mc hjb˜ubjß)�”}”(hhh]”jä)�”}”(hŒ.``const struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj‡˜h]”hŒconst struct sk_buff *skb”…”�”}”(hj‰˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M` hj�˜ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hj ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœ˜h´M` hj�˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœ˜h´M` hj~˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjb˜ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj˜h]”hŒ Description”…”�”}”(hjĘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mb hjb˜ubjÒ)�”}”(hŒaReturn the number of bytes of free space at the tail of an sk_buff allocated by sk_stream_alloc()”h]”jl)�”}”(hŒaReturn the number of bytes of free space at the tail of an sk_buff allocated by sk_stream_alloc()”h]”hŒaReturn the number of bytes of free space at the tail of an sk_buff allocated by sk_stream_alloc()”…”�”}”(hjܘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Ma hjؘubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jê˜h´Ma hjb˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_reserve (C function)”Œ c.skb_reserve”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void skb_reserve (struct sk_buff *skb, int len)”h]”j )�”}”(hŒ.void skb_reserve(struct sk_buff *skb, int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ™h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mn ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ™h²hh³j™h´Mn ubj3)�”}”(hŒ skb_reserve”h]”j9)�”}”(hŒ skb_reserve”h]”hŒ skb_reserve”…”�”}”(hj2™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.™ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj ™h²hh³j™h´Mn ubj¡ )�”}”(hŒ(struct sk_buff *skb, int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjN™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ™ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjl™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jn™Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4™sbŒ c.skb_reserve”†”asbuh1hhjJ™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ™ubj )�”}”(hj h]”hŒ*”…”�”}”(hjš™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJ™ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj§™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjF™ubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÀ™h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΙh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼™ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÜ™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjF™ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj ™h²hh³j™h´Mn ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ™h²hh³j™h´Mn ubah}”(h]”j™ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j™h´Mn hj™h²hubjg)�”}”(hhh]”jl)�”}”(hŒadjust headroom”h]”hŒadjust headroom”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mn hjšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj™h²hh³j™h´Mn ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jšjŒjšj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒë**Parameters** ``struct sk_buff *skb`` buffer to alter ``int len`` bytes to move **Description** Increase the headroom of an empty :c:type:`sk_buff` by reducing the tail room. This is only allowed for an empty buffer.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj(šh]”hŒ Parameters”…”�”}”(hj*šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mr hj"šubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to alter ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjGšh]”hŒstruct sk_buff *skb”…”�”}”(hjIšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEšubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mo hjAšubj)�”}”(hhh]”jl)�”}”(hŒbuffer to alter”h]”hŒbuffer to alter”…”�”}”(hj`šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\šh´Mo hj]šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\šh´Mo hj>šubjä)�”}”(hŒ``int len`` bytes to move ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hj€šh]”hŒint len”…”�”}”(hj‚šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~šubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mp hjzšubj)�”}”(hhh]”jl)�”}”(hŒ bytes to move”h]”hŒ bytes to move”…”�”}”(hj™šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•šh´Mp hj–šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•šh´Mp hj>šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"šubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj»šh]”hŒ Description”…”�”}”(hj½šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¹šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mr hj"šubjÒ)�”}”(hŒxIncrease the headroom of an empty :c:type:`sk_buff` by reducing the tail room. This is only allowed for an empty buffer.”h]”jl)�”}”(hŒxIncrease the headroom of an empty :c:type:`sk_buff` by reducing the tail room. This is only allowed for an empty buffer.”h]”(hŒ"Increase the headroom of an empty ”…”�”}”(hjÕšh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjßšh]”hŒsk_buff”…”�”}”(hjášh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÝšubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mq hjÕšubhŒE by reducing the tail room. This is only allowed for an empty buffer.”…”�”}”(hjÕšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüšh´Mq hjÑšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jüšh´Mq hj"šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!skb_tailroom_reserve (C function)”Œc.skb_tailroom_reserve”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ_void skb_tailroom_reserve (struct sk_buff *skb, unsigned int mtu, unsigned int needed_tailroom)”h]”j )�”}”(hŒ^void skb_tailroom_reserve(struct sk_buff *skb, unsigned int mtu, unsigned int needed_tailroom)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-›h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)›h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M| ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)›h²hh³j;›h´M| ubj3)�”}”(hŒskb_tailroom_reserve”h]”j9)�”}”(hŒskb_tailroom_reserve”h]”hŒskb_tailroom_reserve”…”�”}”(hjN›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ›ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj)›h²hh³j;›h´M| ubj¡ )�”}”(hŒE(struct sk_buff *skb, unsigned int mtu, unsigned int needed_tailroom)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjf›ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjˆ›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŠ›Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jP›sbŒc.skb_tailroom_reserve”†”asbuh1hhjf›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjf›ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjf›ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjf›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjb›ubj§ )�”}”(hŒunsigned int mtu”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÜ›h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjØ›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ›ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjø›h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjØ›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ›ubj9)�”}”(hŒmtu”h]”hŒmtu”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØ›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjb›ubj§ )�”}”(hŒunsigned int needed_tailroom”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj-œh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)œubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjIœh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)œubj9)�”}”(hŒneeded_tailroom”h]”hŒneeded_tailroom”…”�”}”(hjeœh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjb›ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj)›h²hh³j;›h´M| ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj%›h²hh³j;›h´M| ubah}”(h]”j ›ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j;›h´M| hj"›h²hubjg)�”}”(hhh]”jl)�”}”(hŒadjust reserved_tailroom”h]”hŒadjust reserved_tailroom”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M| hjŒœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj"›h²hh³j;›h´M| ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j§œjŒj§œj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXË**Parameters** ``struct sk_buff *skb`` buffer to alter ``unsigned int mtu`` maximum amount of headlen permitted ``unsigned int needed_tailroom`` minimum amount of reserved_tailroom **Description** Set reserved_tailroom so that headlen can be as large as possible but not larger than mtu and tailroom cannot be smaller than needed_tailroom. The required headroom should already have been reserved before using this function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj±œh]”hŒ Parameters”…”�”}”(hj³œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M€ hj«œubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to alter ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjМh]”hŒstruct sk_buff *skb”…”�”}”(hjÒœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjΜubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M} hjÊœubj)�”}”(hhh]”jl)�”}”(hŒbuffer to alter”h]”hŒbuffer to alter”…”�”}”(hjéœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåœh´M} hjæœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåœh´M} hjÇœubjä)�”}”(hŒ9``unsigned int mtu`` maximum amount of headlen permitted ”h]”(jê)�”}”(hŒ``unsigned int mtu``”h]”jð)�”}”(hj �h]”hŒunsigned int mtu”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M~ hj�ubj)�”}”(hhh]”jl)�”}”(hŒ#maximum amount of headlen permitted”h]”hŒ#maximum amount of headlen permitted”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´M~ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´M~ hjÇœubjä)�”}”(hŒE``unsigned int needed_tailroom`` minimum amount of reserved_tailroom ”h]”(jê)�”}”(hŒ ``unsigned int needed_tailroom``”h]”jð)�”}”(hjB�h]”hŒunsigned int needed_tailroom”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hj<�ubj)�”}”(hhh]”jl)�”}”(hŒ#minimum amount of reserved_tailroom”h]”hŒ#minimum amount of reserved_tailroom”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jW�h´M hjX�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jW�h´M hjÇœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj«œubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj}�h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M� hj«œubjÒ)�”}”(hŒâSet reserved_tailroom so that headlen can be as large as possible but not larger than mtu and tailroom cannot be smaller than needed_tailroom. The required headroom should already have been reserved before using this function.”h]”jl)�”}”(hŒâSet reserved_tailroom so that headlen can be as large as possible but not larger than mtu and tailroom cannot be smaller than needed_tailroom. The required headroom should already have been reserved before using this function.”h]”hŒâSet reserved_tailroom so that headlen can be as large as possible but not larger than mtu and tailroom cannot be smaller than needed_tailroom. The required headroom should already have been reserved before using this function.”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M€ hj“�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j¥�h´M€ hj«œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ/skb_reset_transport_header_careful (C function)”Œ$c.skb_reset_transport_header_careful”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=bool skb_reset_transport_header_careful (struct sk_buff *skb)”h]”j )�”}”(hŒdata **Description** Hardened version of skb_set_transport_header(). **Return** true if the operation was a success.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¤ h]”hŒ Parameters”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M; hjž ubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to alter ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjàh]”hŒstruct sk_buff *skb”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M8 hj½ ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to alter”h]”hŒbuffer to alter”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØ h´M8 hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØ h´M8 hjº ubjä)�”}”(hŒ0``const int offset`` offset to add to skb->data ”h]”(jê)�”}”(hŒ``const int offset``”h]”jð)�”}”(hjü h]”hŒconst int offset”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M9 hjö ubj)�”}”(hhh]”jl)�”}”(hŒoffset to add to skb->data”h]”hŒoffset to add to skb->data”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¡h´M9 hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¡h´M9 hjº ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjž ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj7¡h]”hŒ Description”…”�”}”(hj9¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj5¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M; hjž ubjl)�”}”(hŒ/Hardened version of skb_set_transport_header().”h]”hŒ/Hardened version of skb_set_transport_header().”…”�”}”(hjM¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M: hjž ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj^¡h]”hŒReturn”…”�”}”(hj`¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj\¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M< hjž ubjl)�”}”(hŒ$true if the operation was a success.”h]”hŒ$true if the operation was a success.”…”�”}”(hjt¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M= hjž ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpskb_trim_unique (C function)”Œc.pskb_trim_unique”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void pskb_trim_unique (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ°ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj߯h²hh³jð¯h´Mubj¡ )�”}”(hŒ(gfp_t gfp_mask)”h]”j§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj`°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jb°Œmodname”NŒ classname”Njå jè )�”}”jë ]”j°Œc.__dev_alloc_page”†”asbuh1hhjY°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY°ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hjŒ°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjY°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjU°ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj߯h²hh³jð¯h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÛ¯h²hh³jð¯h´Mubah}”(h]”jÖ¯ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jð¯h´Mhjدh²hubjg)�”}”(hhh]”jl)�”}”(hŒallocate a page for network Rx”h]”hŒallocate a page for network Rx”…”�”}”(hj¶°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj³°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjدh²hh³jð¯h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jΰjŒjΰj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ½**Parameters** ``gfp_t gfp_mask`` allocation priority. Set __GFP_NOMEMALLOC if not for network Rx **Description** Allocate a new page. ``NULL`` is returned if there is no free memory.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjذh]”hŒ Parameters”…”�”}”(hjÚ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÖ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjÒ°ubjß)�”}”(hhh]”jä)�”}”(hŒS``gfp_t gfp_mask`` allocation priority. Set __GFP_NOMEMALLOC if not for network Rx ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hj÷°h]”hŒgfp_t gfp_mask”…”�”}”(hjù°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjñ°ubj)�”}”(hhh]”jl)�”}”(hŒ?allocation priority. Set __GFP_NOMEMALLOC if not for network Rx”h]”hŒ?allocation priority. Set __GFP_NOMEMALLOC if not for network Rx”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ±h´Mhj ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñ°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ±h´Mhjî°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÒ°ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj2±h]”hŒ Description”…”�”}”(hj4±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjÒ°ubjl)�”}”(hŒAllocate a new page.”h]”hŒAllocate a new page.”…”�”}”(hjH±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjÒ°ubjl)�”}”(hŒ0``NULL`` is returned if there is no free memory.”h]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj[±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjW±ubhŒ( is returned if there is no free memory.”…”�”}”(hjW±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjÒ°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!dev_page_is_reusable (C function)”Œc.dev_page_is_reusable”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3bool dev_page_is_reusable (const struct page *page)”h]”j )�”}”(hŒ2bool dev_page_is_reusable(const struct page *page)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj”±h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�±h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�±h²hh³j¡±h´M0ubj3)�”}”(hŒdev_page_is_reusable”h]”j9)�”}”(hŒdev_page_is_reusable”h]”hŒdev_page_is_reusable”…”�”}”(hj´±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°±ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�±h²hh³j¡±h´M0ubj¡ )�”}”(hŒ(const struct page *page)”h]”j§ )�”}”(hŒconst struct page *page”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjбh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj̱ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjݱh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj̱ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjë±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj̱ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj̱ubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ²Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¶±sbŒc.dev_page_is_reusable”†”asbuh1hhj̱ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj̱ubj )�”}”(hj h]”hŒ*”…”�”}”(hj7²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj̱ubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjD²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj̱ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjȱubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�±h²hh³j¡±h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒ±h²hh³j¡±h´M0ubah}”(h]”j‡±ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¡±h´M0hj‰±h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1check whether a page can be reused for network Rx”h]”hŒ1check whether a page can be reused for network Rx”…”�”}”(hjn²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M0hjk²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰±h²hh³j¡±h´M0ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j†²jŒj†²j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX"**Parameters** ``const struct page *page`` the page to test **Description** A page shouldn't be considered for reusing/recycling if it was allocated under memory pressure or at a distant memory node. **Return** false if this page should be returned to page allocator, true otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�²h]”hŒ Parameters”…”�”}”(hj’²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj޲ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M4hjвubjß)�”}”(hhh]”jä)�”}”(hŒ-``const struct page *page`` the page to test ”h]”(jê)�”}”(hŒ``const struct page *page``”h]”jð)�”}”(hj¯²h]”hŒconst struct page *page”…”�”}”(hj±²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M1hj©²ubj)�”}”(hhh]”jl)�”}”(hŒthe page to test”h]”hŒthe page to test”…”�”}”(hjȲh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jIJh´M1hjŲubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jIJh´M1hj¦²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjвubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjê²h]”hŒ Description”…”�”}”(hjì²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjè²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M3hjвubjl)�”}”(hŒ{A page shouldn't be considered for reusing/recycling if it was allocated under memory pressure or at a distant memory node.”h]”hŒ}A page shouldn’t be considered for reusing/recycling if it was allocated under memory pressure or at a distant memory node.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M2hjвubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj³h]”hŒReturn”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5hjвubjl)�”}”(hŒHfalse if this page should be returned to page allocator, true otherwise.”h]”hŒHfalse if this page should be returned to page allocator, true otherwise.”…”�”}”(hj'³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M6hjвubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%skb_propagate_pfmemalloc (C function)”Œc.skb_propagate_pfmemalloc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒLvoid skb_propagate_pfmemalloc (const struct page *page, struct sk_buff *skb)”h]”j )�”}”(hŒKvoid skb_propagate_pfmemalloc(const struct page *page, struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjV³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjR³h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR³h²hh³jd³h´M@ubj3)�”}”(hŒskb_propagate_pfmemalloc”h]”j9)�”}”(hŒskb_propagate_pfmemalloc”h]”hŒskb_propagate_pfmemalloc”…”�”}”(hjw³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs³ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjR³h²hh³jd³h´M@ubj¡ )�”}”(hŒ.(const struct page *page, struct sk_buff *skb)”h]”(j§ )�”}”(hŒconst struct page *page”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj“³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�³ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj®³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�³ubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj̳h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjɳubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jγŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jy³sbŒc.skb_propagate_pfmemalloc”†”asbuh1hhj�³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�³ubj )�”}”(hj h]”hŒ*”…”�”}”(hjú³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�³ubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹³ubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj>´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@´Œmodname”NŒ classname”Njå jè )�”}”jë ]”j賌c.skb_propagate_pfmemalloc”†”asbuh1hhj´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ubj )�”}”(hj h]”hŒ*”…”�”}”(hjj´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj´ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjw´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹³ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjR³h²hh³jd³h´M@ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjN³h²hh³jd³h´M@ubah}”(h]”jI³ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jd³h´M@hjK³h²hubjg)�”}”(hhh]”jl)�”}”(hŒ6Propagate pfmemalloc if skb is allocated after RX page”h]”hŒ6Propagate pfmemalloc if skb is allocated after RX page”…”�”}”(hj¡´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M@hjž´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjK³h²hh³jd³h´M@ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¹´jŒj¹´j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``const struct page *page`` The page that was allocated from skb_alloc_page ``struct sk_buff *skb`` The skb that may need pfmemalloc set”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjôh]”hŒ Parameters”…”�”}”(hjÅ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MDhj½´ubjß)�”}”(hhh]”(jä)�”}”(hŒL``const struct page *page`` The page that was allocated from skb_alloc_page ”h]”(jê)�”}”(hŒ``const struct page *page``”h]”jð)�”}”(hjâ´h]”hŒconst struct page *page”…”�”}”(hjä´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MAhjÜ´ubj)�”}”(hhh]”jl)�”}”(hŒ/The page that was allocated from skb_alloc_page”h]”hŒ/The page that was allocated from skb_alloc_page”…”�”}”(hjû´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j÷´h´MAhjø´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j÷´h´MAhjÙ´ubjä)�”}”(hŒ<``struct sk_buff *skb`` The skb that may need pfmemalloc set”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjµh]”hŒstruct sk_buff *skb”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MChjµubj)�”}”(hhh]”jl)�”}”(hŒ$The skb that may need pfmemalloc set”h]”hŒ$The skb that may need pfmemalloc set”…”�”}”(hj4µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MBhj1µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j0µh´MChjÙ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj½´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_off (C function)”Œc.skb_frag_off”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2unsigned int skb_frag_off (const skb_frag_t *frag)”h]”j )�”}”(hŒ1unsigned int skb_frag_off(const skb_frag_t *frag)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjuµh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjqµh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„µh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqµh²hh³jƒµh´MLubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj’µh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjqµh²hh³jƒµh´MLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqµh²hh³jƒµh´MLubj3)�”}”(hŒ skb_frag_off”h]”j9)�”}”(hŒ skb_frag_off”h]”hŒ skb_frag_off”…”�”}”(hj²µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®µubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjqµh²hh³jƒµh´MLubj¡ )�”}”(hŒ(const skb_frag_t *frag)”h]”j§ )�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjεh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjʵubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛµh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjʵubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hjìµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j´µsbŒc.skb_frag_off”†”asbuh1hhjʵubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjʵubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjʵubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hj'¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjʵubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƵubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjqµh²hh³jƒµh´MLubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjmµh²hh³jƒµh´MLubah}”(h]”jhµah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jƒµh´MLhjjµh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Returns the offset of a skb fragment”h]”hŒ$Returns the offset of a skb fragment”…”�”}”(hjQ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MLhjN¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjjµh²hh³jƒµh´MLubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ji¶jŒji¶j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ?**Parameters** ``const skb_frag_t *frag`` the paged fragment”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjs¶h]”hŒ Parameters”…”�”}”(hju¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MPhjm¶ubjß)�”}”(hhh]”jä)�”}”(hŒ-``const skb_frag_t *frag`` the paged fragment”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hj’¶h]”hŒconst skb_frag_t *frag”…”�”}”(hj”¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MRhjŒ¶ubj)�”}”(hhh]”jl)�”}”(hŒthe paged fragment”h]”hŒthe paged fragment”…”�”}”(hj«¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MMhj¨¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§¶h´MRhj‰¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjm¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_off_add (C function)”Œc.skb_frag_off_add”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void skb_frag_off_add (skb_frag_t *frag, int delta)”h]”j )�”}”(hŒ2void skb_frag_off_add(skb_frag_t *frag, int delta)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjì¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjè¶h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjè¶h²hh³jú¶h´MUubj3)�”}”(hŒskb_frag_off_add”h]”j9)�”}”(hŒskb_frag_off_add”h]”hŒskb_frag_off_add”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ·ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjè¶h²hh³jú¶h´MUubj¡ )�”}”(hŒ(skb_frag_t *frag, int delta)”h]”(j§ )�”}”(hŒskb_frag_t *frag”h]”(h)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hj,·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j.·Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·sbŒc.skb_frag_off_add”†”asbuh1hhj%·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%·ubj )�”}”(hj h]”hŒ*”…”�”}”(hjZ·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj%·ubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hjg·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!·ubj§ )�”}”(hŒ int delta”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj€·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj|·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|·ubj9)�”}”(hŒdelta”h]”hŒdelta”…”�”}”(hjœ·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!·ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjè¶h²hh³jú¶h´MUubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjä¶h²hh³jú¶h´MUubah}”(h]”jß¶ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jú¶h´MUhjá¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Increments the offset of a skb fragment by **delta**”h]”(hŒ+Increments the offset of a skb fragment by ”…”�”}”(hjÆ·h²hh³Nh´Nubj›)�”}”(hŒ **delta**”h]”hŒdelta”…”�”}”(hjηh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MUhj÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjá¶h²hh³jú¶h´MUubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jì·jŒjì·j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒQ**Parameters** ``skb_frag_t *frag`` skb fragment ``int delta`` value to add”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjö·h]”hŒ Parameters”…”�”}”(hjø·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjô·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MYhjð·ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``skb_frag_t *frag`` skb fragment ”h]”(jê)�”}”(hŒ``skb_frag_t *frag``”h]”jð)�”}”(hj¸h]”hŒskb_frag_t *frag”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MVhj¸ubj)�”}”(hhh]”jl)�”}”(hŒ skb fragment”h]”hŒ skb fragment”…”�”}”(hj.¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*¸h´MVhj+¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*¸h´MVhj ¸ubjä)�”}”(hŒ``int delta`` value to add”h]”(jê)�”}”(hŒ ``int delta``”h]”jð)�”}”(hjN¸h]”hŒ int delta”…”�”}”(hjP¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MXhjH¸ubj)�”}”(hhh]”jl)�”}”(hŒ value to add”h]”hŒ value to add”…”�”}”(hjg¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MWhjd¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc¸h´MXhj ¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjð·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_off_set (C function)”Œc.skb_frag_off_set”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void skb_frag_off_set (skb_frag_t *frag, unsigned int offset)”h]”j )�”}”(hŒ` associated with **frag**. Returns NULL if this frag has no associated net_iov.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjx½h]”hŒ Parameters”…”�”}”(hjz½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjv½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M~hjr½ubjß)�”}”(hhh]”jä)�”}”(hŒ(``const skb_frag_t *frag`` the fragment ”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hj—½h]”hŒconst skb_frag_t *frag”…”�”}”(hj™½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M{hj‘½ubj)�”}”(hhh]”jl)�”}”(hŒ the fragment”h]”hŒ the fragment”…”�”}”(hj°½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬½h´M{hj­½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬½h´M{hj޽ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjr½ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÒ½h]”hŒReturn”…”�”}”(hjÔ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjнubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M}hjr½ubjl)�”}”(hŒuthe :c:type:`struct net_iov ` associated with **frag**. Returns NULL if this frag has no associated net_iov.”h]”(hŒthe ”…”�”}”(hjè½h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct net_iov `”h]”jð)�”}”(hjò½h]”hŒstruct net_iov”…”�”}”(hjô½h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjð½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œnet_iov”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M}hjè½ubhŒ associated with ”…”�”}”(hjè½h²hh³Nh´Nubj›)�”}”(hŒ**frag**”h]”hŒfrag”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjè½ubhŒ6. Returns NULL if this frag has no associated net_iov.”…”�”}”(hjè½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾h´M}hjr½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_page (C function)”Œc.skb_frag_page”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4struct page * skb_frag_page (const skb_frag_t *frag)”h]”j )�”}”(hŒ2struct page *skb_frag_page(const skb_frag_t *frag)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjL¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH¾h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjH¾h²hh³jY¾h´M‰ubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjk¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jm¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ skb_frag_page”sbŒc.skb_frag_page”†”asbuh1hhjH¾h²hh³jY¾h´M‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjH¾h²hh³jY¾h´M‰ubj )�”}”(hj h]”hŒ*”…”�”}”(hjš¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjH¾h²hh³jY¾h´M‰ubj3)�”}”(hŒ skb_frag_page”h]”j9)�”}”(hj‰¾h]”hŒ skb_frag_page”…”�”}”(hj«¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§¾ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjH¾h²hh³jY¾h´M‰ubj¡ )�”}”(hŒ(const skb_frag_t *frag)”h]”j§ )�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjƾh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hjä¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjá¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j澌modname”NŒ classname”Njå jè )�”}”jë ]”j‡¾Œc.skb_frag_page”†”asbuh1hhj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¾ubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¾¾ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjH¾h²hh³jY¾h´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjD¾h²hh³jY¾h´M‰ubah}”(h]”j?¾ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jY¾h´M‰hjA¾h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1retrieve the page referred to by a paged fragment”h]”hŒ1retrieve the page referred to by a paged fragment”…”�”}”(hjG¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‰hjD¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjA¾h²hh³jY¾h´M‰ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_¿jŒj_¿j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ¹**Parameters** ``const skb_frag_t *frag`` the paged fragment **Return** the :c:type:`struct page ` associated with **frag**. Returns NULL if this frag has no associated page.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hji¿h]”hŒ Parameters”…”�”}”(hjk¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjg¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjc¿ubjß)�”}”(hhh]”jä)�”}”(hŒ.``const skb_frag_t *frag`` the paged fragment ”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hjˆ¿h]”hŒconst skb_frag_t *frag”…”�”}”(hjŠ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŠhj‚¿ubj)�”}”(hhh]”jl)�”}”(hŒthe paged fragment”h]”hŒthe paged fragment”…”�”}”(hj¡¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�¿h´MŠhjž¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�¿h´MŠhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjc¿ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÿh]”hŒReturn”…”�”}”(hjÅ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŒhjc¿ubjl)�”}”(hŒlthe :c:type:`struct page ` associated with **frag**. Returns NULL if this frag has no associated page.”h]”(hŒthe ”…”�”}”(hjÙ¿h²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct page `”h]”jð)�”}”(hjã¿h]”hŒ struct page”…”�”}”(hjå¿h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjá¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œpage”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŒhjÙ¿ubhŒ associated with ”…”�”}”(hjÙ¿h²hh³Nh´Nubj›)�”}”(hŒ**frag**”h]”hŒfrag”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙ¿ubhŒ3. Returns NULL if this frag has no associated page.”…”�”}”(hjÙ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀh´MŒhjc¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_netmem (C function)”Œc.skb_frag_netmem”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3netmem_ref skb_frag_netmem (const skb_frag_t *frag)”h]”j )�”}”(hŒ2netmem_ref skb_frag_netmem(const skb_frag_t *frag)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ netmem_ref”h]”hŒ netmem_ref”…”�”}”(hj@Àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jBÀŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_frag_netmem”sbŒc.skb_frag_netmem”†”asbuh1hhj9Àh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9Àh²hh³jaÀh´M˜ubj3)�”}”(hŒskb_frag_netmem”h]”j9)�”}”(hj^Àh]”hŒskb_frag_netmem”…”�”}”(hjtÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpÀubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj9Àh²hh³jaÀh´M˜ubj¡ )�”}”(hŒ(const skb_frag_t *frag)”h]”j§ )�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹Àubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹Àubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hj­Àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¯ÀŒmodname”NŒ classname”Njå jè )�”}”jë ]”j\ÀŒc.skb_frag_netmem”†”asbuh1hhj‹Àubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹Àubj )�”}”(hj h]”hŒ*”…”�”}”(hjÙÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‹Àubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hjæÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‡Àubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj9Àh²hh³jaÀh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj5Àh²hh³jaÀh´M˜ubah}”(h]”j0Àah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jaÀh´M˜hj2Àh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-retrieve the netmem referred to by a fragment”h]”hŒ-retrieve the netmem referred to by a fragment”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M˜hj Áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj2Àh²hh³jaÀh´M˜ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j(ÁjŒj(Áj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒy**Parameters** ``const skb_frag_t *frag`` the fragment **Return** the :c:type:`netmem_ref` associated with **frag**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj2Áh]”hŒ Parameters”…”�”}”(hj4Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mœhj,Áubjß)�”}”(hhh]”jä)�”}”(hŒ(``const skb_frag_t *frag`` the fragment ”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hjQÁh]”hŒconst skb_frag_t *frag”…”�”}”(hjSÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjOÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M™hjKÁubj)�”}”(hhh]”jl)�”}”(hŒ the fragment”h]”hŒ the fragment”…”�”}”(hjjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jfÁh´M™hjgÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jfÁh´M™hjHÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj,Áubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjŒÁh]”hŒReturn”…”�”}”(hjŽÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M›hj,Áubjl)�”}”(hŒ2the :c:type:`netmem_ref` associated with **frag**.”h]”(hŒthe ”…”�”}”(hj¢Áh²hh³Nh´Nubh)�”}”(hŒ:c:type:`netmem_ref`”h]”jð)�”}”(hj¬Áh]”hŒ netmem_ref”…”�”}”(hj®Áh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjªÁubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œ netmem_ref”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M›hj¢ÁubhŒ associated with ”…”�”}”(hj¢Áh²hh³Nh´Nubj›)�”}”(hŒ**frag**”h]”hŒfrag”…”�”}”(hjÎÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢ÁubhŒ.”…”�”}”(hj¢Áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉÁh´M›hj,Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_address (C function)”Œc.skb_frag_address”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void * skb_frag_address (const skb_frag_t *frag)”h]”j )�”}”(hŒ.void *skb_frag_address(const skb_frag_t *frag)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÂh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÂh²hh³jÂh´M¨ubj )�”}”(hj h]”hŒ*”…”�”}”(hj#Âh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÂh²hh³jÂh´M¨ubj3)�”}”(hŒskb_frag_address”h]”j9)�”}”(hŒskb_frag_address”h]”hŒskb_frag_address”…”�”}”(hj4Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0Âubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÂh²hh³jÂh´M¨ubj¡ )�”}”(hŒ(const skb_frag_t *frag)”h]”j§ )�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjPÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLÂubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hjnÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jpÂŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j6ÂsbŒc.skb_frag_address”†”asbuh1hhjLÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLÂubj )�”}”(hj h]”hŒ*”…”�”}”(hjœÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjLÂubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hj©Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjHÂubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÂh²hh³jÂh´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjþÁh²hh³jÂh´M¨ubah}”(h]”jùÁah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÂh´M¨hjûÁh²hubjg)�”}”(hhh]”jl)�”}”(hŒ:gets the address of the data contained in a paged fragment”h]”hŒ:gets the address of the data contained in a paged fragment”…”�”}”(hjÓÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¨hjÐÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjûÁh²hh³jÂh´M¨ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jëÂjŒjëÂj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``const skb_frag_t *frag`` the paged fragment buffer **Return** the address of the data within **frag**. The page must already be mapped.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjõÂh]”hŒ Parameters”…”�”}”(hj÷Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¬hjïÂubjß)�”}”(hhh]”jä)�”}”(hŒ5``const skb_frag_t *frag`` the paged fragment buffer ”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hjÃh]”hŒconst skb_frag_t *frag”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M©hjÃubj)�”}”(hhh]”jl)�”}”(hŒthe paged fragment buffer”h]”hŒthe paged fragment buffer”…”�”}”(hj-Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1•jkh³j)Ãh´M©hj*Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)Ãh´M©hj Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjïÂubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjOÃh]”hŒReturn”…”�”}”(hjQÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjMÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M«hjïÂubjl)�”}”(hŒIthe address of the data within **frag**. The page must already be mapped.”h]”(hŒthe address of the data within ”…”�”}”(hjeÃh²hh³Nh´Nubj›)�”}”(hŒ**frag**”h]”hŒfrag”…”�”}”(hjmÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjeÃubhŒ". The page must already be mapped.”…”�”}”(hjeÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M«hjïÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"skb_frag_address_safe (C function)”Œc.skb_frag_address_safe”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5void * skb_frag_address_safe (const skb_frag_t *frag)”h]”j )�”}”(hŒ3void *skb_frag_address_safe(const skb_frag_t *frag)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¦Ãh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢Ãh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢Ãh²hh³j´Ãh´M·ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÃÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢Ãh²hh³j´Ãh´M·ubj3)�”}”(hŒskb_frag_address_safe”h]”j9)�”}”(hŒskb_frag_address_safe”h]”hŒskb_frag_address_safe”…”�”}”(hjÔÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐÃubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¢Ãh²hh³j´Ãh´M·ubj¡ )�”}”(hŒ(const skb_frag_t *frag)”h]”j§ )�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjðÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìÃubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÄŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÖÃsbŒc.skb_frag_address_safe”†”asbuh1hhjìÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìÃubj )�”}”(hj h]”hŒ*”…”�”}”(hj<Äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjìÃubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hjIÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjèÃubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¢Ãh²hh³j´Ãh´M·ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjžÃh²hh³j´Ãh´M·ubah}”(h]”j™Ãah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j´Ãh´M·hj›Ãh²hubjg)�”}”(hhh]”jl)�”}”(hŒ:gets the address of the data contained in a paged fragment”h]”hŒ:gets the address of the data contained in a paged fragment”…”�”}”(hjsÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M·hjpÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj›Ãh²hh³j´Ãh´M·ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‹ÄjŒj‹Äj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ»**Parameters** ``const skb_frag_t *frag`` the paged fragment buffer **Return** the address of the data within **frag**. Checks that the page is mapped and returns ``NULL`` otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj•Äh]”hŒ Parameters”…”�”}”(hj—Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj“Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M»hj�Äubjß)�”}”(hhh]”jä)�”}”(hŒ5``const skb_frag_t *frag`` the paged fragment buffer ”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hj´Äh]”hŒconst skb_frag_t *frag”…”�”}”(hj¶Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¸hj®Äubj)�”}”(hhh]”jl)�”}”(hŒthe paged fragment buffer”h]”hŒthe paged fragment buffer”…”�”}”(hjÍÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉÄh´M¸hjÊÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉÄh´M¸hj«Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�Äubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjïÄh]”hŒReturn”…”�”}”(hjñÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjíÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mºhj�Äubjl)�”}”(hŒgthe address of the data within **frag**. Checks that the page is mapped and returns ``NULL`` otherwise.”h]”(hŒthe address of the data within ”…”�”}”(hjÅh²hh³Nh´Nubj›)�”}”(hŒ**frag**”h]”hŒfrag”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÅubhŒ-. Checks that the page is mapped and returns ”…”�”}”(hjÅh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅubhŒ otherwise.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mºhj�Äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_phys (C function)”Œc.skb_frag_phys”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2phys_addr_t skb_frag_phys (const skb_frag_t *frag)”h]”j )�”}”(hŒ1phys_addr_t skb_frag_phys(const skb_frag_t *frag)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ phys_addr_t”h]”hŒ phys_addr_t”…”�”}”(hj[Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjXÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]ÅŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ skb_frag_phys”sbŒc.skb_frag_phys”†”asbuh1hhjTÅh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTÅh²hh³j|Åh´MÍubj3)�”}”(hŒ skb_frag_phys”h]”j9)�”}”(hjyÅh]”hŒ skb_frag_phys”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Åubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjTÅh²hh³j|Åh´MÍubj¡ )�”}”(hŒ(const skb_frag_t *frag)”h]”j§ )�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjªÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦Åubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦Åubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hjÈÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÊÅŒmodname”NŒ classname”Njå jè )�”}”jë ]”jwÅŒc.skb_frag_phys”†”asbuh1hhj¦Åubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦Åubj )�”}”(hj h]”hŒ*”…”�”}”(hjôÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦Åubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢Åubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjTÅh²hh³j|Åh´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjPÅh²hh³j|Åh´MÍubah}”(h]”jKÅah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j|Åh´MÍhjMÅh²hubjg)�”}”(hhh]”jl)�”}”(hŒ9gets the physical address of the data in a paged fragment”h]”hŒ9gets the physical address of the data in a paged fragment”…”�”}”(hj+Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÍhj(Æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjMÅh²hh³j|Åh´MÍubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jCÆjŒjCÆj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ…**Parameters** ``const skb_frag_t *frag`` the paged fragment buffer **Return** the physical address of the data within **frag**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjMÆh]”hŒ Parameters”…”�”}”(hjOÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjKÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÑhjGÆubjß)�”}”(hhh]”jä)�”}”(hŒ5``const skb_frag_t *frag`` the paged fragment buffer ”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hjlÆh]”hŒconst skb_frag_t *frag”…”�”}”(hjnÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÎhjfÆubj)�”}”(hhh]”jl)�”}”(hŒthe paged fragment buffer”h]”hŒthe paged fragment buffer”…”�”}”(hj…Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Æh´MÎhj‚Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Æh´MÎhjcÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjGÆubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj§Æh]”hŒReturn”…”�”}”(hj©Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÐhjGÆubjl)�”}”(hŒ1the physical address of the data within **frag**.”h]”(hŒ(the physical address of the data within ”…”�”}”(hj½Æh²hh³Nh´Nubj›)�”}”(hŒ**frag**”h]”hŒfrag”…”�”}”(hjÅÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½ÆubhŒ.”…”�”}”(hj½Æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÐhjGÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_frag_page_copy (C function)”Œc.skb_frag_page_copy”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHvoid skb_frag_page_copy (skb_frag_t *fragto, const skb_frag_t *fragfrom)”h]”j )�”}”(hŒGvoid skb_frag_page_copy(skb_frag_t *fragto, const skb_frag_t *fragfrom)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjþÆh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjúÆh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjúÆh²hh³j Çh´MØubj3)�”}”(hŒskb_frag_page_copy”h]”j9)�”}”(hŒskb_frag_page_copy”h]”hŒskb_frag_page_copy”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjúÆh²hh³j Çh´MØubj¡ )�”}”(hŒ0(skb_frag_t *fragto, const skb_frag_t *fragfrom)”h]”(j§ )�”}”(hŒskb_frag_t *fragto”h]”(h)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hj>Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;Çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@ÇŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j!ÇsbŒc.skb_frag_page_copy”†”asbuh1hhj7Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7Çubj )�”}”(hj h]”hŒ*”…”�”}”(hjlÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj7Çubj9)�”}”(hŒfragto”h]”hŒfragto”…”�”}”(hjyÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj3Çubj§ )�”}”(hŒconst skb_frag_t *fragfrom”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj’Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽÇubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hj°Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­Çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j²ÇŒmodname”NŒ classname”Njå jè )�”}”jë ]”jZÇŒc.skb_frag_page_copy”†”asbuh1hhjŽÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽÇubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŽÇubj9)�”}”(hŒfragfrom”h]”hŒfragfrom”…”�”}”(hjéÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj3Çubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjúÆh²hh³j Çh´MØubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjöÆh²hh³j Çh´MØubah}”(h]”jñÆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j Çh´MØhjóÆh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1sets the page in a fragment from another fragment”h]”hŒ1sets the page in a fragment from another fragment”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MØhjÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjóÆh²hh³j Çh´MØubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j+ÈjŒj+Èj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒŠ**Parameters** ``skb_frag_t *fragto`` skb fragment where page is set ``const skb_frag_t *fragfrom`` skb fragment page is copied from”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj5Èh]”hŒ Parameters”…”�”}”(hj7Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÜhj/Èubjß)�”}”(hhh]”(jä)�”}”(hŒ6``skb_frag_t *fragto`` skb fragment where page is set ”h]”(jê)�”}”(hŒ``skb_frag_t *fragto``”h]”jð)�”}”(hjTÈh]”hŒskb_frag_t *fragto”…”�”}”(hjVÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjRÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÙhjNÈubj)�”}”(hhh]”jl)�”}”(hŒskb fragment where page is set”h]”hŒskb fragment where page is set”…”�”}”(hjmÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jiÈh´MÙhjjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jiÈh´MÙhjKÈubjä)�”}”(hŒ?``const skb_frag_t *fragfrom`` skb fragment page is copied from”h]”(jê)�”}”(hŒ``const skb_frag_t *fragfrom``”h]”jð)�”}”(hj�Èh]”hŒconst skb_frag_t *fragfrom”…”�”}”(hj�Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÛhj‡Èubj)�”}”(hhh]”jl)�”}”(hŒ skb fragment page is copied from”h]”hŒ skb fragment page is copied from”…”�”}”(hj¦Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÚhj£Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢Èh´MÛhjKÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/Èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_frag_dma_map (C function)”Œc.__skb_frag_dma_map”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒƒdma_addr_t __skb_frag_dma_map (struct device *dev, const skb_frag_t *frag, size_t offset, size_t size, enum dma_data_direction dir)”h]”j )�”}”(hŒ‚dma_addr_t __skb_frag_dma_map(struct device *dev, const skb_frag_t *frag, size_t offset, size_t size, enum dma_data_direction dir)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ dma_addr_t”h]”hŒ dma_addr_t”…”�”}”(hjêÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jìÈŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ__skb_frag_dma_map”sbŒc.__skb_frag_dma_map”†”asbuh1hhjãÈh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Måubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãÈh²hh³j Éh´Måubj3)�”}”(hŒ__skb_frag_dma_map”h]”j9)�”}”(hjÉh]”hŒ__skb_frag_dma_map”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjãÈh²hh³j Éh´Måubj¡ )�”}”(hŒe(struct device *dev, const skb_frag_t *frag, size_t offset, size_t size, enum dma_data_direction dir)”h]”(j§ )�”}”(hŒstruct device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj9Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5Éubh)�”}”(hhh]”j9)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjWÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jYÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.__skb_frag_dma_map”†”asbuh1hhj5Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5Éubj )�”}”(hj h]”hŒ*”…”�”}”(hjƒÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj5Éubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�Éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj1Éubj§ )�”}”(hŒconst skb_frag_t *frag”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj©Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥Éubh)�”}”(hhh]”j9)�”}”(hŒ skb_frag_t”h]”hŒ skb_frag_t”…”�”}”(hjÇÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÉÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.__skb_frag_dma_map”†”asbuh1hhj¥Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥Éubj )�”}”(hj h]”hŒ*”…”�”}”(hjóÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¥Éubj9)�”}”(hŒfrag”h]”hŒfrag”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj1Éubj§ )�”}”(hŒ size_t offset”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÊŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.__skb_frag_dma_map”†”asbuh1hhjÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjHÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj1Éubj§ )�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjdÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jfÊŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.__skb_frag_dma_map”†”asbuh1hhj]Êubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]Êubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj�Êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj1Éubj§ )�”}”(hŒenum dma_data_direction dir”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hj©Êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥Êubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥Êubh)�”}”(hhh]”j9)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjÇÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÉÊŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.__skb_frag_dma_map”†”asbuh1hhj¥Êubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåÊh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥Êubj9)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjóÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj1Éubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjãÈh²hh³j Éh´Måubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjßÈh²hh³j Éh´Måubah}”(h]”jÚÈah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j Éh´MåhjÜÈh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%maps a paged fragment via the DMA API”h]”hŒ%maps a paged fragment via the DMA API”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MåhjËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÜÈh²hh³j Éh´Måubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j5ËjŒj5Ëj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX¦**Parameters** ``struct device *dev`` the device to map the fragment to ``const skb_frag_t *frag`` the paged fragment to map ``size_t offset`` the offset within the fragment (starting at the fragment's own offset) ``size_t size`` the number of bytes to map ``enum dma_data_direction dir`` the direction of the mapping (``PCI_DMA_*``) **Description** Maps the page associated with **frag** to **device**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj?Ëh]”hŒ Parameters”…”�”}”(hjAËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj=Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Méhj9Ëubjß)�”}”(hhh]”(jä)�”}”(hŒ9``struct device *dev`` the device to map the fragment to ”h]”(jê)�”}”(hŒ``struct device *dev``”h]”jð)�”}”(hj^Ëh]”hŒstruct device *dev”…”�”}”(hj`Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MæhjXËubj)�”}”(hhh]”jl)�”}”(hŒ!the device to map the fragment to”h]”hŒ!the device to map the fragment to”…”�”}”(hjwËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsËh´MæhjtËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsËh´MæhjUËubjä)�”}”(hŒ5``const skb_frag_t *frag`` the paged fragment to map ”h]”(jê)�”}”(hŒ``const skb_frag_t *frag``”h]”jð)�”}”(hj—Ëh]”hŒconst skb_frag_t *frag”…”�”}”(hj™Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mçhj‘Ëubj)�”}”(hhh]”jl)�”}”(hŒthe paged fragment to map”h]”hŒthe paged fragment to map”…”�”}”(hj°Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬Ëh´Mçhj­Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬Ëh´MçhjUËubjä)�”}”(hŒY``size_t offset`` the offset within the fragment (starting at the fragment's own offset) ”h]”(jê)�”}”(hŒ``size_t offset``”h]”jð)�”}”(hjÐËh]”hŒ size_t offset”…”�”}”(hjÒËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎËubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MéhjÊËubj)�”}”(hhh]”jl)�”}”(hŒFthe offset within the fragment (starting at the fragment's own offset)”h]”hŒHthe offset within the fragment (starting at the fragment’s own offset)”…”�”}”(hjéËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MèhjæËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåËh´MéhjUËubjä)�”}”(hŒ+``size_t size`` the number of bytes to map ”h]”(jê)�”}”(hŒ``size_t size``”h]”jð)�”}”(hj Ìh]”hŒ size_t size”…”�”}”(hj Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MêhjÌubj)�”}”(hhh]”jl)�”}”(hŒthe number of bytes to map”h]”hŒthe number of bytes to map”…”�”}”(hj#Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌh´Mêhj Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌh´MêhjUËubjä)�”}”(hŒM``enum dma_data_direction dir`` the direction of the mapping (``PCI_DMA_*``) ”h]”(jê)�”}”(hŒ``enum dma_data_direction dir``”h]”jð)�”}”(hjCÌh]”hŒenum dma_data_direction dir”…”�”}”(hjEÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjAÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mëhj=Ìubj)�”}”(hhh]”jl)�”}”(hŒ,the direction of the mapping (``PCI_DMA_*``)”h]”(hŒthe direction of the mapping (”…”�”}”(hj\Ìh²hh³Nh´Nubjð)�”}”(hŒ ``PCI_DMA_*``”h]”hŒ PCI_DMA_*”…”�”}”(hjdÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\ÌubhŒ)”…”�”}”(hj\Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jXÌh´MëhjYÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jXÌh´MëhjUËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj9Ëubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�Ìh]”hŒ Description”…”�”}”(hj’Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŽÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Míhj9Ëubjl)�”}”(hŒ5Maps the page associated with **frag** to **device**.”h]”(hŒMaps the page associated with ”…”�”}”(hj¦Ìh²hh³Nh´Nubj›)�”}”(hŒ**frag**”h]”hŒfrag”…”�”}”(hj®Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦ÌubhŒ to ”…”�”}”(hj¦Ìh²hh³Nh´Nubj›)�”}”(hŒ **device**”h]”hŒdevice”…”�”}”(hjÀÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦ÌubhŒ.”…”�”}”(hj¦Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mìhj9Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_clone_writable (C function)”Œc.skb_clone_writable”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDint skb_clone_writable (const struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒCint skb_clone_writable(const struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjùÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõÌh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõÌh²hh³jÍh´M#ubj3)�”}”(hŒskb_clone_writable”h]”j9)�”}”(hŒskb_clone_writable”h]”hŒskb_clone_writable”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjõÌh²hh³jÍh´M#ubj¡ )�”}”(hŒ-(const struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj6Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2Íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2Íubj)�”}”(hjh]”hŒstruct”…”�”}”(hjQÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2Íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2Íubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjoÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jqÍŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÍsbŒc.skb_clone_writable”†”asbuh1hhj2Íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2Íubj )�”}”(hj h]”hŒ*”…”�”}”(hj�Íh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj2Íubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjªÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj.Íubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÃÍh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¿Íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ÍubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjßÍh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¿Íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿Íubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjûÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj.Íubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjõÌh²hh³jÍh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjñÌh²hh³jÍh´M#ubah}”(h]”jìÌah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÍh´M#hjîÌh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!is the header of a clone writable”h]”hŒ!is the header of a clone writable”…”�”}”(hj%Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M#hj"Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjîÌh²hh³jÍh´M#ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j=ÎjŒj=Îj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ÷**Parameters** ``const struct sk_buff *skb`` buffer to check ``unsigned int len`` length up to which to write **Description** Returns true if modifying the header part of the cloned buffer does not requires the data to be copied.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjGÎh]”hŒ Parameters”…”�”}”(hjIÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjEÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M'hjAÎubjß)�”}”(hhh]”(jä)�”}”(hŒ.``const struct sk_buff *skb`` buffer to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjfÎh]”hŒconst struct sk_buff *skb”…”�”}”(hjhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M$hj`Îubj)�”}”(hhh]”jl)�”}”(hŒbuffer to check”h]”hŒbuffer to check”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{Îh´M$hj|Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{Îh´M$hj]Îubjä)�”}”(hŒ1``unsigned int len`` length up to which to write ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjŸÎh]”hŒunsigned int len”…”�”}”(hj¡Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M%hj™Îubj)�”}”(hhh]”jl)�”}”(hŒlength up to which to write”h]”hŒlength up to which to write”…”�”}”(hj¸Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´Îh´M%hjµÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´Îh´M%hj]Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjAÎubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÚÎh]”hŒ Description”…”�”}”(hjÜÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M'hjAÎubjÒ)�”}”(hŒgReturns true if modifying the header part of the cloned buffer does not requires the data to be copied.”h]”jl)�”}”(hŒgReturns true if modifying the header part of the cloned buffer does not requires the data to be copied.”h]”hŒgReturns true if modifying the header part of the cloned buffer does not requires the data to be copied.”…”�”}”(hjôÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M&hjðÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÏh´M&hjAÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_cow (C function)”Œ c.skb_cow”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8int skb_cow (struct sk_buff *skb, unsigned int headroom)”h]”j )�”}”(hŒ7int skb_cow(struct sk_buff *skb, unsigned int headroom)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj)Ïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj%Ïh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MFubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Ïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%Ïh²hh³j7Ïh´MFubj3)�”}”(hŒskb_cow”h]”j9)�”}”(hŒskb_cow”h]”hŒskb_cow”…”�”}”(hjJÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFÏubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj%Ïh²hh³j7Ïh´MFubj¡ )�”}”(hŒ,(struct sk_buff *skb, unsigned int headroom)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjfÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjbÏubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj„Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j†ÏŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jLÏsbŒ c.skb_cow”†”asbuh1hhjbÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Ïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjbÏubj )�”}”(hj h]”hŒ*”…”�”}”(hj²Ïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjbÏubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¿Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj^Ïubj§ )�”}”(hŒunsigned int headroom”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjØÏh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÔÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔÏubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjôÏh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÔÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔÏubj9)�”}”(hŒheadroom”h]”hŒheadroom”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj^Ïubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj%Ïh²hh³j7Ïh´MFubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj!Ïh²hh³j7Ïh´MFubah}”(h]”jÏah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j7Ïh´MFhjÏh²hubjg)�”}”(hhh]”jl)�”}”(hŒ© header of skb when it is required”h]”hŒ© header of skb when it is required”…”�”}”(hj:Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MFhj7Ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÏh²hh³j7Ïh´MFubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jRÐjŒjRÐj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX¡**Parameters** ``struct sk_buff *skb`` buffer to cow ``unsigned int headroom`` needed headroom **Description** If the skb passed lacks sufficient headroom or its data part is shared, data is reallocated. If reallocation fails, an error is returned and original skb is not changed. The result is skb with writable area skb->head...skb->tail and at least **headroom** of space at head.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj\Ðh]”hŒ Parameters”…”�”}”(hj^Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MJhjVÐubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to cow ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj{Ðh]”hŒstruct sk_buff *skb”…”�”}”(hj}Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MGhjuÐubj)�”}”(hhh]”jl)�”}”(hŒ buffer to cow”h]”hŒ buffer to cow”…”�”}”(hj”Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Ðh´MGhj‘Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Ðh´MGhjrÐubjä)�”}”(hŒ*``unsigned int headroom`` needed headroom ”h]”(jê)�”}”(hŒ``unsigned int headroom``”h]”jð)�”}”(hj´Ðh]”hŒunsigned int headroom”…”�”}”(hj¶Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MHhj®Ðubj)�”}”(hhh]”jl)�”}”(hŒneeded headroom”h]”hŒneeded headroom”…”�”}”(hjÍÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉÐh´MHhjÊÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉÐh´MHhjrÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjVÐubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjïÐh]”hŒ Description”…”�”}”(hjñÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjíÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MJhjVÐubjÒ)�”}”(hXIf the skb passed lacks sufficient headroom or its data part is shared, data is reallocated. If reallocation fails, an error is returned and original skb is not changed. The result is skb with writable area skb->head...skb->tail and at least **headroom** of space at head.”h]”(jl)�”}”(hŒ©If the skb passed lacks sufficient headroom or its data part is shared, data is reallocated. If reallocation fails, an error is returned and original skb is not changed.”h]”hŒ©If the skb passed lacks sufficient headroom or its data part is shared, data is reallocated. If reallocation fails, an error is returned and original skb is not changed.”…”�”}”(hj Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MIhjÑubjl)�”}”(hŒfThe result is skb with writable area skb->head...skb->tail and at least **headroom** of space at head.”h]”(hŒHThe result is skb with writable area skb->head...skb->tail and at least ”…”�”}”(hjÑh²hh³Nh´Nubj›)�”}”(hŒ **headroom**”h]”hŒheadroom”…”�”}”(hj Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÑubhŒ of space at head.”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MMhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÑh´MIhjVÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_cow_head (C function)”Œc.skb_cow_head”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=int skb_cow_head (struct sk_buff *skb, unsigned int headroom)”h]”j )�”}”(hŒØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:Øubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjØh²hh³j+Øh´M’ubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjZØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjVØubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjxØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jzØŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j@ØsbŒc.skb_put_padto”†”asbuh1hhjVØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjVØubj )�”}”(hj h]”hŒ*”…”�”}”(hj¦Øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjVØubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj³Øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjRØubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÌØh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÈØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈØubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjèØh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÈØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈØubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjRØubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjØh²hh³j+Øh´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjØh²hh³j+Øh´M’ubah}”(h]”jØah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j+Øh´M’hjØh²hubjg)�”}”(hhh]”jl)�”}”(hŒ4increase size and pad an skbuff up to a minimal size”h]”hŒ4increase size and pad an skbuff up to a minimal size”…”�”}”(hj.Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M’hj+Ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjØh²hh³j+Øh´M’ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jFÙjŒjFÙj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXW**Parameters** ``struct sk_buff *skb`` buffer to pad ``unsigned int len`` minimal length **Description** Pads up a buffer to ensure the trailing bytes exist and are blanked. If the buffer already contains sufficient data it is untouched. Otherwise it is extended. Returns zero on success. The skb is freed on error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjPÙh]”hŒ Parameters”…”�”}”(hjRÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjNÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M–hjJÙubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to pad ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjoÙh]”hŒstruct sk_buff *skb”…”�”}”(hjqÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjmÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M“hjiÙubj)�”}”(hhh]”jl)�”}”(hŒ buffer to pad”h]”hŒ buffer to pad”…”�”}”(hjˆÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„Ùh´M“hj…Ùubah}”(h]”h •]”h"]”h$]”h&]”uh1jhjiÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„Ùh´M“hjfÙubjä)�”}”(hŒ$``unsigned int len`` minimal length ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj¨Ùh]”hŒunsigned int len”…”�”}”(hjªÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M”hj¢Ùubj)�”}”(hhh]”jl)�”}”(hŒminimal length”h]”hŒminimal length”…”�”}”(hjÁÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½Ùh´M”hj¾Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½Ùh´M”hjfÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJÙubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjãÙh]”hŒ Description”…”�”}”(hjåÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjáÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M–hjJÙubjÒ)�”}”(hŒÒPads up a buffer to ensure the trailing bytes exist and are blanked. If the buffer already contains sufficient data it is untouched. Otherwise it is extended. Returns zero on success. The skb is freed on error.”h]”jl)�”}”(hŒÒPads up a buffer to ensure the trailing bytes exist and are blanked. If the buffer already contains sufficient data it is untouched. Otherwise it is extended. Returns zero on success. The skb is freed on error.”h]”hŒÒPads up a buffer to ensure the trailing bytes exist and are blanked. If the buffer already contains sufficient data it is untouched. Otherwise it is extended. Returns zero on success. The skb is freed on error.”…”�”}”(hjýÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M•hjùÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j Úh´M•hjJÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_linearize (C function)”Œc.skb_linearize”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ'int skb_linearize (struct sk_buff *skb)”h]”j )�”}”(hŒ&int skb_linearize(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj2Úh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj.Úh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M½ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.Úh²hh³j@Úh´M½ubj3)�”}”(hŒ skb_linearize”h]”j9)�”}”(hŒ skb_linearize”h]”hŒ skb_linearize”…”�”}”(hjSÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOÚubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj.Úh²hh³j@Úh´M½ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjoÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkÚubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�ÚŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jUÚsbŒc.skb_linearize”†”asbuh1hhjkÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkÚubj )�”}”(hj h]”hŒ*”…”�”}”(hj»Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjkÚubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÈÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjgÚubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj.Úh²hh³j@Úh´M½ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj*Úh²hh³j@Úh´M½ubah}”(h]”j%Úah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j@Úh´M½hj'Úh²hubjg)�”}”(hhh]”jl)�”}”(hŒconvert paged skb to linear one”h]”hŒconvert paged skb to linear one”…”�”}”(hjòÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M½hjïÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj'Úh²hh³j@Úh´M½ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j ÛjŒj Ûj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒÂ**Parameters** ``struct sk_buff *skb`` buffer to linarize **Description** If there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÛh]”hŒ Parameters”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÁhjÛubjß)�”}”(hhh]”jä)�”}”(hŒ+``struct sk_buff *skb`` buffer to linarize ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj3Ûh]”hŒstruct sk_buff *skb”…”�”}”(hj5Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¾hj-Ûubj)�”}”(hhh]”jl)�”}”(hŒbuffer to linarize”h]”hŒbuffer to linarize”…”�”}”(hjLÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHÛh´M¾hjIÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHÛh´M¾hj*Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÛubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjnÛh]”hŒ Description”…”�”}”(hjpÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjlÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÀhjÛubjÒ)�”}”(hŒiIf there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”h]”jl)�”}”(hŒiIf there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”h]”hŒiIf there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”…”�”}”(hjˆÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¿hj„Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j–Ûh´M¿hjÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ skb_has_shared_frag (C function)”Œc.skb_has_shared_frag”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4bool skb_has_shared_frag (const struct sk_buff *skb)”h]”j )�”}”(hŒ3bool skb_has_shared_frag(const struct sk_buff *skb)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj½Ûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹Ûh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹Ûh²hh³jÊÛh´MÉubj3)�”}”(hŒskb_has_shared_frag”h]”j9)�”}”(hŒskb_has_shared_frag”h]”hŒskb_has_shared_frag”…”�”}”(hjÝÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙÛubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¹Ûh²hh³jÊÛh´MÉubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjùÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõÛubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Üh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõÛubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj2Üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j4ÜŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jßÛsbŒc.skb_has_shared_frag”†”asbuh1hhjõÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõÛubj )�”}”(hj h]”hŒ*”…”�”}”(hj`Üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõÛubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjmÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjñÛubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¹Ûh²hh³jÊÛh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjµÛh²hh³jÊÛh´MÉubah}”(h]”j°Ûah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÊÛh´MÉhj²Ûh²hubjg)�”}”(hhh]”jl)�”}”(hŒcan any frag be overwritten”h]”hŒcan any frag be overwritten”…”�”}”(hj—Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÉhj”Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj²Ûh²hh³jÊÛh´MÉubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¯ÜjŒj¯Üj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ¼**Parameters** ``const struct sk_buff *skb`` buffer to test **Return** true if the skb has at least one frag that might be modified by an external entity (as in vmsplice()/sendfile())”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¹Üh]”hŒ Parameters”…”�”}”(hj»Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÍhj³Üubjß)�”}”(hhh]”jä)�”}”(hŒ-``const struct sk_buff *skb`` buffer to test ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjØÜh]”hŒconst struct sk_buff *skb”…”�”}”(hjÚÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÊhjÒÜubj)�”}”(hhh]”jl)�”}”(hŒbuffer to test”h]”hŒbuffer to test”…”�”}”(hjñÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jíÜh´MÊhjîÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jíÜh´MÊhjÏÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³Üubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÝh]”hŒReturn”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÌhj³Üubjl)�”}”(hŒptrue if the skb has at least one frag that might be modified by an external entity (as in vmsplice()/sendfile())”h]”hŒptrue if the skb has at least one frag that might be modified by an external entity (as in vmsplice()/sendfile())”…”�”}”(hj)Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÌhj³Üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_linearize_cow (C function)”Œc.skb_linearize_cow”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+int skb_linearize_cow (struct sk_buff *skb)”h]”j )�”}”(hŒ*int skb_linearize_cow(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjXÝh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjTÝh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTÝh²hh³jfÝh´MÖubj3)�”}”(hŒskb_linearize_cow”h]”j9)�”}”(hŒskb_linearize_cow”h]”hŒskb_linearize_cow”…”�”}”(hjyÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuÝubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjTÝh²hh³jfÝh´MÖubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj•Ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘Ýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘Ýubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj³Ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°Ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jµÝŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j{ÝsbŒc.skb_linearize_cow”†”asbuh1hhj‘Ýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘Ýubj )�”}”(hj h]”hŒ*”…”�”}”(hjáÝh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‘Ýubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjîÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�Ýubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjTÝh²hh³jfÝh´MÖubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjPÝh²hh³jfÝh´MÖubah}”(h]”jKÝah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jfÝh´MÖhjMÝh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$make sure skb is linear and writable”h]”hŒ$make sure skb is linear and writable”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÖhjÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjMÝh²hh³jfÝh´MÖubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j0ÞjŒj0Þj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒÁ**Parameters** ``struct sk_buff *skb`` buffer to process **Description** If there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj:Þh]”hŒ Parameters”…”�”}”(hj<Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj8Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÚhj4Þubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct sk_buff *skb`` buffer to process ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjYÞh]”hŒstruct sk_buff *skb”…”�”}”(hj[Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjWÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M×hjSÞubj)�”}”(hhh]”jl)�”}”(hŒbuffer to process”h]”hŒbuffer to process”…”�”}”(hjrÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jnÞh´M×hjoÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jnÞh´M×hjPÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj4Þubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj”Þh]”hŒ Description”…”�”}”(hj–Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÙhj4ÞubjÒ)�”}”(hŒiIf there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”h]”jl)�”}”(hŒiIf there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”h]”hŒiIf there is no free memory -ENOMEM is returned, otherwise zero is returned and the old skb data released.”…”�”}”(hj®Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MØhjªÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j¼Þh´MØhj4Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_postpull_rcsum (C function)”Œc.skb_postpull_rcsum”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRvoid skb_postpull_rcsum (struct sk_buff *skb, const void *start, unsigned int len)”h]”j )�”}”(hŒQvoid skb_postpull_rcsum(struct sk_buff *skb, const void *start, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjãÞh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjßÞh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjßÞh²hh³jñÞh´Mïubj3)�”}”(hŒskb_postpull_rcsum”h]”j9)�”}”(hŒskb_postpull_rcsum”h]”hŒskb_postpull_rcsum”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjßÞh²hh³jñÞh´Mïubj¡ )�”}”(hŒ:(struct sk_buff *skb, const void *start, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-ßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjßubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj>ßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;ßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@ߌmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jßsbŒc.skb_postpull_rcsum”†”asbuh1hhjßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjßubj )�”}”(hj h]”hŒ*”…”�”}”(hjlßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjßubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjyßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjßubj§ )�”}”(hŒconst void *start”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj’ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽßubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj­ßh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»ßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽßubj )�”}”(hj h]”hŒ*”…”�”}”(hjÉßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŽßubj9)�”}”(hŒstart”h]”hŒstart”…”�”}”(hjÖßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjßubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjïßh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjëßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëßubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjëßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëßubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj'àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjßubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjßÞh²hh³jñÞh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÛÞh²hh³jñÞh´Mïubah}”(h]”jÖÞah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jñÞh´MïhjØÞh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+update checksum for received skb after pull”h]”hŒ+update checksum for received skb after pull”…”�”}”(hjQàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MïhjNàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjØÞh²hh³jñÞh´Mïubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jiàjŒjiàj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXr**Parameters** ``struct sk_buff *skb`` buffer to update ``const void *start`` start of data before pull ``unsigned int len`` length of data pulled **Description** After doing a pull on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum, or set ip_summed to CHECKSUM_NONE so that it can be recomputed from scratch.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjsàh]”hŒ Parameters”…”�”}”(hjuàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjqàubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Móhjmàubjß)�”}”(hhh]”(jä)�”}”(hŒ)``struct sk_buff *skb`` buffer to update ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj’àh]”hŒstruct sk_buff *skb”…”�”}”(hj”àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MðhjŒàubj)�”}”(hhh]”jl)�”}”(hŒbuffer to update”h]”hŒbuffer to update”…”�”}”(hj«àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§àh´Mðhj¨àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§àh´Mðhj‰àubjä)�”}”(hŒ0``const void *start`` start of data before pull ”h]”(jê)�”}”(hŒ``const void *start``”h]”jð)�”}”(hjËàh]”hŒconst void *start”…”�”}”(hjÍàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉàubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MñhjÅàubj)�”}”(hhh]”jl)�”}”(hŒstart of data before pull”h]”hŒstart of data before pull”…”�”}”(hjäàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jààh´Mñhjáàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jààh´Mñhj‰àubjä)�”}”(hŒ+``unsigned int len`` length of data pulled ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjáh]”hŒunsigned int len”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mòhjþàubj)�”}”(hhh]”jl)�”}”(hŒlength of data pulled”h]”hŒlength of data pulled”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jáh´Mòhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáh´Mòhj‰àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjmàubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj?áh]”hŒ Description”…”�”}”(hjAáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj=áubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MôhjmàubjÒ)�”}”(hŒµAfter doing a pull on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum, or set ip_summed to CHECKSUM_NONE so that it can be recomputed from scratch.”h]”jl)�”}”(hŒµAfter doing a pull on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum, or set ip_summed to CHECKSUM_NONE so that it can be recomputed from scratch.”h]”hŒµAfter doing a pull on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum, or set ip_summed to CHECKSUM_NONE so that it can be recomputed from scratch.”…”�”}”(hjYáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MóhjUáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jgáh´Móhjmàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_postpush_rcsum (C function)”Œc.skb_postpush_rcsum”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRvoid skb_postpush_rcsum (struct sk_buff *skb, const void *start, unsigned int len)”h]”j )�”}”(hŒQvoid skb_postpush_rcsum(struct sk_buff *skb, const void *start, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŽáh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŠáh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠáh²hh³jœáh´M ubj3)�”}”(hŒskb_postpush_rcsum”h]”j9)�”}”(hŒskb_postpush_rcsum”h]”hŒskb_postpush_rcsum”…”�”}”(hj¯áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«áubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŠáh²hh³jœáh´M ubj¡ )�”}”(hŒ:(struct sk_buff *skb, const void *start, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjËáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇáubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØáh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇáubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjéáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jëáŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j±ásbŒc.skb_postpush_rcsum”†”asbuh1hhjÇáubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇáubj )�”}”(hj h]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÇáubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj$âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃáubj§ )�”}”(hŒconst void *start”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj=âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9âubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjXâh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj9âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9âubj )�”}”(hj h]”hŒ*”…”�”}”(hjtâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9âubj9)�”}”(hŒstart”h]”hŒstart”…”�”}”(hj�âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃáubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjšâh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–âubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¶âh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–âubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÒâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃáubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŠáh²hh³jœáh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj†áh²hh³jœáh´M ubah}”(h]”j�áah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jœáh´M hjƒáh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+update checksum for received skb after push”h]”hŒ+update checksum for received skb after push”…”�”}”(hjüâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjùâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjƒáh²hh³jœáh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jãjŒjãj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` buffer to update ``const void *start`` start of data after push ``unsigned int len`` length of data pushed **Description** After doing a push on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjãh]”hŒ Parameters”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjãubjß)�”}”(hhh]”(jä)�”}”(hŒ)``struct sk_buff *skb`` buffer to update ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj=ãh]”hŒstruct sk_buff *skb”…”�”}”(hj?ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj7ãubj)�”}”(hhh]”jl)�”}”(hŒbuffer to update”h]”hŒbuffer to update”…”�”}”(hjVãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jRãh´MhjSãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jRãh´Mhj4ãubjä)�”}”(hŒ/``const void *start`` start of data after push ”h]”(jê)�”}”(hŒ``const void *start``”h]”jð)�”}”(hjvãh]”hŒconst void *start”…”�”}”(hjxãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjtãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjpãubj)�”}”(hhh]”jl)�”}”(hŒstart of data after push”h]”hŒstart of data after push”…”�”}”(hj�ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹ãh´MhjŒãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹ãh´Mhj4ãubjä)�”}”(hŒ+``unsigned int len`` length of data pushed ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj¯ãh]”hŒunsigned int len”…”�”}”(hj±ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj©ãubj)�”}”(hhh]”jl)�”}”(hŒlength of data pushed”h]”hŒlength of data pushed”…”�”}”(hjÈãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄãh´MhjÅãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄãh´Mhj4ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjãubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjêãh]”hŒ Description”…”�”}”(hjìãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjèãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjãubjÒ)�”}”(hŒhAfter doing a push on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum.”h]”jl)�”}”(hŒhAfter doing a push on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum.”h]”hŒhAfter doing a push on a received packet, you need to call this to update the CHECKSUM_COMPLETE checksum.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jäh´Mhjãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_push_rcsum (C function)”Œc.skb_push_rcsum”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void * skb_push_rcsum (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ;void *skb_push_rcsum(struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9äh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5äh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5äh²hh³jGäh´Mubj )�”}”(hj h]”hŒ*”…”�”}”(hjVäh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj5äh²hh³jGäh´Mubj3)�”}”(hŒskb_push_rcsum”h]”j9)�”}”(hŒskb_push_rcsum”h]”hŒskb_push_rcsum”…”�”}”(hjgäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjcäubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj5äh²hh³jGäh´Mubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjƒäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj¡äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j£äŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jiäsbŒc.skb_push_rcsum”†”asbuh1hhjäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäubj )�”}”(hj h]”hŒ*”…”�”}”(hjÏäh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjäubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÜäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{äubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjõäh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjñäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñäubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjñäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñäubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj-åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{äubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj5äh²hh³jGäh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj1äh²hh³jGäh´Mubah}”(h]”j,äah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jGäh´Mhj.äh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$push skb and update receive checksum”h]”hŒ$push skb and update receive checksum”…”�”}”(hjWåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjTåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj.äh²hh³jGäh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹joåjŒjoåj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX°**Parameters** ``struct sk_buff *skb`` buffer to update ``unsigned int len`` length of data pulled **Description** This function performs an skb_push on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_push unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjyåh]”hŒ Parameters”…”�”}”(hj{åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjwåubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M"hjsåubjß)�”}”(hhh]”(jä)�”}”(hŒ)``struct sk_buff *skb`` buffer to update ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj˜åh]”hŒstruct sk_buff *skb”…”�”}”(hjšåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj’åubj)�”}”(hhh]”jl)�”}”(hŒbuffer to update”h]”hŒbuffer to update”…”�”}”(hj±åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­åh´Mhj®åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­åh´Mhj�åubjä)�”}”(hŒ+``unsigned int len`` length of data pulled ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjÑåh]”hŒunsigned int len”…”�”}”(hjÓåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏåubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjËåubj)�”}”(hhh]”jl)�”}”(hŒlength of data pulled”h]”hŒlength of data pulled”…”�”}”(hjêåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæåh´M hjçåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæåh´M hj�åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjsåubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj æh]”hŒ Description”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj æubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M"hjsåubjÒ)�”}”(hXThis function performs an skb_push on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_push unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”h]”jl)�”}”(hXThis function performs an skb_push on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_push unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”h]”hXThis function performs an skb_push on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_push unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”…”�”}”(hj&æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M!hj"æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j4æh´M!hjsåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpskb_trim_rcsum (C function)”Œc.pskb_trim_rcsum”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;int pskb_trim_rcsum (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ:int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj[æh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjWæh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWæh²hh³jiæh´M1ubj3)�”}”(hŒpskb_trim_rcsum”h]”j9)�”}”(hŒpskb_trim_rcsum”h]”hŒpskb_trim_rcsum”…”�”}”(hj|æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxæubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjWæh²hh³jiæh´M1ubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj˜æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”æubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj¶æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸æŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j~æsbŒc.pskb_trim_rcsum”†”asbuh1hhj”æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”æubj )�”}”(hj h]”hŒ*”…”�”}”(hjäæh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj”æubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjñæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�æubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj&çh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjBçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�æubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjWæh²hh³jiæh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjSæh²hh³jiæh´M1ubah}”(h]”jNæah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jiæh´M1hjPæh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%trim received skb and update checksum”h]”hŒ%trim received skb and update checksum”…”�”}”(hjlçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M1hjiçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjPæh²hh³jiæh´M1ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j„çjŒj„çj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` buffer to trim ``unsigned int len`` new length **Description** This is exactly the same as pskb_trim except that it ensures the checksum of received packets are still valid after the operation. It can change skb pointers.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŽçh]”hŒ Parameters”…”�”}”(hj�çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒçubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5hjˆçubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct sk_buff *skb`` buffer to trim ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj­çh]”hŒstruct sk_buff *skb”…”�”}”(hj¯çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M2hj§çubj)�”}”(hhh]”jl)�”}”(hŒbuffer to trim”h]”hŒbuffer to trim”…”�”}”(hjÆçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂçh´M2hjÃçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂçh´M2hj¤çubjä)�”}”(hŒ ``unsigned int len`` new length ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjæçh]”hŒunsigned int len”…”�”}”(hjèçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjäçubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M3hjàçubj)�”}”(hhh]”jl)�”}”(hŒ new length”h]”hŒ new length”…”�”}”(hjÿçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jûçh´M3hjüçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jûçh´M3hj¤çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆçubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj!èh]”hŒ Description”…”�”}”(hj#èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M5hjˆçubjÒ)�”}”(hŒžThis is exactly the same as pskb_trim except that it ensures the checksum of received packets are still valid after the operation. It can change skb pointers.”h]”jl)�”}”(hŒžThis is exactly the same as pskb_trim except that it ensures the checksum of received packets are still valid after the operation. It can change skb pointers.”h]”hŒžThis is exactly the same as pskb_trim except that it ensures the checksum of received packets are still valid after the operation. It can change skb pointers.”…”�”}”(hj;èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M4hj7èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jIèh´M4hjˆçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ skb_needs_linearize (C function)”Œc.skb_needs_linearize”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒJbool skb_needs_linearize (struct sk_buff *skb, netdev_features_t features)”h]”j )�”}”(hŒIbool skb_needs_linearize(struct sk_buff *skb, netdev_features_t features)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjpèh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjlèh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlèh²hh³j}èh´Mubj3)�”}”(hŒskb_needs_linearize”h]”j9)�”}”(hŒskb_needs_linearize”h]”hŒskb_needs_linearize”…”�”}”(hj�èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒèubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjlèh²hh³j}èh´Mubj¡ )�”}”(hŒ1(struct sk_buff *skb, netdev_features_t features)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¬èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨èubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÊèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÌèŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j’èsbŒc.skb_needs_linearize”†”asbuh1hhj¨èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨èubj )�”}”(hj h]”hŒ*”…”�”}”(hjøèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¨èubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¤èubj§ )�”}”(hŒnetdev_features_t features”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdev_features_t”h]”hŒnetdev_features_t”…”�”}”(hj!éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j#éŒmodname”NŒ classname”Njå jè )�”}”jë ]”jæèŒc.skb_needs_linearize”†”asbuh1hhjéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéubj9)�”}”(hŒfeatures”h]”hŒfeatures”…”�”}”(hjMéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¤èubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjlèh²hh³j}èh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjhèh²hh³j}èh´Mubah}”(h]”jcèah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j}èh´Mhjeèh²hubjg)�”}”(hhh]”jl)�”}”(hŒQcheck if we need to linearize a given skb depending on the given device features.”h]”hŒQcheck if we need to linearize a given skb depending on the given device features.”…”�”}”(hjwéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjtéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjeèh²hh³j}èh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�éjŒj�éj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX)**Parameters** ``struct sk_buff *skb`` socket buffer to check ``netdev_features_t features`` net device features **Description** Returns true if either: 1. skb has frag_list and the device doesn't support FRAGLIST, or 2. skb is fragmented and the device does not support SG.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj™éh]”hŒ Parameters”…”�”}”(hj›éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—éubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj“éubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct sk_buff *skb`` socket buffer to check ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj¸éh]”hŒstruct sk_buff *skb”…”�”}”(hjºéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj²éubj)�”}”(hhh]”jl)�”}”(hŒsocket buffer to check”h]”hŒsocket buffer to check”…”�”}”(hjÑéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍéh´MhjÎéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍéh´Mhj¯éubjä)�”}”(hŒ3``netdev_features_t features`` net device features ”h]”(jê)�”}”(hŒ``netdev_features_t features``”h]”jð)�”}”(hjñéh]”hŒnetdev_features_t features”…”�”}”(hjóéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïéubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjëéubj)�”}”(hhh]”jl)�”}”(hŒnet device features”h]”hŒnet device features”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêh´Mhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêh´Mhj¯éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“éubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj,êh]”hŒ Description”…”�”}”(hj.êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*êubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hj“éubjÒ)�”}”(hŒ‘Returns true if either: 1. skb has frag_list and the device doesn't support FRAGLIST, or 2. skb is fragmented and the device does not support SG.”h]”jl)�”}”(hŒ‘Returns true if either: 1. skb has frag_list and the device doesn't support FRAGLIST, or 2. skb is fragmented and the device does not support SG.”h]”hŒ“Returns true if either: 1. skb has frag_list and the device doesn’t support FRAGLIST, or 2. skb is fragmented and the device does not support SG.”…”�”}”(hjFêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjBêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jTêh´Mhj“éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_get_timestamp (C function)”Œc.skb_get_timestamp”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVvoid skb_get_timestamp (const struct sk_buff *skb, struct __kernel_old_timeval *stamp)”h]”j )�”}”(hŒUvoid skb_get_timestamp(const struct sk_buff *skb, struct __kernel_old_timeval *stamp)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj{êh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjwêh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwêh²hh³j‰êh´MQubj3)�”}”(hŒskb_get_timestamp”h]”j9)�”}”(hŒskb_get_timestamp”h]”hŒskb_get_timestamp”…”�”}”(hjœêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜êubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjwêh²hh³j‰êh´MQubj¡ )�”}”(hŒ?(const struct sk_buff *skb, struct __kernel_old_timeval *stamp)”h]”(j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¸êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´êubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´êubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÓêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´êubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´êubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjñêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jóêŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jžêsbŒc.skb_get_timestamp”†”asbuh1hhj´êubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´êubj )�”}”(hj h]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj´êubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj,ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj°êubj§ )�”}”(hŒ"struct __kernel_old_timeval *stamp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjEëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAëubh)�”}”(hhh]”j9)�”}”(hŒ__kernel_old_timeval”h]”hŒ__kernel_old_timeval”…”�”}”(hjcëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jeëŒmodname”NŒ classname”Njå jè )�”}”jë ]”j ëŒc.skb_get_timestamp”†”asbuh1hhjAëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAëubj )�”}”(hj h]”hŒ*”…”�”}”(hj�ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjAëubj9)�”}”(hŒstamp”h]”hŒstamp”…”�”}”(hjœëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjAëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj°êubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjwêh²hh³j‰êh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjsêh²hh³j‰êh´MQubah}”(h]”jnêah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‰êh´MQhjpêh²hubjg)�”}”(hhh]”jl)�”}”(hŒget timestamp from a skb”h]”hŒget timestamp from a skb”…”�”}”(hjÆëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MQhjÃëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjpêh²hh³j‰êh´MQubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÞëjŒjÞëj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX]**Parameters** ``const struct sk_buff *skb`` skb to get stamp from ``struct __kernel_old_timeval *stamp`` pointer to struct __kernel_old_timeval to store stamp in **Description** Timestamps are stored in the skb as offsets to a base timestamp. This function converts the offset back to a struct timeval and stores it in stamp.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjèëh]”hŒ Parameters”…”�”}”(hjêëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MUhjâëubjß)�”}”(hhh]”(jä)�”}”(hŒ4``const struct sk_buff *skb`` skb to get stamp from ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjìh]”hŒconst struct sk_buff *skb”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MRhjìubj)�”}”(hhh]”jl)�”}”(hŒskb to get stamp from”h]”hŒskb to get stamp from”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jìh´MRhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jìh´MRhjþëubjä)�”}”(hŒ```struct __kernel_old_timeval *stamp`` pointer to struct __kernel_old_timeval to store stamp in ”h]”(jê)�”}”(hŒ&``struct __kernel_old_timeval *stamp``”h]”jð)�”}”(hj@ìh]”hŒ"struct __kernel_old_timeval *stamp”…”�”}”(hjBìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MShj:ìubj)�”}”(hhh]”jl)�”}”(hŒ8pointer to struct __kernel_old_timeval to store stamp in”h]”hŒ8pointer to struct __kernel_old_timeval to store stamp in”…”�”}”(hjYìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jUìh´MShjVìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jUìh´MShjþëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjâëubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj{ìh]”hŒ Description”…”�”}”(hj}ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjyìubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MUhjâëubjÒ)�”}”(hŒ“Timestamps are stored in the skb as offsets to a base timestamp. This function converts the offset back to a struct timeval and stores it in stamp.”h]”jl)�”}”(hŒ“Timestamps are stored in the skb as offsets to a base timestamp. This function converts the offset back to a struct timeval and stores it in stamp.”h]”hŒ“Timestamps are stored in the skb as offsets to a base timestamp. This function converts the offset back to a struct timeval and stores it in stamp.”…”�”}”(hj•ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MThj‘ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j£ìh´MThjâëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_data_move (C function)”Œc.skb_data_move”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMvoid skb_data_move (struct sk_buff *skb, const int len, const unsigned int n)”h]”j )�”}”(hŒLvoid skb_data_move(struct sk_buff *skb, const int len, const unsigned int n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÊìh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÆìh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆìh²hh³jØìh´Mubj3)�”}”(hŒ skb_data_move”h]”j9)�”}”(hŒ skb_data_move”h]”hŒ skb_data_move”…”�”}”(hjëìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçìubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÆìh²hh³jØìh´Mubj¡ )�”}”(hŒ:(struct sk_buff *skb, const int len, const unsigned int n)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjíubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj%íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j'íŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jíìsbŒc.skb_data_move”†”asbuh1hhjíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjíubj )�”}”(hj h]”hŒ*”…”�”}”(hjSíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjíubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj`íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÿìubj§ )�”}”(hŒ const int len”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjyíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuíubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj”íh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjuíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuíubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj°íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÿìubj§ )�”}”(hŒconst unsigned int n”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÉíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅíubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjäíh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÅíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅíubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÅíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅíubj9)�”}”(hjDh]”hŒn”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÿìubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÆìh²hh³jØìh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÂìh²hh³jØìh´Mubah}”(h]”j½ìah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jØìh´Mhj¿ìh²hubjg)�”}”(hhh]”jl)�”}”(hŒ=Move packet data and metadata after skb_push() or skb_pull().”h]”hŒ=Move packet data and metadata after skb_push() or skb_pull().”…”�”}”(hjEîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MhjBîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¿ìh²hh³jØìh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j]îjŒj]îj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX¶**Parameters** ``struct sk_buff *skb`` packet to operate on ``const int len`` number of bytes pushed or pulled from :c:type:`sk_buff->data ` ``const unsigned int n`` number of bytes to memmove() from pre-push/pull :c:type:`sk_buff->data ` **Description** Moves **n** bytes of packet data, can be zero, and all bytes of skb metadata. Assumes metadata is located immediately before :c:type:`sk_buff->data ` prior to the push/pull, and that sufficient headroom exists to hold it after an skb_push(). Otherwise, metadata is cleared and a one-time warning is issued. Prefer skb_postpull_data_move() or skb_postpush_data_move() to calling this helper directly.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjgîh]”hŒ Parameters”…”�”}”(hjiîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjeîubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjaîubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` packet to operate on ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj†îh]”hŒstruct sk_buff *skb”…”�”}”(hjˆîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj€îubj)�”}”(hhh]”jl)�”}”(hŒpacket to operate on”h]”hŒpacket to operate on”…”�”}”(hjŸîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›îh´Mhjœîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›îh´Mhj}îubjä)�”}”(hŒZ``const int len`` number of bytes pushed or pulled from :c:type:`sk_buff->data ` ”h]”(jê)�”}”(hŒ``const int len``”h]”jð)�”}”(hj¿îh]”hŒ const int len”…”�”}”(hjÁîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhj¹îubj)�”}”(hhh]”jl)�”}”(hŒGnumber of bytes pushed or pulled from :c:type:`sk_buff->data `”h]”(hŒ&number of bytes pushed or pulled from ”…”�”}”(hjØîh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hjâîh]”hŒ sk_buff->data”…”�”}”(hjäîh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjàîubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³jÔîh´MhjØîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÔîh´MhjÕîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔîh´Mhj}îubjä)�”}”(hŒk``const unsigned int n`` number of bytes to memmove() from pre-push/pull :c:type:`sk_buff->data ` ”h]”(jê)�”}”(hŒ``const unsigned int n``”h]”jð)�”}”(hjïh]”hŒconst unsigned int n”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjïubj)�”}”(hhh]”jl)�”}”(hŒQnumber of bytes to memmove() from pre-push/pull :c:type:`sk_buff->data `”h]”(hŒ0number of bytes to memmove() from pre-push/pull ”…”�”}”(hj0ïh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hj:ïh]”hŒ sk_buff->data”…”�”}”(hj<ïh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj8ïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³j,ïh´Mhj0ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,ïh´Mhj-ïuba•6h}”(h]”h ]”h"]”h$]”h&]”uh1jhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,ïh´Mhj}îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjaîubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjqïh]”hŒ Description”…”�”}”(hjsïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjaîubjl)�”}”(hŒMMoves **n** bytes of packet data, can be zero, and all bytes of skb metadata.”h]”(hŒMoves ”…”�”}”(hj‡ïh²hh³Nh´Nubj›)�”}”(hŒ**n**”h]”hŒn”…”�”}”(hj�ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡ïubhŒB bytes of packet data, can be zero, and all bytes of skb metadata.”…”�”}”(hj‡ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjaîubjl)�”}”(hŒíAssumes metadata is located immediately before :c:type:`sk_buff->data ` prior to the push/pull, and that sufficient headroom exists to hold it after an skb_push(). Otherwise, metadata is cleared and a one-time warning is issued.”h]”(hŒ/Assumes metadata is located immediately before ”…”�”}”(hj¨ïh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hj²ïh]”hŒ sk_buff->data”…”�”}”(hj´ïh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj°ïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M!hj¨ïubhŒ� prior to the push/pull, and that sufficient headroom exists to hold it after an skb_push(). Otherwise, metadata is cleared and a one-time warning is issued.”…”�”}”(hj¨ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏïh´M!hjaîubjl)�”}”(hŒ\Prefer skb_postpull_data_move() or skb_postpush_data_move() to calling this helper directly.”h]”hŒ\Prefer skb_postpull_data_move() or skb_postpush_data_move() to calling this helper directly.”…”�”}”(hjÚïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M%hjaîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#skb_postpull_data_move (C function)”Œc.skb_postpull_data_move”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ_void skb_postpull_data_move (struct sk_buff *skb, const unsigned int len, const unsigned int n)”h]”j )�”}”(hŒ^void skb_postpull_data_move(struct sk_buff *skb, const unsigned int len, const unsigned int n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjðh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MFubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðh²hh³jðh´MFubj3)�”}”(hŒskb_postpull_data_move”h]”j9)�”}”(hŒskb_postpull_data_move”h]”hŒskb_postpull_data_move”…”�”}”(hj*ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&ðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjðh²hh³jðh´MFubj¡ )�”}”(hŒC(struct sk_buff *skb, const unsigned int len, const unsigned int n)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjFðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBðubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjdðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jfðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j,ðsbŒc.skb_postpull_data_move”†”asbuh1hhjBðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBðubj )�”}”(hj h]”hŒ*”…”�”}”(hj’ðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjBðubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjŸðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ðubj§ )�”}”(hŒconst unsigned int len”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¸ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ðubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÓðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj´ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ðubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjïðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj´ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ðubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ðubj§ )�”}”(hŒconst unsigned int n”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj$ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ñubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj?ñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ñubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj[ñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ñubj9)�”}”(hjDh]”hŒn”…”�”}”(hjwñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjðh²hh³jðh´MFubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjðh²hh³jðh´MFubah}”(h]”jüïah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jðh´MFhjþïh²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Move packet data and metadata after skb_pull().”h]”hŒ/Move packet data and metadata after skb_pull().”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MFhj�ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjþïh²hh³jðh´MFubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¸ñjŒj¸ñj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX6**Parameters** ``struct sk_buff *skb`` packet to operate on ``const unsigned int len`` number of bytes pulled from :c:type:`sk_buff->data ` ``const unsigned int n`` number of bytes to memmove() from pre-pull :c:type:`sk_buff->data ` **Description** See skb_data_move() for details.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÂñh]”hŒ Parameters”…”�”}”(hjÄñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MJhj¼ñubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` packet to operate on ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjáñh]”hŒstruct sk_buff *skb”…”�”}”(hjãñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MGhjÛñubj)�”}”(hhh]”jl)�”}”(hŒpacket to operate on”h]”hŒpacket to operate on”…”�”}”(hjúñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöñh´MGhj÷ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöñh´MGhjØñubjä)�”}”(hŒY``const unsigned int len`` number of bytes pulled from :c:type:`sk_buff->data ` ”h]”(jê)�”}”(hŒ``const unsigned int len``”h]”jð)�”}”(hjòh]”hŒconst unsigned int len”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MHhjòubj)�”}”(hhh]”jl)�”}”(hŒ=number of bytes pulled from :c:type:`sk_buff->data `”h]”(hŒnumber of bytes pulled from ”…”�”}”(hj3òh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hj=òh]”hŒ sk_buff->data”…”�”}”(hj?òh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj;òubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³j/òh´MHhj3òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/òh´MHhj0òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/òh´MHhjØñubjä)�”}”(hŒf``const unsigned int n`` number of bytes to memmove() from pre-pull :c:type:`sk_buff->data ` ”h]”(jê)�”}”(hŒ``const unsigned int n``”h]”jð)�”}”(hjròh]”hŒconst unsigned int n”…”�”}”(hjtòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjpòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MIhjlòubj)�”}”(hhh]”jl)�”}”(hŒLnumber of bytes to memmove() from pre-pull :c:type:`sk_buff->data `”h]”(hŒ+number of bytes to memmove() from pre-pull ”…”�”}”(hj‹òh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hj•òh]”hŒ sk_buff->data”…”�”}”(hj—òh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj“òubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³j‡òh´MIhj‹òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡òh´MIhjˆòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡òh´MIhjØñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¼ñubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÌòh]”hŒ Description”…”�”}”(hjÎòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊòubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MKhj¼ñubjl)�”}”(hŒ See skb_data_move() for details.”h]”hŒ See skb_data_move() for details.”…”�”}”(hjâòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MJhj¼ñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#skb_postpush_data_move (C function)”Œc.skb_postpush_data_move”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ_void skb_postpush_data_move (struct sk_buff *skb, const unsigned int len, const unsigned int n)”h]”j )�”}”(hŒ^void skb_postpush_data_move(struct sk_buff *skb, const unsigned int len, const unsigned int n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj óh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MVubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj óh²hh³jóh´MVubj3)�”}”(hŒskb_postpush_data_move”h]”j9)�”}”(hŒskb_postpush_data_move”h]”hŒskb_postpush_data_move”…”�”}”(hj2óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.óubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj óh²hh³jóh´MVubj¡ )�”}”(hŒC(struct sk_buff *skb, const unsigned int len, const unsigned int n)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjNóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJóubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjlóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjióubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jnóŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4ósbŒc.skb_postpush_data_move”†”asbuh1hhjJóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJóubj )�”}”(hj h]”hŒ*”…”�”}”(hjšóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJóubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj§óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFóubj§ )�”}”(hŒconst unsigned int len”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÀóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼óubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÛóh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼óubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj÷óh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼óubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFóubj§ )�”}”(hŒconst unsigned int n”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj,ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ôubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjGôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ôubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjcôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ôubj9)�”}”(hjDh]”hŒn”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFóubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj óh²hh³jóh´MVubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj óh²hh³jóh´MVubah}”(h]”jóah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jóh´MVhjóh²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Move packet data and metadata after skb_push().”h]”hŒ/Move packet data and metadata after skb_push().”…”�”}”(hj¨ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MVhj¥ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjóh²hh³jóh´MVubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÀôjŒjÀôj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX6**Parameters** ``struct sk_buff *skb`` packet to operate on ``const unsigned int len`` number of bytes pushed onto :c:type:`sk_buff->data ` ``const unsigned int n`` number of bytes to memmove() from pre-push :c:type:`sk_buff->data ` **Description** See skb_data_move() for details.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÊôh]”hŒ Parameters”…”�”}”(hjÌôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MZhjÄôubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` packet to operate on ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjéôh]”hŒstruct sk_buff *skb”…”�”}”(hjëôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjçôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MWhjãôubj)�”}”(hhh]”jl)�”}”(hŒpacket to operate on”h]”hŒpacket to operate on”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþôh´MWhjÿôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþôh´MWhjàôubjä)�”}”(hŒY``const unsigned int len`` number of bytes pushed onto :c:type:`sk_buff->data ` ”h]”(jê)�”}”(hŒ``const unsigned int len``”h]”jð)�”}”(hj"õh]”hŒconst unsigned int len”…”�”}”(hj$õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MXhjõubj)�”}”(hhh]”jl)�”}”(hŒ=number of bytes pushed onto :c:type:`sk_buff->data `”h]”(hŒnumber of bytes pushed onto ”…”�”}”(hj;õh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hjEõh]”hŒ sk_buff->data”…”�”}”(hjGõh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjCõubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³j7õh´MXhj;õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7õh´MXhj8õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7õh´MXhjàôubjä)�”}”(hŒf``const unsigned int n`` number of bytes to memmove() from pre-push :c:type:`sk_buff->data ` ”h]”(jê)�”}”(hŒ``const unsigned int n``”h]”jð)�”}”(hjzõh]”hŒconst unsigned int n”…”�”}”(hj|õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjxõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MYhjtõubj)�”}”(hhh]”jl)�”}”(hŒLnumber of bytes to memmove() from pre-push :c:type:`sk_buff->data `”h]”(hŒ+number of bytes to memmove() from pre-push ”…”�”}”(hj“õh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hj�õh]”hŒ sk_buff->data”…”�”}”(hjŸõh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj›õubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³j�õh´MYhj“õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�õh´MYhj�õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�õh´MYhjàôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄôubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÔõh]”hŒ Description”…”�”}”(hjÖõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒõubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M[hjÄôubjl)�”}”(hŒ See skb_data_move() for details.”h]”hŒ See skb_data_move() for details.”…”�”}”(hjêõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MZhjÄôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&skb_complete_tx_timestamp (C function)”Œc.skb_complete_tx_timestamp”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\void skb_complete_tx_timestamp (struct sk_buff *skb, struct skb_shared_hwtstamps *hwtstamps)”h]”j )�”}”(hŒ[void skb_complete_tx_timestamp(struct sk_buff *skb, struct skb_shared_hwtstamps *hwtstamps)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjöh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mzubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöh²hh³j'öh´Mzubj3)�”}”(hŒskb_complete_tx_timestamp”h]”j9)�”}”(hŒskb_complete_tx_timestamp”h]”hŒskb_complete_tx_timestamp”…”�”}”(hj:öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6öubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjöh²hh³j'öh´Mzubj¡ )�”}”(hŒ=(struct sk_buff *skb, struct skb_shared_hwtstamps *hwtstamps)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjVöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRöubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjtöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jvöŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j<ösbŒc.skb_complete_tx_timestamp”†”asbuh1hhjRöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRöubj )�”}”(hj h]”hŒ*”…”�”}”(hj¢öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjRöubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¯öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjNöubj§ )�”}”(hŒ&struct skb_shared_hwtstamps *hwtstamps”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÈöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄöubh)�”}”(hhh]”j9)�”}”(hŒskb_shared_hwtstamps”h]”hŒskb_shared_hwtstamps”…”�”}”(hjæöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjãöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jèöŒmodname”NŒ classname”Njå jè )�”}”jë ]”j�öŒc.skb_complete_tx_timestamp”†”asbuh1hhjÄöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄöubj )�”}”(hj h]”hŒ*”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÄöubj9)�”}”(hŒ hwtstamps”h]”hŒ hwtstamps”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjNöubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjöh²hh³j'öh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjöh²hh³j'öh´Mzubah}”(h]”j öah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j'öh´Mzhjöh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%deliver cloned skb with tx timestamps”h]”hŒ%deliver cloned skb with tx timestamps”…”�”}”(hjI÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MzhjF÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjöh²hh³j'öh´Mzubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ja÷jŒja÷j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXl**Parameters** ``struct sk_buff *skb`` clone of the original outgoing packet ``struct skb_shared_hwtstamps *hwtstamps`` hardware time stamps **Description** PHY drivers may accept clones of transmitted packets for timestamping via their phy_driver.txtstamp method. These drivers must call this function to return the skb back to the stack with a timestamp.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjk÷h]”hŒ Parameters”…”�”}”(hjm÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhji÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M~hje÷ubjß)�”}”(hhh]”(jä)�”}”(hŒ>``struct sk_buff *skb`` clone of the original outgoing packet ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjŠ÷h]”hŒstruct sk_buff *skb”…”�”}”(hjŒ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hj„÷ubj)�”}”(hhh]”jl)�”}”(hŒ%clone of the original outgoing packet”h]”hŒ%clone of the original outgoing packet”…”�”}”(hj£÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸ÷h´M�hj ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸ÷h´M�hj�÷ubjä)�”}”(hŒ@``struct skb_shared_hwtstamps *hwtstamps`` hardware time stamps ”h]”(jê)�”}”(hŒ*``struct skb_shared_hwtstamps *hwtstamps``”h]”jð)�”}”(hjÃ÷h]”hŒ&struct skb_shared_hwtstamps *hwtstamps”…”�”}”(hjÅ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‚hj½÷ubj)�”}”(hhh]”jl)�”}”(hŒhardware time stamps”h]”hŒhardware time stamps”…”�”}”(hjÜ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØ÷h´M‚hjÙ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØ÷h´M‚hj�÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhje÷ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjþ÷h]”hŒ Description”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M„hje÷ubjl)�”}”(hŒÇPHY drivers may accept clones of transmitted packets for timestamping via their phy_driver.txtstamp method. These drivers must call this function to return the skb back to the stack with a timestamp.”h]”hŒÇPHY drivers may accept clones of transmitted packets for timestamping via their phy_driver.txtstamp method. These drivers must call this function to return the skb back to the stack with a timestamp.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M{hje÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_tstamp_tx (C function)”Œc.skb_tstamp_tx”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUvoid skb_tstamp_tx (struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps)”h]”j )�”}”(hŒTvoid skb_tstamp_tx(struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjCøh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj?øh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?øh²hh³jQøh´M�ubj3)�”}”(hŒ skb_tstamp_tx”h]”j9)�”}”(hŒ skb_tstamp_tx”h]”hŒ skb_tstamp_tx”…”�”}”(hjdøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`øubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj?øh²hh³jQøh´M�ubj¡ )�”}”(hŒB(struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps)”h]”(j§ )�”}”(hŒstruct sk_buff *orig_skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj€øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|øubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjžøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j øŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jføsbŒc.skb_tstamp_tx”†”asbuh1hhj|øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|øubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌøh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj|øubj9)�”}”(hŒorig_skb”h]”hŒorig_skb”…”�”}”(hjÙøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjxøubj§ )�”}”(hŒ&struct skb_shared_hwtstamps *hwtstamps”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjòøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîøubh)�”}”(hhh]”j9)�”}”(hŒskb_shared_hwtstamps”h]”hŒskb_shared_hwtstamps”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jùŒmodname”NŒ classname”Njå jè )�”}”jë ]”jºøŒc.skb_tstamp_tx”†”asbuh1hhjîøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîøubj )�”}”(hj h]”hŒ*”…”�”}”(hj<ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjîøubj9)�”}”(hŒ hwtstamps”h]”hŒ hwtstamps”…”�”}”(hjIùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjxøubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj?øh²hh³jQøh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj;øh²hh³jQøh´M�ubah}”(h]”j6øah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQøh´M�hj8øh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(queue clone of skb with send time stamps”h]”hŒ(queue clone of skb with send time stamps”…”�”}”(hjsùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjpùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8øh²hh³jQøh´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‹ùjŒj‹ùj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *orig_skb`` the original outgoing packet ``struct skb_shared_hwtstamps *hwtstamps`` hardware time stamps, may be NULL if not available **Description** If the skb has a socket associated, then this function clones the skb (thus sharing the actual data and optional structures), stores the optional hardware time stamping information (if non NULL) or generates a software time stamp (otherwise), then queues the clone to the error queue of the socket. Errors are silently ignored.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj•ùh]”hŒ Parameters”…”�”}”(hj—ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj“ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‘hj�ùubjß)�”}”(hhh]”(jä)�”}”(hŒ:``struct sk_buff *orig_skb`` the original outgoing packet ”h]”(jê)�”}”(hŒ``struct sk_buff *orig_skb``”h]”jð)�”}”(hj´ùh]”hŒstruct sk_buff *orig_skb”…”�”}”(hj¶ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŽhj®ùubj)�”}”(hhh]”jl)�”}”(hŒthe original outgoing packet”h]”hŒthe original outgoing packet”…”�”}”(hjÍùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉùh´MŽhjÊùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉùh´MŽhj«ùubjä)�”}”(hŒ^``struct skb_shared_hwtstamps *hwtstamps`` hardware time stamps, may be NULL if not available ”h]”(jê)�”}”(hŒ*``struct skb_shared_hwtstamps *hwtstamps``”h]”jð)�”}”(hjíùh]”hŒ&struct skb_shared_hwtstamps *hwtstamps”…”�”}”(hjïùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hjçùubj)�”}”(hhh]”jl)�”}”(hŒ2hardware time stamps, may be NULL if not available”h]”hŒ2hardware time stamps, may be NULL if not available”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³júh´M�hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³júh´M�hj«ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�ùubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj(úh]”hŒ Description”…”�”}”(hj*úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&úubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M‘hj�ùubjl)�”}”(hXHIf the skb has a socket associated, then this function clones the skb (thus sharing the actual data and optional structures), stores the optional hardware time stamping information (if non NULL) or generates a software time stamp (otherwise), then queues the clone to the error queue of the socket. Errors are silently ignored.”h]”hXHIf the skb has a socket associated, then this function clones the skb (thus sharing the actual data and optional structures), stores the optional hardware time stamping information (if non NULL) or generates a software time stamp (otherwise), then queues the clone to the error queue of the socket. Errors are silently ignored.”…”�”}”(hj>úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M�hj�ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_tx_timestamp (C function)”Œc.skb_tx_timestamp”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+void skb_tx_timestamp (struct sk_buff *skb)”h]”j )�”}”(hŒ*void skb_tx_timestamp(struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjmúh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjiúh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjiúh²hh³j{úh´M›ubj3)�”}”(hŒskb_tx_timestamp”h]”j9)�”}”(hŒskb_tx_timestamp”h]”hŒskb_tx_timestamp”…”�”}”(hjŽúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠúubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjiúh²hh³j{úh´M›ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjªúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦úubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÈúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÊúŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�úsbŒc.skb_tx_timestamp”†”asbuh1hhj¦úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦úubj )�”}”(hj h]”hŒ*”…”�”}”(hjöúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦úubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢úubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjiúh²hh³j{úh´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjeúh²hh³j{úh´M›ubah}”(h]”j`úah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j{úh´M›hjbúh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%Driver hook for transmit timestamping”h]”hŒ%Driver hook for transmit timestamping”…”�”}”(hj-ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M›hj*ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjbúh²hh³j{úh´M›ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jEûjŒjEûj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX‹**Parameters** ``struct sk_buff *skb`` A socket buffer. **Description** Ethernet MAC Drivers should call this function in their hard_xmit() function immediately before giving the sk_buff to the MAC hardware. Specifically, one should make absolutely sure that this function is called before TX completion of this packet can trigger. Otherwise the packet could potentially already be freed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjOûh]”hŒ Parameters”…”�”}”(hjQûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjMûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŸhjIûubjß)�”}”(hhh]”jä)�”}”(hŒ)``struct sk_buff *skb`` A socket buffer. ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjnûh]”hŒstruct sk_buff *skb”…”�”}”(hjpûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjlûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¤hjhûubj)�”}”(hhh]”jl)�”}”(hŒA socket buffer.”h]”hŒA socket buffer.”…”�”}”(hj‡ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒûh´M¤hj„ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒûh´M¤hjeûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjIûubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj©ûh]”hŒ Description”…”�”}”(hj«ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj§ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M¦hjIûubjl)�”}”(hŒ‡Ethernet MAC Drivers should call this function in their hard_xmit() function immediately before giving the sk_buff to the MAC hardware.”h]”hŒ‡Ethernet MAC Drivers should call this function in their hard_xmit() function immediately before giving the sk_buff to the MAC hardware.”…”�”}”(hj¿ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MœhjIûubjl)�”}”(hŒµSpecifically, one should make absolutely sure that this function is called before TX completion of this packet can trigger. Otherwise the packet could potentially already be freed.”h]”hŒµSpecifically, one should make absolutely sure that this function is called before TX completion of this packet can trigger. Otherwise the packet could potentially already be freed.”…”�”}”(hjÎûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MŸhjIûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"skb_complete_wifi_ack (C function)”Œc.skb_complete_wifi_ack”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒcsum. The latter can be used to supply the checksum of a pseudo header as used by TCP/UDP. It returns the checksum. For protocols that contain complete checksums such as ICMP/TCP/UDP, this function can be used to verify that checksum on received packets. In that case the function should return zero if the checksum is correct. In particular, this function will return zero if skb->ip_summed is CHECKSUM_UNNECESSARY which indicates that the hardware has already verified the correctness of the checksum.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjºþh]”hŒ Parameters”…”�”}”(hj¼þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÆhj´þubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct sk_buff *skb`` packet to process ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÙþh]”hŒstruct sk_buff *skb”…”�”}”(hjÛþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÃhjÓþubj)�”}”(hhh]”jl)�”}”(hŒpacket to process”h]”hŒpacket to process”…”�”}”(hjòþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîþh´MÃhjïþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîþh´MÃhjÐþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj´þubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÿh]”hŒ Description”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÅhj´þubjÒ)�”}”(hXPThis function calculates the checksum over the entire packet plus the value of skb->csum. The latter can be used to supply the checksum of a pseudo header as used by TCP/UDP. It returns the checksum. For protocols that contain complete checksums such as ICMP/TCP/UDP, this function can be used to verify that checksum on received packets. In that case the function should return zero if the checksum is correct. In particular, this function will return zero if skb->ip_summed is CHECKSUM_UNNECESSARY which indicates that the hardware has already verified the correctness of the checksum.”h]”(jl)�”}”(hŒÉThis function calculates the checksum over the entire packet plus the value of skb->csum. The latter can be used to supply the checksum of a pseudo header as used by TCP/UDP. It returns the checksum.”h]”hŒÉThis function calculates the checksum over the entire packet plus the value of skb->csum. The latter can be used to supply the checksum of a pseudo header as used by TCP/UDP. It returns the checksum.”…”�”}”(hj.ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÄhj*ÿubjl)�”}”(hX…For protocols that contain complete checksums such as ICMP/TCP/UDP, this function can be used to verify that checksum on received packets. In that case the function should return zero if the checksum is correct. In particular, this function will return zero if skb->ip_summed is CHECKSUM_UNNECESSARY which indicates that the hardware has already verified the correctness of the checksum.”h]”hX…For protocols that contain complete checksums such as ICMP/TCP/UDP, this function can be used to verify that checksum on received packets. In that case the function should return zero if the checksum is correct. In particular, this function will return zero if skb->ip_summed is CHECKSUM_UNNECESSARY which indicates that the hardware has already verified the correctness of the checksum.”…”�”}”(hj=ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÉhj*ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j<ÿh´MÄhj´þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_ext (C struct)”Œ c.skb_ext”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒskb_ext”h]”j )�”}”(hŒstruct skb_ext”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjrÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnÿh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÓubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnÿh²hh³jÿh´MÓubj3)�”}”(hŒskb_ext”h]”j9)�”}”(hjlÿh]”hŒskb_ext”…”�”}”(hj’ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽÿubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjnÿh²hh³jÿh´MÓubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjjÿh²hh³jÿh´MÓubah}”(h]”jeÿah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÿh´MÓhjgÿh²hubjg)�”}”(hhh]”jl)�”}”(hŒsk_buff extensions”h]”hŒsk_buff extensions”…”�”}”(hj´ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MËhj±ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjgÿh²hh³jÿh´MÓubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jÌÿjŒjÌÿj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX…**Definition**:: struct skb_ext { refcount_t refcnt; u8 offset[SKB_EXT_NUM]; u8 chunks; char data[]; }; **Members** ``refcnt`` 1 on allocation, deallocated on 0 ``offset`` offset to add to **data** to obtain extension address ``chunks`` size currently allocated, stored in SKB_EXT_ALIGN_SHIFT units ``data`` start of extension data, variable sized”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjØÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÔÿubhŒ:”…”�”}”(hjÔÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÏhjÐÿubj¶)�”}”(hŒfstruct skb_ext { refcount_t refcnt; u8 offset[SKB_EXT_NUM]; u8 chunks; char data[]; };”h]”hŒfstruct skb_ext { refcount_t refcnt; u8 offset[SKB_EXT_NUM]; u8 chunks; char data[]; };”…”�”}”hjñÿsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÑhjÐÿubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MØhjÐÿubjß)�”}”(hhh]”(jä)�”}”(hŒ-``refcnt`` 1 on allocation, deallocated on 0 ”h]”(jê)�”}”(hŒ ``refcnt``”h]”jð)�”}”(hj!h]”hŒrefcnt”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÍhjubj)�”}”(hhh]”jl)�”}”(hŒ!1 on allocation, deallocated on 0”h]”hŒ!1 on allocation, deallocated on 0”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6h´MÍhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6h´MÍhjubjä)�”}”(hŒA``offset`` offset to add to **data** to obtain extension address ”h]”(jê)�”}”(hŒ ``offset``”h]”jð)�”}”(hjZh]”hŒoffset”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÎhjTubj)�”}”(hhh]”jl)�”}”(hŒ5offset to add to **data** to obtain extension address”h]”(hŒoffset to add to ”…”�”}”(hjsh²hh³Nh´Nubj›)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsubhŒ to obtain extension address”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³joh´MÎhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³joh´MÎhjubjä)�”}”(hŒI``chunks`` size currently allocated, stored in SKB_EXT_ALIGN_SHIFT units ”h]”(jê)�”}”(hŒ ``chunks``”h]”jð)�”}”(hj¥h]”hŒchunks”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÏhjŸubj)�”}”(hhh]”jl)�”}”(hŒ=size currently allocated, stored in SKB_EXT_ALIGN_SHIFT units”h]”hŒ=size currently allocated, stored in SKB_EXT_ALIGN_SHIFT units”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jºh´MÏhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jºh´MÏhjubjä)�”}”(hŒ0``data`` start of extension data, variable sized”h]”(jê)�”}”(hŒ``data``”h]”jð)�”}”(hjÞh]”hŒdata”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÏhjØubj)�”}”(hhh]”jl)�”}”(hŒ'start of extension data, variable sized”h]”hŒ'start of extension data, variable sized”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÐhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jóh´MÏhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÐÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hj!h]”hŒNote”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÓhj" h²hubjß)�”}”(hhh]”jä)�”}”(hŒ‚offsets/lengths are stored in chunks of 8 bytes, this allows to use 'u8' types while allowing up to 2kb worth of extension data. ”h]”(jê)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÓhj:ubj)�”}”(hhh]”jl)�”}”(hŒCto use 'u8' types while allowing up to 2kb worth of extension data.”h]”hŒGto use ‘u8’ types while allowing up to 2kb worth of extension data.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´MÒhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jLh´MÓhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%skb_checksum_none_assert (C function)”Œc.skb_checksum_none_assert”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9void skb_checksum_none_assert (const struct sk_buff *skb)”h]”j )�”}”(hŒ8void skb_checksum_none_assert(const struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj†h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Môubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†h²hh³j˜h´Môubj3)�”}”(hŒskb_checksum_none_assert”h]”j9)�”}”(hŒskb_checksum_none_assert”h]”hŒskb_checksum_none_assert”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj†h²hh³j˜h´Môubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃubj)�”}”(hjh]”hŒstruct”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j­sbŒc.skb_checksum_none_assert”†”asbuh1hhjÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃubj )�”}”(hj h]”hŒ*”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÃubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj†h²hh³j˜h´Môubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‚h²hh³j˜h´Môubah}”(h]”j}ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j˜h´Môhjh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(make sure skb ip_summed is CHECKSUM_NONE”h]”hŒ(make sure skb ip_summed is CHECKSUM_NONE”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Môhjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j˜h´Môubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j}jŒj}j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒü**Parameters** ``const struct sk_buff *skb`` skb to check **Description** fresh skbs have their ip_summed set to CHECKSUM_NONE. Instead of forcing ip_summed to CHECKSUM_NONE, we can use this helper, to document places where we make this assertion.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‡h]”hŒ Parameters”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Møhj�ubjß)�”}”(hhh]”jä)�”}”(hŒ+``const struct sk_buff *skb`` skb to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj¦h]”hŒconst struct sk_buff *skb”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mõhj ubj)�”}”(hhh]”jl)�”}”(hŒ skb to check”h]”hŒ skb to check”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»h´Mõhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»h´Mõhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjáh]”hŒ Description”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M÷hj�ubjl)�”}”(hŒ­fresh skbs have their ip_summed set to CHECKSUM_NONE. Instead of forcing ip_summed to CHECKSUM_NONE, we can use this helper, to document places where we make this assertion.”h]”hŒ­fresh skbs have their ip_summed set to CHECKSUM_NONE. Instead of forcing ip_summed to CHECKSUM_NONE, we can use this helper, to document places where we make this assertion.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Möhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_head_is_locked (C function)”Œc.skb_head_is_locked”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3bool skb_head_is_locked (const struct sk_buff *skb)”h]”j )�”}”(hŒ2bool skb_head_is_locked(const struct sk_buff *skb)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"h²hh³j3h´Mubj3)�”}”(hŒskb_head_is_locked”h]”j9)�”}”(hŒskb_head_is_locked”h]”hŒskb_head_is_locked”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj"h²hh³j3h´Mubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jHsbŒc.skb_head_is_locked”†”asbuh1hhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj"h²hh³j3h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³j3h´Mubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j3h´Mhjh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)Determine if the skb->head is locked down”h]”hŒ)Determine if the skb->head is locked down”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´Mhjýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j3h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX?**Parameters** ``const struct sk_buff *skb`` skb to check **Description** The head on skbs build around a head frag can be removed if they are not cloned. This function returns true if the skb head is locked down due to either being allocated via kmalloc, or by being a clone with multiple references to the head.”•\h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj"h]”hŒ Parameters”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjubjß)�”}”(hhh]”jä)�”}”(hŒ+``const struct sk_buff *skb`` skb to check ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjAh]”hŒconst struct sk_buff *skb”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hj;ubj)�”}”(hhh]”jl)�”}”(hŒ skb to check”h]”hŒ skb to check”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jVh´M hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVh´M hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj|h]”hŒ Description”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjubjl)�”}”(hŒðThe head on skbs build around a head frag can be removed if they are not cloned. This function returns true if the skb head is locked down due to either being allocated via kmalloc, or by being a clone with multiple references to the head.”h]”hŒðThe head on skbs build around a head frag can be removed if they are not cloned. This function returns true if the skb head is locked down due to either being allocated via kmalloc, or by being a clone with multiple references to the head.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:17: ./include/linux/skbuff.h”h´M hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_common (C struct)”Œ c.sock_common”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ sock_common”h]”j )�”}”(hŒstruct sock_common”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½h²hh³jÎh´Kubj3)�”}”(hŒ sock_common”h]”j9)�”}”(hj»h]”hŒ sock_common”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj½h²hh³jÎh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¹h²hh³jÎh´Kubah}”(h]”j´ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÎh´Khj¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/minimal network layer representation of sockets”h]”hŒ/minimal network layer representation of sockets”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kohjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶h²hh³jÎh´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX„**Definition**:: struct sock_common { union { __addrpair skc_addrpair; struct { __be32 skc_daddr; __be32 skc_rcv_saddr; }; }; union { unsigned int skc_hash; __u16 skc_u16hashes[2]; }; union { __portpair skc_portpair; struct { __be16 skc_dport; __u16 skc_num; }; }; unsigned short skc_family; volatile unsigned char skc_state; unsigned char skc_reuse:4; unsigned char skc_reuseport:1; unsigned char skc_ipv6only:1; unsigned char skc_net_refcnt:1; unsigned char skc_bypass_prot_mem:1; int skc_bound_dev_if; union { struct hlist_node skc_bind_node; struct hlist_node skc_portaddr_node; }; struct proto *skc_prot; possible_net_t skc_net; #if IS_ENABLED(CONFIG_IPV6); struct in6_addr skc_v6_daddr; struct in6_addr skc_v6_rcv_saddr; #endif; atomic64_t skc_cookie; union { unsigned long skc_flags; struct sock *skc_listener; struct inet_timewait_death_row *skc_tw_dr; }; union { struct hlist_node skc_node; struct hlist_nulls_node skc_nulls_node; }; unsigned short skc_tx_queue_mapping; #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING; unsigned short skc_rx_queue_mapping; #endif; union { int skc_incoming_cpu; u32 skc_rcv_wnd; u32 skc_tw_rcv_nxt; }; refcount_t skc_refcnt; }; **Members** ``{unnamed_union}`` anonymous ``skc_addrpair`` 8-byte-aligned __u64 union of **skc_daddr** & **skc_rcv_saddr** ``{unnamed_struct}`` anonymous ``skc_daddr`` Foreign IPv4 addr ``skc_rcv_saddr`` Bound local IPv4 addr ``{unnamed_union}`` anonymous ``skc_hash`` hash value used with various protocol lookup tables ``skc_u16hashes`` two u16 hash values used by UDP lookup tables ``{unnamed_union}`` anonymous ``skc_portpair`` __u32 union of **skc_dport** & **skc_num** ``{unnamed_struct}`` anonymous ``skc_dport`` placeholder for inet_dport/tw_dport ``skc_num`` placeholder for inet_num/tw_num ``skc_family`` network address family ``skc_state`` Connection state ``skc_reuse`` ``SO_REUSEADDR`` setting ``skc_reuseport`` ``SO_REUSEPORT`` setting ``skc_ipv6only`` socket is IPV6 only ``skc_net_refcnt`` socket is using net ref counting ``skc_bypass_prot_mem`` bypass the per-protocol memory accounting for skb ``skc_bound_dev_if`` bound device index if != 0 ``{unnamed_union}`` anonymous ``skc_bind_node`` bind hash linkage for various protocol lookup tables ``skc_portaddr_node`` second hash linkage for UDP ``skc_prot`` protocol handlers inside a network family ``skc_net`` reference to the network namespace of this socket ``skc_v6_daddr`` IPV6 destination address ``skc_v6_rcv_saddr`` IPV6 source address ``skc_cookie`` socket's cookie value ``{unnamed_union}`` anonymous ``skc_flags`` place holder for sk_flags ``SO_LINGER`` (l_onoff), ``SO_BROADCAST``, ``SO_KEEPALIVE``, ``SO_OOBINLINE`` settings, ``SO_TIMESTAMPING`` settings ``skc_listener`` connection request listener socket (aka rsk_listener) [union with **skc_flags**] ``skc_tw_dr`` (aka tw_dr) ptr to :c:type:`struct inet_timewait_death_row ` [union with **skc_flags**] ``{unnamed_union}`` anonymous ``skc_node`` main hash linkage for various protocol lookup tables ``skc_nulls_node`` main hash linkage for TCP ``skc_tx_queue_mapping`` tx queue number for this connection ``skc_rx_queue_mapping`` rx queue number for this connection ``{unnamed_union}`` anonymous ``skc_incoming_cpu`` record/match cpu processing incoming packets ``skc_rcv_wnd`` (aka rsk_rcv_wnd) TCP receive window size (possibly scaled) [union with **skc_incoming_cpu**] ``skc_tw_rcv_nxt`` (aka tw_rcv_nxt) TCP window next expected seq number [union with **skc_incoming_cpu**] ``skc_refcnt`` reference count”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#ubhŒ:”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kshjubj¶)�”}”(hX0struct sock_common { union { __addrpair skc_addrpair; struct { __be32 skc_daddr; __be32 skc_rcv_saddr; }; }; union { unsigned int skc_hash; __u16 skc_u16hashes[2]; }; union { __portpair skc_portpair; struct { __be16 skc_dport; __u16 skc_num; }; }; unsigned short skc_family; volatile unsigned char skc_state; unsigned char skc_reuse:4; unsigned char skc_reuseport:1; unsigned char skc_ipv6only:1; unsigned char skc_net_refcnt:1; unsigned char skc_bypass_prot_mem:1; int skc_bound_dev_if; union { struct hlist_node skc_bind_node; struct hlist_node skc_portaddr_node; }; struct proto *skc_prot; possible_net_t skc_net; #if IS_ENABLED(CONFIG_IPV6); struct in6_addr skc_v6_daddr; struct in6_addr skc_v6_rcv_saddr; #endif; atomic64_t skc_cookie; union { unsigned long skc_flags; struct sock *skc_listener; struct inet_timewait_death_row *skc_tw_dr; }; union { struct hlist_node skc_node; struct hlist_nulls_node skc_nulls_node; }; unsigned short skc_tx_queue_mapping; #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING; unsigned short skc_rx_queue_mapping; #endif; union { int skc_incoming_cpu; u32 skc_rcv_wnd; u32 skc_tw_rcv_nxt; }; refcount_t skc_refcnt; };”h]”hX0struct sock_common { union { __addrpair skc_addrpair; struct { __be32 skc_daddr; __be32 skc_rcv_saddr; }; }; union { unsigned int skc_hash; __u16 skc_u16hashes[2]; }; union { __portpair skc_portpair; struct { __be16 skc_dport; __u16 skc_num; }; }; unsigned short skc_family; volatile unsigned char skc_state; unsigned char skc_reuse:4; unsigned char skc_reuseport:1; unsigned char skc_ipv6only:1; unsigned char skc_net_refcnt:1; unsigned char skc_bypass_prot_mem:1; int skc_bound_dev_if; union { struct hlist_node skc_bind_node; struct hlist_node skc_portaddr_node; }; struct proto *skc_prot; possible_net_t skc_net; #if IS_ENABLED(CONFIG_IPV6); struct in6_addr skc_v6_daddr; struct in6_addr skc_v6_rcv_saddr; #endif; atomic64_t skc_cookie; union { unsigned long skc_flags; struct sock *skc_listener; struct inet_timewait_death_row *skc_tw_dr; }; union { struct hlist_node skc_node; struct hlist_nulls_node skc_nulls_node; }; unsigned short skc_tx_queue_mapping; #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING; unsigned short skc_rx_queue_mapping; #endif; union { int skc_incoming_cpu; u32 skc_rcv_wnd; u32 skc_tw_rcv_nxt; }; refcount_t skc_refcnt; };”…”�”}”hj@sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kuhjubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjQh]”hŒMembers”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K°hjubjß)�”}”(hhh]”(jä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjph]”hŒ{unnamed_union}”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjjubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…h´Khj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…h´Khjgubjä)�”}”(hŒQ``skc_addrpair`` 8-byte-aligned __u64 union of **skc_daddr** & **skc_rcv_saddr** ”h]”(jê)�”}”(hŒ``skc_addrpair``”h]”jð)�”}”(hj©h]”hŒ skc_addrpair”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kshj£ubj)�”}”(hhh]”jl)�”}”(hŒ?8-byte-aligned __u64 union of **skc_daddr** & **skc_rcv_saddr**”h]”(hŒ8-byte-aligned __u64 union of ”…”�”}”(hjÂh²hh³Nh´Nubj›)�”}”(hŒ **skc_daddr**”h]”hŒ skc_daddr”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂubhŒ & ”…”�”}”(hjÂh²hh³Nh´Nubj›)�”}”(hŒ**skc_rcv_saddr**”h]”hŒ skc_rcv_saddr”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾h´Kshj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾h´Kshjgubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hjh]”hŒ{unnamed_struct}”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjüubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Khjgubjä)�”}”(hŒ ``skc_daddr`` Foreign IPv4 addr ”h]”(jê)�”}”(hŒ ``skc_daddr``”h]”jð)�”}”(hj;h]”hŒ skc_daddr”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kqhj5ubj)�”}”(hhh]”jl)�”}”(hŒForeign IPv4 addr”h]”hŒForeign IPv4 addr”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jPh´KqhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jPh´Kqhjgubjä)�”}”(hŒ(``skc_rcv_saddr`` Bound local IPv4 addr ”h]”(jê)�”}”(hŒ``skc_rcv_saddr``”h]”jð)�”}”(hjth]”hŒ skc_rcv_saddr”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Krhjnubj)�”}”(hhh]”jl)�”}”(hŒBound local IPv4 addr”h]”hŒBound local IPv4 addr”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‰h´KrhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰h´Krhjgubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj­h]”hŒ{unnamed_union}”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khj§ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂh´KhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂh´Khjgubjä)�”}”(hŒA``skc_hash`` hash value used with various protocol lookup tables ”h]”(jê)�”}”(hŒ ``skc_hash``”h]”jð)�”}”(hjæh]”hŒskc_hash”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kthjàubj)�”}”(hhh]”jl)�”}”(hŒ3hash value used with various protocol lookup tables”h]”hŒ3hash value used with various protocol lookup tables”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jûh´Kthjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jûh´Kthjgubjä)�”}”(hŒ@``skc_u16hashes`` two u16 hash values used by UDP lookup tables ”h]”(jê)�”}”(hŒ``skc_u16hashes``”h]”jð)�”}”(hjh]”hŒ skc_u16hashes”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kuhjubj)�”}”(hhh]”jl)�”}”(hŒ-two u16 hash values used by UDP lookup tables”h]”hŒ-two u16 hash values used by UDP lookup tables”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4h´Kuhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4h´Kuhjgubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjXh]”hŒ{unnamed_union}”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KhjRubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jmh´Khjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmh´Khjgubjä)�”}”(hŒ<``skc_portpair`` __u32 union of **skc_dport** & **skc_num** ”h]”(jê)�”}”(hŒ``skc_portpair``”h]”jð)�”}”(hj‘h]”hŒ skc_portpair”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kxhj‹ubj)�”}”(hhh]”jl)�”}”(hŒ*__u32 union of **skc_dport** & **skc_num**”h]”(hŒ__u32 union of ”…”�”}”(hjªh²hh³Nh´Nubj›)�”}”(hŒ **skc_dport**”h]”hŒ skc_dport”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjªubhŒ & ”…”�”}”(hjªh²hh³Nh´Nubj›)�”}”(hŒ **skc_num**”h]”hŒskc_num”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦h´Kxhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦h´Kxhjgubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hjêh]”hŒ{unnamed_struct}”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjäubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿh´Khjgubjä)�”}”(hŒ2``skc_dport`` placeholder for inet_dport/tw_dport ”h]”(jê)�”}”(hŒ ``skc_dport``”h]”jð)�”}”(hj#h]”hŒ skc_dport”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kvhjubj)�”}”(hhh]”jl)�”}”(hŒ#placeholder for inet_dport/tw_dport”h]”hŒ#placeholder for inet_dport/tw_dport”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8h´Kvhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8h´Kvhjgubjä)�”}”(hŒ,``skc_num`` placeholder for inet_num/tw_num ”h]”(jê)�”}”(hŒ ``skc_num``”h]”jð)�”}”(hj\h]”hŒskc_num”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KwhjVubj)�”}”(hhh]”jl)�”}”(hŒplaceholder for inet_num/tw_num”h]”hŒplaceholder for inet_num/tw_num”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqh´Kwhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jqh´Kwhjgubjä)�”}”(hŒ&``skc_family`` network address family ”h]”(jê)�”}”(hŒ``skc_family``”h]”jð)�”}”(hj•h]”hŒ skc_family”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kyhj�ubj)�”}”(hhh]”jl)�”}”(hŒnetwork address family”h]”hŒnetwork address family”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªh´Kyhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªh´Kyhjgubjä)�”}”(hŒ``skc_state`` Connection state ”h]”(jê)�”}”(hŒ ``skc_state``”h]”jð)�”}”(hjÎh]”hŒ skc_state”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KzhjÈubj)�”}”(hhh]”jl)�”}”(hŒConnection state”h]”hŒConnection state”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jãh´Kzhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãh´Kzhjgubjä)�”}”(hŒ'``skc_reuse`` ``SO_REUSEADDR`` setting ”h]”(jê)�”}”(hŒ ``skc_reuse``”h]”jð)�”}”(hj h]”hŒ skc_reuse”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K{hj ubj)�”}”(hhh]”jl)�”}”(hŒ``SO_REUSEADDR`` setting”h]”(jð)�”}”(hŒ``SO_REUSEADDR``”h]”hŒ SO_REUSEADDR”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubhŒ setting”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´K{hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´K{hjgubjä)�”}”(hŒ+``skc_reuseport`` ``SO_REUSEPORT`` setting ”h]”(jê)�”}”(hŒ``skc_reuseport``”h]”jð)�”}”(hjN h]”hŒ skc_reuseport”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K|hjH ubj)�”}”(hhh]”jl)�”}”(hŒ``SO_REUSEPORT`` setting”h]”(jð)�”}”(hŒ``SO_REUSEPORT``”h]”hŒ SO_REUSEPORT”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjg ubhŒ setting”…”�”}”(hjg h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc h´K|hjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc h´K|hjgubjä)�”}”(hŒ%``skc_ipv6only`` socket is IPV6 only ”h]”(jê)�”}”(hŒ``skc_ipv6only``”h]”jð)�”}”(hj• h]”hŒ skc_ipv6only”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K}hj� ubj)�”}”(hhh]”jl)�”}”(hŒsocket is IPV6 only”h]”hŒsocket is IPV6 only”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jª h´K}hj« ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jª h´K}hjgubjä)�”}”(hŒ4``skc_net_refcnt`` socket is using net ref counting ”h]”(jê)�”}”(hŒ``skc_net_refcnt``”h]”jð)�”}”(hjÎ h]”hŒskc_net_refcnt”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K~hjÈ ubj)�”}”(hhh]”jl)�”}”(hŒ socket is using net ref counting”h]”hŒ socket is using net ref counting”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jã h´K~hjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jã h´K~hjgubjä)�”}”(hŒJ``skc_bypass_prot_mem`` bypass the per-protocol memory accounting for skb ”h]”(jê)�”}”(hŒ``skc_bypass_prot_mem``”h]”jð)�”}”(hj h]”hŒskc_bypass_prot_mem”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khj ubj)�”}”(hhh]”jl)�”}”(hŒ1bypass the per-protocol memory accounting for skb”h]”hŒ1bypass the per-protocol memory accounting for skb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Khjgubjä)�”}”(hŒ0``skc_bound_dev_if`` bound device index if != 0 ”h]”(jê)�”}”(hŒ``skc_bound_dev_if``”h]”jð)�”}”(hj@ h]”hŒskc_bound_dev_if”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K€hj: ubj)�”}”(hhh]”jl)�”}”(hŒbound device index if != 0”h]”hŒbound device index if != 0”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jU h´K€hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj: ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jU h´K€hjgubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjy h]”hŒ{unnamed_union}”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjs ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽ h´Khj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ h´Khjgubjä)�”}”(hŒG``skc_bind_node`` bind hash linkage for various protocol lookup tables ”h]”(jê)�”}”(hŒ``skc_bind_node``”h]”jð)�”}”(hj² h]”hŒ skc_bind_node”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K�hj¬ ubj)�”}”(hhh]”jl)�”}”(hŒ4bind hash linkage for various protocol lookup tables”h]”hŒ4bind hash linkage for various protocol lookup tables”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇ h´K�hjÈ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇ h´K�hjgubjä)�”}”(hŒ2``skc_portaddr_node`` second hash linkage for UDP ”h]”(jê)�”}”(hŒ``skc_portaddr_node``”h]”jð)�”}”(hjë h]”hŒskc_portaddr_node”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K‚hjå ubj)�”}”(hhh]”jl)�”}”(hŒsecond hash linkage for UDP”h]”hŒsecond hash linkage for UDP”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´K‚hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´K‚hjgubjä)�”}”(hŒ7``skc_prot`` protocol handlers inside a network family ”h]”(jê)�”}”(hŒ ``skc_prot``”h]”jð)�”}”(hj$ h]”hŒskc_prot”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kƒhj ubj)�”}”(hhh]”jl)�”}”(hŒ)protocol handlers inside a network family”h]”hŒ)protocol handlers inside a network family”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9 h´Kƒhj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9 h´Kƒhjgubjä)�”}”(hŒ>``skc_net`` reference to the network namespace of this socket ”h]”(jê)�”}”(hŒ ``skc_net``”h]”jð)�”}”(hj] h]”hŒskc_net”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K„hjW ubj)�”}”(hhh]”jl)�”}”(hŒ1reference to the network namespace of this socket”h]”hŒ1reference to the network namespace of this socket”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jr h´K„hjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jr h´K„hjgubjä)�”}”(hŒ*``skc_v6_daddr`` IPV6 destination address ”h]”(jê)�”}”(hŒ``skc_v6_daddr``”h]”jð)�”}”(hj– h]”hŒ skc_v6_daddr”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj” ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K…hj� ubj)�”}”(hhh]”jl)�”}”(hŒIPV6 destination address”h]”hŒIPV6 destination address”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j« h´K…hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j« h´K…hjgubjä)�”}”(hŒ)``skc_v6_rcv_saddr`` IPV6 source address ”h]”(jê)�”}”(hŒ``skc_v6_rcv_saddr``”h]”jð)�”}”(hjÏ h]”hŒskc_v6_rcv_saddr”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K†hjÉ ubj)�”}”(hhh]”jl)�”}”(hŒIPV6 source address”h]”hŒIPV6 source address”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jä h´K†hjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jä h´K†hjgubjä)�”}”(hŒ%``skc_cookie`` socket's cookie value ”h]”(jê)�”}”(hŒ``skc_cookie``”h]”jð)�”}”(hj h]”hŒ skc_cookie”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K‡hj ubj)�”}”(hhh]”jl)�”}”(hŒsocket's cookie value”h]”hŒsocket’s cookie value”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´K‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´K‡hjgubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjA h]”hŒ{unnamed_union}”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj? ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khj; ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jV h´KhjW ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj; ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jV h´Khjgubjä)�”}”(hŒ�``skc_flags`` place holder for sk_flags ``SO_LINGER`` (l_onoff), ``SO_BROADCAST``, ``SO_KEEPALIVE``, ``SO_OOBINLINE`` settings, ``SO_TIMESTAMPING`` settings ”h]”(jê)�”}”(hŒ ``skc_flags``”h]”jð)�”}”(hjz h]”hŒ skc_flags”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KŽhjt ubj)�”}”(hhh]”jl)�”}”(hŒŽplace holder for sk_flags ``SO_LINGER`` (l_onoff), ``SO_BROADCAST``, ``SO_KEEPALIVE``, ``SO_OOBINLINE`` settings, ``SO_TIMESTAMPING`` settings”h]”(hŒplace holder for sk_flags ”…”�”}”(hj“ h²hh³Nh´Nubjð)�”}”(hŒ ``SO_LINGER``”h]”hŒ SO_LINGER”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ ubhŒ (l_onoff), ”…”�”}”(hj“ h²hh³Nh´Nubjð)�”}”(hŒ``SO_BROADCAST``”h]”hŒ SO_BROADCAST”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ ubhŒ, ”…”�”}”(hj“ h²hh³Nh´Nubjð)�”}”(hŒ``SO_KEEPALIVE``”h]”hŒ SO_KEEPALIVE”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ ubhŒ, ”…”�”}”(hj“ h²hh³Nh´Nubjð)�”}”(hŒ``SO_OOBINLINE``”h]”hŒ SO_OOBINLINE”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ ubhŒ settings, ”…”�”}”(hj“ h²hh³Nh´Nubjð)�”}”(hŒ``SO_TIMESTAMPING``”h]”hŒSO_TIMESTAMPING”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ ubhŒ settings”…”�”}”(hj“ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KŒhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j� h´KŽhjgubjä)�”}”(hŒb``skc_listener`` connection request listener socket (aka rsk_listener) [union with **skc_flags**] ”h]”(jê)�”}”(hŒ``skc_listener``”h]”jð)�”}”(hj h]”hŒ skc_listener”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K�hj ubj)�”}”(hhh]”jl)�”}”(hŒPconnection request listener socket (aka rsk_listener) [union with **skc_flags**]”h]”(hŒBconnection request listener socket (aka rsk_listener) [union with ”…”�”}”(hj' h²hh³Nh´Nubj›)�”}”(hŒ **skc_flags**”h]”hŒ skc_flags”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj' ubhŒ]”…”�”}”(hj' h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K�hj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j# h´K�hjgubjä)�”}”(hŒ``skc_tw_dr`` (aka tw_dr) ptr to :c:type:`struct inet_timewait_death_row ` [union with **skc_flags**] ”h]”(jê)�”}”(hŒ ``skc_tw_dr``”h]”jð)�”}”(hjZ h]”hŒ skc_tw_dr”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K’hjT ubj)�”}”(hhh]”jl)�”}”(hŒp(aka tw_dr) ptr to :c:type:`struct inet_timewait_death_row ` [union with **skc_flags**]”h]”(hŒ(aka tw_dr) ptr to ”…”�”}”(hjs h²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct inet_timewait_death_row `”h]”jð)�”}”(hj} h]”hŒstruct inet_timewait_death_row”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj{ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œinet_timewait_death_row”uh1hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K‘hjs ubhŒ [union with ”…”�”}”(hjs h²hh³Nh´Nubj›)�”}”(hŒ **skc_flags**”h]”hŒ skc_flags”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjs ubhŒ]”…”�”}”(hjs h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jš h´K‘hjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jo h´K’hjgubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjÉ h]”hŒ{unnamed_union}”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjà ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÞ h´Khjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÞ h´Khjgubjä)�”}”(hŒB``skc_node`` main hash linkage for various protocol lookup tables ”h]”(jê)�”}”(hŒ ``skc_node``”h]”jð)�”}”(hjh]”hŒskc_node”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kˆhjü ubj)�”}”(hhh]”jl)�”}”(hŒ4main hash linkage for various protocol lookup tables”h]”hŒ4main hash linkage for various protocol lookup tables”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Kˆhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Kˆhjgubjä)�”}”(hŒ-``skc_nulls_node`` main hash linkage for TCP ”h]”(jê)�”}”(hŒ``skc_nulls_node``”h]”jð)�”}”(hj;h]”hŒskc_nulls_node”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K‰hj5ubj)�”}”(hhh]”jl)�”}”(hŒmain hash linkage for TCP”h]”hŒmain hash linkage for TCP”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jPh´K‰hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jPh´K‰hjgubjä)�”}”(hŒ=``skc_tx_queue_mapping`` tx queue number for this connection ”h]”(jê)�”}”(hŒ``skc_tx_queue_mapping``”h]”jð)�”}”(hjth]”hŒskc_tx_queue_mapping”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KŠhjnubj)�”}”(hhh]”jl)�”}”(hŒ#tx queue number for this connection”h]”hŒ#tx queue number for this connection”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‰h´KŠhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰h´KŠhjgubjä)�”}”(hŒ=``skc_rx_queue_mapping`` rx queue number for this connection ”h]”(jê)�”}”(hŒ``skc_rx_queue_mapping``”h]”jð)�”}”(hj­h]”hŒskc_rx_queue_mapping”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K‹hj§ubj)�”}”(hhh]”jl)�”}”(hŒ#rx queue number for this connection”h]”hŒ#rx queue number for this connection”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂh´K‹hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂh´K‹hjgubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjæh]”hŒ{unnamed_union}”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjàubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jûh´Khjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jûh´Khjgubjä)�”}”(hŒB``skc_incoming_cpu`` record/match cpu processing incoming packets ”h]”(jê)�”}”(hŒ``skc_incoming_cpu``”h]”jð)�”}”(hjh]”hŒskc_incoming_cpu”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K“hjubj)�”}”(hhh]”jl)�”}”(hŒ,record/match cpu processing incoming packets”h]”hŒ,record/match cpu processing incoming packets”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4h´K“hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4h´K“hjgubjä)�”}”(hŒn``skc_rcv_wnd`` (aka rsk_rcv_wnd) TCP receive window size (possibly scaled) [union with **skc_incoming_cpu**] ”h]”(jê)�”}”(hŒ``skc_rcv_wnd``”h]”jð)�”}”(hjXh]”hŒ skc_rcv_wnd”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K•hjRubj)�”}”(hhh]”jl)�”}”(hŒ](aka rsk_rcv_wnd) TCP receive window size (possibly scaled) [union with **skc_incoming_cpu**]”h]”(hŒH(aka rsk_rcv_wnd) TCP receive window size (possibly scaled) [union with ”…”�”}”(hjqh²hh³Nh´Nubj›)�”}”(hŒ**skc_incoming_cpu**”h]”hŒskc_incoming_cpu”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjqubhŒ]”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K”hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmh´K•hjgubjä)�”}”(hŒj``skc_tw_rcv_nxt`` (aka tw_rcv_nxt) TCP window next expected seq number [union with **skc_incoming_cpu**] ”h]”(jê)�”}”(hŒ``skc_tw_rcv_nxt``”h]”jð)�”}”(hj¤h]”hŒskc_tw_rcv_nxt”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K—hjžubj)�”}”(hhh]”jl)�”}”(hŒV(aka tw_rcv_nxt) TCP window next expected seq number [union with **skc_incoming_cpu**]”h]”(hŒA(aka tw_rcv_nxt) TCP window next expected seq number [union with ”…”�”}”(hj½h²hh³Nh´Nubj›)�”}”(hŒ**skc_incoming_cpu**”h]”hŒskc_incoming_cpu”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½ubhŒ]”…”�”}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K–hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹h´K—hjgubjä)�”}”(hŒ``skc_refcnt`` reference count”h]”(jê)�”}”(hŒ``skc_refcnt``”h]”jð)�”}”(hjðh]”hŒ skc_refcnt”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K—hjêubj)�”}”(hhh]”jl)�”}”(hŒreference count”h]”hŒreference count”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K˜hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´K—hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj3h]”hŒ Description”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K›hj" h²hubjÒ)�”}”(hŒzThis is the minimal network layer representation of sockets, the header for struct sock and struct inet_timewait_sock. ”h]”jl)�”}”(hŒvThis is the minimal network layer representation of sockets, the header for struct sock and struct inet_timewait_sock.”h]”hŒvThis is the minimal network layer representation of sockets, the header for struct sock and struct inet_timewait_sock.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K˜hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j[h´K˜hj" h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock (C struct)”Œc.sock”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsock”h]”j )�”}”(hŒ struct sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwh²hh³jˆh´Kžubj3)�”}”(hŒsock”h]”j9)�”}”(hjuh]”hŒsock”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjwh²hh³jˆh´Kžubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjsh²hh³jˆh´Kžubah}”(h]”jnah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jˆh´Kžhjph²hubjg)�”}”(hhh]”jl)�”}”(hŒ'network layer representation of sockets”h]”hŒ'network layer representation of sockets”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kõhjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjph²hh³jˆh´Kžubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jÕjŒjÕj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX¶4**Definition**:: struct sock { struct sock_common __sk_common; #define sk_node __sk_common.skc_node; #define sk_nulls_node __sk_common.skc_nulls_node; #define sk_refcnt __sk_common.skc_refcnt; #define sk_tx_queue_mapping __sk_common.skc_tx_queue_mapping; #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING; #define sk_rx_queue_mapping __sk_common.skc_rx_queue_mapping; #endif; #define sk_dontcopy_begin __sk_common.skc_dontcopy_begin; #define sk_dontcopy_end __sk_common.skc_dontcopy_end; #define sk_hash __sk_common.skc_hash; #define sk_portpair __sk_common.skc_portpair; #define sk_num __sk_common.skc_num; #define sk_dport __sk_common.skc_dport; #define sk_addrpair __sk_common.skc_addrpair; #define sk_daddr __sk_common.skc_daddr; #define sk_rcv_saddr __sk_common.skc_rcv_saddr; #define sk_family __sk_common.skc_family; #define sk_state __sk_common.skc_state; #define sk_reuse __sk_common.skc_reuse; #define sk_reuseport __sk_common.skc_reuseport; #define sk_ipv6only __sk_common.skc_ipv6only; #define sk_net_refcnt __sk_common.skc_net_refcnt; #define sk_bypass_prot_mem __sk_common.skc_bypass_prot_mem; #define sk_bound_dev_if __sk_common.skc_bound_dev_if; #define sk_bind_node __sk_common.skc_bind_node; #define sk_prot __sk_common.skc_prot; #define sk_net __sk_common.skc_net; #define sk_v6_daddr __sk_common.skc_v6_daddr; #define sk_v6_rcv_saddr __sk_common.skc_v6_rcv_saddr; #define sk_cookie __sk_common.skc_cookie; #define sk_incoming_cpu __sk_common.skc_incoming_cpu; #define sk_flags __sk_common.skc_flags; #define sk_rxhash __sk_common.skc_rxhash; ; atomic_t sk_drops; __s32 sk_peek_off; struct sk_buff_head sk_error_queue; struct sk_buff_head sk_receive_queue; struct { atomic_t rmem_alloc; int len; struct sk_buff *head; struct sk_buff *tail; } sk_backlog; #define sk_rmem_alloc sk_backlog.rmem_alloc; ; ; struct dst_entry *sk_rx_dst; int sk_rx_dst_ifindex; u32 sk_rx_dst_cookie; #ifdef CONFIG_NET_RX_BUSY_POLL; unsigned int sk_ll_usec; unsigned int sk_napi_id; u16 sk_busy_poll_budget; u8 sk_prefer_busy_poll; #endif; u8 sk_userlocks; int sk_rcvbuf; struct sk_filter *sk_filter; union { struct socket_wq *sk_wq; }; void (*sk_data_ready)(struct sock *sk); long sk_rcvtimeo; int sk_rcvlowat; ; ; int sk_err; struct socket *sk_socket; #ifdef CONFIG_MEMCG; struct mem_cgroup *sk_memcg; #endif; #ifdef CONFIG_XFRM; struct xfrm_policy *sk_policy[2]; #endif; #if IS_ENABLED(CONFIG_INET_PSP); struct psp_assoc *psp_assoc; #endif; ; ; socket_lock_t sk_lock; u32 sk_reserved_mem; int sk_forward_alloc; u32 sk_tsflags; ; ; int sk_write_pending; atomic_t sk_omem_alloc; int sk_err_soft; int sk_wmem_queued; refcount_t sk_wmem_alloc; unsigned long sk_tsq_flags; union { struct sk_buff *sk_send_head; struct rb_root tcp_rtx_queue; }; struct sk_buff_head sk_write_queue; struct page_frag sk_frag; union { struct timer_list sk_timer; struct timer_list tcp_retransmit_timer; struct timer_list mptcp_retransmit_timer; }; unsigned long sk_pacing_rate; atomic_t sk_zckey; atomic_t sk_tskey; unsigned long sk_tx_queue_mapping_jiffies; ; ; u32 sk_dst_pending_confirm; u32 sk_pacing_status; unsigned long sk_max_pacing_rate; long sk_sndtimeo; u32 sk_priority; u32 sk_mark; kuid_t sk_uid; u16 sk_protocol; u16 sk_type; struct dst_entry *sk_dst_cache; netdev_features_t sk_route_caps; #ifdef CONFIG_SOCK_VALIDATE_XMIT; struct sk_buff* (*sk_validate_xmit_skb)(struct sock *sk, struct net_device *dev, struct sk_buff *skb); #endif; u16 sk_gso_type; u16 sk_gso_max_segs; unsigned int sk_gso_max_size; gfp_t sk_allocation; u32 sk_txhash; int sk_sndbuf; u8 sk_pacing_shift; bool sk_use_task_frag; ; u8 sk_gso_disabled : 1, sk_kern_sock : 1, sk_no_check_tx : 1, sk_no_check_rx : 1; u8 sk_shutdown; unsigned long sk_lingertime; struct proto *sk_prot_creator; rwlock_t sk_callback_lock; u32 sk_ack_backlog; u32 sk_max_ack_backlog; u64 sk_ino; spinlock_t sk_peer_lock; int sk_bind_phc; struct pid *sk_peer_pid[( PIDTYPE_TGID) + 1]; const struct cred *sk_peer_cred; ktime_t sk_stamp; #if BITS_PER_LONG==32; seqlock_t sk_stamp_seq; #endif; int sk_disconnects; union { u8 sk_txrehash; u8 sk_scm_recv_flags; struct { u8 sk_scm_credentials : 1, sk_scm_security : 1, sk_scm_pidfd : 1, sk_scm_rights : 1, sk_scm_pidfd_thread : 1, sk_scm_unused : 3; }; }; u8 sk_clockid; u8 sk_txtime_deadline_mode : 1, sk_txtime_report_errors : 1, sk_txtime_unused : 6; #define SK_BPF_CB_FLAG_TEST(SK, FLAG) ((SK)->sk_bpf_cb_flags & (FLAG)); u8 sk_bpf_cb_flags; void *sk_user_data; #ifdef CONFIG_SECURITY; void *sk_security; #endif; struct sock_cgroup_data sk_cgrp_data; void (*sk_state_change)(struct sock *sk); void (*sk_write_space)(struct sock *sk); void (*sk_error_report)(struct sock *sk); int (*sk_backlog_rcv)(struct sock *sk, struct sk_buff *skb); void (*sk_destruct)(struct sock *sk); struct sock_reuseport *sk_reuseport_cb; #ifdef CONFIG_BPF_SYSCALL; struct bpf_local_storage *sk_bpf_storage; #endif; struct numa_drop_counters *sk_drop_counters; union { struct rcu_head sk_rcu; freeptr_t sk_freeptr; }; netns_tracker ns_tracker; struct xarray sk_user_frags; #if IS_ENABLED(CONFIG_PROVE_LOCKING) && IS_ENABLED(CONFIG_MODULES); struct module *sk_owner; #endif; }; **Members** ``__sk_common`` shared layout with inet_timewait_sock ``sk_drops`` raw/udp drops counter ``sk_peek_off`` current peek_offset value ``sk_error_queue`` rarely used ``sk_receive_queue`` incoming packets ``sk_backlog`` always used with the per-socket spinlock held ``sk_rx_dst`` receive input route used by early demux ``sk_rx_dst_ifindex`` ifindex for **sk_rx_dst** ``sk_rx_dst_cookie`` cookie for **sk_rx_dst** ``sk_ll_usec`` usecs to busypoll when there is no data ``sk_napi_id`` id of the last napi context to receive data for sk ``sk_busy_poll_budget`` napi processing budget when busypolling ``sk_prefer_busy_poll`` prefer busypolling over softirq processing ``sk_userlocks`` ``SO_SNDBUF`` and ``SO_RCVBUF`` settings ``sk_rcvbuf`` size of receive buffer in bytes ``sk_filter`` socket filtering instructions ``{unnamed_union}`` anonymous ``sk_wq`` sock wait queue and async head ``sk_data_ready`` callback to indicate there is data to be processed ``sk_rcvtimeo`` ``SO_RCVTIMEO`` setting ``sk_rcvlowat`` ``SO_RCVLOWAT`` setting ``sk_err`` last error ``sk_socket`` Identd and reporting IO signals ``sk_memcg`` this socket's memory cgroup association ``sk_policy`` flow policy ``psp_assoc`` PSP association, if socket is PSP-secured ``sk_lock`` synchronizer ``sk_reserved_mem`` space reserved and non-reclaimable for the socket ``sk_forward_alloc`` space allocated forward ``sk_tsflags`` SO_TIMESTAMPING flags ``sk_write_pending`` a write to stream socket waits to start ``sk_omem_alloc`` "o" is "option" or "other" ``sk_err_soft`` errors that don't cause failure but are the cause of a persistent failure not just 'timed out' ``sk_wmem_queued`` persistent queue size ``sk_wmem_alloc`` transmit queue bytes committed ``sk_tsq_flags`` TCP Small Queues flags ``{unnamed_union}`` anonymous ``sk_send_head`` front of stuff to transmit ``tcp_rtx_queue`` TCP re-transmit queue [union with **sk_send_head**] ``sk_write_queue`` Packet sending queue ``sk_frag`` cached page frag ``{unnamed_union}`` anonymous ``sk_timer`` sock cleanup timer ``tcp_retransmit_timer`` tcp retransmit timer ``mptcp_retransmit_timer`` mptcp retransmit timer ``sk_pacing_rate`` Pacing rate (if supported by transport/packet scheduler) ``sk_zckey`` counter to order MSG_ZEROCOPY notifications ``sk_tskey`` counter to disambiguate concurrent tstamp requests ``sk_tx_queue_mapping_jiffies`` time in jiffies of last **sk_tx_queue_mapping** refresh. ``sk_dst_pending_confirm`` need to confirm neighbour ``sk_pacing_status`` Pacing status (requested, handled by sch_fq) ``sk_max_pacing_rate`` Maximum pacing rate (``SO_MAX_PACING_RATE``) ``sk_sndtimeo`` ``SO_SNDTIMEO`` setting ``sk_priority`` ``SO_PRIORITY`` setting ``sk_mark`` generic packet mark ``sk_uid`` user id of owner ``sk_protocol`` which protocol this socket belongs in this network family ``sk_type`` socket type (``SOCK_STREAM``, etc) ``sk_dst_cache`` destination cache ``sk_route_caps`` route capabilities (e.g. ``NETIF_F_TSO``) ``sk_validate_xmit_skb`` ptr to an optional validate function ``sk_gso_type`` GSO type (e.g. ``SKB_GSO_TCPV4``) ``sk_gso_max_segs`` Maximum number of GSO segments ``sk_gso_max_size`` Maximum GSO segment size to build ``sk_allocation`` allocation mode ``sk_txhash`` computed flow hash for use on transmit ``sk_sndbuf`` size of send buffer in bytes ``sk_pacing_shift`` scaling factor for TCP Small Queues ``sk_use_task_frag`` allow sk_page_frag() to use current->task_frag. Sockets that can be used under memory reclaim should set this to false. ``sk_gso_disabled`` if set, NETIF_F_GSO_MASK is forbidden. ``sk_kern_sock`` True if sock is using kernel lock classes ``sk_no_check_tx`` ``SO_NO_CHECK`` setting, set checksum in TX packets ``sk_no_check_rx`` allow zero checksum in RX packets ``sk_shutdown`` mask of ``SEND_SHUTDOWN`` and/or ``RCV_SHUTDOWN`` ``sk_lingertime`` ``SO_LINGER`` l_linger setting ``sk_prot_creator`` sk_prot of original sock creator (see ipv6_setsockopt, IPV6_ADDRFORM for instance) ``sk_callback_lock`` used with the callbacks in the end of this struct ``sk_ack_backlog`` current listen backlog ``sk_max_ack_backlog`` listen backlog set in listen() ``sk_ino`` inode number (zero if orphaned) ``sk_peer_lock`` lock protecting **sk_peer_pid** and **sk_peer_cred** ``sk_bind_phc`` SO_TIMESTAMPING bind PHC index of PTP virtual clock for timestamping ``sk_peer_pid`` :c:type:`struct pid ` for this socket's peer, by pid type ``sk_peer_cred`` ``SO_PEERCRED`` setting ``sk_stamp`` time stamp of last packet received ``sk_stamp_seq`` lock for accessing sk_stamp on 32 bit architectures only ``sk_disconnects`` number of disconnect operations performed on this sock ``{unnamed_union}`` anonymous ``sk_txrehash`` enable TX hash rethink ``sk_scm_recv_flags`` all flags used by scm_recv() ``{unnamed_struct}`` anonymous ``sk_scm_credentials`` flagged by SO_PASSCRED to recv SCM_CREDENTIALS ``sk_scm_security`` flagged by SO_PASSSEC to recv SCM_SECURITY ``sk_scm_pidfd`` flagged by SO_PASSPIDFD to recv SCM_PIDFD ``sk_scm_rights`` flagged by SO_PASSRIGHTS to recv SCM_RIGHTS ``sk_scm_pidfd_thread`` flagged by SO_PASSPIDFD_THREAD to recv a thread SCM_PIDFD ``sk_scm_unused`` unused flags for scm_recv() ``sk_clockid`` clockid used by time-based scheduling (SO_TXTIME) ``sk_txtime_deadline_mode`` set deadline mode for SO_TXTIME ``sk_txtime_report_errors`` set report errors mode for SO_TXTIME ``sk_txtime_unused`` unused txtime flags ``sk_bpf_cb_flags`` used in bpf_setsockopt() ``sk_user_data`` RPC layer private data. Write-protected by **sk_callback_lock**. ``sk_security`` used by security modules ``sk_cgrp_data`` cgroup data for this cgroup ``sk_state_change`` callback to indicate change in the state of the sock ``sk_write_space`` callback to indicate there is bf sending space available ``sk_error_report`` callback to indicate errors (e.g. ``MSG_ERRQUEUE``) ``sk_backlog_rcv`` callback to process the backlog ``sk_destruct`` called at sock freeing time, i.e. when all refcnt == 0 ``sk_reuseport_cb`` reuseport group container ``sk_bpf_storage`` ptr to cache and control for bpf_sk_storage ``sk_drop_counters`` optional pointer to numa_drop_counters ``{unnamed_union}`` anonymous ``sk_rcu`` used during RCU grace period ``sk_freeptr`` used for SLAB_TYPESAFE_BY_RCU managed sockets ``ns_tracker`` tracker for netns reference ``sk_user_frags`` xarray of pages the user is holding a reference on. ``sk_owner`` reference to the real owner of the socket that calls sock_lock_init_class_and_name().”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÝubhŒ:”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KùhjÙubj¶)�”}”(hXgstruct sock { struct sock_common __sk_common; #define sk_node __sk_common.skc_node; #define sk_nulls_node __sk_common.skc_nulls_node; #define sk_refcnt __sk_common.skc_refcnt; #define sk_tx_queue_mapping __sk_common.skc_tx_queue_mapping; #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING; #define sk_rx_queue_mapping __sk_common.skc_rx_queue_mapping; #endif; #define sk_dontcopy_begin __sk_common.skc_dontcopy_begin; #define sk_dontcopy_end __sk_common.skc_dontcopy_end; #define sk_hash __sk_common.skc_hash; #define sk_portpair __sk_common.skc_portpair; #define sk_num __sk_common.skc_num; #define sk_dport __sk_common.skc_dport; #define sk_addrpair __sk_common.skc_addrpair; #define sk_daddr __sk_common.skc_daddr; #define sk_rcv_saddr __sk_common.skc_rcv_saddr; #define sk_family __sk_common.skc_family; #define sk_state __sk_common.skc_state; #define sk_reuse __sk_common.skc_reuse; #define sk_reuseport __sk_common.skc_reuseport; #define sk_ipv6only __sk_common.skc_ipv6only; #define sk_net_refcnt __sk_common.skc_net_refcnt; #define sk_bypass_prot_mem __sk_common.skc_bypass_prot_mem; #define sk_bound_dev_if __sk_common.skc_bound_dev_if; #define sk_bind_node __sk_common.skc_bind_node; #define sk_prot __sk_common.skc_prot; #define sk_net __sk_common.skc_net; #define sk_v6_daddr __sk_common.skc_v6_daddr; #define sk_v6_rcv_saddr __sk_common.skc_v6_rcv_saddr; #define sk_cookie __sk_common.skc_cookie; #define sk_incoming_cpu __sk_common.skc_incoming_cpu; #define sk_flags __sk_common.skc_flags; #define sk_rxhash __sk_common.skc_rxhash; ; atomic_t sk_drops; __s32 sk_peek_off; struct sk_buff_head sk_error_queue; struct sk_buff_head sk_receive_queue; struct { atomic_t rmem_alloc; int len; struct sk_buff *head; struct sk_buff *tail; } sk_backlog; #define sk_rmem_alloc sk_backlog.rmem_alloc; ; ; struct dst_entry *sk_rx_dst; int sk_rx_dst_ifindex; u32 sk_rx_dst_cookie; #ifdef CONFIG_NET_RX_BUSY_POLL; unsigned int sk_ll_usec; unsigned int sk_napi_id; u16 sk_busy_poll_budget; u8 sk_prefer_busy_poll; #endif; u8 sk_userlocks; int sk_rcvbuf; struct sk_filter *sk_filter; union { struct socket_wq *sk_wq; }; void (*sk_data_ready)(struct sock *sk); long sk_rcvtimeo; int sk_rcvlowat; ; ; int sk_err; struct socket *sk_socket; #ifdef CONFIG_MEMCG; struct mem_cgroup *sk_memcg; #endif; #ifdef CONFIG_XFRM; struct xfrm_policy *sk_policy[2]; #endif; #if IS_ENABLED(CONFIG_INET_PSP); struct psp_assoc *psp_assoc; #endif; ; ; socket_lock_t sk_lock; u32 sk_reserved_mem; int sk_forward_alloc; u32 sk_tsflags; ; ; int sk_write_pending; atomic_t sk_omem_alloc; int sk_err_soft; int sk_wmem_queued; refcount_t sk_wmem_alloc; unsigned long sk_tsq_flags; union { struct sk_buff *sk_send_head; struct rb_root tcp_rtx_queue; }; struct sk_buff_head sk_write_queue; struct page_frag sk_frag; union { struct timer_list sk_timer; struct timer_list tcp_retransmit_timer; struct timer_list mptcp_retransmit_timer; }; unsigned long sk_pacing_rate; atomic_t sk_zckey; atomic_t sk_tskey; unsigned long sk_tx_queue_mapping_jiffies; ; ; u32 sk_dst_pending_confirm; u32 sk_pacing_status; unsigned long sk_max_pacing_rate; long sk_sndtimeo; u32 sk_priority; u32 sk_mark; kuid_t sk_uid; u16 sk_protocol; u16 sk_type; struct dst_entry *sk_dst_cache; netdev_features_t sk_route_caps; #ifdef CONFIG_SOCK_VALIDATE_XMIT; struct sk_buff* (*sk_validate_xmit_skb)(struct sock *sk, struct net_device *dev, struct sk_buff *skb); #endif; u16 sk_gso_type; u16 sk_gso_max_segs; unsigned int sk_gso_max_size; gfp_t sk_allocation; u32 sk_txhash; int sk_sndbuf; u8 sk_pacing_shift; bool sk_use_task_frag; ; u8 sk_gso_disabled : 1, sk_kern_sock : 1, sk_no_check_tx : 1, sk_no_check_rx : 1; u8 sk_shutdown; unsigned long sk_lingertime; struct proto *sk_prot_creator; rwlock_t sk_callback_lock; u32 sk_ack_backlog; u32 sk_max_ack_backlog; u64 sk_ino; spinlock_t sk_peer_lock; int sk_bind_phc; struct pid *sk_peer_pid[( PIDTYPE_TGID) + 1]; const struct cred *sk_peer_cred; ktime_t sk_stamp; #if BITS_PER_LONG==32; seqlock_t sk_stamp_seq; #endif; int sk_disconnects; union { u8 sk_txrehash; u8 sk_scm_recv_flags; struct { u8 sk_scm_credentials : 1, sk_scm_security : 1, sk_scm_pidfd : 1, sk_scm_rights : 1, sk_scm_pidfd_thread : 1, sk_scm_unused : 3; }; }; u8 sk_clockid; u8 sk_txtime_deadline_mode : 1, sk_txtime_report_errors : 1, sk_txtime_unused : 6; #define SK_BPF_CB_FLAG_TEST(SK, FLAG) ((SK)->sk_bpf_cb_flags & (FLAG)); u8 sk_bpf_cb_flags; void *sk_user_data; #ifdef CONFIG_SECURITY; void *sk_security; #endif; struct sock_cgroup_data sk_cgrp_data; void (*sk_state_change)(struct sock *sk); void (*sk_write_space)(struct sock *sk); void (*sk_error_report)(struct sock *sk); int (*sk_backlog_rcv)(struct sock *sk, struct sk_buff *skb); void (*sk_destruct)(struct sock *sk); struct sock_reuseport *sk_reuseport_cb; #ifdef CONFIG_BPF_SYSCALL; struct bpf_local_storage *sk_bpf_storage; #endif; struct numa_drop_counters *sk_drop_counters; union { struct rcu_head sk_rcu; freeptr_t sk_freeptr; }; netns_tracker ns_tracker; struct xarray sk_user_frags; #if IS_ENABLED(CONFIG_PROVE_LOCKING) && IS_ENABLED(CONFIG_MODULES); struct module *sk_owner; #endif; };”h]”hXgstruct sock { struct sock_common __sk_common; #define sk_node __sk_common.skc_node; #define sk_nulls_node __sk_common.skc_nulls_node; #define sk_refcnt __sk_common.skc_refcnt; #define sk_tx_queue_mapping __sk_common.skc_tx_queue_mapping; #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING; #define sk_rx_queue_mapping __sk_common.skc_rx_queue_mapping; #endif; #define sk_dontcopy_begin __sk_common.skc_dontcopy_begin; #define sk_dontcopy_end __sk_common.skc_dontcopy_end; #define sk_hash __sk_common.skc_hash; #define sk_portpair __sk_common.skc_portpair; #define sk_num __sk_common.skc_num; #define sk_dport __sk_common.skc_dport; #define sk_addrpair __sk_common.skc_addrpair; #define sk_daddr __sk_common.skc_daddr; #define sk_rcv_saddr __sk_common.skc_rcv_saddr; #define sk_family __sk_common.skc_family; #define sk_state __sk_common.skc_state; #define sk_reuse __sk_common.skc_reuse; #define sk_reuseport __sk_common.skc_reuseport; #define sk_ipv6only __sk_common.skc_ipv6only; #define sk_net_refcnt __sk_common.skc_net_refcnt; #define sk_bypass_prot_mem __sk_common.skc_bypass_prot_mem; #define sk_bound_dev_if __sk_common.skc_bound_dev_if; #define sk_bind_node __sk_common.skc_bind_node; #define sk_prot __sk_common.skc_prot; #define sk_net __sk_common.skc_net; #define sk_v6_daddr __sk_common.skc_v6_daddr; #define sk_v6_rcv_saddr __sk_common.skc_v6_rcv_saddr; #define sk_cookie __sk_common.skc_cookie; #define sk_incoming_cpu __sk_common.skc_incoming_cpu; #define sk_flags __sk_common.skc_flags; #define sk_rxhash __sk_common.skc_rxhash; ; atomic_t sk_drops; __s32 sk_peek_off; struct sk_buff_head sk_error_queue; struct sk_buff_head sk_receive_queue; struct { atomic_t rmem_alloc; int len; struct sk_buff *head; struct sk_buff *tail; } sk_backlog; #define sk_rmem_alloc sk_backlog.rmem_alloc; ; ; struct dst_entry *sk_rx_dst; int sk_rx_dst_ifindex; u32 sk_rx_dst_cookie; #ifdef CONFIG_NET_RX_BUSY_POLL; unsigned int sk_ll_usec; unsigned int sk_napi_id; u16 sk_busy_poll_budget; u8 sk_prefer_busy_poll; #endif; u8 sk_userlocks; int sk_rcvbuf; struct sk_filter *sk_filter; union { struct socket_wq *sk_wq; }; void (*sk_data_ready)(struct sock *sk); long sk_rcvtimeo; int sk_rcvlowat; ; ; int sk_err; struct socket *sk_socket; #ifdef CONFIG_MEMCG; struct mem_cgroup *sk_memcg; #endif; #ifdef CONFIG_XFRM; struct xfrm_policy *sk_policy[2]; #endif; #if IS_ENABLED(CONFIG_INET_PSP); struct psp_assoc *psp_assoc; #endif; ; ; socket_lock_t sk_lock; u32 sk_reserved_mem; int sk_forward_alloc; u32 sk_tsflags; ; ; int sk_write_pending; atomic_t sk_omem_alloc; int sk_err_soft; int sk_wmem_queued; refcount_t sk_wmem_alloc; unsigned long sk_tsq_flags; union { struct sk_buff *sk_send_head; struct rb_root tcp_rtx_queue; }; struct sk_buff_head sk_write_queue; struct page_frag sk_frag; union { struct timer_list sk_timer; struct timer_list tcp_retransmit_timer; struct timer_list mptcp_retransmit_timer; }; unsigned long sk_pacing_rate; atomic_t sk_zckey; atomic_t sk_tskey; unsigned long sk_tx_queue_mapping_jiffies; ; ; u32 sk_dst_pending_confirm; u32 sk_pacing_status; unsigned long sk_max_pacing_rate; long sk_sndtimeo; u32 sk_priority; u32 sk_mark; kuid_t sk_uid; u16 sk_protocol; u16 sk_type; struct dst_entry *sk_dst_cache; netdev_features_t sk_route_caps; #ifdef CONFIG_SOCK_VALIDATE_XMIT; struct sk_buff* (*sk_validate_xmit_skb)(struct sock *sk, struct net_device *dev, struct sk_buff *skb); #endif; u16 sk_gso_type; u16 sk_gso_max_segs; unsigned int sk_gso_max_size; gfp_t sk_allocation; u32 sk_txhash; int sk_sndbuf; u8 sk_pacing_shift; bool sk_use_task_frag; ; u8 sk_gso_disabled : 1, sk_kern_sock : 1, sk_no_check_tx : 1, sk_no_check_rx : 1; u8 sk_shutdown; unsigned long sk_lingertime; struct proto *sk_prot_creator; rwlock_t sk_callback_lock; u32 sk_ack_backlog; u32 sk_max_ack_backlog; u64 sk_ino; spinlock_t sk_peer_lock; int sk_bind_phc; struct pid *sk_peer_pid[( PIDTYPE_TGID) + 1]; const struct cred *sk_peer_cred; ktime_t sk_stamp; #if BITS_PER_LONG==32; seqlock_t sk_stamp_seq; #endif; int sk_disconnects; union { u8 sk_txrehash; u8 sk_scm_recv_flags; struct { u8 sk_scm_credentials : 1, sk_scm_security : 1, sk_scm_pidfd : 1, sk_scm_rights : 1, sk_scm_pidfd_thread : 1, sk_scm_unused : 3; }; }; u8 sk_clockid; u8 sk_txtime_deadline_mode : 1, sk_txtime_report_errors : 1, sk_txtime_unused : 6; #define SK_BPF_CB_FLAG_TEST(SK, FLAG) ((SK)->sk_bpf_cb_flags & (FLAG)); u8 sk_bpf_cb_flags; void *sk_user_data; #ifdef CONFIG_SECURITY; void *sk_security; #endif; struct sock_cgroup_data sk_cgrp_data; void (*sk_state_change)(struct sock *sk); void (*sk_write_space)(struct sock *sk); void (*sk_error_report)(struct sock *sk); int (*sk_backlog_rcv)(struct sock *sk, struct sk_buff *skb); void (*sk_destruct)(struct sock *sk); struct sock_reuseport *sk_reuseport_cb; #ifdef CONFIG_BPF_SYSCALL; struct bpf_local_storage *sk_bpf_storage; #endif; struct numa_drop_counters *sk_drop_counters; union { struct rcu_head sk_rcu; freeptr_t sk_freeptr; }; netns_tracker ns_tracker; struct xarray sk_user_frags; #if IS_ENABLED(CONFIG_PROVE_LOCKING) && IS_ENABLED(CONFIG_MODULES); struct module *sk_owner; #endif; };”…”�”•}”hjúsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KûhjÙubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj h]”hŒMembers”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M·hjÙubjß)�”}”(hhh]”(jä)�”}”(hŒ6``__sk_common`` shared layout with inet_timewait_sock ”h]”(jê)�”}”(hŒ``__sk_common``”h]”jð)�”}”(hj*h]”hŒ __sk_common”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´K÷hj$ubj)�”}”(hhh]”jl)�”}”(hŒ%shared layout with inet_timewait_sock”h]”hŒ%shared layout with inet_timewait_sock”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?h´K÷hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?h´K÷hj!ubjä)�”}”(hŒ#``sk_drops`` raw/udp drops counter ”h]”(jê)�”}”(hŒ ``sk_drops``”h]”jð)�”}”(hjch]”hŒsk_drops”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M%hj]ubj)�”}”(hhh]”jl)�”}”(hŒraw/udp drops counter”h]”hŒraw/udp drops counter”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxh´M%hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxh´M%hj!ubjä)�”}”(hŒ*``sk_peek_off`` current peek_offset value ”h]”(jê)�”}”(hŒ``sk_peek_off``”h]”jð)�”}”(hjœh]”hŒ sk_peek_off”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MKhj–ubj)�”}”(hhh]”jl)�”}”(hŒcurrent peek_offset value”h]”hŒcurrent peek_offset value”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±h´MKhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±h´MKhj!ubjä)�”}”(hŒ``sk_error_queue`` rarely used ”h]”(jê)�”}”(hŒ``sk_error_queue``”h]”jð)�”}”(hjÕh]”hŒsk_error_queue”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjÏubj)�”}”(hhh]”jl)�”}”(hŒ rarely used”h]”hŒ rarely used”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêh´Mhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêh´Mhj!ubjä)�”}”(hŒ&``sk_receive_queue`` incoming packets ”h]”(jê)�”}”(hŒ``sk_receive_queue``”h]”jð)�”}”(hjh]”hŒsk_receive_queue”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒincoming packets”h]”hŒincoming packets”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#h´Mhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#h´Mhj!ubjä)�”}”(hŒ=``sk_backlog`` always used with the per-socket spinlock held ”h]”(jê)�”}”(hŒ``sk_backlog``”h]”jð)�”}”(hjGh]”hŒ sk_backlog”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjAubj)�”}”(hhh]”jl)�”}”(hŒ-always used with the per-socket spinlock held”h]”hŒ-always used with the per-socket spinlock held”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\h´Mhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\h´Mhj!ubjä)�”}”(hŒ6``sk_rx_dst`` receive input route used by early demux ”h]”(jê)�”}”(hŒ ``sk_rx_dst``”h]”jð)�”}”(hj€h]”hŒ sk_rx_dst”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kþhjzubj)�”}”(hhh]”jl)�”}”(hŒ'receive input route used by early demux”h]”hŒ'receive input route used by early demux”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•h´Kþhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•h´Kþhj!ubjä)�”}”(hŒ0``sk_rx_dst_ifindex`` ifindex for **sk_rx_dst** ”h]”(jê)�”}”(hŒ``sk_rx_dst_ifindex``”h]”jð)�”}”(hj¹h]”hŒsk_rx_dst_ifindex”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kÿhj³ubj)�”}”(hhh]”jl)�”}”(hŒifindex for **sk_rx_dst**”h]”(hŒ ifindex for ”…”�”}”(hjÒh²hh³Nh´Nubj›)�”}”(hŒ **sk_rx_dst**”h]”hŒ sk_rx_dst”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÎh´KÿhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÎh´Kÿhj!ubjä)�”}”(hŒ.``sk_rx_dst_cookie`` cookie for **sk_rx_dst** ”h]”(jê)�”}”(hŒ``sk_rx_dst_cookie``”h]”jð)�”}”(hjh]”hŒsk_rx_dst_cookie”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjúubj)�”}”(hhh]”jl)�”}”(hŒcookie for **sk_rx_dst**”h]”(hŒ cookie for ”…”�”}”(hjh²hh³Nh´Nubj›)�”}”(hŒ **sk_rx_dst**”h]”hŒ sk_rx_dst”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhj!ubjä)�”}”(hŒ7``sk_ll_usec`` usecs to busypoll when there is no data ”h]”(jê)�”}”(hŒ``sk_ll_usec``”h]”jð)�”}”(hjGh]”hŒ sk_ll_usec”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjAubj)�”}”(hhh]”jl)�”}”(hŒ'usecs to busypoll when there is no data”h]”hŒ'usecs to busypoll when there is no data”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\h´Mhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\h´Mhj!ubjä)�”}”(hŒB``sk_napi_id`` id of the last napi context to receive data for sk ”h]”(jê)�”}”(hŒ``sk_napi_id``”h]”jð)�”}”(hj€h]”hŒ sk_napi_id”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M hjzubj)�”}”(hhh]”jl)�”}”(hŒ2id of the last napi context to receive data for sk”h]”hŒ2id of the last napi context to receive data for sk”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•h´M hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•h´M hj!ubjä)�”}”(hŒ@``sk_busy_poll_budget`` napi processing budget when busypolling ”h]”(jê)�”}”(hŒ``sk_busy_poll_budget``”h]”jð)�”}”(hj¹h]”hŒsk_busy_poll_budget”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M,hj³ubj)�”}”(hhh]”jl)�”}”(hŒ'napi processing budget when busypolling”h]”hŒ'napi processing budget when busypolling”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÎh´M,hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÎh´M,hj!ubjä)�”}”(hŒC``sk_prefer_busy_poll`` prefer busypolling over softirq processing ”h]”(jê)�”}”(hŒ``sk_prefer_busy_poll``”h]”jð)�”}”(hjòh]”hŒsk_prefer_busy_poll”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M+hjìubj)�”}”(hhh]”jl)�”}”(hŒ*prefer busypolling over softirq processing”h]”hŒ*prefer busypolling over softirq processing”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M+hj!ubjä)�”}”(hŒ:``sk_userlocks`` ``SO_SNDBUF`` and ``SO_RCVBUF`` settings ”h]”(jê)�”}”(hŒ``sk_userlocks``”h]”jð)�”}”(hj+h]”hŒ sk_userlocks”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kùhj%ubj)�”}”(hhh]”jl)�”}”(hŒ(``SO_SNDBUF`` and ``SO_RCVBUF`` settings”h]”(jð)�”}”(hŒ ``SO_SNDBUF``”h]”hŒ SO_SNDBUF”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDubhŒ and ”…”�”}”(hjDh²hh³Nh´Nubjð)�”}”(hŒ ``SO_RCVBUF``”h]”hŒ SO_RCVBUF”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDubhŒ settings”…”�”}”(hjDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@h´KùhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@h´Kùhj!ubjä)�”}”(hŒ.``sk_rcvbuf`` size of receive buffer in bytes ”h]”(jê)�”}”(hŒ ``sk_rcvbuf``”h]”jð)�”}”(hj„h]”hŒ sk_rcvbuf”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kühj~ubj)�”}”(hhh]”jl)�”}”(hŒsize of receive buffer in bytes”h]”hŒsize of receive buffer in bytes”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™h´Kühjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™h´Kühj!ubjä)�”}”(hŒ,``sk_filter`` socket filtering instructions ”h]”(jê)�”}”(hŒ ``sk_filter``”h]”jð)�”}”(hj½h]”hŒ sk_filter”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M8hj·ubj)�”}”(hhh]”jl)�”}”(hŒsocket filtering instructions”h]”hŒsocket filtering instructions”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒh´M8hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒh´M8hj!ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjöh]”hŒ{unnamed_union}”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjðubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Khj!ubjä)�”}”(hŒ)``sk_wq`` sock wait queue and async head ”h]”(jê)�”}”(hŒ ``sk_wq``”h]”jð)�”}”(hj/h]”hŒsk_wq”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kýhj)ubj)�”}”(hhh]”jl)�”}”(hŒsock wait queue and async head”h]”hŒsock wait queue and async head”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jDh´KýhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jDh´Kýhj!ubjä)�”}”(hŒE``sk_data_ready`` callback to indicate there is data to be processed ”h]”(jê)�”}”(hŒ``sk_data_ready``”h]”jð)�”}”(hjhh]”hŒ sk_data_ready”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MUhjbubj)�”}”(hhh]”jl)�”}”(hŒ2callback to indicate there is data to be processed”h]”hŒ2callback to indicate there is data to be processed”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j}h´MUhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}h´MUhj!ubjä)�”}”(hŒ(``sk_rcvtimeo`` ``SO_RCVTIMEO`` setting ”h]”(jê)�”}”(hŒ``sk_rcvtimeo``”h]”jð)�”}”(hj¡h]”hŒ sk_rcvtimeo”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M4hj›ubj)�”}”(hhh]”jl)�”}”(hŒ``SO_RCVTIMEO`` setting”h]”(jð)�”}”(hŒ``SO_RCVTIMEO``”h]”hŒ SO_RCVTIMEO”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjºubhŒ setting”…”�”}”(hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¶h´M4hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶h´M4hj!ubjä)�”}”(hŒ(``sk_rcvlowat`` ``SO_RCVLOWAT`` setting ”h]”(jê)�”}”(hŒ``sk_rcvlowat``”h]”jð)�”}”(hjèh]”hŒ sk_rcvlowat”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M3hjâubj)�”}”(hhh]”jl)�”}”(hŒ``SO_RCVLOWAT`` setting”h]”(jð)�”}”(hŒ``SO_RCVLOWAT``”h]”hŒ SO_RCVLOWAT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubhŒ setting”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jýh´M3hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jýh´M3hj!ubjä)�”}”(hŒ``sk_err`` last error ”h]”(jê)�”}”(hŒ ``sk_err``”h]”jð)�”}”(hj/h]”hŒsk_err”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M"hj)ubj)�”}”(hhh]”jl)�”}”(hŒ last error”h]”hŒ last error”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jDh´M"hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jDh´M"hj!ubjä)�”}”(hŒ.``sk_socket`` Identd and reporting IO signals ”h]”(jê)�”}”(hŒ ``sk_socket``”h]”jð)�”}”(hjhh]”hŒ sk_socket”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MHhjbubj)�”}”(hhh]”jl)�”}”(hŒIdentd and reporting IO signals”h]”hŒIdentd and reporting IO signals”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j}h´MHhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}h´MHhj!ubjä)�”}”(hŒ5``sk_memcg`` this socket's memory cgroup association ”h]”(jê)�”}”(hŒ ``sk_memcg``”h]”jð)�”}”(hj¡h]”hŒsk_memcg”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MQhj›ubj)�”}”(hhh]”jl)�”}”(hŒ'this socket's memory cgroup association”h]”hŒ)this socket’s memory cgroup association”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¶h´MQhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶h´MQhj!ubjä)�”}”(hŒ``sk_policy`` flow policy ”h]”(jê)�”}”(hŒ ``sk_policy``”h]”jð)�”}”(hjÚh]”hŒ sk_policy”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjÔubj)�”}”(hhh]”jl)�”}”(hŒ flow policy”h]”hŒ flow policy”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jïh´Mhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jïh´Mhj!ubjä)�”}”(hŒ8``psp_assoc`` PSP association, if socket is PSP-secured ”h]”(jê)�”}”(hŒ ``psp_assoc``”h]”jð)�”}”(hjh]”hŒ psp_assoc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj ubj)�”}”(hhh]”jl)�”}”(hŒ)PSP association, if socket is PSP-secured”h]”hŒ)PSP association, if socket is PSP-secured”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j(h´Mhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j(h´Mhj!ubjä)�”}”(hŒ``sk_lock`` synchronizer ”h]”(jê)�”}”(hŒ ``sk_lock``”h]”jð)�”}”(hjLh]”hŒsk_lock”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KúhjFubj)�”}”(hhh]”jl)�”}”(hŒ synchronizer”h]”hŒ synchronizer”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jah´Kúhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jah´Kúhj!ubjä)�”}”(hŒF``sk_reserved_mem`` space reserved and non-reclaimable for the socket ”h]”(jê)�”}”(hŒ``sk_reserved_mem``”h]”jð)�”}”(hj…h]”hŒsk_reserved_mem”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M hjubj)�”}”(hhh]”jl)�”}”(hŒ1space reserved and non-reclaimable for the socket”h]”hŒ1space reserved and non-reclaimable for the socket”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jšh´M hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšh´M hj!ubjä)�”}”(hŒ-``sk_forward_alloc`` space allocated forward ”h]”(jê)�”}”(hŒ``sk_forward_alloc``”h]”jð)�”}”(hj¾h]”hŒsk_forward_alloc”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M hj¸ubj)�”}”(hhh]”jl)�”}”(hŒspace allocated forward”h]”hŒspace allocated forward”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓh´M hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓh´M hj!ubjä)�”}”(hŒ%``sk_tsflags`` SO_TIMESTAMPING flags ”h]”(jê)�”}”(hŒ``sk_tsflags``”h]”jð)�”}”(hj÷h]”hŒ sk_tsflags”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M>hjñubj)�”}”(hhh]”jl)�”}”(hŒSO_TIMESTAMPING flags”h]”hŒSO_TIMESTAMPING flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M>hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M>hj!ubjä)�”}”(hŒ=``sk_write_pending`` a write to stream socket waits to start ”h]”(jê)�”}”(hŒ``sk_write_pending``”h]”jð)�”}”(hj0h]”hŒsk_write_pending”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MRhj*ubj)�”}”(hhh]”jl)�”}”(hŒ'a write to stream socket waits to start”h]”hŒ'a write to stream socket waits to start”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jEh´MRhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEh´MRhj!ubjä)�”}”(hŒ-``sk_omem_alloc`` "o" is "option" or "other" ”h]”(jê)�”}”(hŒ``sk_omem_alloc``”h]”jð)�”}”(hjih]”hŒ sk_omem_alloc”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M hjcubj)�”}”(hhh]”jl)�”}”(hŒ"o" is "option" or "other"”h]”hŒ&“oâ€� is “optionâ€� or “otherâ€�”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~h´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~h´M hj!ubjä)�”}”(hŒo``sk_err_soft`` errors that don't cause failure but are the cause of a persistent failure not just 'timed out' ”h]”(jê)�”}”(hŒ``sk_err_soft``”h]”jð)�”}”(hj¢h]”hŒ sk_err_soft”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M$hjœubj)�”}”(hhh]”jl)�”}”(hŒ^errors that don't cause failure but are the cause of a persistent failure not just 'timed out'”h]”hŒderrors that don’t cause failure but are the cause of a persistent failure not just ‘timed out’”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M#hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·h´M$hj!ubjä)�”}”(hŒ)``sk_wmem_queued`` persistent queue size ”h]”(jê)�”}”(hŒ``sk_wmem_queued``”h]”jð)�”}”(hjÜh]”hŒsk_wmem_queued”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M hjÖubj)�”}”(hhh]”jl)�”}”(hŒpersistent queue size”h]”hŒpersistent queue size”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñh´M hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñh´M hj!ubjä)�”}”(hŒ1``sk_wmem_alloc`` transmit queue bytes committed ”h]”(jê)�”}”(hŒ``sk_wmem_alloc``”h]”jð)�”}”(hjh]”hŒ sk_wmem_alloc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒtransmit queue bytes committed”h]”hŒtransmit queue bytes committed”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*h´Mhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*h´Mhj!ubjä)�”}”(hŒ(``sk_tsq_flags`` TCP Small Queues flags ”h]”(jê)�”}”(hŒ``sk_tsq_flags``”h]”jð)�”}”(hjNh]”hŒ sk_tsq_flags”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjHubj)�”}”(hhh]”jl)�”}”(hŒTCP Small Queues flags”h]”hŒTCP Small Queues flags”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jch´Mhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jch´Mhj!ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj‡h]”hŒ{unnamed_union}”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khj�ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœh´Khj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœh´Khj!ubjä)�”}”(hŒ,``sk_send_head`` front of stuff to transmit ”h]”(jê)�”}”(hŒ``sk_send_head``”h]”jð)�”}”(hjÀh]”hŒ sk_send_head”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MLhjºubj)�”}”(hhh]”jl)�”}”(hŒfront of stuff to transmit”h]”hŒfront of stuff to transmit”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕh´MLhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕh´MLhj!ubjä)�”}”(hŒF``tcp_rtx_queue`` TCP re-transmit queue [union with **sk_send_head**] ”h]”(jê)�”}”(hŒ``tcp_rtx_queue``”h]”jð)�”}”(hjùh]”hŒ tcp_rtx_queue”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MMhjóubj)�”}”(hhh]”jl)�”}”(hŒ3TCP re-transmit queue [union with **sk_send_head**]”h]”(hŒ"TCP re-transmit queue [union with ”…”�”}”(hjh²hh³Nh´Nubj›)�”}”(hŒ**sk_send_head**”h]”hŒ sk_send_head”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubhŒ]”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MMhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MMhj!ubjä)�”}”(hŒ(``sk_write_queue`` Packet sending queue ”h]”(jê)�”}”(hŒ``sk_write_queue``”h]”jð)�”}”(hjDh]”hŒsk_write_queue”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj>ubj)�”}”(hhh]”jl)�”}”(hŒPacket sending queue”h]”hŒPacket sending queue”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jYh´MhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYh´Mhj!ubjä)�”}”(hŒ``sk_frag`` cached page frag ”h]”(jê)�”}”(hŒ ``sk_frag``”h]”jð)�”}”(hj}h]”hŒsk_frag”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MJhjwubj)�”}”(hhh]”jl)�”}”(hŒcached page frag”h]”hŒcached page frag”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’h´MJhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’h´MJhj!ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hj¶h]”hŒ{unnamed_union}”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khj°ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËh´KhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËh´Khj!ubjä)�”}”(hŒ ``sk_timer`` sock cleanup timer ”h]”(jê)�”}”(hŒ ``sk_timer``”h]”jð)�”}”(hjïh]”hŒsk_timer”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M9hjéubj)�”}”(hhh]”jl)�”}”(hŒsock cleanup timer”h]”hŒsock cleanup timer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M9hj!ubjä)�”}”(hŒ.``tcp_retransmit_timer`` tcp retransmit timer ”h]”(jê)�”}”(hŒ``tcp_retransmit_timer``”h]”jð)�”}”(hj(h]”hŒtcp_retransmit_timer”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M:hj"ubj)�”}”(hhh]”jl)�”}”(hŒtcp retransmit timer”h]”hŒtcp retransmit timer”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=h´M:hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=h´M:hj!ubjä)�”}”(hŒ2``mptcp_retransmit_timer`` mptcp retransmit timer ”h]”(jê)�”}”(hŒ``mptcp_retransmit_timer``”h]”jð)�”}”(hjah]”hŒmptcp_retransmit_timer”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M;hj[ubj)�”}”(hhh]”jl)�”}”(hŒmptcp retransmit timer”h]”hŒmptcp retransmit timer”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvh´M;hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvh´M;hj!ubjä)�”}”(hŒL``sk_pacing_rate`` Pacing rate (if supported by transport/packet scheduler) ”h]”(jê)�”}”(hŒ``sk_pacing_rate``”h]”jð)�”}”(hjšh]”hŒsk_pacing_rate”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj”ubj)�”}”(hhh]”jl)�”}”(hŒ8Pacing rate (if supported by transport/packet scheduler)”h]”hŒ8Pacing rate (if supported by transport/packet scheduler)”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯h´Mhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯h´Mhj!ubjä)�”}”(hŒ9``sk_zckey`` counter to order MSG_ZEROCOPY notifications ”h]”(jê)�”}”(hŒ ``sk_zckey``”h]”jð)�”}”(hjÓh]”hŒsk_zckey”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MGhjÍubj)�”}”(hhh]”jl)�”}”(hŒ+counter to order MSG_ZEROCOPY notifications”h]”hŒ+counter to order MSG_ZEROCOPY notifications”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèh´MGhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèh´MGhj!ubjä)�”}”(hŒ@``sk_tskey`` counter to disambiguate concurrent tstamp requests ”h]”(jê)�”}”(hŒ ``sk_tskey``”h]”jð)�”}”(hj h]”hŒsk_tskey”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MEhjubj)�”}”(hhh]”jl)�”}”(hŒ2counter to disambiguate concurrent tstamp requests”h]”hŒ2counter to disambiguate concurrent tstamp requests”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!h´MEhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!h´MEhj!ubjä)�”}”(hŒY``sk_tx_queue_mapping_jiffies`` time in jiffies of last **sk_tx_queue_mapping** refresh. ”h]”(jê)�”}”(hŒ``sk_tx_queue_mapping_jiffies``”h]”jð)�”}”(hjEh]”hŒsk_tx_queue_mapping_jiffies”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MFhj?ubj)�”}”(hhh]”jl)�”}”(hŒ8time in jiffies of last **sk_tx_queue_mapping** refresh.”h]”(hŒtime in jiffies of last ”…”�”}”(hj^h²hh³Nh´Nubj›)�”}”(hŒ**sk_tx_queue_mapping**”h]”hŒsk_tx_queue_mapping”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^ubhŒ refresh.”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZh´MFhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZh´MFhj!ubjä)�”}”(hŒ5``sk_dst_pending_confirm`` need to confirm neighbour ”h]”(jê)�”}”(hŒ``sk_dst_pending_confirm``”h]”jð)�”}”(hj�h]”hŒsk_dst_pending_confirm”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjŠubj)�”}”(hhh]”jl)�”}”(hŒneed to confirm neighbour”h]”hŒneed to confirm neighbour”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¥h´Mhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥h´Mhj!ubjä)�”}”(hŒB``sk_pacing_status`` Pacing status (requested, handled by sch_fq) ”h]”(jê)�”}”(hŒ``sk_pacing_status``”h]”jð)�”}”(hjÉh]”hŒsk_pacing_status”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjÃubj)�”}”(hhh]”jl)�”}”(hŒ,Pacing status (requested, handled by sch_fq)”h]”hŒ,Pacing status (requested, handled by sch_fq)”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÞh´Mhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÞh´Mhj!ubjä)�”}”(hŒD``sk_max_pacing_rate`` Maximum pacing rate (``SO_MAX_PACING_RATE``) ”h]”(jê)�”}”(hŒ``sk_max_pacing_rate``”h]”jð)�”}”(hjh]”hŒsk_max_pacing_rate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjüubj)�”}”(hhh]”jl)�”}”(hŒ,Maximum pacing rate (``SO_MAX_PACING_RATE``)”h]”(hŒMaximum pacing rate (”…”�”}”(hjh²hh³Nh´Nubjð)�”}”(hŒ``SO_MAX_PACING_RATE``”h]”hŒSO_MAX_PACING_RATE”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubhŒ)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhj!ubjä)�”}”(hŒ(``sk_sndtimeo`` ``SO_SNDTIMEO`` setting ”h]”(jê)�”}”(hŒ``sk_sndtimeo``”h]”jð)�”}”(hjMh]”hŒ sk_sndtimeo”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M5hjGubj)�”}”(hhh]”jl)�”}”(hŒ``SO_SNDTIMEO`` setting”h]”(jð)�”}”(hŒ``SO_SNDTIMEO``”h]”hŒ SO_SNDTIMEO”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjfubhŒ setting”…”�”}”(hjfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbh´M5hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbh´M5hj!ubjä)�”}”(hŒ(``sk_priority`` ``SO_PRIORITY`` setting ”h]”(jê)�”}”(hŒ``sk_priority``”h]”jð)�”}”(hj”h]”hŒ sk_priority”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M-hjŽubj)�”}”(hhh]”jl)�”}”(hŒ``SO_PRIORITY`` setting”h]”(jð)�”}”(hŒ``SO_PRIORITY``”h]”hŒ SO_PRIORITY”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­ubhŒ setting”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©h´M-hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©h´M-hj!ubjä)�”}”(hŒ ``sk_mark`` generic packet mark ”h]”(jê)�”}”(hŒ ``sk_mark``”h]”jð)�”}”(hjÛh]”hŒsk_mark”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MOhjÕubj)�”}”(hhh]”jl)�”}”(hŒgeneric packet mark”h]”hŒgeneric packet mark”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jðh´MOhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðh´MOhj!ubjä)�”}”(hŒ``sk_uid`` user id of owner ”h]”(jê)�”}”(hŒ ``sk_uid``”h]”jð)�”}”(hjh]”hŒsk_uid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M)hjubj)�”}”(hhh]”jl)�”}”(hŒuser id of owner”h]”hŒuser id of owner”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)h´M)hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)h´M)hj!ubjä)�”}”(hŒJ``sk_protocol`` which protocol this socket belongs in this network family ”h]”(jê)�”}”(hŒ``sk_protocol``”h]”jð)�”}”(hjMh]”hŒ sk_protocol”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M/hjGubj)�”}”(hhh]”jl)�”}”(hŒ9which protocol this socket belongs in this network family”h]”hŒ9which protocol this socket belongs in this network family”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbh´M/hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbh´M/hj!ubjä)�”}”(hŒ/``sk_type`` socket type (``SOCK_STREAM``, etc) ”h]”(jê)�”}”(hŒ ``sk_type``”h]”jð)�”}”(hj†h]”hŒsk_type”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M.hj€ubj)�”}”(hhh]”jl)�”}”(hŒ"socket type (``SOCK_STREAM``, etc)”h]”(hŒ socket type (”…”�”}”(hjŸh²hh³Nh´Nubjð)�”}”(hŒ``SOCK_STREAM``”h]”hŒ SOCK_STREAM”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸubhŒ, etc)”…”�”}”(hjŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›h´M.hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›h´M.hj!ubjä)�”}”(hŒ#``sk_dst_cache`` destination cache ”h]”(jê)�”}”(hŒ``sk_dst_cache``”h]”jð)�”}”(hjÑh]”hŒ sk_dst_cache”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjËubj)�”}”(hhh]”jl)�”}”(hŒdestination cache”h]”hŒdestination cache”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæh´Mhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæh´Mhj!ubjä)�”}”(hŒ<``sk_route_caps`` route capabilities (e.g. ``NETIF_F_TSO``) ”h]”(jê)�”}”(hŒ``sk_route_caps``”h]”jð)�”}”(hj h]”hŒ sk_route_caps”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒ)route capabilities (e.g. ``NETIF_F_TSO``)”h]”(hŒroute capabilities (e.g. ”…”�”}”(hj#h²hh³Nh´Nubjð)�”}”(hŒ``NETIF_F_TSO``”h]”hŒ NETIF_F_TSO”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#ubhŒ)”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhj!ubjä)�”}”(hŒ>``sk_validate_xmit_skb`` ptr to an optional validate function ”h]”(jê)�”}”(hŒ``sk_validate_xmit_skb``”h]”jð)�”}”(hjUh]”hŒsk_validate_xmit_skb”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MYhjOubj)�”}”(hhh]”jl)�”}”(hŒ$ptr to an optional validate function”h]”hŒ$ptr to an optional validate function”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jjh´MYhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jjh´MYhj!ubjä)�”}”(hŒ2``sk_gso_type`` GSO type (e.g. ``SKB_GSO_TCPV4``) ”h]”(jê)�”}”(hŒ``sk_gso_type``”h]”jð)�”}”(hjŽh]”hŒ sk_gso_type”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjˆubj)�”}”(hhh]”jl)�”}”(hŒ!GSO type (e.g. ``SKB_GSO_TCPV4``)”h]”(hŒGSO type (e.g. ”…”�”}”(hj§h²hh³Nh´Nubjð)�”}”(hŒ``SKB_GSO_TCPV4``”h]”hŒ SKB_GSO_TCPV4”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§ubhŒ)”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£h´Mhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£h´Mhj!ubjä)�”}”(hŒ3``sk_gso_max_segs`` Maximum number of GSO segments ”h]”(jê)�”}”(hŒ``sk_gso_max_segs``”h]”jð)�”}”(hjÙh]”hŒsk_gso_max_segs”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjÓubj)�”}”(hhh]”jl)�”}”(hŒMaximum number of GSO segments”h]”hŒMaximum number of GSO segments”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîh´Mhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîh´Mhj!ubjä)�”}”(hŒ6``sk_gso_max_size`` Maximum GSO segment size to build ”h]”(jê)�”}”(hŒ``sk_gso_max_size``”h]”jð)�”}”(hj h]”hŒsk_gso_max_size”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj ubj)�”}”(hhh]”jl)�”}”(hŒ!Maximum GSO segment size to build”h]”hŒ!Maximum GSO segment size to build”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j' h´Mhj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j' h´Mhj!ubjä)�”}”(hŒ"``sk_allocation`` allocation mode ”h]”(jê)�”}”(hŒ``sk_allocation``”h]”jð)�”}”(hjK h]”hŒ sk_allocation”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjE ubj)�”}”(hhh]”jl)�”}”(hŒallocation mode”h]”hŒallocation mode”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j` h´Mhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j` h´Mhj!ubjä)�”}”(hŒ5``sk_txhash`` computed flow hash for use on transmit ”h]”(jê)�”}”(hŒ ``sk_txhash``”h]”jð)�”}”(hj„ h]”hŒ sk_txhash”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M6hj~ ubj)�”}”(hhh]”jl)�”}”(hŒ&computed flow hash for use on transmit”h]”hŒ&computed flow hash for use on transmit”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™ h´M6hjš ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™ h´M6hj!ubjä)�”}”(hŒ+``sk_sndbuf`` size of send buffer in bytes ”h]”(jê)�”}”(hŒ ``sk_sndbuf``”h]”jð)�”}”(hj½ h]”hŒ sk_sndbuf”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj» ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj· ubj)�”}”(hhh]”jl)�”}”(hŒsize of send buffer in bytes”h]”hŒsize of send buffer in bytes”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒ h´MhjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj· ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒ h´Mhj!ubjä)�”}”(hŒ8``sk_pacing_shift`` scaling factor for TCP Small Queues ”h]”(jê)�”}”(hŒ``sk_pacing_shift``”h]”jð)�”}”(hjö h]”hŒsk_pacing_shift”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjð ubj)�”}”(hhh]”jl)�”}”(hŒ#scaling factor for TCP Small Queues”h]”hŒ#scaling factor for TCP Small Queues”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j !h´Mhj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j !h´Mhj!ubjä)�”}”(hŒ�``sk_use_task_frag`` allow sk_page_frag() to use current->task_frag. Sockets that can be used under memory reclaim should set this to false. ”h]”(jê)�”}”(hŒ``sk_use_task_frag``”h]”jð)�”}”(hj/!h]”hŒsk_use_task_frag”…”�”}”(hj1!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MBhj)!ubj)�”}”(hhh]”jl)�”}”(hŒwallow sk_page_frag() to use current->task_frag. Sockets that can be used under memory reclaim should set this to false.”h]”hŒwallow sk_page_frag() to use current->task_frag. Sockets that can be used under memory reclaim should set this to false.”…”�”}”(hjH!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M@hjE!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jD!h´MBhj!ubjä)�”}”(hŒ;``sk_gso_disabled`` if set, NETIF_F_GSO_MASK is forbidden. ”h]”(jê)�”}”(hŒ``sk_gso_disabled``”h]”jð)�”}”(hji!h]”hŒsk_gso_disabled”…”�”}”(hjk!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjg!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhjc!ubj)�”}”(hhh]”jl)�”}”(hŒ&if set, NETIF_F_GSO_MASK is forbidden.”h]”hŒ&if set, NETIF_F_GSO_MASK is forbidden.”…”�”}”(hj‚!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~!h´Mhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~!h´Mhj!ubjä)�”}”(hŒ;``sk_kern_sock`` True if sock is using kernel lock classes ”h]”(jê)�”}”(hŒ``sk_kern_sock``”h]”jð)�”}”(hj¢!h]”hŒ sk_kern_sock”…”�”}”(hj¤!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Kûhjœ!ubj)�”}”(hhh]”jl)�”}”(hŒ)True if sock is using kernel lock classes”h]”hŒ)True if sock is using kernel lock classes”…”�”}”(hj»!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j·!h´Kûhj¸!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·!h´Kûhj!ubjä)�”}”(hŒG``sk_no_check_tx`` ``SO_NO_CHECK`` setting, set checksum in TX packets ”h]”(jê)�”}”(hŒ``sk_no_check_tx``”h]”jð)�”}”(hjÛ!h]”hŒsk_no_check_tx”…”�”}”(hjÝ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MhjÕ!ubj)�”}”(hhh]”jl)�”}”(hŒ3``SO_NO_CHECK`` setting, set checksum in TX packets”h]”(jð)�”}”(hŒ``SO_NO_CHECK``”h]”hŒ SO_NO_CHECK”…”�”}”(hjø!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjô!ubhŒ$ setting, set checksum in TX packets”…”�”}”(hjô!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jð!h´Mhjñ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jð!h´Mhj!ubjä)�”}”(hŒ5``sk_no_check_rx`` allow zero checksum in RX packets ”h]”(jê)�”}”(hŒ``sk_no_check_rx``”h]”jð)�”}”(hj""h]”hŒsk_no_check_rx”…”�”}”(hj$"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj"ubj)�”}”(hhh]”jl)�”}”(hŒ!allow zero checksum in RX packets”h]”hŒ!allow zero checksum in RX packets”…”�”}”(hj;"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7"h´Mhj8"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7"h´Mhj!ubjä)�”}”(hŒB``sk_shutdown`` mask of ``SEND_SHUTDOWN`` and/or ``RCV_SHUTDOWN`` ”h]”(jê)�”}”(hŒ``sk_shutdown``”h]”jð)�”}”(hj["h]”hŒ sk_shutdown”…”�”}”(hj]"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjY"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KøhjU"ubj)�”}”(hhh]”jl)�”}”(hŒ1mask of ``SEND_SHUTDOWN`` and/or ``RCV_SHUTDOWN``”h]”(hŒmask of ”…”�”}”(hjt"h²hh³Nh´Nubjð)�”}”(hŒ``SEND_SHUTDOWN``”h]”hŒ SEND_SHUTDOWN”…”�”}”(hj|"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt"ubhŒ and/or ”…”�”}”(hjt"h²hh³Nh´Nubjð)�”}”(hŒ``RCV_SHUTDOWN``”h]”hŒ RCV_SHUTDOWN”…”�”}”(hjŽ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jp"h´Køhjq"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jp"h´Køhj!ubjä)�”}”(hŒ1``sk_lingertime`` ``SO_LINGER`` l_linger setting ”h]”(jê)�”}”(hŒ``sk_lingertime``”h]”jð)�”}”(hj´"h]”hŒ sk_lingertime”…”�”}”(hj¶"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj®"ubj)�”}”(hhh]”jl)�”}”(hŒ``SO_LINGER`` l_linger setting”h]”(jð)�”}”(hŒ ``SO_LINGER``”h]”hŒ SO_LINGER”…”�”}”(hjÑ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍ"ubhŒ l_linger setting”…”�”}”(hjÍ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉ"h´MhjÊ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉ"h´Mhj!ubjä)�”}”(hŒg``sk_prot_creator`` sk_prot of original sock creator (see ipv6_setsockopt, IPV6_ADDRFORM for instance) ”h]”(jê)�”}”(hŒ``sk_prot_creator``”h]”jð)�”}”(hjû"h]”hŒsk_prot_creator”…”�”}”(hjý"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjù"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M!hjõ"ubj)�”}”(hhh]”jl)�”}”(hŒRsk_prot of original sock creator (see ipv6_setsockopt, IPV6_ADDRFORM for instance)”h]”hŒRsk_prot of original sock creator (see ipv6_setsockopt, IPV6_ADDRFORM for instance)”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#h´M!hj!ubjä)�”}”(hŒG``sk_callback_lock`` used with the callbacks in the end of this struct ”h]”(jê)�”}”(hŒ``sk_callback_lock``”h]”jð)�”}”(hj5#h]”hŒsk_callback_lock”…”�”}”(hj7#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj/#ubj)�”}”(hhh]”jl)�”}”(hŒ1used with the callbacks in the end of this struct”h]”hŒ1used with the callbacks in the end of this struct”…”�”}”(hjN#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jJ#h´MhjK#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJ#h´Mhj!ubjä)�”}”(hŒ*``sk_ack_backlog`` current listen backlog ”h]”(jê)�”}”(hŒ``sk_ack_backlog``”h]”jð)�”}”(hjn#h]”hŒsk_ack_backlog”…”�”}”(hjp#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjl#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M'hjh#ubj)�”}”(hhh]”jl)�”}”(hŒcurrent listen backlog”h]”hŒcurrent listen backlog”…”�”}”(hj‡#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒ#h´M'hj„#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒ#h´M'hj!ubjä)�”}”(hŒ6``sk_max_ack_backlog`` listen backlog set in listen() ”h]”(jê)�”}”(hŒ``sk_max_ack_backlog``”h]”jð)�”}”(hj§#h]”hŒsk_max_ack_backlog”…”�”}”(hj©#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M(hj¡#ubj)�”}”(hhh]”jl)�”}”(hŒlisten backlog set in listen()”h]”hŒlisten backlog set in listen()”…”�”}”(hjÀ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼#h´M(hj½#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼#h´M(hj!ubjä)�”}”(hŒ+``sk_ino`` inode number (zero if orphaned) ”h]”(jê)�”}”(hŒ ``sk_ino``”h]”jð)�”}”(hjà#h]”hŒsk_ino”…”�”}”(hjâ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M*hjÚ#ubj)�”}”(hhh]”jl)�”}”(hŒinode number (zero if orphaned)”h]”hŒinode number (zero if orphaned)”…”�”}”(hjù#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõ#h´M*hjö#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõ#h´M*hj!ubjä)�”}”(hŒF``sk_peer_lock`` lock protecting **sk_peer_pid** and **sk_peer_cred** ”h]”(jê)�”}”(hŒ``sk_peer_lock``”h]”jð)�”}”(hj$h]”hŒ sk_peer_lock”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M0hj$ubj)�”}”(hhh]”jl)�”}”(hŒ4lock protecting **sk_peer_pid** and **sk_peer_cred**”h]”(hŒlock protecting ”…”�”}”(hj2$h²hh³Nh´Nubj›)�”}”(hŒ**sk_peer_pid**”h]”hŒ sk_peer_pid”…”�”}”(hj:$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2$ubhŒ and ”…”�”}”(hj2$h²hh³Nh´Nubj›)�”}”(hŒ**sk_peer_cred**”h]”hŒ sk_peer_cred”…”�”}”(hjL$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.$h´M0hj/$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.$h´M0hj!ubjä)�”}”(hŒU``sk_bind_phc`` SO_TIMESTAMPING bind PHC index of PTP virtual clock for timestamping ”h]”(jê)�”}”(hŒ``sk_bind_phc``”h]”jð)�”}”(hjr$h]”hŒ sk_bind_phc”…”�”}”(hjt$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjp$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MDhjl$ubj)�”}”(hhh]”jl)�”}”(hŒDSO_TIMESTAMPING bind PHC index of PTP virtual clock for timestamping”h]”hŒDSO_TIMESTAMPING bind PHC index of PTP virtual clock for timestamping”…”�”}”(hj‹$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MChjˆ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡$h´MDhj!ubjä)�”}”(hŒO``sk_peer_pid`` :c:type:`struct pid ` for this socket's peer, by pid type ”h]”(jê)�”}”(hŒ``sk_peer_pid``”h]”jð)�”}”(hj¬$h]”hŒ sk_peer_pid”…”�”}”(hj®$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M1hj¦$ubj)�”}”(hhh]”jl)�”}”(hŒ>:c:type:`struct pid ` for this socket's peer, by pid type”h]”(h)�”}”(hŒ:c:type:`struct pid `”h]”jð)�”}”(hjË$h]”hŒ struct pid”…”�”}”(hjÍ$h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÉ$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œpid”uh1hh³jÁ$h´M1hjÅ$ubhŒ& for this socket’s peer, by pid type”…”�”}”(hjÅ$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ$h´M1hjÂ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ$h´M1hj!ubjä)�”}”(hŒ)``sk_peer_cred`` ``SO_PEERCRED`` setting ”h]”(jê)�”}”(hŒ``sk_peer_cred``”h]”jð)�”}”(hj%h]”hŒ sk_peer_cred”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M2hjþ$ubj)�”}”(hhh]”jl)�”}”(hŒ``SO_PEERCRED`` setting”h]”(jð)�”}”(hŒ``SO_PEERCRED``”h]”hŒ SO_PEERCRED”…”�”}”(hj!%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%ubhŒ setting”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%h´M2hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%h´M2hj!ubjä)�”}”(hŒ0``sk_stamp`` time stamp of last packet received ”h]”(jê)�”}”(hŒ ``sk_stamp``”h]”jð)�”}”(hjK%h]”hŒsk_stamp”…”�”}”(hjM%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjI%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M<hjE%ubj)�”}”(hhh]”jl)�”}”(hŒ"time stamp of last packet received”h]”hŒ"time stamp of last packet received”…”�”}”(hjd%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`%h´M<hja%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`%h´M<hj!ubjä)�”}”(hŒJ``sk_stamp_seq`` lock for accessing sk_stamp on 32 bit architectures only ”h]”(jê)�”}”(hŒ``sk_stamp_seq``”h]”jð)�”}”(hj„%h]”hŒ sk_stamp_seq”…”�”}”(hj†%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M=hj~%ubj)�”}”(hhh]”jl)�”}”(hŒ8lock for accessing sk_stamp on 32 bit architectures only”h]”hŒ8lock for accessing sk_stamp on 32 bit architectures only”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™%h´M=hjš%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™%h´M=hj!ubjä)�”}”(hŒJ``sk_disconnects`` number of disconnect operations performed on this sock ”h]”(jê)�”}”(hŒ``sk_disconnects``”h]”jð)�”}”(hj½%h]”hŒsk_disconnects”…”�”}”(hj¿%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MShj·%ubj)�”}”(hhh]”jl)�”}”(hŒ6number of disconnect operations performed on this sock”h]”hŒ6number of disconnect operations performed on this sock”…”�”}”(hjÖ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒ%h´MShjÓ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒ%h´MShj!ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjö%h]”hŒ{unnamed_union}”…”�”}”(hjø%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjô%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khjð%ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j &h´Khj &ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j &h´Khj!ubjä)�”}”(hŒ'``sk_txrehash`` enable TX hash rethink ”h]”(jê)�”}”(hŒ``sk_txrehash``”h]”jð)�”}”(hj/&h]”hŒ sk_txrehash”…”�”}”(hj1&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M7hj)&ubj)�”}”(hhh]”jl)�”}”(hŒenable TX hash rethink”h]”hŒenable TX hash rethink”…”�”}”(hjH&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jD&h´M7hjE&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jD&h´M7hj!ubjä)�”}”(hŒ3``sk_scm_recv_flags`` all flags used by scm_recv() ”h]”(jê)�”}”(hŒ``sk_scm_recv_flags``”h]”jð)�”}”(hjh&h]”hŒsk_scm_recv_flags”…”�”}”(hjj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjf&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mchjb&ubj)�”}”(hhh]”jl)�”}”(hŒall flags used by scm_recv()”h]”hŒall flags used by scm_recv()”…”�”}”(hj�&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j}&h´Mchj~&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}&h´Mchj!ubjä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hj¡&h]”hŒ{unnamed_struct}”…”�”}”(hj£&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Khj›&ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjº&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¶&h´Khj·&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶&h´Khj!ubjä)�”}”(hŒF``sk_scm_credentials`` flagged by SO_PASSCRED to recv SCM_CREDENTIALS ”h]”(jê)�”}”(hŒ``sk_scm_credentials``”h]”jð)�”}”(hjÚ&h]”hŒsk_scm_credentials”…”�”}”(hjÜ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjØ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MdhjÔ&ubj)�”}”(hhh]”jl)�”}”(hŒ.flagged by SO_PASSCRED to recv SCM_CREDENTIALS”h]”hŒ.flagged by SO_PASSCRED to recv SCM_CREDENTIALS”…”�”}”(hjó&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jï&h´Mdhjð&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jï&h´Mdhj!ubjä)�”}”(hŒ?``sk_scm_security`` flagged by SO_PASSSEC to recv SCM_SECURITY ”h]”(jê)�”}”(hŒ``sk_scm_security``”h]”jð)�”}”(hj'h]”hŒsk_scm_security”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mehj 'ubj)�”}”(hhh]”jl)�”}”(hŒ*flagged by SO_PASSSEC to recv SCM_SECURITY”h]”hŒ*flagged by SO_PASSSEC to recv SCM_SECURITY”…”�”}”(hj,'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j('h´Mehj)'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j('h´Mehj!ubjä)�”}”(hŒ;``sk_scm_pidfd`` flagged by SO_PASSPIDFD to recv SCM_PIDFD ”h]”(jê)�”}”(hŒ``sk_scm_pidfd``”h]”jð)�”}”(hjL'h]”hŒ sk_scm_pidfd”…”�”}”(hjN'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MfhjF'ubj)�”}”(hhh]”jl)�”}”(hŒ)flagged by SO_PASSPIDFD to recv SCM_PIDFD”h]”hŒ)flagged by SO_PASSPIDFD to recv SCM_PIDFD”…”�”}”(hje'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ja'h´Mfhjb'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ja'h´Mfhj!ubjä)�”}”(hŒ>``sk_scm_rights`` flagged by SO_PASSRIGHTS to recv SCM_RIGHTS ”h]”(jê)�”}”(hŒ``sk_scm_rights``”h]”jð)�”}”(hj…'h]”hŒ sk_scm_rights”…”�”}”(hj‡'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mghj'ubj)�”}”(hhh]”jl)�”}”(hŒ+flagged by SO_PASSRIGHTS to recv SCM_RIGHTS”h]”hŒ+flagged by SO_PASSRIGHTS to recv SCM_RIGHTS”…”�”}”(hjž'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jš'h´Mghj›'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jš'h´Mghj!ubjä)�”}”(hŒR``sk_scm_pidfd_thread`` flagged by SO_PASSPIDFD_THREAD to recv a thread SCM_PIDFD ”h]”(jê)�”}”(hŒ``sk_scm_pidfd_thread``”h]”jð)�”}”(hj¾'h]”hŒsk_scm_pidfd_thread”…”�”}”(hjÀ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhhj¸'ubj)�”}”(hhh]”jl)�”}”(hŒ9flagged by SO_PASSPIDFD_THREAD to recv a thread SCM_PIDFD”h]”hŒ9flagged by SO_PASSPIDFD_THREAD to recv a thread SCM_PIDFD”…”�”}”(hj×'h²hh³Nh´Nubah•^}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓ'h´MhhjÔ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓ'h´Mhhj!ubjä)�”}”(hŒ.``sk_scm_unused`` unused flags for scm_recv() ”h]”(jê)�”}”(hŒ``sk_scm_unused``”h]”jð)�”}”(hj÷'h]”hŒ sk_scm_unused”…”�”}”(hjù'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mihjñ'ubj)�”}”(hhh]”jl)�”}”(hŒunused flags for scm_recv()”h]”hŒunused flags for scm_recv()”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j (h´Mihj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j (h´Mihj!ubjä)�”}”(hŒA``sk_clockid`` clockid used by time-based scheduling (SO_TXTIME) ”h]”(jê)�”}”(hŒ``sk_clockid``”h]”jð)�”}”(hj0(h]”hŒ sk_clockid”…”�”}”(hj2(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M_hj*(ubj)�”}”(hhh]”jl)�”}”(hŒ1clockid used by time-based scheduling (SO_TXTIME)”h]”hŒ1clockid used by time-based scheduling (SO_TXTIME)”…”�”}”(hjI(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jE(h´M_hjF(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jE(h´M_hj!ubjä)�”}”(hŒ<``sk_txtime_deadline_mode`` set deadline mode for SO_TXTIME ”h]”(jê)�”}”(hŒ``sk_txtime_deadline_mode``”h]”jð)�”}”(hji(h]”hŒsk_txtime_deadline_mode”…”�”}”(hjk(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjg(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M`hjc(ubj)�”}”(hhh]”jl)�”}”(hŒset deadline mode for SO_TXTIME”h]”hŒset deadline mode for SO_TXTIME”…”�”}”(hj‚(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~(h´M`hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~(h´M`hj!ubjä)�”}”(hŒA``sk_txtime_report_errors`` set report errors mode for SO_TXTIME ”h]”(jê)�”}”(hŒ``sk_txtime_report_errors``”h]”jð)�”}”(hj¢(h]”hŒsk_txtime_report_errors”…”�”}”(hj¤(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mahjœ(ubj)�”}”(hhh]”jl)�”}”(hŒ$set report errors mode for SO_TXTIME”h]”hŒ$set report errors mode for SO_TXTIME”…”�”}”(hj»(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j·(h´Mahj¸(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·(h´Mahj!ubjä)�”}”(hŒ)``sk_txtime_unused`` unused txtime flags ”h]”(jê)�”}”(hŒ``sk_txtime_unused``”h]”jð)�”}”(hjÛ(h]”hŒsk_txtime_unused”…”�”}”(hjÝ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MbhjÕ(ubj)�”}”(hhh]”jl)�”}”(hŒunused txtime flags”h]”hŒunused txtime flags”…”�”}”(hjô(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jð(h´Mbhjñ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jð(h´Mbhj!ubjä)�”}”(hŒ-``sk_bpf_cb_flags`` used in bpf_setsockopt() ”h]”(jê)�”}”(hŒ``sk_bpf_cb_flags``”h]”jð)�”}”(hj)h]”hŒsk_bpf_cb_flags”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M?hj)ubj)�”}”(hhh]”jl)�”}”(hŒused in bpf_setsockopt()”h]”hŒused in bpf_setsockopt()”…”�”}”(hj-)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j))h´M?hj*)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j))h´M?hj!ubjä)�”}”(hŒR``sk_user_data`` RPC layer private data. Write-protected by **sk_callback_lock**. ”h]”(jê)�”}”(hŒ``sk_user_data``”h]”jð)�”}”(hjM)h]”hŒ sk_user_data”…”�”}”(hjO)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjK)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MIhjG)ubj)�”}”(hhh]”jl)�”}”(hŒ@RPC layer private data. Write-protected by **sk_callback_lock**.”h]”(hŒ+RPC layer private data. Write-protected by ”…”�”}”(hjf)h²hh³Nh´Nubj›)�”}”(hŒ**sk_callback_lock**”h]”hŒsk_callback_lock”…”�”}”(hjn)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjf)ubhŒ.”…”�”}”(hjf)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jb)h´MIhjc)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb)h´MIhj!ubjä)�”}”(hŒ)``sk_security`` used by security modules ”h]”(jê)�”}”(hŒ``sk_security``”h]”jð)�”}”(hj˜)h]”hŒ sk_security”…”�”}”(hjš)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MNhj’)ubj)�”}”(hhh]”jl)�”}”(hŒused by security modules”h]”hŒused by security modules”…”�”}”(hj±)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­)h´MNhj®)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­)h´MNhj!ubjä)�”}”(hŒ-``sk_cgrp_data`` cgroup data for this cgroup ”h]”(jê)�”}”(hŒ``sk_cgrp_data``”h]”jð)�”}”(hjÑ)h]”hŒ sk_cgrp_data”…”�”}”(hjÓ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MPhjË)ubj)�”}”(hhh]”jl)�”}”(hŒcgroup data for this cgroup”h]”hŒcgroup data for this cgroup”…”�”}”(hjê)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæ)h´MPhjç)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæ)h´MPhj!ubjä)�”}”(hŒI``sk_state_change`` callback to indicate change in the state of the sock ”h]”(jê)�”}”(hŒ``sk_state_change``”h]”jð)�”}”(hj *h]”hŒsk_state_change”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MThj*ubj)�”}”(hhh]”jl)�”}”(hŒ4callback to indicate change in the state of the sock”h]”hŒ4callback to indicate change in the state of the sock”…”�”}”(hj#*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*h´MThj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*h´MThj!ubjä)�”}”(hŒL``sk_write_space`` callback to indicate there is bf sending space available ”h]”(jê)�”}”(hŒ``sk_write_space``”h]”jð)�”}”(hjC*h]”hŒsk_write_space”…”�”}”(hjE*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjA*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MVhj=*ubj)�”}”(hhh]”jl)�”}”(hŒ8callback to indicate there is bf sending space available”h]”hŒ8callback to indicate there is bf sending space available”…”�”}”(hj\*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jX*h´MVhjY*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jX*h´MVhj!ubjä)�”}”(hŒH``sk_error_report`` callback to indicate errors (e.g. ``MSG_ERRQUEUE``) ”h]”(jê)�”}”(hŒ``sk_error_report``”h]”jð)�”}”(hj|*h]”hŒsk_error_report”…”�”}”(hj~*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjz*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MWhjv*ubj)�”}”(hhh]”jl)�”}”(hŒ3callback to indicate errors (e.g. ``MSG_ERRQUEUE``)”h]”(hŒ"callback to indicate errors (e.g. ”…”�”}”(hj•*h²hh³Nh´Nubjð)�”}”(hŒ``MSG_ERRQUEUE``”h]”hŒ MSG_ERRQUEUE”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•*ubhŒ)”…”�”}”(hj•*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘*h´MWhj’*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘*h´MWhj!ubjä)�”}”(hŒ3``sk_backlog_rcv`` callback to process the backlog ”h]”(jê)�”}”(hŒ``sk_backlog_rcv``”h]”jð)�”}”(hjÇ*h]”hŒsk_backlog_rcv”…”�”}”(hjÉ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MXhjÁ*ubj)�”}”(hhh]”jl)�”}”(hŒcallback to process the backlog”h]”hŒcallback to process the backlog”…”�”}”(hjà*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜ*h´MXhjÝ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜ*h´MXhj!ubjä)�”}”(hŒG``sk_destruct`` called at sock freeing time, i.e. when all refcnt == 0 ”h]”(jê)�”}”(hŒ``sk_destruct``”h]”jð)�”}”(hj+h]”hŒ sk_destruct”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MZhjú*ubj)�”}”(hhh]”jl)�”}”(hŒ6called at sock freeing time, i.e. when all refcnt == 0”h]”hŒ6called at sock freeing time, i.e. when all refcnt == 0”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+h´MZhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+h´MZhj!ubjä)�”}”(hŒ.``sk_reuseport_cb`` reuseport group container ”h]”(jê)�”}”(hŒ``sk_reuseport_cb``”h]”jð)�”}”(hj9+h]”hŒsk_reuseport_cb”…”�”}”(hj;+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M[hj3+ubj)�”}”(hhh]”jl)�”}”(hŒreuseport group container”h]”hŒreuseport group container”…”�”}”(hjR+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jN+h´M[hjO+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jN+h´M[hj!ubjä)�”}”(hŒ?``sk_bpf_storage`` ptr to cache and control for bpf_sk_storage ”h]”(jê)�”}”(hŒ``sk_bpf_storage``”h]”jð)�”}”(hjr+h]”hŒsk_bpf_storage”…”�”}”(hjt+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjp+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M\hjl+ubj)�”}”(hhh]”jl)�”}”(hŒ+ptr to cache and control for bpf_sk_storage”h]”hŒ+ptr to cache and control for bpf_sk_storage”…”�”}”(hj‹+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡+h´M\hjˆ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡+h´M\hj!ubjä)�”}”(hŒ<``sk_drop_counters`` optional pointer to numa_drop_counters ”h]”(jê)�”}”(hŒ``sk_drop_counters``”h]”jð)�”}”(hj«+h]”hŒsk_drop_counters”…”�”}”(hj­+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M&hj¥+ubj)�”}”(hhh]”jl)�”}”(hŒ&optional pointer to numa_drop_counters”h]”hŒ&optional pointer to numa_drop_counters”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀ+h´M&hjÁ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀ+h´M&hj!ubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjä+h]”hŒ{unnamed_union}”…”�”}”(hjæ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´KhjÞ+ubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjý+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jù+h´Khjú+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jù+h´Khj!ubjä)�”}”(hŒ(``sk_rcu`` used during RCU grace period ”h]”(jê)�”}”(hŒ ``sk_rcu``”h]”jð)�”}”(hj,h]”hŒsk_rcu”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M]hj,ubj)�”}”(hhh]”jl)�”}”(hŒused during RCU grace period”h]”hŒused during RCU grace period”…”�”}”(hj6,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2,h´M]hj3,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2,h´M]hj!ubjä)�”}”(hŒ=``sk_freeptr`` used for SLAB_TYPESAFE_BY_RCU managed sockets ”h]”(jê)�”}”(hŒ``sk_freeptr``”h]”jð)�”}”(hjV,h]”hŒ sk_freeptr”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjT,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M^hjP,ubj)�”}”(hhh]”jl)�”}”(hŒ-used for SLAB_TYPESAFE_BY_RCU managed sockets”h]”hŒ-used for SLAB_TYPESAFE_BY_RCU managed sockets”…”�”}”(hjo,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jk,h´M^hjl,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jk,h´M^hj!ubjä)�”}”(hŒ+``ns_tracker`` tracker for netns reference ”h]”(jê)�”}”(hŒ``ns_tracker``”h]”jð)�”}”(hj�,h]”hŒ ns_tracker”…”�”}”(hj‘,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mjhj‰,ubj)�”}”(hhh]”jl)�”}”(hŒtracker for netns reference”h]”hŒtracker for netns reference”…”�”}”(hj¨,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤,h´Mjhj¥,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤,h´Mjhj!ubjä)�”}”(hŒF``sk_user_frags`` xarray of pages the user is holding a reference on. ”h]”(jê)�”}”(hŒ``sk_user_frags``”h]”jð)�”}”(hjÈ,h]”hŒ sk_user_frags”…”�”}”(hjÊ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MkhjÂ,ubj)�”}”(hhh]”jl)�”}”(hŒ3xarray of pages the user is holding a reference on.”h]”hŒ3xarray of pages the user is holding a reference on.”…”�”}”(hjá,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝ,h´MkhjÞ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝ,h´Mkhj!ubjä)�”}”(hŒb``sk_owner`` reference to the real owner of the socket that calls sock_lock_init_class_and_name().”h]”(jê)�”}”(hŒ ``sk_owner``”h]”jð)�”}”(hj-h]”hŒsk_owner”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mlhjû,ubj)�”}”(hhh]”jl)�”}”(hŒUreference to the real owner of the socket that calls sock_lock_init_class_and_name().”h]”hŒUreference to the real owner of the socket that calls sock_lock_init_class_and_name().”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j-h´Mlhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjû,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-h´Mlhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#sk_user_data_is_nocopy (C function)”Œc.sk_user_data_is_nocopy”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3bool sk_user_data_is_nocopy (const struct sock *sk)”h]”j )�”}”(hŒ2bool sk_user_data_is_nocopy(const struct sock *sk)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjZ-h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjV-h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjV-h²hh³jg-h´M‚ubj3)�”}”(hŒsk_user_data_is_nocopy”h]”j9)�”}”(hŒsk_user_data_is_nocopy”h]”hŒsk_user_data_is_nocopy”…”�”}”(hjz-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv-ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjV-h²hh³jg-h´M‚ubj¡ )�”}”(hŒ(const struct sock *sk)”h]”j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj–-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’-ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj±-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’-ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjÏ-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌ-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑ-Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j|-sbŒc.sk_user_data_is_nocopy”†”asbuh1hhj’-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’-ubj )�”}”(hj h]”hŒ*”…”�”}”(hjý-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’-ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ-ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjV-h²hh³jg-h´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjR-h²hh³jg-h´M‚ubah}”(h]”jM-ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jg-h´M‚hjO-h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Test if sk_user_data pointer must not be copied”h]”hŒ/Test if sk_user_data pointer must not be copied”…”�”}”(hj4.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M‚hj1.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjO-h²hh³jg-h´M‚ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jL.jŒjL.j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ2**Parameters** ``const struct sock *sk`` socket”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjV.h]”hŒ Parameters”…”�”}”(hjX.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjT.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M†hjP.ubjß)�”}”(hhh]”jä)�”}”(hŒ ``const struct sock *sk`` socket”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hju.h]”hŒconst struct sock *sk”…”�”}”(hjw.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjs.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mˆhjo.ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjŽ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mƒhj‹.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠ.h´Mˆhjl.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjP.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ2__locked_read_sk_user_data_with_flags (C function)”Œ'c.__locked_read_sk_user_data_with_flags”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUvoid * __locked_read_sk_user_data_with_flags (const struct sock *sk, uintptr_t flags)”h]”j )�”}”(hŒSvoid *__locked_read_sk_user_data_with_flags(const struct sock *sk, uintptr_t flags)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÏ.h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjË.h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjË.h²hh³jÝ.h´M�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjì.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjË.h²hh³jÝ.h´M�ubj3)�”}”(hŒ%__locked_read_sk_user_data_with_flags”h]”j9)�”}”(hŒ%__locked_read_sk_user_data_with_flags”h]”hŒ%__locked_read_sk_user_data_with_flags”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù.ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjË.h²hh³jÝ.h´M�ubj¡ )�”}”(hŒ((const struct sock *sk, uintptr_t flags)”h]”(j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj4/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjR/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjO/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jT/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÿ.sbŒ'c.__locked_read_sk_user_data_with_flags”†”asbuh1hhj/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj€/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj/ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/ubj§ )�”}”(hŒuintptr_t flags”h]”(h)�”}”(hhh]”j9)�”}”(hŒ uintptr_t”h]”hŒ uintptr_t”…”�”}”(hj©/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jn/Œ'c.__locked_read_sk_user_data_with_flags”†”asbuh1hhj¢/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢/ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÕ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjË.h²hh³jÝ.h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÇ.h²hh³jÝ.h´M�ubah}”(h]”jÂ.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÝ.h´M�hjÄ.h²hubjg)�”}”(hhh]”jl)�”}”(hŒareturn the pointer only if argument flags all has been set in sk_user_data. Otherwise return NULL”h]”hŒareturn the pointer only if argument flags all has been set in sk_user_data. Otherwise return NULL”…”�”}”(hjÿ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M�hjü/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÄ.h²hh³jÝ.h´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j0jŒj0j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ–**Parameters** ``const struct sock *sk`` socket ``uintptr_t flags`` flag bits **Description** The caller must be holding sk->sk_callback_lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj!0h]”hŒ Parameters”…”�”}”(hj#0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M‘hj0ubjß)�”}”(hhh]”(jä)�”}”(hŒ!``const struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hj@0h]”hŒconst struct sock *sk”…”�”}”(hjB0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M‘hj:0ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjY0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jU0h´M‘hjV0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jU0h´M‘hj70ubjä)�”}”(hŒ``uintptr_t flags`` flag bits ”h]”(jê)�”}”(hŒ``uintptr_t flags``”h]”jð)�”}”(hjy0h]”hŒuintptr_t flags”…”�”}”(hj{0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M’hjs0ubj)�”}”(hhh]”jl)�”}”(hŒ flag bits”h]”hŒ flag bits”…”�”}”(hj’0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽ0h´M’hj�0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ0h´M’hj70ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj0ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj´0h]”hŒ Description”…”�”}”(hj¶0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M”hj0ubjl)�”}”(hŒ0The caller must be holding sk->sk_callback_lock.”h]”hŒ0The caller must be holding sk->sk_callback_lock.”…”�”}”(hjÊ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M“hj0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ6__rcu_dereference_sk_user_data_with_flags (C function)”Œ+c.__rcu_dereference_sk_user_data_with_flags”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYvoid * __rcu_dereference_sk_user_data_with_flags (const struct sock *sk, uintptr_t flags)”h]”j )�”}”(hŒWvoid *__rcu_dereference_sk_user_data_with_flags(const struct sock *sk, uintptr_t flags)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjù0h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõ0h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ0h²hh³j1h´M¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõ0h²hh³j1h´M¦ubj3)�”}”(hŒ)__rcu_dereference_sk_user_data_with_flags”h]”j9)�”}”(hŒ)__rcu_dereference_sk_user_data_with_flags”h]”hŒ)__rcu_dereference_sk_user_data_with_flags”…”�”}”(hj'1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#1ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjõ0h²hh³j1h´M¦ubj¡ )�”}”(hŒ((const struct sock *sk, uintptr_t flags)”h]”(j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjC1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?1ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj^1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?1ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj|1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjy1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j~1Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j)1sbŒ+c.__rcu_dereference_sk_user_data_with_flags”†”asbuh1hhj?1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?1ubj )�”}”(hj h]”hŒ*”…”�”}”(hjª1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?1ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj·1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj;1ubj§ )�”}”(hŒuintptr_t flags”h]”(h)�”}”(hhh]”j9)�”}”(hŒ uintptr_t”h]”hŒ uintptr_t”…”�”}”(hjÓ1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐ1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÕ1Œmodname”NŒ classname”Njå jè )�”}”jë ]”j˜1Œ+c.__rcu_dereference_sk_user_data_with_flags”†”asbuh1hhjÌ1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌ1ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÿ1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj;1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjõ0h²hh³j1h´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjñ0h²hh³j1h´M¦ubah}”(h]”jì0ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j1h´M¦hjî0h²hubjg)�”}”(hhh]”jl)�”}”(hŒareturn the pointer only if argument flags all has been set in sk_user_data. Otherwise return NULL”h]”hŒareturn the pointer only if argument flags all has been set in sk_user_data. Otherwise return NULL”…”�”}”(hj)2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M¦hj&2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjî0h²hh³j1h´M¦ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jA2jŒjA2j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒS**Parameters** ``const struct sock *sk`` socket ``uintptr_t flags`` flag bits”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjK2h]”hŒ Parameters”…”�”}”(hjM2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjI2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MªhjE2ubjß)�”}”(hhh]”(jä)�”}”(hŒ!``const struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hjj2h]”hŒconst struct sock *sk”…”�”}”(hjl2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjh2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mªhjd2ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjƒ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2h´Mªhj€2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2h´Mªhja2ubjä)�”}”(hŒ``uintptr_t flags`` flag bits”h]”(jê)�”}”(hŒ``uintptr_t flags``”h]”jð)�”}”(hj£2h]”hŒuintptr_t flags”…”�”}”(hj¥2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M¬hj�2ubj)�”}”(hhh]”jl)�”}”(hŒ flag bits”h]”hŒ flag bits”…”�”}”(hj¼2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M«hj¹2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸2h´M¬hja2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjE2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&sk_for_each_entry_offset_rcu (C macro)”Œc.sk_for_each_entry_offset_rcu”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsk_for_each_entry_offset_rcu”h]”j )�”}”(hŒsk_for_each_entry_offset_rcu”h]”j3)�”}”(hŒsk_for_each_entry_offset_rcu”h]”j9)�”}”(hj÷2h]”hŒsk_for_each_entry_offset_rcu”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý2ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjù2h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÊubah}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjõ2h²hh³j3h´MÊubah}”(h]”jð2ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j3h´MÊhjò2h²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jfhjò2h²hh³j3h´MÊubeh}”(h]”h ]”(j…Œmacro”eh"]”h$]”h&]”jŠj…j‹j-3jŒj-3j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubjl)�”}”(hŒ:``sk_for_each_entry_offset_rcu (tpos, pos, head, offset)``”h]”jð)�”}”(hj33h]”hŒ6sk_for_each_entry_offset_rcu (tpos, pos, head, offset)”…”�”}”(hj53h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj13ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÌhj" h²hubjÒ)�”}”(hŒ-iterate over a list at a given struct offset ”h]”jl)�”}”(hŒ,iterate over a list at a given struct offset”h]”hŒ,iterate over a list at a given struct offset”…”�”}”(hjM3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÊhjI3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j[3h´MÊhj" h²hubj‘)�”}”(hŒé**Parameters** ``tpos`` the type * to use as a loop cursor. ``pos`` the :c:type:`struct hlist_node ` to use as a loop cursor. ``head`` the head for your list. ``offset`` offset of hlist_node within the struct.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh3h]”hŒ Parameters”…”�”}”(hjj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjf3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÎhjb3ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``tpos`` the type * to use as a loop cursor. ”h]”(jê)�”}”(hŒ``tpos``”h]”jð)�”}”(hj‡3h]”hŒtpos”…”�”}”(hj‰3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MËhj�3ubj)�”}”(hhh]”jl)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœ3h´MËhj�3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœ3h´MËhj~3ubjä)�”}”(hŒN``pos`` the :c:type:`struct hlist_node ` to use as a loop cursor. ”h]”(jê)�”}”(hŒ``pos``”h]”jð)�”}”(hjÀ3h]”hŒpos”…”�”}”(hjÂ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÌhjº3ubj)�”}”(hhh]”jl)�”}”(hŒEthe :c:type:`struct hlist_node ` to use as a loop cursor.”h]”(hŒthe ”…”�”}”(hjÙ3h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct hlist_node `”h]”jð)�”}”(hjã3h]”hŒstruct hlist_node”…”�”}”(hjå3h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjá3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ hlist_node”uh1hh³jÕ3h´MÌhjÙ3ubhŒ to use as a loop cursor.”…”�”}”(hjÙ3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕ3h´MÌhjÖ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕ3h´MÌhj~3ubjä)�”}”(hŒ!``head`` the head for your list. ”h]”(jê)�”}”(hŒ``head``”h]”jð)�”}”(hj4h]”hŒhead”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÍhj4ubj)�”}”(hhh]”jl)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj54h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j14h´MÍhj24ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j14h´MÍhj~3ubjä)�”}”(hŒ2``offset`` offset of hlist_node within the struct.”h]”(jê)�”}”(hŒ ``offset``”h]”jð)�”}”(hjU4h]”hŒoffset”…”�”}”(hjW4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjS4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÏhjO4ubj)�”}”(hhh]”jl)�”}”(hŒ'offset of hlist_node within the struct.”h]”hŒ'offset of hlist_node within the struct.”…”�”}”(hjn4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÎhjk4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jj4h´MÏhj~3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjb3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒSOCK_CONNECT_BIND (C macro)”Œc.SOCK_CONNECT_BIND”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSOCK_CONNECT_BIND”h]”j )�”}”(hŒSOCK_CONNECT_BIND”h]”j3)�”}”(hŒSOCK_CONNECT_BIND”h]”j9)�”}”(hj©4h]”hŒSOCK_CONNECT_BIND”…”�”}”(hj³4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯4ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj«4h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mþubah}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj§4h²hh³jÆ4h´Mþubah}”(h]”j¢4ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÆ4h´Mþhj¤4h²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¤4h²hh³jÆ4h´Mþubeh}”(h]”h ]”(j…Œmacro”eh"]”h$]”h&]”jŠj…j‹jß4jŒjß4j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubjl)�”}”(hŒ``SOCK_CONNECT_BIND``”h]”jð)�”}”(hjå4h]”hŒSOCK_CONNECT_BIND”…”�”}”(hjç4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjã4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mhj" h²hubjÒ)�”}”(hŒJ:c:type:`sock->sk_userlocks ` flag for auto-bind at connect() time ”h]”jl)�”}”(hŒH:c:type:`sock->sk_userlocks ` flag for auto-bind at connect() time”h]”(h)�”}”(hŒ#:c:type:`sock->sk_userlocks `”h]”jð)�”}”(hj5h]”hŒsock->sk_userlocks”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsock”uh1hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mþhjÿ4ubhŒ% flag for auto-bind at connect() time”…”�”}”(hjÿ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"5h´Mþhjû4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j"5h´Mþhj" h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒlock_sock_fast (C function)”Œc.lock_sock_fast”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ%bool lock_sock_fast (struct sock *sk)”h]”j )�”}”(hŒ$bool lock_sock_fast(struct sock *sk)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjL5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjH5h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjH5h²hh³jY5h´MÅubj3)�”}”(hŒlock_sock_fast”h]”j9)�”}”(hŒlock_sock_fast”h]”hŒlock_sock_fast”…”�”}”(hjl5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh5ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjH5h²hh³jY5h´MÅubj¡ )�”}”(hŒ(struct sock *sk)”h]”j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjˆ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„5ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj¦5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¨5Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jn5sbŒc.lock_sock_fast”†”asbuh1hhj„5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„5ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÔ5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj„5ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjá5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€5ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjH5h²hh³jY5h´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjD5h²hh³jY5h´MÅubah}”(h]”j?5ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jY5h´MÅhjA5h²hubjg)�”}”(hhh]”jl)�”}”(hŒfast version of lock_sock”h]”hŒfast version of lock_sock”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÅhj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjA5h²hh³jY5h´MÅubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j#6jŒj#6j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX5**Parameters** ``struct sock *sk`` socket **Description** This version should be used for very small section, where process won't block return false if fast path is taken: sk_lock.slock locked, owned = 0, BH disabled return true if slow path is taken: sk_lock.slock unlocked, owned = 1, BH enabled”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj-6h]”hŒ Parameters”…”�”}”(hj/6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÉhj'6ubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjL6h]”hŒstruct sock *sk”…”�”}”(hjN6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÆhjF6ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hje6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ja6h´MÆhjb6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ja6h´MÆhjC6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'6ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‡6h]”hŒ Description”…”�”}”(hj‰6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÈhj'6ubjl)�”}”(hŒqThis version should be used for very small section, where process won't block return false if fast path is taken:”h]”hŒsThis version should be used for very small section, where process won’t block return false if fast path is taken:”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÇhj'6ubjÒ)�”}”(hŒ-sk_lock.slock locked, owned = 0, BH disabled ”h]”jl)�”}”(hŒ,sk_lock.slock locked, owned = 0, BH disabled”h]”hŒ,sk_lock.slock locked, owned = 0, BH disabled”…”�”}”(hj°6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÊhj¬6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j¾6h´MÊhj'6ubjl)�”}”(hŒ"return true if slow path is taken:”h]”hŒ"return true if slow path is taken:”…”�”}”(hjÅ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÌhj'6ubjÒ)�”}”(hŒ-sk_lock.slock unlocked, owned = 1, BH enabled”h]”jl)�”}”(hjÖ6h]”hŒ-sk_lock.slock unlocked, owned = 1, BH enabled”…”�”}”(hjØ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÎhjÔ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jå6h´MÎhj'6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒunlock_sock_fast (C function)”Œc.unlock_sock_fast”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2void unlock_sock_fast (struct sock *sk, bool slow)”h]”j )�”}”(hŒ1void unlock_sock_fast(struct sock *sk, bool slow)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj7h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7h²hh³j7h´Mâubj3)�”}”(hŒunlock_sock_fast”h]”j9)�”}”(hŒunlock_sock_fast”h]”hŒunlock_sock_fast”…”�”}”(hj-7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)7ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj7h²hh³j7h´Mâubj¡ )�”}”(hŒ(struct sock *sk, bool slow)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjI7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE7ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjg7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjd7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ji7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j/7sbŒc.unlock_sock_fast”†”asbuh1hhjE7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE7ubj )�”}”(hj h]”hŒ*”…”�”}”(hj•7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjE7ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj¢7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjA7ubj§ )�”}”(hŒ bool slow”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj»7h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj·7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·7ubj9)�”}”(hŒslow”h]”hŒslow”…”�”}”(hjÖ7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjA7ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj7h²hh³j7h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj7h²hh³j7h´Mâubah}”(h]”jÿ6ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j7h´Mâhj7h²hubjg)�”}”(hhh]”jl)�”}”(hŒcomplement of lock_sock_fast”h]”hŒcomplement of lock_sock_fast”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mâhjý7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj7h²hh³j7h´Mâubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j8jŒj8j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ±**Parameters** ``struct sock *sk`` socket ``bool slow`` slow mode **Description** fast unlock socket for user context. If slow mode is on, we call regular release_sock()”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj"8h]”hŒ Parameters”…”�”}”(hj$8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj 8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mæhj8ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjA8h]”hŒstruct sock *sk”…”�”}”(hjC8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mãhj;8ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjZ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jV8h´MãhjW8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jV8h´Mãhj88ubjä)�”}”(hŒ``bool slow`` slow mode ”h]”(jê)�”}”(hŒ ``bool slow``”h]”jð)�”}”(hjz8h]”hŒ bool slow”…”�”}”(hj|8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjx8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mähjt8ubj)�”}”(hhh]”jl)�”}”(hŒ slow mode”h]”hŒ slow mode”…”�”}”(hj“8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�8h´Mähj�8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�8h´Mähj88ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjµ8h]”hŒ Description”…”�”}”(hj·8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mæhj8ubjl)�”}”(hŒWfast unlock socket for user context. If slow mode is on, we call regular release_sock()”h]”hŒWfast unlock socket for user context. If slow mode is on, we call regular release_sock()”…”�”}”(hjË8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Måhj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_wmem_alloc_get (C function)”Œc.sk_wmem_alloc_get”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-int sk_wmem_alloc_get (const struct sock *sk)”h]”j )�”}”(hŒ,int sk_wmem_alloc_get(const struct sock *sk)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjú8h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjö8h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MD ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjö8h²hh³j9h´MD ubj3)�”}”(hŒsk_wmem_alloc_get”h]”j9)�”}”(hŒsk_wmem_alloc_get”h]”hŒsk_wmem_alloc_get”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjö8h²hh³j9h´MD ubj¡ )�”}”(hŒ(const struct sock *sk)”h]”j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj79h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj39ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj39ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjR9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj39ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj39ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjp9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jr9Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j9sbŒc.sk_wmem_alloc_get”†”asbuh1hhj39ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj39ubj )�”}”(hj h]”hŒ*”…”�”}”(hjž9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj39ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj«9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj39ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/9ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjö8h²hh³j9h´MD ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjò8h²hh³j9h´MD ubah}”(h]”jí8ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j9h´MD hjï8h²hubjg)�”}”(hhh]”jl)�”}”(hŒreturns write allocations”h]”hŒreturns write allocations”…”�”}”(hjÕ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MD hjÒ9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjï8h²hh³j9h´MD ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jí9jŒjí9j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒi**Parameters** ``const struct sock *sk`` socket **Return** sk_wmem_alloc minus initial offset of one”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj÷9h]”hŒ Parameters”…”�”}”(hjù9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjõ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MH hjñ9ubjß)�”}”(hhh]”jä)�”}”(hŒ!``const struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hj:h]”hŒconst struct sock *sk”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´ME hj:ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj/:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+:h´ME hj,:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+:h´ME hj :ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjñ9ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjQ:h]”hŒReturn”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjO:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MG hjñ9ubjl)�”}”(hŒ)sk_wmem_alloc minus initial offset of one”h]”hŒ)sk_wmem_alloc minus initial offset of one”…”�”}”(hjg:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MG hjñ9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_rmem_alloc_get (C function)”Œc.sk_rmem_alloc_get”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-int sk_rmem_alloc_get (const struct sock *sk)”h]”j )�”}”(hŒ,int sk_rmem_alloc_get(const struct sock *sk)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj–:h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj’:h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MO ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’:h²hh³j¤:h´MO ubj3)�”}”(hŒsk_rmem_alloc_get”h]”j9)�”}”(hŒsk_rmem_alloc_get”h]”hŒsk_rmem_alloc_get”…”�”}”(hj·:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³:ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj’:h²hh³j¤:h´MO ubj¡ )�”}”(hŒ(const struct sock *sk)”h]”j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÓ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ:ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ:ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j;Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¹:sbŒc.sk_rmem_alloc_get”†”asbuh1hhjÏ:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ:ubj )�”}”(hj h]”hŒ*”…”�”}”(hj:;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÏ:ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjG;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjË:ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj’:h²hh³j¤:h´MO ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŽ:h²hh³j¤:h´MO ubah}”(h]”j‰:ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¤:h´MO hj‹:h²hubjg)�”}”(hhh]”jl)�”}”(hŒreturns read allocations”h]”hŒreturns read allocations”…”�”}”(hjq;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MO hjn;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‹:h²hh³j¤:h´MO ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‰;jŒj‰;j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒM**Parameters** ``const struct sock *sk`` socket **Return** sk_rmem_alloc”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj“;h]”hŒ Parameters”…”�”}”(hj•;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MS hj�;ubjß)�”}”(hhh]”jä)�”}”(hŒ!``const struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hj²;h]”hŒconst struct sock *sk”…”�”}”(hj´;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MP hj¬;ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjË;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇ;h´MP hjÈ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇ;h´MP hj©;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�;ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjí;h]”hŒReturn”…”�”}”(hjï;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjë;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MR hj�;ubjl)�”}”(hŒ sk_rmem_alloc”h]”hŒ sk_rmem_alloc”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MR hj�;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_has_allocations (C function)”Œc.sk_has_allocations”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/bool sk_has_allocations (const struct sock *sk)”h]”j )�”}”(hŒ.bool sk_has_allocations(const struct sock *sk)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj2<h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj.<h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MZ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.<h²hh³j?<h´MZ ubj3)�”}”(hŒsk_has_allocations”h]”j9)�”}”(hŒsk_has_allocations”h]”hŒsk_has_allocations”…”�”}”(hjR<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjN<ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj.<h²hh³j?<h´MZ ubj¡ )�”}”(hŒ(const struct sock *sk)”h]”j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjn<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj<ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj‰<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj<ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj§<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j©<Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jT<sbŒc.sk_has_allocations”†”asbuh1hhjj<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj<ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÕ<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjj<ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjâ<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjf<ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj.<h²hh³j?<h´MZ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj*<h²hh³j?<h´MZ ubah}”(h]”j%<ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j?<h´MZ hj'<h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$check if allocations are outstanding”h]”hŒ$check if allocations are outstanding”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MZ hj =h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj'<h²hh³j?<h´MZ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j$=jŒj$=j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒl**Parameters** ``const struct sock *sk`` socket **Return** true if socket has write or read allocations”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj.=h]”hŒ Parameters”…”�”}”(hj0=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M^ hj(=ubjß)�”}”(hhh]”jä)�”}”(hŒ!``const struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hjM=h]”hŒconst struct sock *sk”…”�”}”(hjO=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjK=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M[ hjG=ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjf=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jb=h´M[ hjc=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb=h´M[ hjD=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj(=ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjˆ=h]”hŒReturn”…”�”}”(hjŠ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M] hj(=ubjl)�”}”(hŒ,true if socket has write or read allocations”h]”hŒ,true if socket has write or read allocations”…”�”}”(hjž=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M] hj(=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskwq_has_sleeper (C function)”Œc.skwq_has_sleeper”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,bool skwq_has_sleeper (struct socket_wq *wq)”h]”j )�”}”(hŒ+bool skwq_has_sleeper(struct socket_wq *wq)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÍ=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÉ=h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Me ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉ=h²hh³jÚ=h´Me ubj3)�”}”(hŒskwq_has_sleeper”h]”j9)�”}”(hŒskwq_has_sleeper”h]”hŒskwq_has_sleeper”…”�”}”(hjí=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé=ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÉ=h²hh³jÚ=h´Me ubj¡ )�”}”(hŒ(struct socket_wq *wq)”h]”j§ )�”}”(hŒstruct socket_wq *wq”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubh)�”}”(hhh]”j9)�”}”(hŒ socket_wq”h]”hŒ socket_wq”…”�”}”(hj'>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)>Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jï=sbŒc.skwq_has_sleeper”†”asbuh1hhj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubj )�”}”(hj h]”hŒ*”…”�”}”(hjU>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>ubj9)�”}”(hŒwq”h]”hŒwq”…”�”}”(hjb>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÉ=h²hh³jÚ=h´Me ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÅ=h²hh³jÚ=h´Me ubah}”(h]”jÀ=ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÚ=h´Me hjÂ=h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(check if there are any waiting processes”h]”hŒ(check if there are any waiting processes”…”�”}”(hjŒ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Me hj‰>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÂ=h²hh³jÚ=h´Me ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¤>jŒj¤>j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX$**Parameters** ``struct socket_wq *wq`` struct socket_wq **Return** true if socket_wq has waiting processes **Description** The purpose of the skwq_has_sleeper and sock_poll_wait is to wrap the memory barrier call. They were added due to the race found within the tcp code. Consider following tcp code paths:: CPU1 CPU2 sys_select receive packet ... ... __add_wait_queue update tp->rcv_nxt ... ... tp->rcv_nxt check sock_def_readable ... { schedule rcu_read_lock(); wq = rcu_dereference(sk->sk_wq); if (wq && waitqueue_active(&wq->wait)) wake_up_interruptible(&wq->wait) ... } The race for tcp fires when the __add_wait_queue changes done by CPU1 stay in its cache, and so does the tp->rcv_nxt update on CPU2 side. The CPU1 could then endup calling schedule and sleep forever if there are no more data on the socket.”•h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj®>h]”hŒ Parameters”…”�”}”(hj°>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¬>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mi hj¨>ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct socket_wq *wq`` struct socket_wq ”h]”(jê)�”}”(hŒ``struct socket_wq *wq``”h]”jð)�”}”(hjÍ>h]”hŒstruct socket_wq *wq”…”�”}”(hjÏ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjË>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mf hjÇ>ubj)�”}”(hhh]”jl)�”}”(hŒstruct socket_wq”h]”hŒstruct socket_wq”…”�”}”(hjæ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâ>h´Mf hjã>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâ>h´Mf hjÄ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨>ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj?h]”hŒReturn”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mh hj¨>ubjl)�”}”(hŒ'true if socket_wq has waiting processes”h]”hŒ'true if socket_wq has waiting processes”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mh hj¨>ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj/?h]”hŒ Description”…”�”}”(hj1?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mj hj¨>ubjl)�”}”(hŒ•The purpose of the skwq_has_sleeper and sock_poll_wait is to wrap the memory barrier call. They were added due to the race found within the tcp code.”h]”hŒ•The purpose of the skwq_has_sleeper and sock_poll_wait is to wrap the memory barrier call. They were added due to the race found within the tcp code.”…”�”}”(hjE?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mi hj¨>ubjl)�”}”(hŒ#Consider following tcp code paths::”h]”hŒ"Consider following tcp code paths:”…”�”}”(hjT?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Ml hj¨>ubj¶)�”}”(hXÙCPU1 CPU2 sys_select receive packet ... ... __add_wait_queue update tp->rcv_nxt ... ... tp->rcv_nxt check sock_def_readable ... { schedule rcu_read_lock(); wq = rcu_dereference(sk->sk_wq); if (wq && waitqueue_active(&wq->wait)) wake_up_interruptible(&wq->wait) ... }”h]”hXÙCPU1 CPU2 sys_select receive packet ... ... __add_wait_queue update tp->rcv_nxt ... ... tp->rcv_nxt check sock_def_readable ... { schedule rcu_read_lock(); wq = rcu_dereference(sk->sk_wq); if (wq && waitqueue_active(&wq->wait)) wake_up_interruptible(&wq->wait) ... }”…”�”}”hjc?sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mn hj¨>ubjl)�”}”(hŒðThe race for tcp fires when the __add_wait_queue changes done by CPU1 stay in its cache, and so does the tp->rcv_nxt update on CPU2 side. The CPU1 could then endup calling schedule and sleep forever if there are no more data on the socket.”h]”hŒðThe race for tcp fires when the __add_wait_queue changes done by CPU1 stay in its cache, and so does the tp->rcv_nxt update on CPU2 side. The CPU1 could then endup calling schedule and sleep forever if there are no more data on the socket.”…”�”}”(hjr?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M| hj¨>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_poll_wait (C function)”Œc.sock_poll_wait”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKvoid sock_poll_wait (struct file *filp, struct socket *sock, poll_table *p)”h]”j )�”}”(hŒJvoid sock_poll_wait(struct file *filp, struct socket *sock, poll_table *p)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�?h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M‰ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�?h²hh³j¯?h´M‰ ubj3)�”}”(hŒsock_poll_wait”h]”j9)�”}”(hŒsock_poll_wait”h]”hŒsock_poll_wait”…”�”}”(hjÂ?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾?ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�?h²hh³j¯?h´M‰ ubj¡ )�”}”(hŒ7(struct file *filp, struct socket *sock, poll_table *p)”h]”(j§ )�”}”(hŒstruct file *filp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÞ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ?ubh)�”}”(hhh]”j9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjü?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jþ?Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÄ?sbŒc.sock_poll_wait”†”asbuh1hhjÚ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ?ubj )�”}”(hj h]”hŒ*”…”�”}”(hj*@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚ?ubj9)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hj7@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖ?ubj§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjP@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL@ubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjn@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjk@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jp@Œmodname”NŒ classname”Njå jè )�”}”jë ]”j@Œc.sock_poll_wait”†”asbuh1hhjL@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL@ubj )�”}”(hj h]”hŒ*”…”�”}”(hjš@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjL@ubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj§@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjL@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖ?ubj§ )�”}”(hŒ poll_table *p”h]”(h)�”}”(hhh]”j9)�”}”(hŒ poll_table”h]”hŒ poll_table”…”�”}”(hjÃ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÅ@Œmodname”NŒ classname”Njå jè )�”}”jë ]”j@Œc.sock_poll_wait”†”asbuh1hhj¼@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼@ubj )�”}”(hj h]”hŒ*”…”�”}”(hjï@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼@ubj9)�”}”(hj h]”hŒp”…”�”}”(hjü@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖ?ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�?h²hh³j¯?h´M‰ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj™?h²hh³j¯?h´M‰ ubah}”(h]”j”?ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¯?h´M‰ hj–?h²hubjg)�”}”(hhh]”jl)�”}”(hŒwrapper for the poll_wait call.”h]”hŒwrapper for the poll_wait call.”…”�”}”(hj%Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M‰ hj"Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj–?h²hh³j¯?h´M‰ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j=AjŒj=Aj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ¼**Parameters** ``struct file *filp`` file ``struct socket *sock`` socket to wait on ``poll_table *p`` poll_table **Description** See the comments in the wq_has_sleeper function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjGAh]”hŒ Parameters”…”�”}”(hjIAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjEAubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M� hjAAubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct file *filp`` file ”h]”(jê)�”}”(hŒ``struct file *filp``”h]”jð)�”}”(hjfAh]”hŒstruct file *filp”…”�”}”(hjhAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MŠ hj`Aubj)�”}”(hhh]”jl)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{Ah´MŠ hj|Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{Ah´MŠ hj]Aubjä)�”}”(hŒ*``struct socket *sock`` socket to wait on ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hjŸAh]”hŒstruct socket *sock”…”�”}”(hj¡Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M‹ hj™Aubj)�”}”(hhh]”jl)�”}”(hŒsocket to wait on”h]”hŒsocket to wait on”…”�”}”(hj¸Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´Ah´M‹ hjµAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´Ah´M‹ hj]Aubjä)�”}”(hŒ``poll_table *p`` poll_table ”h]”(jê)�”}”(hŒ``poll_table *p``”h]”jð)�”}”(hjØAh]”hŒ poll_table *p”…”�”}”(hjÚAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MŒ hjÒAubj)�”}”(hhh]”jl)�”}”(hŒ poll_table”h]”hŒ poll_table”…”�”}”(hjñAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jíAh´MŒ hjîAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jíAh´MŒ hj]Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjAAubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjBh]”hŒ Description”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MŽ hjAAubjl)�”}”(hŒ0See the comments in the wq_has_sleeper function.”h]”hŒ0See the comments in the wq_has_sleeper function.”…”�”}”(hj)Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M� hjAAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_page_frag (C function)”Œc.sk_page_frag”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1struct page_frag * sk_page_frag (struct sock *sk)”h]”j )�”}”(hŒ/struct page_frag *sk_page_frag(struct sock *sk)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjXBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTBh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MZ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTBh²hh³jeBh´MZ ubh)�”}”(hhh]”j9)�”}”(hŒ page_frag”h]”hŒ page_frag”…”�”}”(hjwBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyBŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ sk_page_frag”sbŒc.sk_page_frag”†”asbuh1hhjTBh²hh³jeBh´MZ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTBh²hh³jeBh´MZ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¦Bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjTBh²hh³jeBh´MZ ubj3)�”}”(hŒ sk_page_frag”h]”j9)�”}”(hj•Bh]”hŒ sk_page_frag”…”�”}”(hj·Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³Bubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjTBh²hh³jeBh´MZ ubj¡ )�”}”(hŒ(struct sock *sk)”h]”j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÒBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎBubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjðBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jòBŒmodname”NŒ classname”Njå jè )�”}”jë ]”j“BŒc.sk_page_frag”†”asbuh1hhjÎBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎBubj )�”}”(hj h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÎBubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj)Ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÊBubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjTBh²hh³jeBh´MZ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjPBh²hh³jeBh´MZ ubah}”(h]”jKBah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jeBh´MZ hjMBh²hubjg)�”}”(hhh]”jl)�”}”(hŒreturn an appropriate page_frag”h]”hŒreturn an appropriate page_frag”…”�”}”(hjSCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MZ hjPCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjMBh²hh³jeBh´MZ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jkCjŒjkCj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sock *sk`` socket **Description** Use the per task page_frag instead of the per socket one for optimization when we know that we're in process context and own everything that's associated with ``current``. Both direct reclaim and page faults can nest inside other socket operations and end up recursing into sk_page_frag() while it's already in use: explicitly avoid task page_frag when users disable sk_use_task_frag. **Return** a per task page_frag if context allows that, otherwise a per socket one.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjuCh]”hŒ Parameters”…”�”}”(hjwCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsCubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M^ hjoCubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj”Ch]”hŒstruct sock *sk”…”�”}”(hj–Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M[ hjŽCubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj­Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©Ch´M[ hjªCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©Ch´M[ hj‹Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjoCubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÏCh]”hŒ Description”…”�”}”(hjÑCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍCubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M] hjoCubjl)�”}”(hŒ«Use the per task page_frag instead of the per socket one for optimization when we know that we're in process context and own everything that's associated with ``current``.”h]”(hŒ£Use the per task page_frag instead of the per socket one for optimization when we know that we’re in process context and own everything that’s associated with ”…”�”}”(hjåCh²hh³Nh´Nubjð)�”}”(hŒ ``current``”h]”hŒcurrent”…”�”}”(hjíCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjåCubhŒ.”…”�”}”(hjåCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M\ hjoCubjl)�”}”(hŒÔBoth direct reclaim and page faults can nest inside other socket operations and end up recursing into sk_page_frag() while it's already in use: explicitly avoid task page_frag when users disable sk_use_task_frag.”h]”hŒÖBoth direct reclaim and page faults can nest inside other socket operations and end up recursing into sk_page_frag() while it’s already in use: explicitly avoid task page_frag when users disable sk_use_task_frag.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M` hjoCubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjDh]”hŒReturn”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Me hjoCubjl)�”}”(hŒHa per task page_frag if context allows that, otherwise a per socket one.”h]”hŒHa per task page_frag if context allows that, otherwise a per socket one.”…”�”}”(hj-Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mf hjoCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ_sock_tx_timestamp (C function)”Œc._sock_tx_timestamp”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒjvoid _sock_tx_timestamp (struct sock *sk, const struct sockcm_cookie *sockc, __u8 *tx_flags, __u32 *tskey)”h]”j )�”}”(hŒivoid _sock_tx_timestamp(struct sock *sk, const struct sockcm_cookie *sockc, __u8 *tx_flags, __u32 *tskey)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj\Dh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjXDh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Ml ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjXDh²hh³jjDh´Ml ubj3)�”}”(hŒ_sock_tx_timestamp”h]”j9)�”}”(hŒ_sock_tx_timestamp”h]”hŒ_sock_tx_timestamp”…”�”}”(hj}Dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyDubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjXDh²hh³jjDh´Ml ubj¡ )�”}”(hŒR(struct sock *sk, const struct sockcm_cookie *sockc, __u8 *tx_flags, __u32 *tskey)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj™Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•Dubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Dh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•Dubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj·Dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¹DŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jDsbŒc._sock_tx_timestamp”†”asbuh1hhj•Dubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Dh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•Dubj )�”}”(hj h]”hŒ*”…”�”}”(hjåDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•Dubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjòDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘Dubj§ )�”}”(hŒ!const struct sockcm_cookie *sockc”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEubj)�”}”(hjh]”hŒstruct”…”�”}”(hj&Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEubh)�”}”(hhh]”j9)�”}”(hŒ sockcm_cookie”h]”hŒ sockcm_cookie”…”�”}”(hjDEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjAEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jFEŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÓDŒc._sock_tx_timestamp”†”asbuh1hhjEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEubj )�”}”(hj h]”hŒ*”…”�”}”(hjpEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjEubj9)�”}”(hŒsockc”h]”hŒsockc”…”�”}”(hj}Eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘Dubj§ )�”}”(hŒ__u8 *tx_flags”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__u8”h]”hŒ__u8”…”�”}”(hj™Eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›EŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÓDŒc._sock_tx_timestamp”†”asbuh1hhj’Eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’Eubj )�”}”(hj h]”hŒ*”…”�”}”(hjÅEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’Eubj9)�”}”(hŒtx_flags”h]”hŒtx_flags”…”�”}”(hjÒEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘Dubj§ )�”}”(hŒ __u32 *tskey”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__u32”h]”hŒ__u32”…”�”}”(hjîEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jðEŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÓDŒc._sock_tx_timestamp”†”asbuh1hhjçEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçEubj )�”}”(hj h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçEubj9)�”}”(hŒtskey”h]”hŒtskey”…”�”}”(hj'Fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘Dubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjXDh²hh³jjDh´Ml ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjTDh²hh³jjDh´Ml ubah}”(h]”jODah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jjDh´Ml hjQDh²hubjg)�”}”(hhh]”jl)�”}”(hŒ8checks whether the outgoing packet is to be time stamped”h]”hŒ8checks whether the outgoing packet is to be time stamped”…”�”}”(hjQFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Ml hjNFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjQDh²hh³jjDh´Ml ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jiFjŒjiFj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX„**Parameters** ``struct sock *sk`` socket sending this packet ``const struct sockcm_cookie *sockc`` pointer to socket cmsg cookie to get timestamping info ``__u8 *tx_flags`` completed with instructions for time stamping ``__u32 *tskey`` filled in with next sk_tskey (not for TCP, which uses seqno) **Note** callers should take care of initial ``*tx_flags`` value (usually 0)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjsFh]”hŒ Parameters”…”�”}”(hjuFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjqFubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mp hjmFubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct sock *sk`` socket sending this packet ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj’Fh]”hŒstruct sock *sk”…”�”}”(hj”Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mm hjŒFubj)�”}”(hhh]”jl)�”}”(hŒsocket sending this packet”h]”hŒsocket sending this packet”…”�”}”(hj«Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§Fh´Mm hj¨Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§Fh´Mm hj‰Fubjä)�”}”(hŒ]``const struct sockcm_cookie *sockc`` pointer to socket cmsg cookie to get timestamping info ”h]”(jê)�”}”(hŒ%``const struct sockcm_cookie *sockc``”h]”jð)�”}”(hjËFh]”hŒ!const struct sockcm_cookie *sockc”…”�”}”(hjÍFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉFubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mn hjÅFubj)�”}”(hhh]”jl)�”}”(hŒ6pointer to socket cmsg cookie to get timestamping info”h]”hŒ6pointer to socket cmsg cookie to get timestamping info”…”�”}”(hjäFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jàFh´Mn hjáFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jàFh´Mn hj‰Fubjä)�”}”(hŒA``__u8 *tx_flags`` completed with instructions for time stamping ”h]”(jê)�”}”(hŒ``__u8 *tx_flags``”h]”jð)�”}”(hjGh]”hŒ__u8 *tx_flags”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mo hjþFubj)�”}”(hhh]”jl)�”}”(hŒ-completed with instructions for time stamping”h]”hŒ-completed with instructions for time stamping”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jGh´Mo hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGh´Mo hj‰Fubjä)�”}”(hŒN``__u32 *tskey`` filled in with next sk_tskey (not for TCP, which uses seqno) ”h]”(jê)�”}”(hŒ``__u32 *tskey``”h]”jð)�”}”(hj=Gh]”hŒ __u32 *tskey”…”�”}”(hj?Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mp hj7Gubj)�”}”(hhh]”jl)�”}”(hŒIubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÁ hj:Iubj)�”}”(hhh]”jl)�”}”(hŒsocket to eat this skb from”h]”hŒsocket to eat this skb from”…”�”}”(hjYIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jUIh´MÁ hjVIubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jUIh´MÁ hj7Iubjä)�”}”(hŒ-``struct sk_buff *skb`` socket buffer to eat ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjyIh]”hŒstruct sk_buff *skb”…”�”}”(hj{Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjwIubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´M hjsIubj)�”}”(hhh]”jl)�”}”(hŒsocket buffer to eat”h]”hŒsocket buffer to eat”…”�”}”(hj’Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽIh´M hj�Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽIh´M hj7Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjIubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj´Ih]”hŒ Description”…”�”}”(hj¶Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´MÄ hjIubjl)�”}”(hŒyThis routine must be called with interrupts disabled or with the socket locked so that the sk_buff queue operation is ok.”h]”hŒyThis routine must be called with interrupts disabled or with the socket locked so that the sk_buff queue operation is ok.”…”�”}”(hjÊIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:20: ./include/net/sock.h”h´Mà hjIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_alloc_file (C function)”Œc.sock_alloc_file”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQstruct file * sock_alloc_file (struct socket *sock, int flags, const char *dname)”h]”j )�”}”(hŒOstruct file *sock_alloc_file(struct socket *sock, int flags, const char *dname)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjùIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõIh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõIh²hh³jJh´Mubh)�”}”(hhh]”j9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œsock_alloc_file”sbŒc.sock_alloc_file”†”asbuh1hhjõIh²hh³jJh´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõIh²hh³jJh´Mubj )�”}”(hj h]”hŒ*”…”�”}”(hjGJh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõIh²hh³jJh´Mubj3)�”}”(hŒsock_alloc_file”h]”j9)�”}”(hj6Jh]”hŒsock_alloc_file”…”�”}”(hjXJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTJubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjõIh²hh³jJh´Mubj¡ )�”}”(hŒ3(struct socket *sock, int flags, const char *dname)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjsJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjoJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjoJubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj‘Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j“JŒmodname”NŒ classname”Njå jè )�”}”jë ]”j4JŒc.sock_alloc_file”†”asbuh1hhjoJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjoJubj )�”}”(hj h]”hŒ*”…”�”}”(hj½Jh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjoJubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjÊJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjkJubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjãJh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjßJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjßJubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÿJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjkJubj§ )�”}”(hŒconst char *dname”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj3Kh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKubj )�”}”(hj h]”hŒ*”…”�”}”(hjOKh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjKubj9)�”}”(hŒdname”h]”hŒdname”…”�”}”(hj\Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjkJubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjõIh²hh³jJh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjñIh²hh³jJh´Mubah}”(h]”jìIah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jJh´MhjîIh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Bind a :c:type:`socket` to a :c:type:`file`”h]”(hŒBind a ”…”�”}”(hj†Kh²hh³Nh´Nubh)�”}”(hŒ:c:type:`socket`”h]”jð)�”}”(hj�Kh]”hŒsocket”…”�”}”(hj’Kh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjŽKubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå jè )�”}”jë ]”j4JŒc.sock_alloc_file”†”asbj¶Œsocket”uh1hh³jJh´Mhj†KubhŒ to a ”…”�”}”(hj†Kh²hh³Nh´Nubh)�”}”(hŒ:c:type:`file`”h]”jð)�”}”(hj¸Kh]”hŒfile”…”�”}”(hjºKh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¶Kubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j¬Kj¶Œfile”uh1hh³jJh´Mhj†Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhjƒKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjîIh²hh³jJh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jåKjŒjåKj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX„**Parameters** ``struct socket *sock`` socket ``int flags`` file status flags ``const char *dname`` protocol name **Description** Returns the :c:type:`file` bound with **sock**, implicitly storing it in sock->file. If dname is ``NULL``, sets to "". On failure **sock** is released, and an ERR pointer is returned. This function uses GFP_KERNEL internally.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjïKh]”hŒ Parameters”…”�”}”(hjñKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjíKubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhjéKubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hjLh]”hŒstruct socket *sock”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhjLubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj'Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#Lh´Mhj$Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Lh´MhjLubjä)�”}”(hŒ ``int flags`` file status flags ”h]”(jê)�”}”(hŒ ``int flags``”h]”jð)�”}”(hjGLh]”hŒ int flags”…”�”}”(hjILh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjELubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhjALubj)�”}”(hhh]”jl)�”}”(hŒfile status flags”h]”hŒfile status flags”…”�”}”(hj`Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\Lh´Mhj]Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjALubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\Lh´MhjLubjä)�”}”(hŒ$``const char *dname`` protocol name ”h]”(jê)�”}”(hŒ``const char *dname``”h]”jð)�”}”(hj€Lh]”hŒconst char *dname”…”�”}”(hj‚Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhjzLubj)�”}”(hhh]”jl)�”}”(hŒ protocol name”h]”hŒ protocol name”…”�”}”(hj™Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•Lh´Mhj–Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•Lh´MhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjéKubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj»Lh]”hŒ Description”…”�”}”(hj½Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¹Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhjéKubjÒ)�”}”(hŒãReturns the :c:type:`file` bound with **sock**, implicitly storing it in sock->file. If dname is ``NULL``, sets to "". On failure **sock** is released, and an ERR pointer is returned. This function uses GFP_KERNEL internally.”h]”(jl)�”}”(hŒvReturns the :c:type:`file` bound with **sock**, implicitly storing it in sock->file. If dname is ``NULL``, sets to "".”h]”(hŒ Returns the ”…”�”}”(hjÕLh²hh³Nh´Nubh)�”}”(hŒ:c:type:`file`”h]”jð)�”}”(hjßLh]”hŒfile”…”�”}”(hjáLh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÝLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œfile”uh1hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhjÕLubhŒ bound with ”…”�”}”(hjÕLh²hh³Nh´Nubj›)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕLubhŒ3, implicitly storing it in sock->file. If dname is ”…”�”}”(hjÕLh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕLubhŒ, sets to “â€�.”…”�”}”(hjÕLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüLh´MhjÑLubjl)�”}”(hŒ@On failure **sock** is released, and an ERR pointer is returned.”h]”(hŒ On failure ”…”�”}”(hj+Mh²hh³Nh´Nubj›)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hj3Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+MubhŒ- is released, and an ERR pointer is returned.”…”�”}”(hj+Mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M hjÑLubjl)�”}”(hŒ)This function uses GFP_KERNEL internally.”h]”hŒ)This function uses GFP_KERNEL internally.”…”�”}”(hjLMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M"hjÑLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jüLh´MhjéKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_from_file (C function)”Œc.sock_from_file”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2struct socket * sock_from_file (struct file *file)”h]”j )�”}”(hŒ0struct socket *sock_from_file(struct file *file)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Mh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MVubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}Mh²hh³jŽMh´MVubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢MŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œsock_from_file”sbŒc.sock_from_file”†”asbuh1hhj}Mh²hh³jŽMh´MVubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}Mh²hh³jŽMh´MVubj )�”}”(hj h]”hŒ*”…”�”}”(hjÏMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}Mh²hh³jŽMh´MVubj3)�”}”(hŒsock_from_file”h]”j9)�”}”(hj¾Mh]”hŒsock_from_file”…”�”}”(hjàMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜMubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj}Mh²hh³jŽMh´MVubj¡ )�”}”(hŒ(struct file *file)”h]”j§ )�”}”(hŒstruct file *file”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjûMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷Mubh)�”}”(hhh]”j9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jNŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¼MŒc.sock_from_file”†”asbuh1hhj÷Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷Mubj )�”}”(hj h]”hŒ*”…”�”}”(hjENh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj÷Mubj9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjRNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjóMubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj}Mh²hh³jŽMh´MVubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjyMh²hh³jŽMh´MVubah}”(h]”jtMah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŽMh´MVhjvMh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Return the :c:type:`socket` bounded to **file**.”h]”(hŒ Return the ”…”�”}”(hj|Nh²hh³Nh´Nubh)�”}”(hŒ:c:type:`socket`”h]”jð)�”}”(hj†Nh]”hŒsocket”…”�”}”(hjˆNh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj„Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå jè )�”}”jë ]”j¼MŒc.sock_from_file”†”asbj¶Œsocket”uh1hh³jJh´Mhj|NubhŒ bounded to ”…”�”}”(hj|Nh²hh³Nh´Nubj›)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hj¬Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj|NubhŒ.”…”�”}”(hj|Nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MVhjyNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjvMh²hh³jŽMh´MVubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÎNjŒjÎNj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ`**Parameters** ``struct file *file`` file **Description** On failure returns ``NULL``.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjØNh]”hŒ Parameters”…”�”}”(hjÚNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÖNubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MZhjÒNubjß)�”}”(hhh]”jä)�”}”(hŒ``struct file *file`` file ”h]”(jê)�”}”(hŒ``struct file *file``”h]”jð)�”}”(hj÷Nh]”hŒstruct file *file”…”�”}”(hjùNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõNubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MWhjñNubj)�”}”(hhh]”jl)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Oh´MWhj Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Oh´MWhjîNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÒNubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj2Oh]”hŒ Description”…”�”}”(hj4Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MYhjÒNubjÒ)�”}”(hŒOn failure returns ``NULL``.”h]”jl)�”}”(hjJOh]”(hŒOn failure returns ”…”�”}”(hjLOh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjSOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLOubhŒ.”…”�”}”(hjLOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MXhjHOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jkOh´MXhjÒNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsockfd_lookup (C function)”Œc.sockfd_lookup”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0struct socket * sockfd_lookup (int fd, int *err)”h]”j )�”}”(hŒ.struct socket *sockfd_lookup(int fd, int *err)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj’Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽOh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽOh²hh³jŸOh´Mfubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj±Oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³OŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ sockfd_lookup”sbŒc.sockfd_lookup”†”asbuh1hhjŽOh²hh³jŸOh´Mfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽOh²hh³jŸOh´Mfubj )�”}”(hj h]”hŒ*”…”�”}”(hjàOh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŽOh²hh³jŸOh´Mfubj3)�”}”(hŒ sockfd_lookup”h]”j9)�”}”(hjÏOh]”hŒ sockfd_lookup”…”�”}”(hjñOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíOubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŽOh²hh³jŸOh´Mfubj¡ )�”}”(hŒ(int fd, int *err)”h]”(j§ )�”}”(hŒint fd”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPubj9)�”}”(hŒfd”h]”hŒfd”…”�”}”(hj(Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPubj§ )�”}”(hŒint *err”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjAPh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj=Pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=Pubj )�”}”(hj h]”hŒ*”…”�”}”(hj]Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj=Pubj9)�”}”(hŒerr”h]”hŒerr”…”�”}”(hjjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŽOh²hh³jŸOh´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŠOh²hh³jŸOh´Mfubah}”(h]”j…Oah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŸOh´Mfhj‡Oh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Go from a file number to its socket slot”h]”hŒ(Go from a file number to its socket slot”…”�”}”(hj”Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mfhj‘Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡Oh²hh³jŸOh´Mfubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬PjŒj¬Pj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÃ**Parameters** ``int fd`` file handle ``int *err`` pointer to an error code return **Description** The file handle passed in is locked and the socket it is bound to is returned. If an error occurs the err pointer is overwritten with a negative errno code and NULL is returned. The function checks for both invalid handles and passing a handle which is not a socket. On a success the socket object pointer is returned.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶Ph]”hŒ Parameters”…”�”}”(hj¸Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mjhj°Pubjß)�”}”(hhh]”(jä)�”}”(hŒ``int fd`` file handle ”h]”(jê)�”}”(hŒ ``int fd``”h]”jð)�”}”(hjÕPh]”hŒint fd”…”�”}”(hj×Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓPubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MghjÏPubj)�”}”(hhh]”jl)�”}”(hŒ file handle”h]”hŒ file handle”…”�”}”(hjîPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêPh´MghjëPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêPh´MghjÌPubjä)�”}”(hŒ-``int *err`` pointer to an error code return ”h]”(jê)�”}”(hŒ ``int *err``”h]”jð)�”}”(hjQh]”hŒint *err”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MhhjQubj)�”}”(hhh]”jl)�”}”(hŒpointer to an error code return”h]”hŒpointer to an error code return”…”�”}”(hj'Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#Qh´Mhhj$Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Qh´MhhjÌPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°Pubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjIQh]”hŒ Description”…”�”}”(hjKQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjGQubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mjhj°PubjÒ)�”}”(hX?The file handle passed in is locked and the socket it is bound to is returned. If an error occurs the err pointer is overwritten with a negative errno code and NULL is returned. The function checks for both invalid handles and passing a handle which is not a socket. On a success the socket object pointer is returned.”h]”(jl)�”}”(hX The file handle passed in is locked and the socket it is bound to is returned. If an error occurs the err pointer is overwritten with a negative errno code and NULL is returned. The function checks for both invalid handles and passing a handle which is not a socket.”h]”hX The file handle passed in is locked and the socket it is bound to is returned. If an error occurs the err pointer is overwritten with a negative errno code and NULL is returned. The function checks for both invalid handles and passing a handle which is not a socket.”…”�”}”(hjcQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mihj_Qubjl)�”}”(hŒ3On a success the socket object pointer is returned.”h]”hŒ3On a success the socket object pointer is returned.”…”�”}”(hjrQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mnhj_Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jqQh´Mihj°Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_alloc (C function)”Œ c.sock_alloc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ!struct socket * sock_alloc (void)”h]”j )�”}”(hŒstruct socket *sock_alloc(void)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj§Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£Qh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£Qh²hh³j´Qh´Mºubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjÆQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÈQŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ sock_alloc”sbŒ c.sock_alloc”†”asbuh1hhj£Qh²hh³j´Qh´Mºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£Qh²hh³j´Qh´Mºubj )�”}”(hj h]”hŒ*”…”�”}”(hjõQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj£Qh²hh³j´Qh´Mºubj3)�”}”(hŒ sock_alloc”h]”j9)�”}”(hjäQh]”hŒ sock_alloc”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj£Qh²hh³j´Qh´Mºubj¡ )�”}”(hŒ(void)”h]”j§ )�”}”(hŒvoid”h]”jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!Rh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjRubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjRubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj£Qh²hh³j´Qh´Mºubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŸQh²hh³j´Qh´Mºubah}”(h]”jšQah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j´Qh´MºhjœQh²hubjg)�”}”(hhh]”jl)�”}”(hŒallocate a socket”h]”hŒallocate a socket”…”�”}”(hjKRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MºhjHRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjœQh²hh³j´Qh´Mºubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jcRjŒjcRj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``void`` no arguments **Description** Allocate a new inode and socket object. The two are bound together and initialised. The socket is then returned. If we are out of inodes NULL is returned. This functions uses GFP_KERNEL internally.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjmRh]”hŒ Parameters”…”�”}”(hjoRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjkRubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M¾hjgRubjß)�”}”(hhh]”jä)�”}”(hŒ``void`` no arguments ”h]”(jê)�”}”(hŒ``void``”h]”jð)�”}”(hjŒRh]”hŒvoid”…”�”}”(hjŽRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠRubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Khj†Rubj)�”}”(hhh]”jl)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj¥Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¡Rh´Khj¢Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¡Rh´KhjƒRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjgRubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÇRh]”hŒ Description”…”�”}”(hjÉRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÅRubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´KhjgRubjÒ)�”}”(hŒÅAllocate a new inode and socket object. The two are bound together and initialised. The socket is then returned. If we are out of inodes NULL is returned. This functions uses GFP_KERNEL internally.”h]”jl)�”}”(hŒÅAllocate a new inode and socket object. The two are bound together and initialised. The socket is then returned. If we are out of inodes NULL is returned. This functions uses GFP_KERNEL internally.”h]”hŒÅAllocate a new inode and socket object. The two are bound together and initialised. The socket is then returned. If we are out of inodes NULL is returned. This functions uses GFP_KERNEL internally.”…”�”}”(hjáRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M»hjÝRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jïRh´M»hjgRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_release (C function)”Œc.sock_release”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ'void sock_release (struct socket *sock)”h]”j )�”}”(hŒ&void sock_release(struct socket *sock)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjSh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSh²hh³j$Sh´Mòubj3)�”}”(hŒ sock_release”h]”j9)�”}”(hŒ sock_release”h]”hŒ sock_release”…”�”}”(hj7Sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3Subah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjSh²hh³j$Sh´Mòubj¡ )�”}”(hŒ(struct socket *sock)”h]”j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjSSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOSubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjqSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jsSŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j9SsbŒc.sock_release”†”asbuh1hhjOSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOSubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjOSubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj¬Sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKSubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjSh²hh³j$Sh´Mòubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjSh²hh³j$Sh´Mòubah}”(h]”j Sah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j$Sh´Mòhj Sh²hubjg)�”}”(hhh]”jl)�”}”(hŒclose a socket”h]”hŒclose a socket”…”�”}”(hjÖSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MòhjÓSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj Sh²hh³j$Sh´Mòubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jîSjŒjîSj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒõ**Parameters** ``struct socket *sock`` socket to close **Description** The socket is released from the protocol stack if it has a release callback, and the inode is then released if the socket is bound to an inode not a file.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjøSh]”hŒ Parameters”…”�”}”(hjúSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MöhjòSubjß)�”}”(hhh]”jä)�”}”(hŒ(``struct socket *sock`` socket to close ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hjTh]”hŒstruct socket *sock”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MóhjTubj)�”}”(hhh]”jl)�”}”(hŒsocket to close”h]”hŒsocket to close”…”�”}”(hj0Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,Th´Móhj-Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,Th´MóhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjòSubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjRTh]”hŒ Description”…”�”}”(hjTTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjPTubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MõhjòSubjÒ)�”}”(hŒšThe socket is released from the protocol stack if it has a release callback, and the inode is then released if the socket is bound to an inode not a file.”h]”jl)�”}”(hŒšThe socket is released from the protocol stack if it has a release callback, and the inode is then released if the socket is bound to an inode not a file.”h]”hŒšThe socket is released from the protocol stack if it has a release callback, and the inode is then released if the socket is bound to an inode not a file.”…”�”}”(hjlTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MôhjhTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jzTh´MôhjòSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_sendmsg (C function)”Œc.sock_sendmsg”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:int sock_sendmsg (struct socket *sock, struct msghdr *msg)”h]”j )�”}”(hŒ9int sock_sendmsg(struct socket *sock, struct msghdr *msg)”•h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¡Th²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�Th²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Th²hh³j¯Th´M6ubj3)�”}”(hŒ sock_sendmsg”h]”j9)�”}”(hŒ sock_sendmsg”h]”hŒ sock_sendmsg”…”�”}”(hjÂTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾Tubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�Th²hh³j¯Th´M6ubj¡ )�”}”(hŒ)(struct socket *sock, struct msghdr *msg)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÞTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚTubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚTubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjüTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jþTŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÄTsbŒc.sock_sendmsg”†”asbuh1hhjÚTubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚTubj )�”}”(hj h]”hŒ*”…”�”}”(hj*Uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚTubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj7Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖTubj§ )�”}”(hŒstruct msghdr *msg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjPUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLUubh)�”}”(hhh]”j9)�”}”(hŒmsghdr”h]”hŒmsghdr”…”�”}”(hjnUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jpUŒmodname”NŒ classname”Njå jè )�”}”jë ]”jUŒc.sock_sendmsg”†”asbuh1hhjLUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLUubj )�”}”(hj h]”hŒ*”…”�”}”(hjšUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjLUubj9)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hj§Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖTubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�Th²hh³j¯Th´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj™Th²hh³j¯Th´M6ubah}”(h]”j”Tah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¯Th´M6hj–Th²hubjg)�”}”(hhh]”jl)�”}”(hŒsend a message through **sock**”h]”(hŒsend a message through ”…”�”}”(hjÑUh²hh³Nh´Nubj›)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hjÙUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÑUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M6hjÎUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj–Th²hh³j¯Th´M6ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j÷UjŒj÷Uj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒß**Parameters** ``struct socket *sock`` socket ``struct msghdr *msg`` message to send **Description** Sends **msg** through **sock**, passing through LSM. Returns the number of bytes sent, or an error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjVh]”hŒ Parameters”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿUubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M:hjûUubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hj Vh]”hŒstruct socket *sock”…”�”}”(hj"Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M7hjVubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj9Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j5Vh´M7hj6Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j5Vh´M7hjVubjä)�”}”(hŒ'``struct msghdr *msg`` message to send ”h]”(jê)�”}”(hŒ``struct msghdr *msg``”h]”jð)�”}”(hjYVh]”hŒstruct msghdr *msg”…”�”}”(hj[Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjWVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M8hjSVubj)�”}”(hhh]”jl)�”}”(hŒmessage to send”h]”hŒmessage to send”…”�”}”(hjrVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jnVh´M8hjoVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jnVh´M8hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjûUubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj”Vh]”hŒ Description”…”�”}”(hj–Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M:hjûUubjÒ)�”}”(hŒhSends **msg** through **sock**, passing through LSM. Returns the number of bytes sent, or an error code.”h]”jl)�”}”(hŒhSends **msg** through **sock**, passing through LSM. Returns the number of bytes sent, or an error code.”h]”(hŒSends ”…”�”}”(hj®Vh²hh³Nh´Nubj›)�”}”(hŒ**msg**”h]”hŒmsg”…”�”}”(hj¶Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj®VubhŒ through ”…”�”}”(hj®Vh²hh³Nh´Nubj›)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hjÈVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj®VubhŒJ, passing through LSM. Returns the number of bytes sent, or an error code.”…”�”}”(hj®Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M9hjªVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jàVh´M9hjûUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒkernel_sendmsg (C function)”Œc.kernel_sendmsg”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgint kernel_sendmsg (struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t size)”h]”j )�”}”(hŒfint kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t size)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjWh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWh²hh³jWh´MRubj3)�”}”(hŒkernel_sendmsg”h]”j9)�”}”(hŒkernel_sendmsg”h]”hŒkernel_sendmsg”…”�”}”(hj(Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$Wubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjWh²hh³jWh´MRubj¡ )�”}”(hŒT(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t size)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjDWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Wubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjbWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdWŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j*WsbŒc.kernel_sendmsg”†”asbuh1hhj@Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Wubj )�”}”(hj h]”hŒ*”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@Wubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjhj‘gubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net *net`` net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj¶gh]”hŒstruct net *net”…”�”}”(hj¸gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´gubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M;hj°gubj)�”}”(hhh]”jl)�”}”(hŒ net namespace”h]”hŒ net namespace”…”�”}”(hjÏgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËgh´M;hjÌgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËgh´M;hj­gubjä)�”}”(hŒ.``int family`` protocol family (AF_INET, ...) ”h]”(jê)�”}”(hŒ``int family``”h]”jð)�”}”(hjïgh]”hŒ int family”…”�”}”(hjñgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjígubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M<hjégubj)�”}”(hhh]”jl)�”}”(hŒprotocol family (AF_INET, ...)”h]”hŒprotocol family (AF_INET, ...)”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jhh´M<hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjégubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jhh´M<hj­gubjä)�”}”(hŒ3``int type`` communication type (SOCK_STREAM, ...) ”h]”(jê)�”}”(hŒ ``int type``”h]”jð)�”}”(hj(hh]”hŒint type”…”�”}”(hj*hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M=hj"hubj)�”}”(hhh]”jl)�”}”(hŒ%communication type (SOCK_STREAM, ...)”h]”hŒ%communication type (SOCK_STREAM, ...)”…”�”}”(hjAhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=hh´M=hj>hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=hh´M=hj­gubjä)�”}”(hŒ#``int protocol`` protocol (0, ...) ”h]”(jê)�”}”(hŒ``int protocol``”h]”jð)�”}”(hjahh]”hŒ int protocol”…”�”}”(hjchh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M>hj[hubj)�”}”(hhh]”jl)�”}”(hŒprotocol (0, ...)”h]”hŒprotocol (0, ...)”…”�”}”(hjzhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvhh´M>hjwhubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvhh´M>hj­gubjä)�”}”(hŒ#``struct socket **res`` new socket ”h]”(jê)�”}”(hŒ``struct socket **res``”h]”jð)�”}”(hjšhh]”hŒstruct socket **res”…”�”}”(hjœhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M?hj”hubj)�”}”(hhh]”jl)�”}”(hŒ new socket”h]”hŒ new socket”…”�”}”(hj³hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯hh´M?hj°hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯hh´M?hj­gubjä)�”}”(hŒ.``int kern`` boolean for kernel space sockets ”h]”(jê)�”}”(hŒ ``int kern``”h]”jð)�”}”(hjÓhh]”hŒint kern”…”�”}”(hjÕhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑhubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M@hjÍhubj)�”}”(hhh]”jl)�”}”(hŒ boolean for kernel space sockets”h]”hŒ boolean for kernel space sockets”…”�”}”(hjìhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèhh´M@hjéhubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèhh´M@hj­gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘gubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjih]”hŒ Description”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj iubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MBhj‘gubjÒ)�”}”(hŒðCreates a new socket and assigns it to **res**, passing through LSM. Returns 0 or an error. On failure **res** is set to ``NULL``. **kern** must be set to true if the socket resides in kernel space. This function internally uses GFP_KERNEL.”h]”jl)�”}”(hŒðCreates a new socket and assigns it to **res**, passing through LSM. Returns 0 or an error. On failure **res** is set to ``NULL``. **kern** must be set to true if the socket resides in kernel space. This function internally uses GFP_KERNEL.”h]”(hŒ'Creates a new socket and assigns it to ”…”�”}”(hj(ih²hh³Nh´Nubj›)�”}”(hŒ**res**”h]”hŒres”…”�”}”(hj0ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(iubhŒ9, passing through LSM. Returns 0 or an error. On failure ”…”�”}”(hj(ih²hh³Nh´Nubj›)�”}”(hŒ**res**”h]”hŒres”…”�”}”(hjBih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(iubhŒ is set to ”…”�”}”(hj(ih²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjTih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(iubhŒ. ”…”�”}”(hj(ih²hh³Nh´Nubj›)�”}”(hŒ**kern**”h]”hŒkern”…”�”}”(hjfih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(iubhŒe must be set to true if the socket resides in kernel space. This function internally uses GFP_KERNEL.”…”�”}”(hj(ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MAhj$iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j~ih´MAhj‘gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_create (C function)”Œ c.sock_create”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒIint sock_create (int family, int type, int protocol, struct socket **res)”h]”j )�”}”(hŒHint sock_create(int family, int type, int protocol, struct socket **res)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¥ih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡ih²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M½ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡ih²hh³j³ih´M½ubj3)�”}”(hŒ sock_create”h]”j9)�”}”(hŒ sock_create”h]”hŒ sock_create”…”�”}”(hjÆih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂiubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡ih²hh³j³ih´M½ubj¡ )�”}”(hŒ9(int family, int type, int protocol, struct socket **res)”h]”(j§ )�”}”(hŒ int family”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjâih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞiubj9)�”}”(hŒfamily”h]”hŒfamily”…”�”}”(hjþih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚiubj§ )�”}”(hŒint type”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj3jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚiubj§ )�”}”(hŒ int protocol”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjLjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjHjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjHjubj9)�”}”(hŒprotocol”h]”hŒprotocol”…”�”}”(hjhjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚiubj§ )�”}”(hŒstruct socket **res”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}jubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjŸjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¡jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÈisbŒ c.sock_create”†”asbuh1hhj}jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}jubj )�”}”(hj h]”hŒ*”…”�”}”(hjÍjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}jubj )�”}”(hj h]”hŒ*”…”�”}”(hjÚjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}jubj9)�”}”(hŒres”h]”hŒres”…”�”}”(hjçjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚiubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡ih²hh³j³ih´M½ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�ih²hh³j³ih´M½ubah}”(h]”j˜iah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j³ih´M½hjših²hubjg)�”}”(hhh]”jl)�”}”(hŒcreates a socket”h]”hŒcreates a socket”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M½hjkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjših²hh³j³ih´M½ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j)kjŒj)kj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX@**Parameters** ``int family`` protocol family (AF_INET, ...) ``int type`` communication type (SOCK_STREAM, ...) ``int protocol`` protocol (0, ...) ``struct socket **res`` new socket **Description** A wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj3kh]”hŒ Parameters”…”�”}”(hj5kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1kubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÁhj-kubjß)�”}”(hhh]”(jä)�”}”(hŒ.``int family`` protocol family (AF_INET, ...) ”h]”(jê)�”}”(hŒ``int family``”h]”jð)�”}”(hjRkh]”hŒ int family”…”�”}”(hjTkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjPkubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M¾hjLkubj)�”}”(hhh]”jl)�”}”(hŒprotocol family (AF_INET, ...)”h]”hŒprotocol family (AF_INET, ...)”…”�”}”(hjkkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jgkh´M¾hjhkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgkh´M¾hjIkubjä)�”}”(hŒ3``int type`` communication type (SOCK_STREAM, ...) ”h]”(jê)�”}”(hŒ ``int type``”h]”jð)�”}”(hj‹kh]”hŒint type”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰kubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M¿hj…kubj)�”}”(hhh]”jl)�”}”(hŒ%communication type (SOCK_STREAM, ...)”h]”hŒ%communication type (SOCK_STREAM, ...)”…”�”}”(hj¤kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j kh´M¿hj¡kubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j kh´M¿hjIkubjä)�”}”(hŒ#``int protocol`` protocol (0, ...) ”h]”(jê)�”}”(hŒ``int protocol``”h]”jð)�”}”(hjÄkh]”hŒ int protocol”…”�”}”(hjÆkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÂkubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÀhj¾kubj)�”}”(hhh]”jl)�”}”(hŒprotocol (0, ...)”h]”hŒprotocol (0, ...)”…”�”}”(hjÝkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÙkh´MÀhjÚkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙkh´MÀhjIkubjä)�”}”(hŒ#``struct socket **res`` new socket ”h]”(jê)�”}”(hŒ``struct socket **res``”h]”jð)�”}”(hjýkh]”hŒstruct socket **res”…”�”}”(hjÿkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûkubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÁhj÷kubj)�”}”(hhh]”jl)�”}”(hŒ new socket”h]”hŒ new socket”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jlh´MÁhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlh´MÁhjIkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj-kubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj8lh]”hŒ Description”…”�”}”(hj:lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6lubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÃhj-kubjÒ)�”}”(hŒbA wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”h]”jl)�”}”(hŒbA wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”h]”hŒbA wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”…”�”}”(hjRlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÂhjNlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j`lh´MÂhj-kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_create_kern (C function)”Œc.sock_create_kern”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ_int sock_create_kern (struct net *net, int family, int type, int protocol, struct socket **res)”h]”j )�”•N}”(hŒ^int sock_create_kern(struct net *net, int family, int type, int protocol, struct socket **res)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‡lh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjƒlh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÎubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒlh²hh³j•lh´MÎubj3)�”}”(hŒsock_create_kern”h]”j9)�”}”(hŒsock_create_kern”h]”hŒsock_create_kern”…”�”}”(hj¨lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤lubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjƒlh²hh³j•lh´MÎubj¡ )�”}”(hŒJ(struct net *net, int family, int type, int protocol, struct socket **res)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÄlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀlubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjâlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßlubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jälŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jªlsbŒc.sock_create_kern”†”asbuh1hhjÀlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀlubj )�”}”(hj h]”hŒ*”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀlubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼lubj§ )�”}”(hŒ int family”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj6mh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj2mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2mubj9)�”}”(hŒfamily”h]”hŒfamily”…”�”}”(hjRmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼lubj§ )�”}”(hŒint type”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjkmh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjgmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjymh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgmubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj‡mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼lubj§ )�”}”(hŒ int protocol”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjœmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœmubj9)�”}”(hŒprotocol”h]”hŒprotocol”…”�”}”(hj¼mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼lubj§ )�”}”(hŒstruct socket **res”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÕmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑmubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjómh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jõmŒmodname”NŒ classname”Njå jè )�”}”jë ]”jþlŒc.sock_create_kern”†”asbuh1hhjÑmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑmubj )�”}”(hj h]”hŒ*”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÑmubj )�”}”(hj h]”hŒ*”…”�”}”(hj,nh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÑmubj9)�”}”(hŒres”h]”hŒres”…”�”}”(hj9nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼lubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjƒlh²hh³j•lh´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjlh²hh³j•lh´MÎubah}”(h]”jzlah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j•lh´MÎhj|lh²hubjg)�”}”(hhh]”jl)�”}”(hŒcreates a socket (kernel space)”h]”hŒcreates a socket (kernel space)”…”�”}”(hjcnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÎhj`nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj|lh²hh³j•lh´MÎubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j{njŒj{nj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXe**Parameters** ``struct net *net`` net namespace ``int family`` protocol family (AF_INET, ...) ``int type`` communication type (SOCK_STREAM, ...) ``int protocol`` protocol (0, ...) ``struct socket **res`` new socket **Description** A wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj…nh]”hŒ Parameters”…”�”}”(hj‡nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒnubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÒhjnubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net *net`` net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj¤nh]”hŒstruct net *net”…”�”}”(hj¦nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÏhjžnubj)�”}”(hhh]”jl)�”}”(hŒ net namespace”h]”hŒ net namespace”…”�”}”(hj½nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹nh´MÏhjºnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹nh´MÏhj›nubjä)�”}”(hŒ.``int family`` protocol family (AF_INET, ...) ”h]”(jê)�”}”(hŒ``int family``”h]”jð)�”}”(hjÝnh]”hŒ int family”…”�”}”(hjßnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÐhj×nubj)�”}”(hhh]”jl)�”}”(hŒprotocol family (AF_INET, ...)”h]”hŒprotocol family (AF_INET, ...)”…”�”}”(hjönh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jònh´MÐhjónubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jònh´MÐhj›nubjä)�”}”(hŒ3``int type`` communication type (SOCK_STREAM, ...) ”h]”(jê)�”}”(hŒ ``int type``”h]”jð)�”}”(hjoh]”hŒint type”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÑhjoubj)�”}”(hhh]”jl)�”}”(hŒ%communication type (SOCK_STREAM, ...)”h]”hŒ%communication type (SOCK_STREAM, ...)”…”�”}”(hj/oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+oh´MÑhj,oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+oh´MÑhj›nubjä)�”}”(hŒ#``int protocol`` protocol (0, ...) ”h]”(jê)�”}”(hŒ``int protocol``”h]”jð)�”}”(hjOoh]”hŒ int protocol”…”�”}”(hjQoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMoubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÒhjIoubj)�”}”(hhh]”jl)�”}”(hŒprotocol (0, ...)”h]”hŒprotocol (0, ...)”…”�”}”(hjhoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdoh´MÒhjeoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdoh´MÒhj›nubjä)�”}”(hŒ#``struct socket **res`` new socket ”h]”(jê)�”}”(hŒ``struct socket **res``”h]”jð)�”}”(hjˆoh]”hŒstruct socket **res”…”�”}”(hjŠoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†oubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÓhj‚oubj)�”}”(hhh]”jl)�”}”(hŒ new socket”h]”hŒ new socket”…”�”}”(hj¡oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�oh´MÓhjžoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�oh´MÓhj›nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjnubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÃoh]”hŒ Description”…”�”}”(hjÅoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁoubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÕhjnubjÒ)�”}”(hŒbA wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”h]”jl)�”}”(hŒbA wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”h]”hŒbA wrapper around __sock_create(). Returns 0 or an error. This function internally uses GFP_KERNEL.”…”�”}”(hjÝoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÔhjÙoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jëoh´MÔhjnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_register (C function)”Œc.sock_register”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6int sock_register (const struct net_proto_family *ops)”h]”j )�”}”(hŒ5int sock_register(const struct net_proto_family *ops)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjph²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mþ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjph²hh³j ph´Mþ ubj3)�”}”(hŒ sock_register”h]”j9)�”}”(hŒ sock_register”h]”hŒ sock_register”…”�”}”(hj3ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/pubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjph²hh³j ph´Mþ ubj¡ )�”}”(hŒ$(const struct net_proto_family *ops)”h]”j§ )�”}”(hŒ"const struct net_proto_family *ops”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjOph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKpubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKpubj)�”}”(hjh]”hŒstruct”…”�”}”(hjjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKpubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKpubh)�”}”(hhh]”j9)�”}”(hŒnet_proto_family”h]”hŒnet_proto_family”…”�”}”(hjˆph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŠpŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j5psbŒc.sock_register”†”asbuh1hhjKpubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKpubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjKpubj9)�”}”(hŒops”h]”hŒops”…”�”}”(hjÃph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjGpubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjph²hh³j ph´Mþ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ph²hh³j ph´Mþ ubah}”(h]”jpah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j ph´Mþ hjph²hubjg)�”}”(hhh]”jl)�”}”(hŒadd a socket protocol handler”h]”hŒadd a socket protocol handler”…”�”}”(hjíph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mþ hjêph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjph²hh³j ph´Mþ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jqjŒjqj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXK**Parameters** ``const struct net_proto_family *ops`` description of protocol **Description** This function is called by a protocol handler that wants to advertise its address family, and have it linked into the socket interface. The value ops->family corresponds to the socket system call protocol family.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjqh]”hŒ Parameters”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M hj qubjß)�”}”(hhh]”jä)�”}”(hŒ?``const struct net_proto_family *ops`` description of protocol ”h]”(jê)�”}”(hŒ&``const struct net_proto_family *ops``”h]”jð)�”}”(hj.qh]”hŒ"const struct net_proto_family *ops”…”�”}”(hj0qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,qubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mÿ hj(qubj)�”}”(hhh]”jl)�”}”(hŒdescription of protocol”h]”hŒdescription of protocol”…”�”}”(hjGqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jCqh´Mÿ hjDqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jCqh´Mÿ hj%qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj qubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjiqh]”hŒ Description”…”�”}”(hjkqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjgqubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M hj qubjÒ)�”}”(hŒÔThis function is called by a protocol handler that wants to advertise its address family, and have it linked into the socket interface. The value ops->family corresponds to the socket system call protocol family.”h]”jl)�”}”(hŒÔThis function is called by a protocol handler that wants to advertise its address family, and have it linked into the socket interface. The value ops->family corresponds to the socket system call protocol family.”h]”hŒÔThis function is called by a protocol handler that wants to advertise its address family, and have it linked into the socket interface. The value ops->family corresponds to the socket system call protocol family.”…”�”}”(hjƒqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j‘qh´M hj qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsock_unregister (C function)”Œc.sock_unregister”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ!void sock_unregister (int family)”h]”j )�”}”(hŒ void sock_unregister(int family)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸qh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj´qh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´qh²hh³jÆqh´M ubj3)�”}”(hŒsock_unregister”h]”j9)�”}”(hŒsock_unregister”h]”hŒsock_unregister”…”�”}”(hjÙqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕqubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj´qh²hh³jÆqh´M ubj¡ )�”}”(hŒ (int family)”h]”j§ )�”}”(hŒ int family”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjõqh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjñqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñqubj9)�”}”(hŒfamily”h]”hŒfamily”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjíqubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj´qh²hh³jÆqh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj°qh²hh³jÆqh´M ubah}”(h]”j«qah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÆqh´M hj­qh²hubjg)�”}”(hhh]”jl)�”}”(hŒremove a protocol handler”h]”hŒremove a protocol handler”…”�”}”(hj;rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M hj8rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj­qh²hh³jÆqh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jSrjŒjSrj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÒ**Parameters** ``int family`` protocol family to remove **Description** This function is called by a protocol handler that wants to remove its address family, and have it unlinked from the new socket creation. If protocol handler is a module, then it can use module reference counts to protect against new references. If protocol handler is not a module then it needs to provide its own protection in the ops->create routine.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj]rh]”hŒ Parameters”…”�”}”(hj_rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[rubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M# hjWrubjß)�”}”(hhh]”jä)�”}”(hŒ)``int family`` protocol family to remove ”h]”(jê)�”}”(hŒ``int family``”h]”jð)�”}”(hj|rh]”hŒ int family”…”�”}”(hj~rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjzrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M hjvrubj)�”}”(hhh]”jl)�”}”(hŒprotocol family to remove”h]”hŒprotocol family to remove”…”�”}”(hj•rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘rh´M hj’rubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘rh´M hjsrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjWrubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj·rh]”hŒ Description”…”�”}”(hj¹rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµrubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M" hjWrubjÒ)�”}”(hXbThis function is called by a protocol handler that wants to remove its address family, and have it unlinked from the new socket creation. If protocol handler is a module, then it can use module reference counts to protect against new references. If protocol handler is not a module then it needs to provide its own protection in the ops->create routine.”h]”(jl)�”}”(hŒ‰This function is called by a protocol handler that wants to remove its address family, and have it unlinked from the new socket creation.”h]”hŒ‰This function is called by a protocol handler that wants to remove its address family, and have it unlinked from the new socket creation.”…”�”}”(hjÑrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M! hjÍrubjl)�”}”(hŒ×If protocol handler is a module, then it can use module reference counts to protect against new references. If protocol handler is not a module then it needs to provide its own protection in the ops->create routine.”h]”hŒ×If protocol handler is a module, then it can use module reference counts to protect against new references. If protocol handler is not a module then it needs to provide its own protection in the ops->create routine.”…”�”}”(hjàrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M% hjÍrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jßrh´M! hjWrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒkernel_bind (C function)”Œ c.kernel_bind”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQint kernel_bind (struct socket *sock, struct sockaddr_unsized *addr, int addrlen)”h]”j )�”}”(hŒPint kernel_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjsh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsh²hh³j#sh´MOubj3)�”}”(hŒ kernel_bind”h]”j9)�”}”(hŒ kernel_bind”h]”hŒ kernel_bind”…”�”}”(hj6sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2subah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjsh²hh³j#sh´MOubj¡ )�”}”(hŒA(struct socket *sock, struct sockaddr_unsized *addr, int addrlen)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjRsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNsubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjpsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jrsŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j8ssbŒ c.kernel_bind”†”asbuh1hhjNsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNsubj )�”}”(hj h]”hŒ*”…”�”}”(hjžsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjNsubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj«sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjJsubj§ )�”}”(hŒstruct sockaddr_unsized *addr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÄsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑsh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀsubh)�”}”(hhh]”j9)�”}”(hŒsockaddr_unsized”h]”hŒsockaddr_unsized”…”�”}”(hjâsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jäsŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŒsŒ c.kernel_bind”†”asbuh1hhjÀsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀsubj )�”}”(hj h]”hŒ*”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀsubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjJsubj§ )�”}”(hŒ int addrlen”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj4th²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj0tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0tubj9)�”}”(hŒaddrlen”h]”hŒaddrlen”…”�”}”(hjPth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjJsubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjsh²hh³j#sh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj sh²hh³j#sh´MOubah}”(h]”jsah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j#sh´MOhj sh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*bind an address to a socket (kernel space)”h]”hŒ*bind an address to a socket (kernel space)”…”�”}”(hjzth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MOhjwth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj sh²hh³j#sh´MOubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j’tjŒj’tj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ°**Parameters** ``struct socket *sock`` socket ``struct sockaddr_unsized *addr`` address ``int addrlen`` length of address **Description** Returns 0 or an error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjœth]”hŒ Parameters”…”�”}”(hjžth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjštubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MShj–tubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hj»th]”hŒstruct socket *sock”…”�”}”(hj½th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹tubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MPhjµtubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjÔth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐth´MPhjÑtubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐth´MPhj²tubjä)�”}”(hŒ*``struct sockaddr_unsized *addr`` address ”h]”(jê)�”}”(hŒ!``struct sockaddr_unsized *addr``”h]”jð)�”}”(hjôth]”hŒstruct sockaddr_unsized *addr”…”�”}”(hjöth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòtubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MQhjîtubj)�”}”(hhh]”jl)�”}”(hŒaddress”h]”hŒaddress”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j uh´MQhj uubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j uh´MQhj²tubjä)�”}”(hŒ"``int addrlen`` length of address ”h]”(jê)�”}”(hŒ``int addrlen``”h]”jð)�”}”(hj-uh]”hŒ int addrlen”…”�”}”(hj/uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+uubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MRhj'uubj)�”}”(hhh]”jl)�”}”(hŒlength of address”h]”hŒlength of address”…”�”}”(hjFuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jBuh´MRhjCuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jBuh´MRhj²tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–tubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjhuh]”hŒ Description”…”�”}”(hjjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjfuubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MThj–tubjÒ)�”}”(hŒReturns 0 or an error.”h]”jl)�”}”(hj€uh]”hŒReturns 0 or an error.”…”�”}”(hj‚uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MShj~uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j�uh´MShj–tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒkernel_listen (C function)”Œc.kernel_listen”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4int kernel_listen (struct socket *sock, int backlog)”h]”j )�”}”(hŒ3int kernel_listen(struct socket *sock, int backlog)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¶uh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj²uh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²uh²hh³jÄuh´Mcubj3)�”}”(hŒ kernel_listen”h]”j9)�”}”(hŒ kernel_listen”h]”hŒ kernel_listen”…”�”}”(hj×uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓuubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj²uh²hh³jÄuh´Mcubj¡ )�”}”(hŒ"(struct socket *sock, int backlog)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjóuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïuubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jvŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÙusbŒc.kernel_listen”†”asbuh1hhjïuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1vh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïuubj )�”}”(hj h]”hŒ*”…”�”}”(hj?vh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjïuubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjLvh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjëuubj§ )�”}”(hŒ int backlog”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjevh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjavubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjavubj9)�”}”(hŒbacklog”h]”hŒbacklog”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjavubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjëuubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj²uh²hh³jÄuh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj®uh²hh³jÄuh´Mcubah}”(h]”j©uah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÄuh´Mchj«uh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-move socket to listening state (kernel space)”h]”hŒ-move socket to listening state (kernel space)”…”�”}”(hj«vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mchj¨vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj«uh²hh³jÄuh´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÃvjŒjÃvj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct socket *sock`` socket ``int backlog`` pending connections queue size **Description** Returns 0 or an error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÍvh]”hŒ Parameters”…”�”}”(hjÏvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjËvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MghjÇvubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hjìvh]”hŒstruct socket *sock”…”�”}”(hjîvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêvubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mdhjævubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwh´Mdhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjævubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwh´Mdhjãvubjä)�”}”(hŒ/``int backlog`` pending connections queue size ”h]”(jê)�”}”(hŒ``int backlog``”h]”jð)�”}”(hj%wh]”hŒ int backlog”…”�”}”(hj'wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#wubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mehjwubj)�”}”(hhh]”jl)�”}”(hŒpending connections queue size”h]”hŒpending connections queue size”…”�”}”(hj>wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:wh´Mehj;wubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:wh´Mehjãvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇvubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj`wh]”hŒ Description”…”�”}”(hjbwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^wubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MghjÇvubjÒ)�”}”(hŒReturns 0 or an error.”h]”jl)�”}”(hjxwh]”hŒReturns 0 or an error.”…”�”}”(hjzwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mfhjvwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j‡wh´MfhjÇvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒkernel_accept (C function)”Œc.kernel_accept”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKint kernel_accept (struct socket *sock, struct socket **newsock, int flags)”h]”j )�”}”(hŒJint kernel_accept(struct socket *sock, struct socket **newsock, int flags)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj®wh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjªwh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªwh²hh³j¼wh´Mqubj3)�”}”(hŒ kernel_accept”h]”j9)�”}”(hŒ kernel_accept”h]”hŒ kernel_accept”…”�”}”(hjÏwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËwubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjªwh²hh³j¼wh´Mqubj¡ )�”}”(hŒ9(struct socket *sock, struct socket **newsock, int flags)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjëwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçwubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j xŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÑwsbŒc.kernel_accept”†”asbuh1hhjçwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçwubj )�”}”(hj h]”hŒ*”…”�”}”(hj7xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçwubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjDxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjãwubj§ )�”}”(hŒstruct socket **newsock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj]xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYxubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj{xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j}xŒmodname”NŒ classname”Njå jè )�”}”jë ]”j%xŒc.kernel_accept”†”asbuh1hhjYxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYxubj )�”}”(hj h]”hŒ*”…”�”}”(hj§xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjYxubj )�”}”(hj h]”hŒ*”…”�”}”(hj´xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjYxubj9)�”}”(hŒnewsock”h]”hŒnewsock”…”�”}”(hjÁxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjãwubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÚxh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÖxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÖxubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjöxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjãwubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjªwh²hh³j¼wh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¦wh²hh³j¼wh´Mqubah}”(h]”j¡wah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¼wh´Mqhj£wh²hubjg)�”}”(hhh]”jl)�”}”(hŒ"accept a connection (kernel space)”h]”hŒ"accept a connection (kernel space)”…”�”}”(hj yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mqhjyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj£wh²hh³j¼wh´Mqubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j8yjŒj8yj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX(**Parameters** ``struct socket *sock`` listening socket ``struct socket **newsock`` new connected socket ``int flags`` flags **Description** **flags** must be SOCK_CLOEXEC, SOCK_NONBLOCK or 0. If it fails, **newsock** is guaranteed to be ``NULL``. Returns 0 or an error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjByh]”hŒ Parameters”…”�”}”(hjDyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj@yubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Muhjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(zubhŒ is guaranteed to be ”…”�”}”(hj(zh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjPzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(zubhŒ. Returns 0 or an error.”…”�”}”(hj(zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Muhj$zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jhzh´Muhj{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:{ubh)�”}”(hhh]”j9)�”}”(hŒsockaddr_unsized”h]”hŒsockaddr_unsized”…”�”}”(hj\{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjY{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j^{Œmodname”NŒ classname”Njå jè )�”}”jë ]”j{Œc.kernel_connect”†”asbuh1hhj:{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:{ubj )�”}”(hj h]”hŒ*”…”�”}”(hjˆ{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj:{ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj•{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÄzubj§ )�”}”(hŒ int addrlen”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj®{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjª{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjª{ubj9)�”}”(hŒaddrlen”h]”hŒaddrlen”…”�”}”(hjÊ{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjª{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÄzubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjã{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjß{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjß{ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÿ{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjß{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÄzubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‹zh²hh³j�zh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‡zh²hh³j�zh´Mšubah}”(h]”j‚zah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�zh´Mšhj„zh²hubjg)�”}”(hhh]”jl)�”}”(hŒconnect a socket (kernel space)”h]”hŒconnect a socket (kernel space)”…”�”}”(hj)|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mšhj&|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj„zh²hh³j�zh´Mšubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jA|jŒjA|j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX­**Parameters** ``struct socket *sock`` socket ``struct sockaddr_unsized *addr`` address ``int addrlen`` address length ``int flags`` flags (O_NONBLOCK, ...) **Description** For datagram sockets, **addr** is the address to which datagrams are sent by default, and the only address from which datagrams are received. For stream sockets, attempts to connect to **addr**. Returns 0 or an error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjK|h]”hŒ Parameters”…”�”}”(hjM|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjI|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MžhjE|ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hjj|h]”hŒstruct socket *sock”…”�”}”(hjl|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjh|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M›hjd|ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjƒ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|h´M›hj€|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|h´M›hja|ubjä)�”}”(hŒ*``struct sockaddr_unsized *addr`` address ”h]”(jê)�”}”(hŒ!``struct sockaddr_unsized *addr``”h]”jð)�”}”(hj£|h]”hŒstruct sockaddr_unsized *addr”…”�”}”(hj¥|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mœhj�|ubj)�”}”(hhh]”jl)�”}”(hŒaddress”h]”hŒaddress”…”�”}”(hj¼|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¸|h´Mœhj¹|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸|h´Mœhja|ubjä)�”}”(hŒ``int addrlen`` address length ”h]”(jê)�”}”(hŒ``int addrlen``”h]”jð)�”}”(hjÜ|h]”hŒ int addrlen”…”�”}”(hjÞ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M�hjÖ|ubj)�”}”(hhh]”jl)�”}”(hŒaddress length”h]”hŒaddress length”…”�”}”(hjõ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñ|h´M�hjò|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñ|h´M�hja|ubjä)�”}”(hŒ&``int flags`` flags (O_NONBLOCK, ...) ”h]”(jê)�”}”(hŒ ``int flags``”h]”jð)�”}”(hj}h]”hŒ int flags”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mžhj}ubj)�”}”(hhh]”jl)�”}”(hŒflags (O_NONBLOCK, ...)”h]”hŒflags (O_NONBLOCK, ...)”…”�”}”(hj.}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*}h´Mžhj+}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*}h´Mžhja|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjE|ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjP}h]”hŒ Description”…”�”}”(hjR}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjN}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M hjE|ubjÒ)�”}”(hŒÞFor datagram sockets, **addr** is the address to which datagrams are sent by default, and the only address from which datagrams are received. For stream sockets, attempts to connect to **addr**. Returns 0 or an error code.”h]”jl)�”}”(hŒÞFor datagram sockets, **addr** is the address to which datagrams are sent by default, and the only address from which datagrams are received. For stream sockets, attempts to connect to **addr**. Returns 0 or an error code.”h]”(hŒFor datagram sockets, ”…”�”}”(hjj}h²hh³Nh´Nubj›)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hjr}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjj}ubhŒ› is the address to which datagrams are sent by default, and the only address from which datagrams are received. For stream sockets, attempts to connect to ”…”�”}”(hjj}h²hh³Nh´Nubj›)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hj„}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjj}ubhŒ. Returns 0 or an error code.”…”�”}”(hjj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MŸhjf}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jœ}h´MŸhjE|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒkernel_getsockname (C function)”Œc.kernel_getsockname”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCint kernel_getsockname (struct socket *sock, struct sockaddr *addr)”h]”j )�”}”(hŒBint kernel_getsockname(struct socket *sock, struct sockaddr *addr)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÃ}h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¿}h²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿}h²hh³jÑ}h´M³ubj3)�”}”(hŒkernel_getsockname”h]”j9)�”}”(hŒkernel_getsockname”h]”hŒkernel_getsockname”…”�”}”(hjä}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà}ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¿}h²hh³jÑ}h´M³ubj¡ )�”}”(hŒ,(struct socket *sock, struct sockaddr *addr)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjü}ubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ~Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jæ}sbŒc.kernel_getsockname”†”asbuh1hhjü}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjü}ubj )�”}”(hj h]”hŒ*”…”�”}”(hjL~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjü}ubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjY~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjü}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjø}ubj§ )�”}”(hŒstruct sockaddr *addr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjr~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjn~ubh)�”}”(hhh]”j9)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’~Œmodname”NŒ classname”Njå jè )�”}”jë ]”j:~Œc.kernel_getsockname”†”asbuh1hhjn~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjn~ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¼~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjn~ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjÉ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjn~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjø}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¿}h²hh³jÑ}h´M³ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj»}h²hh³jÑ}h´M³ubah}”(h]”j¶}ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÑ}h´M³hj¸}h²hubjg)�”}”(hhh]”jl)�”}”(hŒ8get the address which the socket is bound (kernel space)”h]”hŒ8get the address which the socket is bound (kernel space)”…”�”}”(hjó~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M³hjð~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¸}h²hh³jÑ}h´M³ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒü**Parameters** ``struct socket *sock`` socket ``struct sockaddr *addr`` address holder **Description** Fills the **addr** pointer with the address which the socket is bound. Returns the length of the address in bytes or an error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M·hjubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hj4h]”hŒstruct socket *sock”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M´hj.ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jIh´M´hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jIh´M´hj+ubjä)�”}”(hŒ)``struct sockaddr *addr`` address holder ”h]”(jê)�”}”(hŒ``struct sockaddr *addr``”h]”jð)�”}”(hjmh]”hŒstruct sockaddr *addr”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´Mµhjgubj)�”}”(hhh]”jl)�”}”(hŒaddress holder”h]”hŒaddress holder”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚h´Mµhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚h´Mµhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¨h]”hŒ Description”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M·hjubjÒ)�”}”(hŒƒFills the **addr** pointer with the address which the socket is bound. Returns the length of the address in bytes or an error code.”h]”jl)�”}”(hŒƒFills the **addr** pointer with the address which the socket is bound. Returns the length of the address in bytes or an error code.”h]”(hŒ Fills the ”…”�”}”(hjÂh²hh³Nh´Nubj›)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂubhŒq pointer with the address which the socket is bound. Returns the length of the address in bytes or an error code.”…”�”}”(hjÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´M¶hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jâh´M¶hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒkernel_getpeername (C function)”Œc.kernel_getpeername”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCint kernel_getpeername (struct socket *sock, struct sockaddr *addr)”h]”j )�”}”(hŒBint kernel_getpeername(struct socket *sock, struct sockaddr *addr)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj€h²hh³ŒL/var/lib/git/docbuild/linux/Documentation/networking/kapi:23: ./net/socket.c”h´MÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€h²hh³j€h´MÂubj3)�”}”(hŒkernel_getpeername”h]”j9)�”}”(hŒkernel_getpeername”h]”hŒkernel_getpeername”…”�”}”(hj*€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&€ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj€h²hh³j€h´MÂubj¡ )�”}”(hŒ,(struct socket *sock, struct sockaddr *addr)”h]”(j§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjF€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjB€ubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjd€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jf€Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j,€sbŒc.kernel_getpeername”†”asbuh1hhjB€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjB€ubj )�”}”(hj h]”hŒ*”…”�”}”(hj’€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjB€ubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjŸ€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjB€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>€ubj§ )�”}”(hŒstruct sockaddr *addr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¸€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´€ubh)�”}”(hhh]”j9)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hjÖ€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jØ€Œmodname”NŒ classname”Njå jè )�”}”jë ]”j€€Œc.kernel_getpeername”†”asbuh1hhj´€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´€ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj´€ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>€ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj€h²hh³j€h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj€h²hh³j€h´MÂubah}”(h]”jüah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j€h´MÂhjþh²hubjg)�”}”(hhh]”jl)�”}”(hŒŠŒmodname”NŒ classname”Njå jè )�”}”jë ]”j·‰Œc.napi_skb_cache_get_bulk”†”asbuh1hhj5Šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5Šubj9)�”}”(hjDh]”hŒn”…”�”}”(hjhŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ‰ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj”‰h²hh³j¼‰h´MJubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�‰h²hh³j¼‰h´MJubah}”(h]”j‹‰ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¼‰h´MJhj�‰h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2obtain a number of zeroed skb heads from the cache”h]”hŒ2obtain a number of zeroed skb heads from the cache”…”�”}”(hj‘Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MJhjŽŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�‰h²hh³j¼‰h´MJubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©ŠjŒj©Šj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXè**Parameters** ``void **skbs`` pointer to an at least **n**-sized array to fill with skb pointers ``u32 n`` number of entries to provide **Description** Tries to obtain **n** :c:type:`sk_buff` entries from the NAPI percpu cache and writes the pointers into the provided array **skbs**. If there are less entries available, tries to replenish the cache and bulk-allocates the diff from the MM layer if needed. The heads are being zeroed with either memset() or ``__GFP_ZERO``, so they are ready for {,__}build_skb_around() and don't have any data buffers attached. Must be called *only* from the BH context. **Return** number of successfully allocated skbs (**n** if no actual allocation needed or kmem_cache_alloc_bulk() didn't fail).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³Šh]”hŒ Parameters”…”�”}”(hjµŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MNhj­Šubjß)�”}”(hhh]”(jä)�”}”(hŒS``void **skbs`` pointer to an at least **n**-sized array to fill with skb pointers ”h]”(jê)�”}”(hŒ``void **skbs``”h]”jð)�”}”(hjÒŠh]”hŒ void **skbs”…”�”}”(hjÔŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjЊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MKhjÌŠubj)�”}”(hhh]”jl)�”}”(hŒBpointer to an at least **n**-sized array to fill with skb pointers”h]”(hŒpointer to an at least ”…”�”}”(hjëŠh²hh³Nh´Nubj›)�”}”(hŒ**n**”h]”hŒn”…”�”}”(hjóŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëŠubhŒ&-sized array to fill with skb pointers”…”�”}”(hjëŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçŠh´MKhjèŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçŠh´MKhjÉŠubjä)�”}”(hŒ'``u32 n`` number of entries to provide ”h]”(jê)�”}”(hŒ ``u32 n``”h]”jð)�”}”(hj‹h]”hŒu32 n”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MLhj‹ubj)�”}”(hhh]”jl)�”}”(hŒnumber of entries to provide”h]”hŒnumber of entries to provide”…”�”}”(hj6‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2‹h´MLhj3‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2‹h´MLhjÉŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­Šubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjX‹h]”hŒ Description”…”�”}”(hjZ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjV‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MNhj­Šubjl)�”}”(hXÅTries to obtain **n** :c:type:`sk_buff` entries from the NAPI percpu cache and writes the pointers into the provided array **skbs**. If there are less entries available, tries to replenish the cache and bulk-allocates the diff from the MM layer if needed. The heads are being zeroed with either memset() or ``__GFP_ZERO``, so they are ready for {,__}build_skb_around() and don't have any data buffers attached. Must be called *only* from the BH context.”h]”(hŒTries to obtain ”…”�”}”(hjn‹h²hh³Nh´Nubj›)�”}”(hŒ**n**”h]”hŒn”…”�”}”(hjv‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjn‹ubhŒ ”…”�”}”(hjn‹h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjŠ‹h]”hŒsk_buff”…”�”}”(hjŒ‹h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjˆ‹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MMhjn‹ubhŒT entries from the NAPI percpu cache and writes the pointers into the provided array ”…”�”}”(hjn‹h²hh³Nh´Nubj›)�”}”(hŒ**skbs**”h]”hŒskbs”…”�”}”(hj¬‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjn‹ubhŒ°. If there are less entries available, tries to replenish the cache and bulk-allocates the diff from the MM layer if needed. The heads are being zeroed with either memset() or ”…”�”}”(hjn‹h²hh³Nh´Nubjð)�”}”(hŒ``__GFP_ZERO``”h]”hŒ __GFP_ZERO”…”�”}”(hj¾‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjn‹ubhŒk, so they are ready for {,__}build_skb_around() and don’t have any data buffers attached. Must be called ”…”�”}”(hjn‹h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*only*”h]”hŒonly”…”�”}”(hjÒ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jЋhjn‹ubhŒ from the BH context.”…”�”}”(hjn‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§‹h´MMhj­Šubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjì‹h]”hŒReturn”…”�”}”(hjî‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MUhj­Šubjl)�”}”(hŒtnumber of successfully allocated skbs (**n** if no actual allocation needed or kmem_cache_alloc_bulk() didn't fail).”h]”(hŒ'number of successfully allocated skbs (”…”�”}”(hjŒh²hh³Nh´Nubj›)�”}”(hŒ**n**”h]”hŒn”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒubhŒJ if no actual allocation needed or kmem_cache_alloc_bulk() didn’t fail).”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MVhj­Šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒbuild_skb_around (C function)”Œc.build_skb_around”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ[struct sk_buff * build_skb_around (struct sk_buff *skb, void *data, unsigned int frag_size)”h]”j )�”}”(hŒYstruct sk_buff *build_skb_around(struct sk_buff *skb, void *data, unsigned int frag_size)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjCŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?Œh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?Œh²hh³jPŒh´M ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjbŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdŒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œbuild_skb_around”sbŒc.build_skb_around”†”asbuh1hhj?Œh²hh³jPŒh´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?Œh²hh³jPŒh´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‘Œh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?Œh²hh³jPŒh´M ubj3)�”}”(hŒbuild_skb_around”h]”j9)�”}”(hj€Œh]”hŒbuild_skb_around”…”�”}”(hj¢Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžŒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj?Œh²hh³jPŒh´M ubj¡ )�”}”(hŒ9(struct sk_buff *skb, void *data, unsigned int frag_size)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj½Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹Œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹Œubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÛŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÝŒŒmodname”NŒ classname”Njå jè )�”}”jë ]”j~ŒŒc.build_skb_around”†”asbuh1hhj¹Œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹Œubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¹Œubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjµŒubj§ )�”}”(hŒ void *data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjI�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj)�ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjµŒubj§ )�”}”(hŒunsigned int frag_size”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjk�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjk�ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjk�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjk�ubj9)�”}”(hŒ frag_size”h]”hŒ frag_size”…”�”}”(hj§�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjk�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjµŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj?Œh²hh³jPŒh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj;Œh²hh³jPŒh´M ubah}”(h]”j6Œah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jPŒh´M hj8Œh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*build a network buffer around provided skb”h]”hŒ*build a network buffer around provided skb”…”�”}”(hjÑ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÎ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8Œh²hh³jPŒh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jé�jŒjé�j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ·**Parameters** ``struct sk_buff *skb`` sk_buff provide by caller, must be memset cleared ``void *data`` data buffer provided by caller ``unsigned int frag_size`` size of data”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjó�h]”hŒ Parameters”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjí�ubjß)�”}”(hhh]”(jä)�”}”(hŒJ``struct sk_buff *skb`` sk_buff provide by caller, must be memset cleared ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjŽh]”hŒstruct sk_buff *skb”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hj Žubj)�”}”(hhh]”jl)�”}”(hŒ1sk_buff provide by caller, must be memset cleared”h]”hŒ1sk_buff provide by caller, must be memset cleared”…”�”}”(hj+Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'Žh´M hj(Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'Žh´M hj Žubjä)�”}”(hŒ.``void *data`` data buffer provided by caller ”h]”(jê)�”}”(hŒ``void *data``”h]”jð)�”}”(hjKŽh]”hŒ void *data”…”�”}”(hjMŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjEŽubj)�”}”(hhh]”jl)�”}”(hŒdata buffer provided by caller”h]”hŒdata buffer provided by caller”…”�”}”(hjdŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`Žh´M hjaŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`Žh´M hj Žubjä)�”}”(hŒ'``unsigned int frag_size`` size of data”h]”(jê)�”}”(hŒ``unsigned int frag_size``”h]”jð)�”}”(hj„Žh]”hŒunsigned int frag_size”…”�”}”(hj†Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj~Žubj)�”}”(hhh]”jl)�”}”(hŒ size of data”h]”hŒ size of data”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjšŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™Žh´Mhj Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjí�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_build_skb (C function)”Œc.napi_build_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDstruct sk_buff * napi_build_skb (void *data, unsigned int frag_size)”h]”j )�”}”(hŒBstruct sk_buff *napi_build_skb(void *data, unsigned int frag_size)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÞŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚŽh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìŽh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚŽh²hh³jëŽh´M8ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjýŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿŽŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnapi_build_skb”sbŒc.napi_build_skb”†”asbuh1hhjÚŽh²hh³jëŽh´M8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚŽh²hh³jëŽh´M8ubj )�”}”(hj h]”hŒ*”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚŽh²hh³jëŽh´M8ubj3)�”}”(hŒnapi_build_skb”h]”j9)�”}”(hj�h]”hŒnapi_build_skb”…”�”}”(hj=�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÚŽh²hh³jëŽh´M8ubj¡ )�”}”(hŒ$(void *data, unsigned int frag_size)”h]”(j§ )�”}”(hŒ void *data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjT�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjT�ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjP�ubj§ )�”}”(hŒunsigned int frag_size”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjš�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–�ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–�ubj9)�”}”(hŒ frag_size”h]”hŒ frag_size”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjP�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÚŽh²hh³jëŽh´M8ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÖŽh²hh³jëŽh´M8ubah}”(h]”jÑŽah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jëŽh´M8hjÓŽh²hubjg)�”}”(hhh]”jl)�”}”(hŒbuild a network buffer”h]”hŒbuild a network buffer”…”�”}”(hjü�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M8hjù�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÓŽh²hh³jëŽh´M8ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�jŒj�j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXG**Parameters** ``void *data`` data buffer provided by caller ``unsigned int frag_size`` size of data **Description** Version of __napi_build_skb() that takes care of skb->head_frag and skb->pfmemalloc when the data is a page or page fragment. Returns a new :c:type:`sk_buff` on success, ``NULL`` on allocation failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M<hj�ubjß)�”}”(hhh]”(jä)�”}”(hŒ.``void *data`` data buffer provided by caller ”h]”(jê)�”}”(hŒ``void *data``”h]”jð)�”}”(hj=�h]”hŒ void *data”…”�”}”(hj?�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M9hj7�ubj)�”}”(hhh]”jl)�”}”(hŒdata buffer provided by caller”h]”hŒdata buffer provided by caller”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jR�h´M9hjS�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jR�h´M9hj4�ubjä)�”}”(hŒ(``unsigned int frag_size`` size of data ”h]”(jê)�”}”(hŒ``unsigned int frag_size``”h]”jð)�”}”(hjv�h]”hŒunsigned int frag_size”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M:hjp�ubj)�”}”(hhh]”jl)�”}”(hŒ size of data”h]”hŒ size of data”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹�h´M:hjŒ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹�h´M:hj4�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj±�h]”hŒ Description”…”�”}”(hj³�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M<hj�ubjl)�”}”(hŒ}Version of __napi_build_skb() that takes care of skb->head_frag and skb->pfmemalloc when the data is a page or page fragment.”h]”hŒ}Version of __napi_build_skb() that takes care of skb->head_frag and skb->pfmemalloc when the data is a page or page fragment.”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M;hj�ubjl)�”}”(hŒKReturns a new :c:type:`sk_buff` on success, ``NULL`` on allocation failure.”h]”(hŒReturns a new ”…”�”}”(hjÖ�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjà�h]”hŒsk_buff”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÞ�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M>hjÖ�ubhŒ on success, ”…”�”}”(hjÖ�h²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖ�ubhŒ on allocation failure.”…”�”}”(hjÖ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jý�h´M>hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__alloc_skb (C function)”Œ c.__alloc_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUstruct sk_buff * __alloc_skb (unsigned int size, gfp_t gfp_mask, int flags, int node)”h]”j )�”}”(hŒSstruct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, int flags, int node)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj:‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6‘h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6‘h²hh³jG‘h´M“ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjY‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjV‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j[‘Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ __alloc_skb”sbŒ c.__alloc_skb”†”asbuh1hhj6‘h²hh³jG‘h´M“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6‘h²hh³jG‘h´M“ubj )�”}”(hj h]”hŒ*”…”�”}”(hjˆ‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6‘h²hh³jG‘h´M“ubj3)�”}”(hŒ __alloc_skb”h]”j9)�”}”(hjw‘h]”hŒ __alloc_skb”…”�”}”(hj™‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•‘ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj6‘h²hh³jG‘h´M“ubj¡ )�”}”(hŒ8(unsigned int size, gfp_t gfp_mask, int flags, int node)”h]”(j§ )�”}”(hŒunsigned int size”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj´‘h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj°‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°‘ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjБh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj°‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°‘ubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjì‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬‘ubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ’Œmodname”NŒ classname”Njå jè )�”}”jë ]”ju‘Œ c.__alloc_skb”†”asbuh1hhj’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj4’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬‘ubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjM’h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjI’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjI’ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hji’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬‘ubj§ )�”}”(hŒint node”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‚’h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj~’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~’ubj9)�”}”(hŒnode”h]”hŒnode”…”�”}”(hjž’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬‘ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj6‘h²hh³jG‘h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj2‘h²hh³jG‘h´M“ubah}”(h]”j-‘ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jG‘h´M“hj/‘h²hubjg)�”}”(hhh]”jl)�”}”(hŒallocate a network buffer”h]”hŒallocate a network buffer”…”�”}”(hjÈ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M“hjÅ’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj/‘h²hh³jG‘h´M“ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jà’jŒjà’j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÜ**Parameters** ``unsigned int size`` size to allocate ``gfp_t gfp_mask`` allocation mask ``int flags`` If SKB_ALLOC_FCLONE is set, allocate from fclone cache instead of head cache and allocate a cloned (child) skb. If SKB_ALLOC_RX is set, __GFP_MEMALLOC will be used for allocations in case the data is required for writeback ``int node`` numa node to allocate memory on **Description** Allocate a new :c:type:`sk_buff`. The returned buffer has no headroom and a tail room of at least size bytes. The object has a reference count of one. The return is the buffer. On a failure the return is ``NULL``. Buffers may only be allocated from interrupts using a **gfp_mask** of ``GFP_ATOMIC``.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjê’h]”hŒ Parameters”…”�”}”(hjì’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjè’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M—hjä’ubjß)�”}”(hhh]”(jä)�”}”(hŒ'``unsigned int size`` size to allocate ”h]”(jê)�”}”(hŒ``unsigned int size``”h]”jð)�”}”(hj “h]”hŒunsigned int size”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M”hj“ubj)�”}”(hhh]”jl)�”}”(hŒsize to allocate”h]”hŒsize to allocate”…”�”}”(hj"“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“h´M”hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“h´M”hj“ubjä)�”}”(hŒ#``gfp_t gfp_mask`` allocation mask ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hjB“h]”hŒgfp_t gfp_mask”…”�”}”(hjD“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M•hj<“ubj)�”}”(hhh]”jl)�”}”(hŒallocation mask”h]”hŒallocation mask”…”�”}”(hj[“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jW“h´M•hjX“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jW“h´M•hj“ubjä)�”}”(hŒí``int flags`` If SKB_ALLOC_FCLONE is set, allocate from fclone cache instead of head cache and allocate a cloned (child) skb. If SKB_ALLOC_RX is set, __GFP_MEMALLOC will be used for allocations in case the data is required for writeback ”h]”(jê)�”}”(hŒ ``int flags``”h]”jð)�”}”(hj{“h]”hŒ int flags”…”�”}”(hj}“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjy“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M™hju“ubj)�”}”(hhh]”jl)�”}”(hŒÞIf SKB_ALLOC_FCLONE is set, allocate from fclone cache instead of head cache and allocate a cloned (child) skb. If SKB_ALLOC_RX is set, __GFP_MEMALLOC will be used for allocations in case the data is required for writeback”h]”hŒÞIf SKB_ALLOC_FCLONE is set, allocate from fclone cache instead of head cache and allocate a cloned (child) skb. If SKB_ALLOC_RX is set, __GFP_MEMALLOC will be used for allocations in case the data is required for writeback”…”�”}”(hj”“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M–hj‘“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhju“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�“h´M™hj“ubjä)�”}”(hŒ-``int node`` numa node to allocate memory on ”h]”(jê)�”}”(hŒ ``int node``”h]”jð)�”}”(hjµ“h]”hŒint node”…”�”}”(hj·“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj³“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mšhj¯“ubj)�”}”(hhh]”jl)�”}”(hŒnuma node to allocate memory on”h]”hŒnuma node to allocate memory on”…”�”}”(hjΓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÊ“h´MšhjË“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÊ“h´Mšhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjä’ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjð“h]”hŒ Description”…”�”}”(hjò“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mœhjä’ubjÒ)�”}”(hX,Allocate a new :c:type:`sk_buff`. The returned buffer has no headroom and a tail room of at least size bytes. The object has a reference count of one. The return is the buffer. On a failure the return is ``NULL``. Buffers may only be allocated from interrupts using a **gfp_mask** of ``GFP_ATOMIC``.”h]”(jl)�”}”(hŒÕAllocate a new :c:type:`sk_buff`. The returned buffer has no headroom and a tail room of at least size bytes. The object has a reference count of one. The return is the buffer. On a failure the return is ``NULL``.”h]”(hŒAllocate a new ”…”�”}”(hj ”h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj”h]”hŒsk_buff”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M›hj ”ubhŒ¬. The returned buffer has no headroom and a tail room of at least size bytes. The object has a reference count of one. The return is the buffer. On a failure the return is ”…”�”}”(hj ”h²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj6”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ”ubhŒ.”…”�”}”(hj ”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1”h´M›hj”ubjl)�”}”(hŒUBuffers may only be allocated from interrupts using a **gfp_mask** of ``GFP_ATOMIC``.”h]”(hŒ6Buffers may only be allocated from interrupts using a ”…”�”}”(hjN”h²hh³Nh´Nubj›)�”}”(hŒ **gfp_mask**”h]”hŒgfp_mask”…”�”}”(hjV”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjN”ubhŒ of ”…”�”}”(hjN”h²hh³Nh´Nubjð)�”}”(hŒ``GFP_ATOMIC``”h]”hŒ GFP_ATOMIC”…”�”}”(hjh”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjN”ubhŒ.”…”�”}”(hjN”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MŸhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j1”h´M›hjä’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__netdev_alloc_skb (C function)”Œc.__netdev_alloc_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ^struct sk_buff * __netdev_alloc_skb (struct net_device *dev, unsigned int len, gfp_t gfp_mask)”h]”j )�”}”(hŒ\struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int len, gfp_t gfp_mask)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj§”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£”h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£”h²hh³j´”h´Mîubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÆ”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÈ”Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ__netdev_alloc_skb”sbŒc.__netdev_alloc_skb”†”asbuh1hhj£”h²hh³j´”h´Mîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£”h²hh³j´”h´Mîubj )�”}”(hj h]”hŒ*”…”�”}”(hjõ”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj£”h²hh³j´”h´Mîubj3)�”}”(hŒ__netdev_alloc_skb”h]”j9)�”}”(hjä”h]”hŒ__netdev_alloc_skb”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj£”h²hh³j´”h´Mîubj¡ )�”}”(hŒ:(struct net_device *dev, unsigned int len, gfp_t gfp_mask)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj!•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj?•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jA•Œmodname”NŒ classname”Njå jè )�”}”jë ]”j┌c.__netdev_alloc_skb”†”asbuh1hhj•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•ubj )�”}”(hj h]”hŒ*”…”�”}”(hjk•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjx•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•ubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‘•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�•ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj­•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�•ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÉ•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•ubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjå•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j界modname”NŒ classname”Njå jè )�”}”jë ]”j┌c.__netdev_alloc_skb”†”asbuh1hhjÞ•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞ•ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj£”h²hh³j´”h´Mîubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŸ”h²hh³j´”h´Mîubah}”(h]”jš”ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j´”h´Mîhjœ”h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.allocate an skbuff for rx on a specific device”h]”hŒ.allocate an skbuff for rx on a specific device”…”�”}”(hj;–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mîhj8–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjœ”h²hh³j´”h´Mîubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jS–jŒjS–j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` network device to receive on ``unsigned int len`` length to allocate ``gfp_t gfp_mask`` get_free_pages mask, passed to alloc_skb **Description** Allocate a new :c:type:`sk_buff` and assign it a usage count of one. The buffer has NET_SKB_PAD headroom built in. Users should allocate the headroom they think they need without accounting for the built in space. The built in space is used for optimisations. ``NULL`` is returned if there is no free memory.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj]–h]”hŒ Parameters”…”�”}”(hj_–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MòhjW–ubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct net_device *dev`` network device to receive on ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj|–h]”hŒstruct net_device *dev”…”�”}”(hj~–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjz–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mïhjv–ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device to receive on”h]”hŒnetwork device to receive on”…”�”}”(hj•–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘–h´Mïhj’–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘–h´Mïhjs–ubjä)�”}”(hŒ(``unsigned int len`` length to allocate ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjµ–h]”hŒunsigned int len”…”�”}”(hj·–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj³–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mðhj¯–ubj)�”}”(hhh]”jl)�”}”(hŒlength to allocate”h]”hŒlength to allocate”…”�”}”(hjΖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÊ–h´MðhjË–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÊ–h´Mðhjs–ubjä)�”}”(hŒ<``gfp_t gfp_mask`` get_free_pages mask, passed to alloc_skb ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hjî–h]”hŒgfp_t gfp_mask”…”�”}”(hjð–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjì–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mñhjè–ubj)�”}”(hhh]”jl)�”}”(hŒ(get_free_pages mask, passed to alloc_skb”h]”hŒ(get_free_pages mask, passed to alloc_skb”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—h´Mñhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjè–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—h´Mñhjs–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjW–ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj)—h]”hŒ Description”…”�”}”(hj+—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MóhjW–ubjÒ)�”}”(hX5Allocate a new :c:type:`sk_buff` and assign it a usage count of one. The buffer has NET_SKB_PAD headroom built in. Users should allocate the headroom they think they need without accounting for the built in space. The built in space is used for optimisations. ``NULL`` is returned if there is no free memory.”h]”(jl)�”}”(hXAllocate a new :c:type:`sk_buff` and assign it a usage count of one. The buffer has NET_SKB_PAD headroom built in. Users should allocate the headroom they think they need without accounting for the built in space. The built in space is used for optimisations.”h]”(hŒAllocate a new ”…”�”}”(hjC—h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjM—h]”hŒsk_buff”…”�”}”(hjO—h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjK—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MòhjC—ubhŒã and assign it a usage count of one. The buffer has NET_SKB_PAD headroom built in. Users should allocate the headroom they think they need without accounting for the built in space. The built in space is used for optimisations.”…”�”}”(hjC—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jj—h´Mòhj?—ubjl)�”}”(hŒ0``NULL`` is returned if there is no free memory.”h]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjy—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhju—ubhŒ( is returned if there is no free memory.”…”�”}”(hju—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M÷hj?—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jj—h´MòhjW–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_alloc_skb (C function)”Œc.napi_alloc_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒLstruct sk_buff * napi_alloc_skb (struct napi_struct *napi, unsigned int len)”h]”j )�”}”(hŒJstruct sk_buff *napi_alloc_skb(struct napi_struct *napi, unsigned int len)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¸—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´—h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´—h²hh³jÅ—h´M<ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj×—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔ—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÙ—Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnapi_alloc_skb”sbŒc.napi_alloc_skb”†”asbuh1hhj´—h²hh³jÅ—h´M<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´—h²hh³jÅ—h´M<ubj )�”}”(hj h]”hŒ*”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj´—h²hh³jÅ—h´M<ubj3)�”}”(hŒnapi_alloc_skb”h]”j9)�”}”(hjõ—h]”hŒnapi_alloc_skb”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj´—h²hh³jÅ—h´M<ubj¡ )�”}”(hŒ,(struct napi_struct *napi, unsigned int len)”h]”(j§ )�”}”(hŒstruct napi_struct *napi”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj2˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.˜ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjP˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jR˜Œmodname”NŒ classname”Njå jè )�”}”jë ]”jó—Œc.napi_alloc_skb”†”asbuh1hhj.˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.˜ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj.˜ubj9)�”}”(hŒnapi”h]”hŒnapi”…”�”}”(hj‰˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj*˜ubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¢˜h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjž˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž˜ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¾˜h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjž˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž˜ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÚ˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj*˜ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj´—h²hh³jÅ—h´M<ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj°—h²hh³jÅ—h´M<ubah}”(h]”j«—ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÅ—h´M<hj­—h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2allocate skbuff for rx in a specific NAPI instance”h]”hŒ2allocate skbuff for rx in a specific NAPI instance”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M<hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj­—h²hh³jÅ—h´M<ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j™jŒj™j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXâ**Parameters** ``struct napi_struct *napi`` napi instance this buffer was allocated for ``unsigned int len`` length to allocate **Description** Allocate a new sk_buff for use in NAPI receive. This buffer will attempt to allocate the head from a special reserved region used only for NAPI Rx allocation. By doing this we can save several CPU cycles by avoiding having to disable and re-enable IRQs. ``NULL`` is returned if there is no free memory.”•h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj&™h]”hŒ Parameters”…”�”}”(hj(™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M@hj ™ubjß)�”}”(hhh]”(jä)�”}”(hŒI``struct napi_struct *napi`` napi instance this buffer was allocated for ”h]”(jê)�”}”(hŒ``struct napi_struct *napi``”h]”jð)�”}”(hjE™h]”hŒstruct napi_struct *napi”…”�”}”(hjG™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjC™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M=hj?™ubj)�”}”(hhh]”jl)�”}”(hŒ+napi instance this buffer was allocated for”h]”hŒ+napi instance this buffer was allocated for”…”�”}”(hj^™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZ™h´M=hj[™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZ™h´M=hj<™ubjä)�”}”(hŒ(``unsigned int len`` length to allocate ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj~™h]”hŒunsigned int len”…”�”}”(hj€™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M>hjx™ubj)�”}”(hhh]”jl)�”}”(hŒlength to allocate”h]”hŒlength to allocate”…”�”}”(hj—™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“™h´M>hj”™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“™h´M>hj<™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ™ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¹™h]”hŒ Description”…”�”}”(hj»™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M@hj ™ubjÒ)�”}”(hX1Allocate a new sk_buff for use in NAPI receive. This buffer will attempt to allocate the head from a special reserved region used only for NAPI Rx allocation. By doing this we can save several CPU cycles by avoiding having to disable and re-enable IRQs. ``NULL`` is returned if there is no free memory.”h]”(jl)�”}”(hŒÿAllocate a new sk_buff for use in NAPI receive. This buffer will attempt to allocate the head from a special reserved region used only for NAPI Rx allocation. By doing this we can save several CPU cycles by avoiding having to disable and re-enable IRQs.”h]”hŒÿAllocate a new sk_buff for use in NAPI receive. This buffer will attempt to allocate the head from a special reserved region used only for NAPI Rx allocation. By doing this we can save several CPU cycles by avoiding having to disable and re-enable IRQs.”…”�”}”(hjÓ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M?hjÏ™ubjl)�”}”(hŒ0``NULL`` is returned if there is no free memory.”h]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjæ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâ™ubhŒ( is returned if there is no free memory.”…”�”}”(hjâ™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MDhjÏ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³já™h´M?hj ™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_pp_cow_data (C function)”Œc.skb_pp_cow_data”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZint skb_pp_cow_data (struct page_pool *pool, struct sk_buff **pskb, unsigned int headroom)”h]”j )�”}”(hŒYint skb_pp_cow_data(struct page_pool *pool, struct sk_buff **pskb, unsigned int headroom)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj%šh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj!šh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!šh²hh³j3šh´M¤ubj3)�”}”(hŒskb_pp_cow_data”h]”j9)�”}”(hŒskb_pp_cow_data”h]”hŒskb_pp_cow_data”…”�”}”(hjFšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBšubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj!šh²hh³j3šh´M¤ubj¡ )�”}”(hŒF(struct page_pool *pool, struct sk_buff **pskb, unsigned int headroom)”h]”(j§ )�”}”(hŒstruct page_pool *pool”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjbšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjošh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^šubh)�”}”(hhh]”j9)�”}”(hŒ page_pool”h]”hŒ page_pool”…”�”}”(hj€šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‚šŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jHšsbŒc.skb_pp_cow_data”†”asbuh1hhj^šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^šubj )�”}”(hj h]”hŒ*”…”�”}”(hj®šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^šubj9)�”}”(hŒpool”h]”hŒpool”…”�”}”(hj»šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZšubj§ )�”}”(hŒstruct sk_buff **pskb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÔšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjКubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjášh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjКubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjòšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jôšŒmodname”NŒ classname”Njå jè )�”}”jë ]”jœšŒc.skb_pp_cow_data”†”asbuh1hhjКubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjКubj )�”}”(hj h]”hŒ*”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjКubj )�”}”(hj h]”hŒ*”…”�”}”(hj+›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjКubj9)�”}”(hŒpskb”h]”hŒpskb”…”�”}”(hj8›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjКubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZšubj§ )�”}”(hŒunsigned int headroom”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjQ›h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjM›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjM›ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjm›h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjM›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjM›ubj9)�”}”(hŒheadroom”h]”hŒheadroom”…”�”}”(hj‰›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj!šh²hh³j3šh´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjšh²hh³j3šh´M¤ubah}”(h]”jšah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j3šh´M¤hjšh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+copy skb data into page-pool backed storage”h]”hŒ+copy skb data into page-pool backed storage”…”�”}”(hj³›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¤hj°›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšh²hh³j3šh´M¤ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jË›jŒjË›j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÚ**Parameters** ``struct page_pool *pool`` page pool to allocate from ``struct sk_buff **pskb`` pointer to skb pointer, replaced with the copied skb on success ``unsigned int headroom`` headroom to reserve in the copied skb **Description** skb_copy_bits() handles both frags[] and frag_list input. If the copied skb remains non-linear, it uses frags[], which is the representation used by XDP multi-buffer. **Return** 0 on success or a negative errno on failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÕ›h]”hŒ Parameters”…”�”}”(hj×›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¨hjÏ›ubjß)�”}”(hhh]”(jä)�”}”(hŒ6``struct page_pool *pool`` page pool to allocate from ”h]”(jê)�”}”(hŒ``struct page_pool *pool``”h]”jð)�”}”(hjô›h]”hŒstruct page_pool *pool”…”�”}”(hjö›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¥hjî›ubj)�”}”(hhh]”jl)�”}”(hŒpage pool to allocate from”h]”hŒpage pool to allocate from”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j œh´M¥hj œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j œh´M¥hjë›ubjä)�”}”(hŒZ``struct sk_buff **pskb`` pointer to skb pointer, replaced with the copied skb on success ”h]”(jê)�”}”(hŒ``struct sk_buff **pskb``”h]”jð)�”}”(hj-œh]”hŒstruct sk_buff **pskb”…”�”}”(hj/œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¦hj'œubj)�”}”(hhh]”jl)�”}”(hŒ?pointer to skb pointer, replaced with the copied skb on success”h]”hŒ?pointer to skb pointer, replaced with the copied skb on success”…”�”}”(hjFœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jBœh´M¦hjCœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jBœh´M¦hjë›ubjä)�”}”(hŒ@``unsigned int headroom`` headroom to reserve in the copied skb ”h]”(jê)�”}”(hŒ``unsigned int headroom``”h]”jð)�”}”(hjfœh]”hŒunsigned int headroom”…”�”}”(hjhœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M§hj`œubj)�”}”(hhh]”jl)�”}”(hŒ%headroom to reserve in the copied skb”h]”hŒ%headroom to reserve in the copied skb”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{œh´M§hj|œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{œh´M§hjë›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÏ›ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¡œh]”hŒ Description”…”�”}”(hj£œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸœubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M©hjÏ›ubjl)�”}”(hŒ¦skb_copy_bits() handles both frags[] and frag_list input. If the copied skb remains non-linear, it uses frags[], which is the representation used by XDP multi-buffer.”h]”hŒ¦skb_copy_bits() handles both frags[] and frag_list input. If the copied skb remains non-linear, it uses frags[], which is the representation used by XDP multi-buffer.”…”�”}”(hj·œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¨hjÏ›ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÈœh]”hŒReturn”…”�”}”(hjÊœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆœubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¬hjÏ›ubjl)�”}”(hŒ,0 on success or a negative errno on failure.”h]”hŒ,0 on success or a negative errno on failure.”…”�”}”(hjÞœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M­hjÏ›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_pp_put_page (C function)”Œc.napi_pp_put_page”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)bool napi_pp_put_page (netmem_ref netmem)”h]”j )�”}”(hŒ(bool napi_pp_put_page(netmem_ref netmem)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj �h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj �h²hh³j�h´Mubj3)�”}”(hŒnapi_pp_put_page”h]”j9)�”}”(hŒnapi_pp_put_page”h]”hŒnapi_pp_put_page”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj �h²hh³j�h´Mubj¡ )�”}”(hŒ(netmem_ref netmem)”h]”j§ )�”}”(hŒnetmem_ref netmem”h]”(h)�”}”(hhh]”j9)�”}”(hŒ netmem_ref”h]”hŒ netmem_ref”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jN�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j/�sbŒc.napi_pp_put_page”†”asbuh1hhjE�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE�ubj9)�”}”(hŒnetmem”h]”hŒnetmem”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjA�ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj �h²hh³j�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j�h´Mubah}”(h]”j�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�h´Mhj�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ)release a page_pool reference on a netmem”h]”hŒ)release a page_pool reference on a netmem”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj¡�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�h²hh³j�h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¼�jŒj¼�j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``netmem_ref netmem`` netmem to unreference **Description** Drops a page_pool reference (pp_ref_count) on **netmem** if it belongs to a page_pool. Counterpart to napi_pp_get_page(). **Return** true if **netmem** belongs to a page_pool, false otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÆ�h]”hŒ Parameters”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÄ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÀ�ubjß)�”}”(hhh]”jä)�”}”(hŒ,``netmem_ref netmem`` netmem to unreference ”h]”(jê)�”}”(hŒ``netmem_ref netmem``”h]”jð)�”}”(hjå�h]”hŒnetmem_ref netmem”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjã�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjß�ubj)�”}”(hhh]”jl)�”}”(hŒnetmem to unreference”h]”hŒnetmem to unreference”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jú�h´Mhjû�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jú�h´MhjÜ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÀ�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj žh]”hŒ Description”…”�”}”(hj"žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÀ�ubjl)�”}”(hŒyDrops a page_pool reference (pp_ref_count) on **netmem** if it belongs to a page_pool. Counterpart to napi_pp_get_page().”h]”(hŒ.Drops a page_pool reference (pp_ref_count) on ”…”�”}”(hj6žh²hh³Nh´Nubj›)�”}”(hŒ **netmem**”h]”hŒnetmem”…”�”}”(hj>žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6žubhŒA if it belongs to a page_pool. Counterpart to napi_pp_get_page().”…”�”}”(hj6žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÀ�ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjYžh]”hŒReturn”…”�”}”(hj[žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjWžubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÀ�ubjl)�”}”(hŒ;true if **netmem** belongs to a page_pool, false otherwise.”h]”(hŒtrue if ”…”�”}”(hjožh²hh³Nh´Nubj›)�”}”(hŒ **netmem**”h]”hŒnetmem”…”�”}”(hjwžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjožubhŒ) belongs to a page_pool, false otherwise.”…”�”}”(hjožh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÀ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_pp_get_page (C function)”Œc.napi_pp_get_page”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)bool napi_pp_get_page (netmem_ref netmem)”h]”j )�”}”(hŒ(bool napi_pp_get_page(netmem_ref netmem)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj°žh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¬žh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬žh²hh³j½žh´Mubj3)�”}”(hŒnapi_pp_get_page”h]”j9)�”}”(hŒnapi_pp_get_page”h]”hŒnapi_pp_get_page”…”�”}”(hjОh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌžubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¬žh²hh³j½žh´Mubj¡ )�”}”(hŒ(netmem_ref netmem)”h]”j§ )�”}”(hŒnetmem_ref netmem”h]”(h)�”}”(hhh]”j9)�”}”(hŒ netmem_ref”h]”hŒ netmem_ref”…”�”}”(hjïžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñžŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÒžsbŒc.napi_pp_get_page”†”asbuh1hhjèžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèžubj9)�”}”(hŒnetmem”h]”hŒnetmem”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjäžubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¬žh²hh³j½žh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨žh²hh³j½žh´Mubah}”(h]”j£žah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j½žh´Mhj¥žh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)acquire a page_pool reference on a netmem”h]”hŒ)acquire a page_pool reference on a netmem”…”�”}”(hjGŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjDŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥žh²hh³j½žh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_ŸjŒj_Ÿj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``netmem_ref netmem`` netmem to reference **Description** Acquires a page_pool reference (pp_ref_count) on **netmem** if it belongs to a page_pool. Counterpart to napi_pp_put_page(). **Return** true if **netmem** belongs to a page_pool, false otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjiŸh]”hŒ Parameters”…”�”}”(hjkŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjgŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M!hjcŸubjß)�”}”(hhh]”jä)�”}”(hŒ*``netmem_ref netmem`` netmem to reference ”h]”(jê)�”}”(hŒ``netmem_ref netmem``”h]”jð)�”}”(hjˆŸh]”hŒnetmem_ref netmem”…”�”}”(hjŠŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj‚Ÿubj)�”}”(hhh]”jl)�”}”(hŒnetmem to reference”h]”hŒnetmem to reference”…”�”}”(hj¡Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Ÿh´MhjžŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Ÿh´MhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjcŸubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjßh]”hŒ Description”…”�”}”(hjÅŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjcŸubjl)�”}”(hŒ|Acquires a page_pool reference (pp_ref_count) on **netmem** if it belongs to a page_pool. Counterpart to napi_pp_put_page().”h]”(hŒ1Acquires a page_pool reference (pp_ref_count) on ”…”�”}”(hjÙŸh²hh³Nh´Nubj›)�”}”(hŒ **netmem**”h]”hŒnetmem”…”�”}”(hjáŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙŸubhŒA if it belongs to a page_pool. Counterpart to napi_pp_put_page().”…”�”}”(hjÙŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjcŸubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjüŸh]”hŒReturn”…”�”}”(hjþŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjúŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M"hjcŸubjl)�”}”(hŒ;true if **netmem** belongs to a page_pool, false otherwise.”h]”(hŒtrue if ”…”�”}”(hj h²hh³Nh´Nubj›)�”}”(hŒ **netmem**”h]”hŒnetmem”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubhŒ) belongs to a page_pool, false otherwise.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M#hjcŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__kfree_skb (C function)”Œ c.__kfree_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&void __kfree_skb (struct sk_buff *skb)”h]”j )�”}”(hŒ%void __kfree_skb(struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjO h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO h²hh³ja h´M¨ubj3)�”}”(hŒ __kfree_skb”h]”j9)�”}”(hŒ __kfree_skb”h]”hŒ __kfree_skb”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjO h²hh³ja h´M¨ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒ ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj« ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j° Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jv sbŒ c.__kfree_skb”†”asbuh1hhjŒ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒ ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒ ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjO h²hh³ja h´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjK h²hh³ja h´M¨ubah}”(h]”jF ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³ja h´M¨hjH h²hubjg)�”}”(hhh]”jl)�”}”(hŒprivate function”h]”hŒprivate function”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¨hj¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjH h²hh³ja h´M¨ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j+¡jŒj+¡j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒä**Parameters** ``struct sk_buff *skb`` buffer **Description** Free an sk_buff. Release anything attached to the buffer. Clean the state. This is an internal helper function. Users should always call kfree_skb”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj5¡h]”hŒ Parameters”…”�”}”(hj7¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¬hj/¡ubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjT¡h]”hŒstruct sk_buff *skb”…”�”}”(hjV¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M©hjN¡ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjm¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ji¡h´M©hjj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji¡h´M©hjK¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/¡ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�¡h]”hŒ Description”…”�”}”(hj‘¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M«hj/¡ubjÒ)�”}”(hŒ’Free an sk_buff. Release anything attached to the buffer. Clean the state. This is an internal helper function. Users should always call kfree_skb”h]”jl)�”}”(hŒ’Free an sk_buff. Release anything attached to the buffer. Clean the state. This is an internal helper function. Users should always call kfree_skb”h]”hŒ’Free an sk_buff. Release anything attached to the buffer. Clean the state. This is an internal helper function. Users should always call kfree_skb”…”�”}”(hj©¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mªhj¥¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j·¡h´Mªhj/¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_skb_reason_drop (C function)”Œc.sk_skb_reason_drop”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒovoid __fix_address sk_skb_reason_drop (const struct sock *sk, struct sk_buff *skb, enum skb_drop_reason reason)”h]”j )�”}”(hŒnvoid __fix_address sk_skb_reason_drop(const struct sock *sk, struct sk_buff *skb, enum skb_drop_reason reason)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÞ¡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÚ¡h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ¡h²hh³jì¡h´MËubhŒ __fix_address”…”�”}”(hjÚ¡h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ¡h²hh³jì¡h´MËubj3)�”}”(hŒsk_skb_reason_drop”h]”j9)�”}”(hŒsk_skb_reason_drop”h]”hŒsk_skb_reason_drop”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¢ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÚ¡h²hh³jì¡h´MËubj¡ )�”}”(hŒI(const struct sock *sk, struct sk_buff *skb, enum skb_drop_reason reason)”h]”(j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj-¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)¢ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjH¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)¢ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjf¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jh¢Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¢sbŒc.sk_skb_reason_drop”†”asbuh1hhj)¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)¢ubj )�”}”(hj h]”hŒ*”…”�”}”(hj”¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj)¢ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj¡¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%¢ubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjº¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶¢ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjØ¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÚ¢Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‚¢Œc.sk_skb_reason_drop”†”asbuh1hhj¶¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶¢ubj )�”}”(hj h]”hŒ*”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶¢ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%¢ubj§ )�”}”(hŒenum skb_drop_reason reason”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hj*£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&£ubh)�”}”(hhh]”j9)�”}”(hŒskb_drop_reason”h]”hŒskb_drop_reason”…”�”}”(hjH£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJ£Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‚¢Œc.sk_skb_reason_drop”†”asbuh1hhj&£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&£ubj9)�”}”(hŒreason”h]”hŒreason”…”�”}”(hjt£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%¢ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÚ¡h²hh³jì¡h´MËubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÖ¡h²hh³jì¡h´MËubah}”(h]”jÑ¡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jì¡h´MËhjÓ¡h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#free an sk_buff with special reason”h]”hŒ#free an sk_buff with special reason”…”�”}”(hjž£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MËhj›£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÓ¡h²hh³jì¡h´MËubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¶£jŒj¶£j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX�**Parameters** ``const struct sock *sk`` the socket to receive **skb**, or NULL if not applicable ``struct sk_buff *skb`` buffer to free ``enum skb_drop_reason reason`` reason why this skb is dropped **Description** Drop a reference to the buffer and free it if the usage count has hit zero. Meanwhile, pass the receiving socket and drop reason to 'kfree_skb' tracepoint.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÀ£h]”hŒ Parameters”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÏhjº£ubjß)�”}”(hhh]”(jä)�”}”(hŒS``const struct sock *sk`` the socket to receive **skb**, or NULL if not applicable ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hjߣh]”hŒconst struct sock *sk”…”�”}”(hjá£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÌhjÙ£ubj)�”}”(hhh]”jl)�”}”(hŒ8the socket to receive **skb**, or NULL if not applicable”h]”(hŒthe socket to receive ”…”�”}”(hjø£h²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjø£ubhŒ, or NULL if not applicable”…”�”}”(hjø£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jô£h´MÌhjõ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jô£h´MÌhjÖ£ubjä)�”}”(hŒ'``struct sk_buff *skb`` buffer to free ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj*¤h]”hŒstruct sk_buff *skb”…”�”}”(hj,¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÍhj$¤ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to free”h]”hŒbuffer to free”…”�”}”(hjC¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?¤h´MÍhj@¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?¤h´MÍhjÖ£ubjä)�”}”(hŒ?``enum skb_drop_reason reason`` reason why this skb is dropped ”h]”(jê)�”}”(hŒ``enum skb_drop_reason reason``”h]”jð)�”}”(hjc¤h]”hŒenum skb_drop_reason reason”…”�”}”(hje¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhja¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÎhj]¤ubj)�”}”(hhh]”jl)�”}”(hŒreason why this skb is dropped”h]”hŒreason why this skb is dropped”…”�”}”(hj|¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jx¤h´MÎhjy¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jx¤h´MÎhjÖ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjº£ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjž¤h]”hŒ Description”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÐhjº£ubjÒ)�”}”(hŒ›Drop a reference to the buffer and free it if the usage count has hit zero. Meanwhile, pass the receiving socket and drop reason to 'kfree_skb' tracepoint.”h]”jl)�”}”(hŒ›Drop a reference to the buffer and free it if the usage count has hit zero. Meanwhile, pass the receiving socket and drop reason to 'kfree_skb' tracepoint.”h]”hŒŸDrop a reference to the buffer and free it if the usage count has hit zero. Meanwhile, pass the receiving socket and drop reason to ‘kfree_skb’ tracepoint.”…”�”}”(hj¸¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÏhj´¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jƤh´MÏhjº£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_tx_error (C function)”Œc.skb_tx_error”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ'void skb_tx_error (struct sk_buff *skb)”h]”j )�”}”(hŒ&void skb_tx_error(struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjí¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjé¤h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé¤h²hh³jû¤h´M~ubj3)�”}”(hŒ skb_tx_error”h]”j9)�”}”(hŒ skb_tx_error”h]”hŒ skb_tx_error”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¥ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjé¤h²hh³jû¤h´M~ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj*¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&¥ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjH¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJ¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¥sbŒc.skb_tx_error”†”asbuh1hhj&¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&¥ubj )�”}”(hj h]”hŒ*”…”�”}”(hjv¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj&¥ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjƒ¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj"¥ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjé¤h²hh³jû¤h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjå¤h²hh³jû¤h´M~ubah}”(h]”jà¤ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jû¤h´M~hjâ¤h²hubjg)�”}”(hhh]”jl)�”}”(hŒreport an sk_buff xmit error”h]”hŒreport an sk_buff xmit error”…”�”}”(hj­¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M~hjª¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjâ¤h²hh³jû¤h´M~ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÅ¥jŒjÅ¥j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX+**Parameters** ``struct sk_buff *skb`` buffer that triggered an error **Description** Report xmit error if a device callback is tracking this skb. skb must be freed afterwards. Does nothing for a cloned skb: the zerocopy state lives in skb_shinfo(), which the clones share.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÏ¥h]”hŒ Parameters”…”�”}”(hjÑ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚hjÉ¥ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct sk_buff *skb`` buffer that triggered an error ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjî¥h]”hŒstruct sk_buff *skb”…”�”}”(hjð¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjì¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjè¥ubj)�”}”(hhh]”jl)�”}”(hŒbuffer that triggered an error”h]”hŒbuffer that triggered an error”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦h´Mhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjè¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦h´Mhjå¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÉ¥ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj)¦h]”hŒ Description”…”�”}”(hj+¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M�hjÉ¥ubjÒ)�”}”(hŒ¼Report xmit error if a device callback is tracking this skb. skb must be freed afterwards. Does nothing for a cloned skb: the zerocopy state lives in skb_shinfo(), which the clones share.”h]”(jl)�”}”(hŒZReport xmit error if a device callback is tracking this skb. skb must be freed afterwards.”h]”hŒZReport xmit error if a device callback is tracking this skb. skb must be freed afterwards.”…”�”}”(hjC¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M€hj?¦ubjl)�”}”(hŒ`Does nothing for a cloned skb: the zerocopy state lives in skb_shinfo(), which the clones share.”h]”hŒ`Does nothing for a cloned skb: the zerocopy state lives in skb_shinfo(), which the clones share.”…”�”}”(hjR¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mƒhj?¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jQ¦h´M€hjÉ¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒconsume_skb (C function)”Œ c.consume_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&void consume_skb (struct sk_buff *skb)”h]”j )�”}”(hŒ%void consume_skb(struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡¦h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjƒ¦h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ¦h²hh³j•¦h´M’ubj3)�”}”(hŒ consume_skb”h]”j9)�”}”(hŒ consume_skb”h]”hŒ consume_skb”…”�”}”(hj¨¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤¦ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjƒ¦h²hh³j•¦h´M’ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjĦh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjѦh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ¦ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjâ¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjߦubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j䦌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jª¦sbŒ c.consume_skb”†”asbuh1hhjÀ¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀ¦ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼¦ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjƒ¦h²hh³j•¦h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¦h²hh³j•¦h´M’ubah}”(h]”jz¦ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j•¦h´M’hj|¦h²hubjg)�”}”(hhh]”jl)�”}”(hŒfree an skbuff”h]”hŒfree an skbuff”…”�”}”(hjG§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M’hjD§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj|¦h²hh³j•¦h´M’ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_§jŒj_§j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` buffer to free **Description** Drop a ref to the buffer and free it if the usage count has hit zero Functions identically to kfree_skb, but kfree_skb assumes that the frame is being dropped after a failure and notes that”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hji§h]”hŒ Parameters”…”�”}”(hjk§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjg§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M–hjc§ubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct sk_buff *skb`` buffer to free ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjˆ§h]”hŒstruct sk_buff *skb”…”�”}”(hjЧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M“hj‚§ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to free”h]”hŒbuffer to free”…”�”}”(hj¡§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�§h´M“hjž§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�§h´M“hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjc§ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjçh]”hŒ Description”…”�”}”(hjŧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M•hjc§ubjÒ)�”}”(hŒ½Drop a ref to the buffer and free it if the usage count has hit zero Functions identically to kfree_skb, but kfree_skb assumes that the frame is being dropped after a failure and notes that”h]”jl)�”}”(hŒ½Drop a ref to the buffer and free it if the usage count has hit zero Functions identically to kfree_skb, but kfree_skb assumes that the frame is being dropped after a failure and notes that”h]”hŒ½Drop a ref to the buffer and free it if the usage count has hit zero Functions identically to kfree_skb, but kfree_skb assumes that the frame is being dropped after a failure and notes that”…”�”}”(hjݧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M”hjÙ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jë§h´M”hjc§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_consume_skb (C function)”Œc.napi_consume_skb”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void napi_consume_skb (struct sk_buff *skb, int budget)”h]”j )�”}”(hŒ6void napi_consume_skb(struct sk_buff *skb, int budget)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨h²hh³j ¨h´MÞubj3)�”}”(hŒnapi_consume_skb”h]”j9)�”}”(hŒnapi_consume_skb”h]”hŒnapi_consume_skb”…”�”}”(hj3¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/¨ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¨h²hh³j ¨h´MÞubj¡ )�”}”(hŒ!(struct sk_buff *skb, int budget)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjO¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK¨ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjm¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jo¨Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j5¨sbŒc.napi_consume_skb”†”asbuh1hhjK¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK¨ubj )�”}”(hj h]”hŒ*”…”�”}”(hj›¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK¨ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¨¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjG¨ubj§ )�”}”(hŒ int budget”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÁ¨h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj½¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjϨh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½¨ubj9)�”}”(hŒbudget”h]”hŒbudget”…”�”}”(hjݨh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjG¨ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¨h²hh³j ¨h´MÞubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ¨h²hh³j ¨h´MÞubah}”(h]”j¨ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j ¨h´MÞhj¨h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2consume skb in NAPI context, try to feed skb cache”h]”hŒ2consume skb in NAPI context, try to feed skb cache”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÞhj©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¨h²hh³j ¨h´MÞubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©jŒj©j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX™**Parameters** ``struct sk_buff *skb`` buffer to free ``int budget`` NAPI budget **Description** Non-zero **budget** must come from the **budget** argument passed by the core to a NAPI poll function. Note that core may pass budget of 0 to NAPI poll for example when polling for netpoll / netconsole. Passing **budget** of 0 is safe from any context, it turns this function into dev_consume_skb_any().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj)©h]”hŒ Parameters”…”�”}”(hj+©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mâhj#©ubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct sk_buff *skb`` buffer to free ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjH©h]”hŒstruct sk_buff *skb”…”�”}”(hjJ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjF©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MßhjB©ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to free”h]”hŒbuffer to free”…”�”}”(hja©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]©h´Mßhj^©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]©h´Mßhj?©ubjä)�”}”(hŒ``int budget`` NAPI budget ”h]”(jê)�”}”(hŒ``int budget``”h]”jð)�”}”(hj�©h]”hŒ int budget”…”�”}”(hjƒ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Màhj{©ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI budget”h]”hŒ NAPI budget”…”�”}”(hjš©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j–©h´Màhj—©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–©h´Màhj?©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj#©ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¼©h]”hŒ Description”…”�”}”(hj¾©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjº©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mâhj#©ubjl)�”}”(hŒÊNon-zero **budget** must come from the **budget** argument passed by the core to a NAPI poll function. Note that core may pass budget of 0 to NAPI poll for example when polling for netpoll / netconsole.”h]”(hŒ Non-zero ”…”�”}”(hjÒ©h²hh³Nh´Nubj›)�”}”(hŒ **budget**”h]”hŒbudget”…”�”}”(hjÚ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒ©ubhŒ must come from the ”…”�”}”(hjÒ©h²hh³Nh´Nubj›)�”}”(hŒ **budget**”h]”hŒbudget”…”�”}”(hjì©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒ©ubhŒ™ argument passed by the core to a NAPI poll function. Note that core may pass budget of 0 to NAPI poll for example when polling for netpoll / netconsole.”…”�”}”(hjÒ©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Máhj#©ubjl)�”}”(hŒdPassing **budget** of 0 is safe from any context, it turns this function into dev_consume_skb_any().”h]”(hŒPassing ”…”�”}”(hjªh²hh³Nh´Nubj›)�”}”(hŒ **budget**”h]”hŒbudget”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjªubhŒR of 0 is safe from any context, it turns this function into dev_consume_skb_any().”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Måhj#©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒalloc_skb_for_msg (C function)”Œc.alloc_skb_for_msg”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:struct sk_buff * alloc_skb_for_msg (struct sk_buff *first)”h]”j )�”}”(hŒ8struct sk_buff *alloc_skb_for_msg(struct sk_buff *first)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjFªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBªh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBªh²hh³jSªh´Mcubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjeªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jgªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œalloc_skb_for_msg”sbŒc.alloc_skb_for_msg”†”asbuh1hhjBªh²hh³jSªh´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†ªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBªh²hh³jSªh´Mcubj )�”}”(hj h]”hŒ*”…”�”}”(hj”ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjBªh²hh³jSªh´Mcubj3)�”}”(hŒalloc_skb_for_msg”h]”j9)�”}”(hjƒªh]”hŒalloc_skb_for_msg”…”�”}”(hj¥ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡ªubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjBªh²hh³jSªh´Mcubj¡ )�”}”(hŒ(struct sk_buff *first)”h]”j§ )�”}”(hŒstruct sk_buff *first”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÀªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjͪh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ªubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÞªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jઌmodname”NŒ classname”Njå jè )�”}”jë ]”j�ªŒc.alloc_skb_for_msg”†”asbuh1hhj¼ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ªubj )�”}”(hj h]”hŒ*”…”�”}”(hj «h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼ªubj9)�”}”(hŒfirst”h]”hŒfirst”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸ªubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjBªh²hh³jSªh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj>ªh²hh³jSªh´Mcubah}”(h]”j9ªah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jSªh´Mchj;ªh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0allocate sk_buff to wrap frag list forming a msg”h]”hŒ0allocate sk_buff to wrap frag list forming a msg”…”�”}”(hjA«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mchj>«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj;ªh²hh³jSªh´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jY«jŒjY«j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒD**Parameters** ``struct sk_buff *first`` first sk_buff of the msg”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjc«h]”hŒ Parameters”…”�”}”(hje«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhja«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mghj]«ubjß)�”}”(hhh]”jä)�”}”(hŒ2``struct sk_buff *first`` first sk_buff of the msg”h]”(jê)�”}”(hŒ``struct sk_buff *first``”h]”jð)�”}”(hj‚«h]”hŒstruct sk_buff *first”…”�”}”(hj„«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mihj|«ubj)�”}”(hhh]”jl)�”}”(hŒfirst sk_buff of the msg”h]”hŒfirst sk_buff of the msg”…”�”}”(hj›«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mdhj˜«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—«h´Mihjy«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj]«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_morph (C function)”Œ c.skb_morph”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEstruct sk_buff * skb_morph (struct sk_buff *dst, struct sk_buff *src)”h]”j )�”}”(hŒCstruct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÜ«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ«h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ«h²hh³jé«h´M|ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjû«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jý«Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ skb_morph”sbŒ c.skb_morph”†”asbuh1hhjØ«h²hh³jé«h´M|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ«h²hh³jé«h´M|ubj )�”}”(hj h]”hŒ*”…”�”}”(hj*¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjØ«h²hh³jé«h´M|ubj3)�”}”(hŒ skb_morph”h]”j9)�”}”(hj¬h]”hŒ skb_morph”…”�”}”(hj;¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7¬ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjØ«h²hh³jé«h´M|ubj¡ )�”}”(hŒ*(struct sk_buff *dst, struct sk_buff *src)”h]”(j§ )�”}”(hŒstruct sk_buff *dst”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjV¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR¬ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjt¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jv¬Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¬Œ c.skb_morph”†”asbuh1hhjR¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjR¬ubj9)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj­¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjR¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjN¬ubj§ )�”}”(hŒstruct sk_buff *src”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjƬh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjä¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjá¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j欌modname”NŒ classname”Njå jè )�”}”jë ]”j¬Œ c.skb_morph”†”asbuh1hhj¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¬ubj9)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjN¬ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjØ«h²hh³jé«h´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÔ«h²hh³jé«h´M|ubah}”(h]”jÏ«ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jé«h´M|hjÑ«h²hubjg)�”}”(hhh]”jl)�”}”(hŒmorph one skb into another”h]”hŒmorph one skb into another”…”�”}”(hjG­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M|hjD­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÑ«h²hh³jé«h´M|ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_­jŒj_­j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *dst`` the skb to receive the contents ``struct sk_buff *src`` the skb to supply the contents **Description** This is identical to skb_clone except that the target skb is supplied by the user. The target skb is returned upon exit.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hji­h]”hŒ Parameters”…”�”}”(hjk­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjg­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M€hjc­ubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct sk_buff *dst`` the skb to receive the contents ”h]”(jê)�”}”(hŒ``struct sk_buff *dst``”h]”jð)�”}”(hjˆ­h]”hŒstruct sk_buff *dst”…”�”}”(hjŠ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M}hj‚­ubj)�”}”(hhh]”jl)�”}”(hŒthe skb to receive the contents”h]”hŒthe skb to receive the contents”…”�”}”(hj¡­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�­h´M}hjž­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�­h´M}hj­ubjä)�”}”(hŒ7``struct sk_buff *src`` the skb to supply the contents ”h]”(jê)�”}”(hŒ``struct sk_buff *src``”h]”jð)�”}”(hjÁ­h]”hŒstruct sk_buff *src”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M~hj»­ubj)�”}”(hhh]”jl)�”}”(hŒthe skb to supply the contents”h]”hŒthe skb to supply the contents”…”�”}”(hjÚ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖ­h´M~hj×­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖ­h´M~hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjc­ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjü­h]”hŒ Description”…”�”}”(hjþ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjú­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M€hjc­ubjÒ)�”}”(hŒyThis is identical to skb_clone except that the target skb is supplied by the user. The target skb is returned upon exit.”h]”(jl)�”}”(hŒRThis is identical to skb_clone except that the target skb is supplied by the user.”h]”hŒRThis is identical to skb_clone except that the target skb is supplied by the user.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj®ubjl)�”}”(hŒ%The target skb is returned upon exit.”h]”hŒ%The target skb is returned upon exit.”…”�”}”(hj%®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j$®h´Mhjc­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_copy_ubufs (C function)”Œc.skb_copy_ubufs”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8int skb_copy_ubufs (struct sk_buff *skb, gfp_t gfp_mask)”h]”j )�”}”(hŒ7int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjZ®h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjV®h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hji®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjV®h²hh³jh®h´M¹ubj3)�”}”(hŒskb_copy_ubufs”h]”j9)�”}”(hŒskb_copy_ubufs”h]”hŒskb_copy_ubufs”…”�”}”(hj{®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjw®ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjV®h²hh³jh®h´M¹ubj¡ )�”}”(hŒ%(struct sk_buff *skb, gfp_t gfp_mask)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj—®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“®ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjµ®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j·®Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j}®sbŒc.skb_copy_ubufs”†”asbuh1hhj“®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ®h²hh³Nh´Nubah}”(h]”h ]”j.ah"•]”h$]”h&]”uh1j!hj“®ubj )�”}”(hj h]”hŒ*”…”�”}”(hjã®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“®ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjð®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�®ubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¯Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÑ®Œc.skb_copy_ubufs”†”asbuh1hhj¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj8¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�®ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjV®h²hh³jh®h´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjR®h²hh³jh®h´M¹ubah}”(h]”jM®ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh®h´M¹hjO®h²hubjg)�”}”(hhh]”jl)�”}”(hŒ*copy userspace skb frags buffers to kernel”h]”hŒ*copy userspace skb frags buffers to kernel”…”�”}”(hjb¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¹hj_¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjO®h²hh³jh®h´M¹ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jz¯jŒjz¯j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÐ**Parameters** ``struct sk_buff *skb`` the skb to modify ``gfp_t gfp_mask`` allocation priority **Description** This must be called on skb with SKBFL_ZEROCOPY_ENABLE. It will copy all frags into kernel and drop the reference to userspace pages. If this function is called from an interrupt gfp_mask() must be ``GFP_ATOMIC``. Returns 0 on success or a negative error code on failure to allocate kernel memory to copy to.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj„¯h]”hŒ Parameters”…”�”}”(hj†¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M½hj~¯ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff *skb`` the skb to modify ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj£¯h]”hŒstruct sk_buff *skb”…”�”}”(hj¥¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mºhj�¯ubj)�”}”(hhh]”jl)�”}”(hŒthe skb to modify”h]”hŒthe skb to modify”…”�”}”(hj¼¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¸¯h´Mºhj¹¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸¯h´Mºhjš¯ubjä)�”}”(hŒ'``gfp_t gfp_mask`` allocation priority ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hjܯh]”hŒgfp_t gfp_mask”…”�”}”(hjÞ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M»hjÖ¯ubj)�”}”(hhh]”jl)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hjõ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñ¯h´M»hjò¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñ¯h´M»hjš¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj~¯ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj°h]”hŒ Description”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M½hj~¯ubjÒ)�”}”(hX5This must be called on skb with SKBFL_ZEROCOPY_ENABLE. It will copy all frags into kernel and drop the reference to userspace pages. If this function is called from an interrupt gfp_mask() must be ``GFP_ATOMIC``. Returns 0 on success or a negative error code on failure to allocate kernel memory to copy to.”h]”(jl)�”}”(hŒ„This must be called on skb with SKBFL_ZEROCOPY_ENABLE. It will copy all frags into kernel and drop the reference to userspace pages.”h]”hŒ„This must be called on skb with SKBFL_ZEROCOPY_ENABLE. It will copy all frags into kernel and drop the reference to userspace pages.”…”�”}”(hj1°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¼hj-°ubjl)�”}”(hŒOIf this function is called from an interrupt gfp_mask() must be ``GFP_ATOMIC``.”h]”(hŒ@If this function is called from an interrupt gfp_mask() must be ”…”�”}”(hj@°h²hh³Nh´Nubjð)�”}”(hŒ``GFP_ATOMIC``”h]”hŒ GFP_ATOMIC”…”�”}”(hjH°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@°ubhŒ.”…”�”}”(hj@°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÀhj-°ubjl)�”}”(hŒ^Returns 0 on success or a negative error code on failure to allocate kernel memory to copy to.”h]”hŒ^Returns 0 on success or a negative error code on failure to allocate kernel memory to copy to.”…”�”}”(hja°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÃhj-°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j?°h´M¼hj~¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_clone (C function)”Œ c.skb_clone”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@struct sk_buff * skb_clone (struct sk_buff *skb, gfp_t gfp_mask)”h]”j )�”}”(hŒ>struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj–°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’°h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’°h²hh³j£°h´Mubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjµ°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j·°Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ skb_clone”sbŒ c.skb_clone”†”asbuh1hhj’°h²hh³j£°h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’°h²hh³j£°h´Mubj )�”}”(hj h]”hŒ*”…”�”}”(hjä°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’°h²hh³j£°h´Mubj3)�”}”(hŒ skb_clone”h]”j9)�”}”(hjÓ°h]”hŒ skb_clone”…”�”}”(hjõ°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ°ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj’°h²hh³j£°h´Mubj¡ )�”}”(hŒ%(struct sk_buff *skb, gfp_t gfp_mask)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ±ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj.±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0±Œmodname”NŒ classname”Njå jè )�”}”jë ]”jѰŒ c.skb_clone”†”asbuh1hhj ±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ±ubj )�”}”(hj h]”hŒ*”…”�”}”(hjZ±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ±ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjg±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj±ubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjƒ±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j…±Œmodname”NŒ classname”Njå jè )�”}”jë ]”jѰŒ c.skb_clone”†”asbuh1hhj|±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|±ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj¯±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj±ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj’°h²hh³j£°h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjްh²hh³j£°h´Mubah}”(h]”j‰°ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j£°h´Mhj‹°h²hubjg)�”}”(hhh]”jl)�”}”(hŒduplicate an sk_buff”h]”hŒduplicate an sk_buff”…”�”}”(hjÙ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÖ±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‹°h²hh³j£°h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñ±jŒjñ±j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXë**Parameters** ``struct sk_buff *skb`` buffer to clone ``gfp_t gfp_mask`` allocation priority **Description** Duplicate an :c:type:`sk_buff`. The new one is not owned by a socket. Both copies share the same packet data but not structure. The new buffer has a reference count of 1. If the allocation fails the function returns ``NULL`` otherwise the new buffer is returned. If this function is called from an interrupt gfp_mask() must be ``GFP_ATOMIC``.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjû±h]”hŒ Parameters”…”�”}”(hjý±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjù±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M"hjõ±ubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to clone ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj²h]”hŒstruct sk_buff *skb”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj²ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to clone”h]”hŒbuffer to clone”…”�”}”(hj3²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/²h´Mhj0²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/²h´Mhj²ubjä)�”}”(hŒ'``gfp_t gfp_mask`` allocation priority ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hjS²h]”hŒgfp_t gfp_mask”…”�”}”(hjU²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjM²ubj)�”}”(hhh]”jl)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hjl²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh²h´M hji²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh²h´M hj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõ±ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj޲h]”hŒ Description”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M"hjõ±ubjÒ)�”}”(hXWDuplicate an :c:type:`sk_buff`. The new one is not owned by a socket. Both copies share the same packet data but not structure. The new buffer has a reference count of 1. If the allocation fails the function returns ``NULL`` otherwise the new buffer is returned. If this function is called from an interrupt gfp_mask() must be ``GFP_ATOMIC``.”h]”(jl)�”}”(hXDuplicate an :c:type:`sk_buff`. The new one is not owned by a socket. Both copies share the same packet data but not structure. The new buffer has a reference count of 1. If the allocation fails the function returns ``NULL`` otherwise the new buffer is returned.”h]”(hŒ Duplicate an ”…”�”}”(hj¨²h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj²²h]”hŒsk_buff”…”�”}”(hj´²h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj°²ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M!hj¨²ubhŒº. The new one is not owned by a socket. Both copies share the same packet data but not structure. The new buffer has a reference count of 1. If the allocation fails the function returns ”…”�”}”(hj¨²h²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÔ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨²ubhŒ& otherwise the new buffer is returned.”…”�”}”(hj¨²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jϲh´M!hj¤²ubjl)�”}”(hŒOIf this function is called from an interrupt gfp_mask() must be ``GFP_ATOMIC``.”h]”(hŒ@If this function is called from an interrupt gfp_mask() must be ”…”�”}”(hjì²h²hh³Nh´Nubjð)�”}”(hŒ``GFP_ATOMIC``”h]”hŒ GFP_ATOMIC”…”�”}”(hjô²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjì²ubhŒ.”…”�”}”(hjì²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M&hj¤²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jϲh´M!hjõ±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_copy (C function)”Œ c.skb_copy”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEstruct sk_buff * skb_copy (const struct sk_buff *skb, gfp_t gfp_mask)”h]”j )�”}”(hŒCstruct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj3³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/³h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/³h²hh³j@³h´Mkubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjR³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjO³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jT³Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_copy”sbŒ c.skb_copy”†”asbuh1hhj/³h²hh³j@³h´Mkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/³h²hh³j@³h´Mkubj )�”}”(hj h]”hŒ*”…”�”}”(hj�³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj/³h²hh³j@³h´Mkubj3)�”}”(hŒskb_copy”h]”j9)�”}”(hjp³h]”hŒskb_copy”…”�”}”(hj’³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj޳ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj/³h²hh³j@³h´Mkubj¡ )�”}”(hŒ+(const struct sk_buff *skb, gfp_t gfp_mask)”h]”(j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj­³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©³ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjȳh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©³ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjæ³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j賌modname”NŒ classname”Njå jè )�”}”jë ]”jn³Œ c.skb_copy”†”asbuh1hhj©³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©³ubj )�”}”(hj h]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj©³ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¥³ubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj;´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j=´Œmodname”NŒ classname”Njå jè )�”}”jë ]”jn³Œ c.skb_copy”†”asbuh1hhj4´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4´ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hjg´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¥³ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj/³h²hh³j@³h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj+³h²hh³j@³h´Mkubah}”(h]”j&³ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j@³h´Mkhj(³h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!create private copy of an sk_buff”h]”hŒ!create private copy of an sk_buff”…”�”}”(hj‘´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MkhjŽ´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj(³h²hh³j@³h´Mkubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©´jŒj©´j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``const struct sk_buff *skb`` buffer to copy ``gfp_t gfp_mask`` allocation priority **Description** Make a copy of both an :c:type:`sk_buff` and its data. This is used when the caller wishes to modify the data and needs a private copy of the data to alter. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1. As by-product this function converts non-linear :c:type:`sk_buff` to linear one, so that :c:type:`sk_buff` becomes completely private and caller is allowed to modify all the data of returned buffer. This means that this function is not recommended for use in circumstances when only header is going to be modified. Use pskb_copy() instead.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³´h]”hŒ Parameters”…”�”}”(hjµ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mohj­´ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``const struct sk_buff *skb`` buffer to copy ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjÒ´h]”hŒconst struct sk_buff *skb”…”�”}”(hjÔ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjдubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MlhjÌ´ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to copy”h]”hŒbuffer to copy”…”�”}”(hjë´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jç´h´Mlhjè´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jç´h´MlhjÉ´ubjä)�”}”(hŒ'``gfp_t gfp_mask`` allocation priority ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hj µh]”hŒgfp_t gfp_mask”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj µubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mmhjµubj)�”}”(hhh]”jl)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hj$µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j µh´Mmhj!µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j µh´MmhjÉ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­´ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjFµh]”hŒ Description”…”�”}”(hjHµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDµubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mohj­´ubjÒ)�”}”(hXfMake a copy of both an :c:type:`sk_buff` and its data. This is used when the caller wishes to modify the data and needs a private copy of the data to alter. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1. As by-product this function converts non-linear :c:type:`sk_buff` to linear one, so that :c:type:`sk_buff` becomes completely private and caller is allowed to modify all the data of returned buffer. This means that this function is not recommended for use in circumstances when only header is going to be modified. Use pskb_copy() instead.”h]”(jl)�”}”(hXMake a copy of both an :c:type:`sk_buff` and its data. This is used when the caller wishes to modify the data and needs a private copy of the data to alter. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”h]”(hŒMake a copy of both an ”…”�”}”(hj`µh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjjµh]”hŒsk_buff”…”�”}”(hjlµh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjhµubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mnhj`µubhŒ} and its data. This is used when the caller wishes to modify the data and needs a private copy of the data to alter. Returns ”…”�”}”(hj`µh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŒµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`µubhŒd on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”…”�”}”(hj`µh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡µh´Mnhj\µubjl)�”}”(hXSAs by-product this function converts non-linear :c:type:`sk_buff` to linear one, so that :c:type:`sk_buff` becomes completely private and caller is allowed to modify all the data of returned buffer. This means that this function is not recommended for use in circumstances when only header is going to be modified. Use pskb_copy() instead.”h]”(hŒ0As by-product this function converts non-linear ”…”�”}”(hj¤µh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj®µh]”hŒsk_buff”…”�”}”(hj°µh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¬µubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mshj¤µubhŒ to linear one, so that ”…”�”}”(hj¤µh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjÒµh]”hŒsk_buff”…”�”}”(hjÔµh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjеubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³j˵h´Mshj¤µubhŒé becomes completely private and caller is allowed to modify all the data of returned buffer. This means that this function is not recommended for use in circumstances when only header is going to be modified. Use pskb_copy() instead.”…”�”}”(hj¤µh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˵h´Mshj\µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j‡µh´Mnhj­´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__pskb_copy_fclone (C function)”Œc.__pskb_copy_fclone”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒdstruct sk_buff * __pskb_copy_fclone (struct sk_buff *skb, int headroom, gfp_t gfp_mask, bool fclone)”h]”j )�”}”(hŒbstruct sk_buff *__pskb_copy_fclone(struct sk_buff *skb, int headroom, gfp_t gfp_mask, bool fclone)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶h²hh³j,¶h´M ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj>¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@¶Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ__pskb_copy_fclone”sbŒc.__pskb_copy_fclone”†”asbuh1hhj¶h²hh³j,¶h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶h²hh³j,¶h´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hjm¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶h²hh³j,¶h´M ubj3)�”}”(hŒ__pskb_copy_fclone”h]”j9)�”}”(hj\¶h]”hŒ__pskb_copy_fclone”…”�”}”(hj~¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz¶ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶h²hh³j,¶h´M ubj¡ )�”}”(hŒ@(struct sk_buff *skb, int headroom, gfp_t gfp_mask, bool fclone)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj™¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•¶ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj·¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¹¶Œmodname”NŒ classname”Njå jè )�”}”jë ]”jZ¶Œc.__pskb_copy_fclone”†”asbuh1hhj•¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•¶ubj )�”}”(hj h]”hŒ*”…”�”}”(hjã¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•¶ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjð¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘¶ubj§ )�”}”(hŒ int headroom”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·ubj9)�”}”(hŒheadroom”h]”hŒheadroom”…”�”}”(hj%·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘¶ubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjA·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jC·Œmodname”NŒ classname”Njå jè )�”}”jë ]”jZ¶Œc.__pskb_copy_fclone”†”asbuh1hhj:·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:·ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hjm·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘¶ubj§ )�”}”(hŒ bool fclone”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj†·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚·ubj9)�”}”(hŒfclone”h]”hŒfclone”…”�”}”(hj¡·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘¶ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶h²hh³j,¶h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¶h²hh³j,¶h´M ubah}”(h]”j¶ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j,¶h´M hj¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,create copy of an sk_buff with private head.”h]”hŒ,create copy of an sk_buff with private head.”…”�”}”(hjË·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÈ·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶h²hh³j,¶h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jã·jŒjã·j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXä**Parameters** ``struct sk_buff *skb`` buffer to copy ``int headroom`` headroom of new skb ``gfp_t gfp_mask`` allocation priority ``bool fclone`` if true allocate the copy of the skb from the fclone cache instead of the head cache; it is recommended to set this to true for the cases where the copy will likely be cloned **Description** Make a copy of both an :c:type:`sk_buff` and part of its data, located in header. Fragmented data remain shared. This is used when the caller wishes to modify only header of :c:type:`sk_buff` and needs private copy of the header to alter. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjí·h]”hŒ Parameters”…”�”}”(hjï·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjë·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¤hjç·ubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct sk_buff *skb`` buffer to copy ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj ¸h]”hŒstruct sk_buff *skb”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¡hj¸ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to copy”h]”hŒbuffer to copy”…”�”}”(hj%¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!¸h´M¡hj"¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!¸h´M¡hj¸ubjä)�”}”(hŒ%``int headroom`` headroom of new skb ”h]”(jê)�”}”(hŒ``int headroom``”h]”jð)�”}”(hjE¸h]”hŒ int headroom”…”�”}”(hjG¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjC¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¢hj?¸ubj)�”}”(hhh]”jl)�”}”(hŒheadroom of new skb”h]”hŒheadroom of new skb”…”�”}”(hj^¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZ¸h´M¢hj[¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZ¸h´M¢hj¸ubjä)�”}”(hŒ'``gfp_t gfp_mask`` allocation priority ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hj~¸h]”hŒgfp_t gfp_mask”…”�”}”(hj€¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M£hjx¸ubj)�”}”(hhh]”jl)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hj—¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“¸h´M£hj”¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“¸h´M£hj¸ubjä)�”}”(hŒ¿``bool fclone`` if true allocate the copy of the skb from the fclone cache instead of the head cache; it is recommended to set this to true for the cases where the copy will likely be cloned ”h]”(jê)�”}”(hŒ``bool fclone``”h]”jð)�”}”(hj·¸h]”hŒ bool fclone”…”�”}”(hj¹¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¦hj±¸ubj)�”}”(hhh]”jl)�”}”(hŒ®if true allocate the copy of the skb from the fclone cache instead of the head cache; it is recommended to set this to true for the cases where the copy will likely be cloned”h]”hŒ®if true allocate the copy of the skb from the fclone cache instead of the head cache; it is recommended to set this to true for the cases where the copy will likely be cloned”…”�”}”(hjиh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¤hj͸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j̸h´M¦hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjç·ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjó¸h]”hŒ Description”…”�”}”(hjõ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¨hjç·ubjÒ)�”}”(hXcMake a copy of both an :c:type:`sk_buff` and part of its data, located in header. Fragmented data remain shared. This is used when the caller wishes to modify only header of :c:type:`sk_buff` and needs private copy of the header to alter. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”h]”jl)�”}”(hXcMake a copy of both an :c:type:`sk_buff` and part of its data, located in header. Fragmented data remain shared. This is used when the caller wishes to modify only header of :c:type:`sk_buff` and needs private copy of the header to alter. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”h]”(hŒMake a copy of both an ”…”�”}”(hj ¹h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj¹h]”hŒsk_buff”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M§hj ¹ubhŒ† and part of its data, located in header. Fragmented data remain shared. This is used when the caller wishes to modify only header of ”…”�”}”(hj ¹h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj;¹h]”hŒsk_buff”…”�”}”(hj=¹h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj9¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³j4¹h´M§hj ¹ubhŒ8 and needs private copy of the header to alter. Returns ”…”�”}”(hj ¹h²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj\¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ¹ubhŒd on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”…”�”}”(hj ¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4¹h´M§hj ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j4¹h´M§hjç·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpskb_expand_head (C function)”Œc.pskb_expand_head”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPint pskb_expand_head (struct sk_buff *skb, int nhead, int ntail, gfp_t gfp_mask)”h]”j )�”}”(hŒOint pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, gfp_t gfp_mask)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjš¹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–¹h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–¹h²hh³j¨¹h´Mãubj3)�”}”(hŒpskb_expand_head”h]”j9)�”}”(hŒpskb_expand_head”h]”hŒpskb_expand_head”…”�”}”(hj»¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·¹ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj–¹h²hh³j¨¹h´Mãubj¡ )�”}”(hŒ;(struct sk_buff *skb, int nhead, int ntail, gfp_t gfp_mask)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj×¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓ¹ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjõ¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j÷¹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j½¹sbŒc.pskb_expand_head”†”asbuh1hhjÓ¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓ¹ubj )�”}”(hj h]”hŒ*”…”�”}”(hj#ºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÓ¹ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj0ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjϹubj§ )�”}”(hŒ int nhead”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjIºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjEºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEºubj9)�”}”(hŒnhead”h]”hŒnhead”…”�”}”(hjeºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjϹubj§ )�”}”(hŒ int ntail”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj~ºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjzºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzºubj9)�”}”(hŒntail”h]”hŒntail”…”�”}”(hjšºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjϹubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj¶ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³ºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸ºŒmodname”NŒ classname”Njå jè )�”}”jë ]”jºŒc.pskb_expand_head”†”asbuh1hhj¯ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯ºubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hjâºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjϹubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj–¹h²hh³j¨¹h´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj’¹h²hh³j¨¹h´Mãubah}”(h]”j�¹ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¨¹h´Mãhj�¹h²hubjg)�”}”(hhh]”jl)�”}”(hŒ&reallocate header of :c:type:`sk_buff`”h]”(hŒreallocate header of ”…”�”}”(hj »h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj»h]”hŒsk_buff”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå jè )�”}”jë ]”jºŒc.pskb_expand_head”†”asbj¶Œsk_buff”uh1hh³j!†h´KŸhj »ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mãhj »h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�¹h²hh³j¨¹h´Mãubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jH»jŒjH»j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXS**Parameters** ``struct sk_buff *skb`` buffer to reallocate ``int nhead`` room to add at head ``int ntail`` room to add at tail ``gfp_t gfp_mask`` allocation priority **Description** Expands (or creates identical copy, if **nhead** and **ntail** are zero) header of **skb**. :c:type:`sk_buff` itself is not changed. :c:type:`sk_buff` MUST have reference count of 1. Returns zero in the case of success or error, if expansion failed. In the last case, :c:type:`sk_buff` is not changed. All the pointers pointing into skb header may change and must be reloaded after call to this function. **Note** If you skb_push() the start of the buffer after reallocating the header, call skb_postpush_data_move() first to move the metadata out of the way before writing to :c:type:`sk_buff->data `.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjR»h]”hŒ Parameters”…”�”}”(hjT»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjP»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MçhjL»ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` buffer to reallocate ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjq»h]”hŒstruct sk_buff *skb”…”�”}”(hjs»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjo»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mähjk»ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to reallocate”h]”hŒbuffer to reallocate”…”�”}”(hjŠ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†»h´Mähj‡»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†»h´Mähjh»ubjä)�”}”(hŒ"``int nhead`` room to add at head ”h]”(jê)�”}”(hŒ ``int nhead``”h]”jð)�”}”(hjª»h]”hŒ int nhead”…”�”}”(hj¬»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Måhj¤»ubj)�”}”(hhh]”jl)�”}”(hŒroom to add at head”h]”hŒroom to add at head”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¿»h´MåhjÀ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¿»h´Måhjh»ubjä)�”}”(hŒ"``int ntail`` room to add at tail ”h]”(jê)�”}”(hŒ ``int ntail``”h]”jð)�”}”(hjã»h]”hŒ int ntail”…”�”}”(hjå»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjá»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MæhjÝ»ubj)�”}”(hhh]”jl)�”}”(hŒroom to add at tail”h]”hŒroom to add at tail”…”�”}”(hjü»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jø»h´Mæhjù»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jø»h´Mæhjh»ubjä)�”}”(hŒ'``gfp_t gfp_mask`` allocation priority ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hj¼h]”hŒgfp_t gfp_mask”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mçhj¼ubj)�”}”(hhh]”jl)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hj5¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1¼h´Mçhj2¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1¼h´Mçhjh»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjL»ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjW¼h]”hŒ Description”…”�”}”(hjY¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MéhjL»ubjÒ)�”}”(hX–Expands (or creates identical copy, if **nhead** and **ntail** are zero) header of **skb**. :c:type:`sk_buff` itself is not changed. :c:type:`sk_buff` MUST have reference count of 1. Returns zero in the case of success or error, if expansion failed. In the last case, :c:type:`sk_buff` is not changed. All the pointers pointing into skb header may change and must be reloaded after call to this function. ”h]”(jl)�”}”(hX-Expands (or creates identical copy, if **nhead** and **ntail** are zero) header of **skb**. :c:type:`sk_buff` itself is not changed. :c:type:`sk_buff` MUST have reference count of 1. Returns zero in the case of success or error, if expansion failed. In the last case, :c:type:`sk_buff` is not changed.”h]”(hŒ'Expands (or creates identical copy, if ”…”�”}”(hjq¼h²hh³Nh´Nubj›)�”}”(hŒ **nhead**”h]”hŒnhead”…”�”}”(hjy¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq¼ubhŒ and ”…”�”}”(hjq¼h²hh³Nh´Nubj›)�”}”(hŒ **ntail**”h]”hŒntail”…”�”}”(hj‹¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq¼ubhŒ are zero) header of ”…”�”}”(hjq¼h²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj�¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq¼ubhŒ. ”…”�”}”(hjq¼h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj±¼h]”hŒsk_buff”…”�”}”(hj³¼h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¯¼ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mèhjq¼ubhŒ itself is not changed. ”…”�”}”(hjq¼h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjÕ¼h]”hŒsk_buff”…”�”}”(hj×¼h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÓ¼ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³jμh´Mèhjq¼ubhŒv MUST have reference count of 1. Returns zero in the case of success or error, if expansion failed. In the last case, ”…”�”}”(hjq¼h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjø¼h]”hŒsk_buff”…”�”}”(hjú¼h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjö¼ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³jμh´Mèhjq¼ubhŒ is not changed.”…”�”}”(hjq¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jμh´Mèhjm¼ubjl)�”}”(hŒfAll the pointers pointing into skb header may change and must be reloaded after call to this function.”h]”hŒfAll the pointers pointing into skb header may change and must be reloaded after call to this function.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Míhjm¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jμh´MèhjL»ubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hj6½h]”hŒNote”…”�”}”(hj8½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MðhjL»ubjß)�”}”(hhh]”jä)�”}”(hŒÅIf you skb_push() the start of the buffer after reallocating the header, call skb_postpush_data_move() first to move the metadata out of the way before writing to :c:type:`sk_buff->data `.”h]”(jê)�”}”(hŒ@If you skb_push() the start of the buffer after reallocating the”h]”hŒ@If you skb_push() the start of the buffer after reallocating the”…”�”}”(hjS½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MòhjO½ubj)�”}”(hhh]”jl)�”}”(hŒ„header, call skb_postpush_data_move() first to move the metadata out of the way before writing to :c:type:`sk_buff->data `.”h]”(hŒbheader, call skb_postpush_data_move() first to move the metadata out of the way before writing to ”…”�”}”(hje½h²hh³Nh´Nubh)�”}”(hŒ!:c:type:`sk_buff->data `”h]”jð)�”}”(hjo½h]”hŒ sk_buff->data”…”�”}”(hjq½h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjm½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ja½h´Mòhje½ubhŒ.”…”�”}”(hje½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ja½h´Mòhjb½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ja½h´MòhjL½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjL»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_expand_head (C function)”Œc.skb_expand_head”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMstruct sk_buff * skb_expand_head (struct sk_buff *skb, unsigned int headroom)”h]”j )�”}”(hŒKstruct sk_buff *skb_expand_head(struct sk_buff *skb, unsigned int headroom)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjȽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjĽh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mˆ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjĽh²hh³jÕ½h´Mˆ ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjç½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j齌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_expand_head”sbŒc.skb_expand_head”†”asbuh1hhjĽh²hh³jÕ½h´Mˆ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjĽh²hh³jÕ½h´Mˆ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjĽh²hh³jÕ½h´Mˆ ubj3)�”}”(hŒskb_expand_head”h]”j9)�”}”(hj¾h]”hŒskb_expand_head”…”�”}”(hj'¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#¾ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjĽh²hh³jÕ½h´Mˆ ubj¡ )�”}”(hŒ,(struct sk_buff *skb, unsigned int headroom)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjB¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>¾ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj`¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jb¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¾Œc.skb_expand_head”†”asbuh1hhj>¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŒ¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>¾ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj™¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj:¾ubj§ )�”}”(hŒunsigned int headroom”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj²¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj®¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®¾ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjξh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj®¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܾh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®¾ubj9)�”}”(hŒheadroom”h]”hŒheadroom”…”�”}”(hjê¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj:¾ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjĽh²hh³jÕ½h´Mˆ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÀ½h²hh³jÕ½h´Mˆ ubah}”(h]”j»½ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÕ½h´Mˆ hj½½h²hubjg)�”}”(hhh]”jl)�”}”(hŒ&reallocate header of :c:type:`sk_buff`”h]”(hŒreallocate header of ”…”�”}”(hj¿h²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj¿h]”hŒsk_buff”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå jè )�”}”jë ]”j¾Œc.skb_expand_head”†”asbj¶Œsk_buff”uh1hh³j!†h´KŸhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mˆ hj¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½½h²hh³jÕ½h´Mˆ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jP¿jŒjP¿j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXo**Parameters** ``struct sk_buff *skb`` buffer to reallocate ``unsigned int headroom`` needed headroom **Description** Unlike skb_realloc_headroom, this one does not allocate a new skb if possible; copies skb->sk to new skb as needed and frees original skb in case of failures. It expect increased headroom and generates warning otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjZ¿h]”hŒ Parameters”…”�”}”(hj\¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjX¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MŒ hjT¿ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` buffer to reallocate ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjy¿h]”hŒstruct sk_buff *skb”…”�”}”(hj{¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‰ hjs¿ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to reallocate”h]”hŒbuffer to reallocate”…”�”}”(hj’¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽ¿h´M‰ hj�¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ¿h´M‰ hjp¿ubjä)�”}”(hŒ*``unsigned int headroom`` needed headroom ”h]”(jê)�”}”(hŒ``unsigned int headroom``”h]”jð)�”}”(hj²¿h]”hŒunsigned int headroom”…”�”}”(hj´¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MŠ hj¬¿ubj)�”}”(hhh]”jl)�”}”(hŒneeded headroom”h]”hŒneeded headroom”…”�”}”(hjË¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇ¿h´MŠ hjÈ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇ¿h´MŠ hjp¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjT¿ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjí¿h]”hŒ Description”…”�”}”(hjï¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjë¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MŒ hjT¿ubjÒ)�”}”(hŒÝUnlike skb_realloc_headroom, this one does not allocate a new skb if possible; copies skb->sk to new skb as needed and frees original skb in case of failures. It expect increased headroom and generates warning otherwise.”h]”(jl)�”}”(hŒžUnlike skb_realloc_headroom, this one does not allocate a new skb if possible; copies skb->sk to new skb as needed and frees original skb in case of failures.”h]”hŒžUnlike skb_realloc_headroom, this one does not allocate a new skb if possible; copies skb->sk to new skb as needed and frees original skb in case of failures.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‹ hjÀubjl)�”}”(hŒ=It expect increased headroom and generates warning otherwise.”h]”hŒ=It expect increased headroom and generates warning otherwise.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M� hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÀh´M‹ hjT¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_copy_expand (C function)”Œc.skb_copy_expand”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒnstruct sk_buff * skb_copy_expand (const struct sk_buff *skb, int newheadroom, int newtailroom, gfp_t gfp_mask)”h]”j )�”}”(hŒlstruct sk_buff *skb_copy_expand(const struct sk_buff *skb, int newheadroom, int newtailroom, gfp_t gfp_mask)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjKÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGÀh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M» ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGÀh²hh³jXÀh´M» ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jlÀŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_copy_expand”sbŒc.skb_copy_expand”†”asbuh1hhjGÀh²hh³jXÀh´M» ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGÀh²hh³jXÀh´M» ubj )�”}”(hj h]”hŒ*”…”�”}”(hj™Àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjGÀh²hh³jXÀh´M» ubj3)�”}”(hŒskb_copy_expand”h]”j9)�”}”(hjˆÀh]”hŒskb_copy_expand”…”�”}”(hjªÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦Àubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjGÀh²hh³jXÀh´M» ubj¡ )�”}”(hŒM(const struct sk_buff *skb, int newheadroom, int newtailroom, gfp_t gfp_mask)”h]”(j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÅÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁÀubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁÀubj)�”}”(hjh]”hŒstruct”…”�”}”(hjàÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁÀubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁÀubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjþÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÁŒmodname”NŒ classname”Njå jè )�”}”jë ]”j†ÀŒc.skb_copy_expand”†”asbuh1hhjÁÀubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁÀubj )�”}”(hj h]”hŒ*”…”�”}”(hj*Áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÁÀubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj7Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj½Àubj§ )�”}”(hŒint newheadroom”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjPÁh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjLÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLÁubj9)�”}”(hŒ newheadroom”h]”hŒ newheadroom”…”�”}”(hjlÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj½Àubj§ )�”}”(hŒint newtailroom”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj…Áh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�Áubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Áubj9)�”}”(hŒ newtailroom”h]”hŒ newtailroom”…”�”}”(hj¡Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj½Àubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj½Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¿ÁŒmodname”NŒ classname”Njå jè )�”}”jë ]”j†ÀŒc.skb_copy_expand”†”asbuh1hhj¶Áubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶Áubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hjéÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj½Àubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjGÀh²hh³jXÀh´M» ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjCÀh²hh³jXÀh´M» ubah}”(h]”j>Àah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jXÀh´M» hj@Àh²hubjg)�”}”(hhh]”jl)�”}”(hŒcopy and expand sk_buff”h]”hŒcopy and expand sk_buff”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M» hjÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj@Àh²hh³jXÀh´M» ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j+ÂjŒj+Âj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÊ**Parameters** ``const struct sk_buff *skb`` buffer to copy ``int newheadroom`` new free bytes at head ``int newtailroom`` new free bytes at tail ``gfp_t gfp_mask`` allocation priority **Description** Make a copy of both an :c:type:`sk_buff` and its data and while doing so allocate additional space. This is used when the caller wishes to modify the data and needs a private copy of the data to alter as well as more space for new fields. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1. You must pass ``GFP_ATOMIC`` as the allocation priority if this function is called from an interrupt.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj5Âh]”hŒ Parameters”…”�”}”(hj7Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¿ hj/Âubjß)�”}”(hhh]”(jä)�”}”(hŒ-``const struct sk_buff *skb`` buffer to copy ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjTÂh]”hŒconst struct sk_buff *skb”…”�”}”(hjVÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjRÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¼ hjNÂubj)�”}”(hhh]”jl)�”}”(hŒbuffer to copy”h]”hŒbuffer to copy”…”�”}”(hjmÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jiÂh´M¼ hjjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jiÂh´M¼ hjKÂubjä)�”}”(hŒ+``int newheadroom`` new free bytes at head ”h]”(jê)�”}”(hŒ``int newheadroom``”h]”jð)�”}”(hj�Âh]”hŒint newheadroom”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M½ hj‡Âubj)�”}”(hhh]”jl)�”}”(hŒnew free bytes at head”h]”hŒnew free bytes at head”…”�”}”(hj¦Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¢Âh´M½ hj£Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢Âh´M½ hjKÂubjä)�”}”(hŒ+``int newtailroom`` new free bytes at tail ”h]”(jê)�”}”(hŒ``int newtailroom``”h]”jð)�”}”(hjÆÂh]”hŒint newtailroom”…”�”}”(hjÈÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¾ hjÀÂubj)�”}”(hhh]”jl)�”}”(hŒnew free bytes at tail”h]”hŒnew free bytes at tail”…”�”}”(hjßÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛÂh´M¾ hjÜÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛÂh´M¾ hjKÂubjä)�”}”(hŒ'``gfp_t gfp_mask`` allocation priority ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hjÿÂh]”hŒgfp_t gfp_mask”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjýÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¿ hjùÂubj)�”}”(hhh]”jl)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÃh´M¿ hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃh´M¿ hjKÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/Âubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj:Ãh]”hŒ Description”…”�”}”(hj<Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj8Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÁ hj/ÂubjÒ)�”}”(hXËMake a copy of both an :c:type:`sk_buff` and its data and while doing so allocate additional space. This is used when the caller wishes to modify the data and needs a private copy of the data to alter as well as more space for new fields. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1. You must pass ``GFP_ATOMIC`` as the allocation priority if this function is called from an interrupt.”h]”(jl)�”}”(hŒcMake a copy of both an :c:type:`sk_buff` and its data and while doing so allocate additional space.”h]”(hŒMake a copy of both an ”…”�”}”(hjTÃh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj^Ãh]”hŒsk_buff”…”�”}”(hj`Ãh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj\Ãubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÀ hjTÃubhŒ; and its data and while doing so allocate additional space.”…”�”}”(hjTÃh²•7hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{Ãh´MÀ hjPÃubjl)�”}”(hŒÿThis is used when the caller wishes to modify the data and needs a private copy of the data to alter as well as more space for new fields. Returns ``NULL`` on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”h]”(hŒ“This is used when the caller wishes to modify the data and needs a private copy of the data to alter as well as more space for new fields. Returns ”…”�”}”(hj†Ãh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŽÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†ÃubhŒd on failure or the pointer to the buffer on success. The returned buffer has a reference count of 1.”…”�”}”(hj†Ãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mà hjPÃubjl)�”}”(hŒeYou must pass ``GFP_ATOMIC`` as the allocation priority if this function is called from an interrupt.”h]”(hŒYou must pass ”…”�”}”(hj§Ãh²hh³Nh´Nubjð)�”}”(hŒ``GFP_ATOMIC``”h]”hŒ GFP_ATOMIC”…”�”}”(hj¯Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§ÃubhŒI as the allocation priority if this function is called from an interrupt.”…”�”}”(hj§Ãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÈ hjPÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j{Ãh´MÀ hj/Âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_pad (C function)”Œ c.__skb_pad”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@int __skb_pad (struct sk_buff *skb, int pad, bool free_on_error)”h]”j )�”}”(hŒ?int __skb_pad(struct sk_buff *skb, int pad, bool free_on_error)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjîÃh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêÃh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêÃh²hh³jüÃh´M ubj3)�”}”(hŒ __skb_pad”h]”j9)�”}”(hŒ __skb_pad”h]”hŒ __skb_pad”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Äubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjêÃh²hh³jüÃh´M ubj¡ )�”}”(hŒ2(struct sk_buff *skb, int pad, bool free_on_error)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj+Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'Äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'Äubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjIÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKÄŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÄsbŒ c.__skb_pad”†”asbuh1hhj'Äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'Äubj )�”}”(hj h]”hŒ*”…”�”}”(hjwÄh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj'Äubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj„Äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#Äubj§ )�”}”(hŒint pad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj™Äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™Äubj9)�”}”(hŒpad”h]”hŒpad”…”�”}”(hj¹Äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#Äubj§ )�”}”(hŒbool free_on_error”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÒÄh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÎÄubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎÄubj9)�”}”(hŒ free_on_error”h]”hŒ free_on_error”…”�”}”(hjíÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#Äubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjêÃh²hh³jüÃh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæÃh²hh³jüÃh´M ubah}”(h]”jáÃah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüÃh´M hjãÃh²hubjg)�”}”(hhh]”jl)�”}”(hŒzero pad the tail of an skb”h]”hŒzero pad the tail of an skb”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjãÃh²hh³jüÃh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j/ÅjŒj/Åj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX³**Parameters** ``struct sk_buff *skb`` buffer to pad ``int pad`` space to pad ``bool free_on_error`` free buffer on error **Description** Ensure that a buffer is followed by a padding area that is zero filled. Used by network drivers which may DMA or transfer data beyond the buffer end onto the wire. May return error in out of memory cases. The skb is freed on error if **free_on_error** is true.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj9Åh]”hŒ Parameters”…”�”}”(hj;Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hj3Åubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to pad ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjXÅh]”hŒstruct sk_buff *skb”…”�”}”(hjZÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjRÅubj)�”}”(hhh]”jl)�”}”(hŒ buffer to pad”h]”hŒ buffer to pad”…”�”}”(hjqÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jmÅh´M hjnÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmÅh´M hjOÅubjä)�”}”(hŒ``int pad`` space to pad ”h]”(jê)�”}”(hŒ ``int pad``”h]”jð)�”}”(hj‘Åh]”hŒint pad”…”�”}”(hj“Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hj‹Åubj)�”}”(hhh]”jl)�”}”(hŒ space to pad”h]”hŒ space to pad”…”�”}”(hjªÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦Åh´M hj§Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦Åh´M hjOÅubjä)�”}”(hŒ,``bool free_on_error`` free buffer on error ”h]”(jê)�”}”(hŒ``bool free_on_error``”h]”jð)�”}”(hjÊÅh]”hŒbool free_on_error”…”�”}”(hjÌÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÄÅubj)�”}”(hhh]”jl)�”}”(hŒfree buffer on error”h]”hŒfree buffer on error”…”�”}”(hjãÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jßÅh´M hjàÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßÅh´M hjOÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj3Åubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÆh]”hŒ Description”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hj3ÅubjÒ)�”}”(hXEnsure that a buffer is followed by a padding area that is zero filled. Used by network drivers which may DMA or transfer data beyond the buffer end onto the wire. May return error in out of memory cases. The skb is freed on error if **free_on_error** is true.”h]”(jl)�”}”(hŒ£Ensure that a buffer is followed by a padding area that is zero filled. Used by network drivers which may DMA or transfer data beyond the buffer end onto the wire.”h]”hŒ£Ensure that a buffer is followed by a padding area that is zero filled. Used by network drivers which may DMA or transfer data beyond the buffer end onto the wire.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÆubjl)�”}”(hŒ`May return error in out of memory cases. The skb is freed on error if **free_on_error** is true.”h]”(hŒFMay return error in out of memory cases. The skb is freed on error if ”…”�”}”(hj.Æh²hh³Nh´Nubj›)�”}”(hŒ**free_on_error**”h]”hŒ free_on_error”…”�”}”(hj6Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.ÆubhŒ is true.”…”�”}”(hj.Æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j-Æh´M hj3Åubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpskb_put (C function)”Œ c.pskb_put”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDvoid * pskb_put (struct sk_buff *skb, struct sk_buff *tail, int len)”h]”j )�”}”(hŒBvoid *pskb_put(struct sk_buff *skb, struct sk_buff *tail, int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjuÆh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjqÆh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M3 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqÆh²hh³jƒÆh´M3 ubj )�”}”(hj h]”hŒ*”…”�”}”(hj’Æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjqÆh²hh³jƒÆh´M3 ubj3)�”}”(hŒpskb_put”h]”j9)�”}”(hŒpskb_put”h]”hŒpskb_put”…”�”}”(hj£Æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸÆubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjqÆh²hh³jƒÆh´M3 ubj¡ )�”}”(hŒ4(struct sk_buff *skb, struct sk_buff *tail, int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¿Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»Æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»Æubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÝÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j߯Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¥ÆsbŒ c.pskb_put”†”asbuh1hhj»Æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»Æubj )�”}”(hj h]”hŒ*”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj»Æubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·Æubj§ )�”}”(hŒstruct sk_buff *tail”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj1Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-Çubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjOÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jQÇŒmodname”NŒ classname”Njå jè )�”}”jë ]”jùÆŒ c.pskb_put”†”asbuh1hhj-Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-Çubj )�”}”(hj h]”hŒ*”…”�”}”(hj{Çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj-Çubj9)�”}”(hŒtail”h]”hŒtail”…”�”}”(hjˆÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·Æubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¡Çh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Çubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj½Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·Æubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjqÆh²hh³jƒÆh´M3 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjmÆh²hh³jƒÆh´M3 ubah}”(h]”jhÆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jƒÆh´M3 hjjÆh²hubjg)�”}”(hhh]”jl)�”}”(hŒ7add data to the tail of a potentially fragmented buffer”h]”hŒ7add data to the tail of a potentially fragmented buffer”…”�”}”(hjçÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M3 hjäÇh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjjÆh²hh³jƒÆh´M3 ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÿÇjŒjÿÇj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXã**Parameters** ``struct sk_buff *skb`` start of the buffer to use ``struct sk_buff *tail`` tail fragment of the buffer to use ``int len`` amount of data to add **Description** This function extends the used data area of the potentially fragmented buffer. **tail** must be the last fragment of **skb** -- or **skb** itself. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj Èh]”hŒ Parameters”…”�”}”(hj Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M7 hjÈubjß)�”}”(hhh]”(jä)�”}”(hŒ3``struct sk_buff *skb`` start of the buffer to use ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj(Èh]”hŒstruct sk_buff *skb”…”�”}”(hj*Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M4 hj"Èubj)�”}”(hhh]”jl)�”}”(hŒstart of the buffer to use”h]”hŒstart of the buffer to use”…”�”}”(hjAÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=Èh´M4 hj>Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=Èh´M4 hjÈubjä)�”}”(hŒ<``struct sk_buff *tail`` tail fragment of the buffer to use ”h]”(jê)�”}”(hŒ``struct sk_buff *tail``”h]”jð)�”}”(hjaÈh]”hŒstruct sk_buff *tail”…”�”}”(hjcÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M5 hj[Èubj)�”}”(hhh]”jl)�”}”(hŒ"tail fragment of the buffer to use”h]”hŒ"tail fragment of the buffer to use”…”�”}”(hjzÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvÈh´M5 hjwÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvÈh´M5 hjÈubjä)�”}”(hŒ"``int len`` amount of data to add ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hjšÈh]”hŒint len”…”�”}”(hjœÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M6 hj”Èubj)�”}”(hhh]”jl)�”}”(hŒamount of data to add”h]”hŒamount of data to add”…”�”}”(hj³Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯Èh´M6 hj°Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯Èh´M6 hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÈubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÕÈh]”hŒ Description”…”�”}”(hj×Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M8 hjÈubjÒ)�”}”(hXThis function extends the used data area of the potentially fragmented buffer. **tail** must be the last fragment of **skb** -- or **skb** itself. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”jl)�”}”(hXThis function extends the used data area of the potentially fragmented buffer. **tail** must be the last fragment of **skb** -- or **skb** itself. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”(hŒOThis function extends the used data area of the potentially fragmented buffer. ”…”�”}”(hjïÈh²hh³Nh´Nubj›)�”}”(hŒ**tail**”h]”hŒtail”…”�”}”(hj÷Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjïÈubhŒ must be the last fragment of ”…”�”}”(hjïÈh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjïÈubhŒ -- or ”…”�”}”(hjïÈh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjïÈubhŒ… itself. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”…”�”}”(hjïÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M7 hjëÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j3Éh´M7 hjÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_put (C function)”Œ c.skb_put”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void * skb_put (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ4void *skb_put(struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjZÉh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjVÉh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MJ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjVÉh²hh³jhÉh´MJ ubj )�”}”(hj h]”hŒ*”…”�”}”(hjwÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjVÉh²hh³jhÉh´MJ ubj3)�”}”(hŒskb_put”h]”j9)�”}”(hŒskb_put”h]”hŒskb_put”…”�”}”(hjˆÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„Éubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjVÉh²hh³jhÉh´MJ ubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¤Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Éubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÂÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÄÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŠÉsbŒ c.skb_put”†”asbuh1hhj Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Éubj )�”}”(hj h]”hŒ*”…”�”}”(hjðÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj Éubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjýÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœÉubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj2Êh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjNÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjVÉh²hh³jhÉh´MJ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjRÉh²hh³jhÉh´MJ ubah}”(h]”jMÉah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jhÉh´MJ hjOÉh²hubjg)�”}”(hhh]”jl)�”}”(hŒadd data to a buffer”h]”hŒadd data to a buffer”…”�”}”(hjxÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MJ hjuÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjOÉh²hh³jhÉh´MJ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�ÊjŒj�Êj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX;**Parameters** ``struct sk_buff *skb`` buffer to use ``unsigned int len`` amount of data to add **Description** This function extends the used data area of the buffer. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjšÊh]”hŒ Parameters”…”�”}”(hjœÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MN hj”Êubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to use ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj¹Êh]”hŒstruct sk_buff *skb”…”�”}”(hj»Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MK hj³Êubj)�”}”(hhh]”jl)�”}”(hŒ buffer to use”h]”hŒ buffer to use”…”�”}”(hjÒÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÎÊh´MK hjÏÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÎÊh´MK hj°Êubjä)�”}”(hŒ+``unsigned int len`` amount of data to add ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjòÊh]”hŒunsigned int len”…”�”}”(hjôÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´ML hjìÊubj)�”}”(hhh]”jl)�”}”(hŒamount of data to add”h]”hŒamount of data to add”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËh´ML hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËh´ML hj°Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj”Êubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj-Ëh]”hŒ Description”…”�”}”(hj/Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MN hj”ÊubjÒ)�”}”(hŒ´This function extends the used data area of the buffer. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”jl)�”}”(hŒ´This function extends the used data area of the buffer. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”hŒ´This function extends the used data area of the buffer. If this would exceed the total buffer size the kernel will panic. A pointer to the first byte of the extra data is returned.”…”�”}”(hjGËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MM hjCËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jUËh´MM hj”Êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_push (C function)”Œ c.skb_push”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void * skb_push (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ5void *skb_push(struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj|Ëh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjxËh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M_ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjxËh²hh³jŠËh´M_ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj™Ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjxËh²hh³jŠËh´M_ ubj3)�”}”(hŒskb_push”h]”j9)�”}”(hŒskb_push”h]”hŒskb_push”…”�”}”(hjªËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦Ëubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjxËh²hh³jŠËh´M_ ubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÆËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓËh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÂËubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjäËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jæËŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¬ËsbŒ c.skb_push”†”asbuh1hhjÂËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÂËubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÂËubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¾Ëubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj8Ìh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4Ìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4ÌubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjTÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4Ìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Ìubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjpÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¾Ëubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjxËh²hh³jŠËh´M_ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjtËh²hh³jŠËh´M_ ubah}”(h]”joËah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŠËh´M_ hjqËh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!add data to the start of a buffer”h]”hŒ!add data to the start of a buffer”…”�”}”(hjšÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M_ hj—Ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjqËh²hh³jŠËh´M_ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j²ÌjŒj²Ìj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXS**Parameters** ``struct sk_buff *skb`` buffer to use ``unsigned int len`` amount of data to add **Description** This function extends the used data area of the buffer at the buffer start. If this would exceed the total buffer headroom the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¼Ìh]”hŒ Parameters”…”�”}”(hj¾Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjºÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mc hj¶Ìubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to use ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÛÌh]”hŒstruct sk_buff *skb”…”�”}”(hjÝÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M` hjÕÌubj)�”}”(hhh]”jl)�”}”(hŒ buffer to use”h]”hŒ buffer to use”…”�”}”(hjôÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jðÌh´M` hjñÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðÌh´M` hjÒÌubjä)�”}”(hŒ+``unsigned int len`` amount of data to add ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjÍh]”hŒunsigned int len”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Ma hjÍubj)�”}”(hhh]”jl)�”}”(hŒamount of data to add”h]”hŒamount of data to add”…”�”}”(hj-Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)Íh´Ma hj*Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)Íh´Ma hjÒÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶Ìubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjOÍh]”hŒ Description”…”�”}”(hjQÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjMÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mc hj¶ÌubjÒ)�”}”(hŒÌThis function extends the used data area of the buffer at the buffer start. If this would exceed the total buffer headroom the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”jl)�”}”(hŒÌThis function extends the used data area of the buffer at the buffer start. If this would exceed the total buffer headroom the kernel will panic. A pointer to the first byte of the extra data is returned.”h]”hŒÌThis function extends the used data area of the buffer at the buffer start. If this would exceed the total buffer headroom the kernel will panic. A pointer to the first byte of the extra data is returned.”…”�”}”(hjiÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mb hjeÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jwÍh´Mb hj¶Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_pull (C function)”Œ c.skb_pull”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void * skb_pull (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ5void *skb_pull(struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjžÍh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjšÍh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mr ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšÍh²hh³j¬Íh´Mr ubj )�”}”(hj h]”hŒ*”…”�”}”(hj»Íh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšÍh²hh³j¬Íh´Mr ubj3)�”}”(hŒskb_pull”h]”j9)�”}”(hŒskb_pull”h]”hŒskb_pull”…”�”}”(hjÌÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈÍubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjšÍh²hh³j¬Íh´Mr ubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjèÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäÍubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÎŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÎÍsbŒ c.skb_pull”†”asbuh1hhjäÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäÍubj )�”}”(hj h]”hŒ*”…”�”}”(hj4Îh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjäÍubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjAÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjàÍubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjZÎh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjVÎubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhÎh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjVÎubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjvÎh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjVÎubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjVÎubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj’Îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjàÍubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjšÍh²hh³j¬Íh´Mr ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj–Íh²hh³j¬Íh´Mr ubah}”(h]”j‘Íah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¬Íh´Mr hj“Íh²hubjg)�”}”(hhh]”jl)�”}”(hŒ&remove data from the start of a buffer”h]”hŒ&remove data from the start of a buffer”…”�”}”(hj¼Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mr hj¹Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj“Íh²hh³j¬Íh´Mr ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÔÎjŒjÔÎj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXj**Parameters** ``struct sk_buff *skb`` buffer to use ``unsigned int len`` amount of data to remove **Description** This function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the next data in the buffer is returned. Once the data has been pulled future pushes will overwrite the old data.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÞÎh]”hŒ Parameters”…”�”}”(hjàÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mv hjØÎubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to use ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjýÎh]”hŒstruct sk_buff *skb”…”�”}”(hjÿÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Ms hj÷Îubj)�”}”(hhh]”jl)�”}”(hŒ buffer to use”h]”hŒ buffer to use”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏh´Ms hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏh´Ms hjôÎubjä)�”}”(hŒ.``unsigned int len`` amount of data to remove ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj6Ïh]”hŒunsigned int len”…”�”}”(hj8Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mt hj0Ïubj)�”}”(hhh]”jl)�”}”(hŒamount of data to remove”h]”hŒamount of data to remove”…”�”}”(hjOÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKÏh´Mt hjLÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKÏh´Mt hjôÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjØÎubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjqÏh]”hŒ Description”…”�”}”(hjsÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mv hjØÎubjÒ)�”}”(hŒÛThis function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the next data in the buffer is returned. Once the data has been pulled future pushes will overwrite the old data.”h]”jl)�”}”(hŒÛThis function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the next data in the buffer is returned. Once the data has been pulled future pushes will overwrite the old data.”h]”hŒÛThis function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the next data in the buffer is returned. Once the data has been pulled future pushes will overwrite the old data.”…”�”}”(hj‹Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mu hj‡Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j™Ïh´Mu hjØÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_pull_data (C function)”Œc.skb_pull_data”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void * skb_pull_data (struct sk_buff *skb, size_t len)”h]”j )�”}”(hŒ4void *skb_pull_data(struct sk_buff *skb, size_t len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀÏh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼Ïh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Ïh²hh³jÎÏh´M‚ ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÝÏh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Ïh²hh³jÎÏh´M‚ ubj3)�”}”(hŒ skb_pull_data”h]”j9)�”}”(hŒ skb_pull_data”h]”hŒ skb_pull_data”…”�”}”(hjîÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêÏubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¼Ïh²hh³jÎÏh´M‚ ubj¡ )�”}”(hŒ!(struct sk_buff *skb, size_t len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj(Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%Ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j*ÐŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jðÏsbŒc.skb_pull_data”†”asbuh1hhjÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐubj )�”}”(hj h]”hŒ*”…”�”}”(hjVÐh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÐubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjcÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÐubj§ )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|Ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�ÐŒmodname”NŒ classname”Njå jè )�”}”jë ]”jDÐŒc.skb_pull_data”†”asbuh1hhjxÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjxÐubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj«Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÐubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¼Ïh²hh³jÎÏh´M‚ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¸Ïh²hh³jÎÏh´M‚ ubah}”(h]”j³Ïah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÎÏh´M‚ hjµÏh²hubjg)�”}”(hhh]”jl)�”}”(hŒGremove data from the start of a buffer returning its original position.”h]”hŒGremove data from the start of a buffer returning its original position.”…”�”}”(hjÕÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚ hjÒÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjµÏh²hh³jÎÏh´M‚ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jíÐjŒjíÐj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX—**Parameters** ``struct sk_buff *skb`` buffer to use ``size_t len`` amount of data to remove **Description** This function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the original data in the buffer is returned after checking if there is enough data to pull. Once the data has been pulled future pushes will overwrite the old data.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj÷Ðh]”hŒ Parameters”…”�”}”(hjùÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjõÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M† hjñÐubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct sk_buff *skb`` buffer to use ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÑh]”hŒstruct sk_buff *skb”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M„ hjÑubj)�”}”(hhh]”jl)�”}”(hŒ buffer to use”h]”hŒ buffer to use”…”�”}”(hj/Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+Ñh´M„ hj,Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+Ñh´M„ hj Ñubjä)�”}”(hŒ(``size_t len`` amount of data to remove ”h]”(jê)�”}”(hŒ``size_t len``”h]”jð)�”}”(hjOÑh]”hŒ size_t len”…”�”}”(hjQÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M… hjIÑubj)�”}”(hhh]”jl)�”}”(hŒamount of data to remove”h]”hŒamount of data to remove”…”�”}”(hjhÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdÑh´M… hjeÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdÑh´M… hj Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjñÐubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŠÑh]”hŒ Description”…”�”}”(hjŒÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‡ hjñÐubjÒ)�”}”(hXThis function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the original data in the buffer is returned after checking if there is enough data to pull. Once the data has been pulled future pushes will overwrite the old data.”h]”jl)�”}”(hXThis function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the original data in the buffer is returned after checking if there is enough data to pull. Once the data has been pulled future pushes will overwrite the old data.”h]”hXThis function removes data from the start of a buffer, returning the memory to the headroom. A pointer to the original data in the buffer is returned after checking if there is enough data to pull. Once the data has been pulled future pushes will overwrite the old data.”…”�”}”(hj¤Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M† hj Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j²Ñh´M† hjñÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_trim (C function)”Œ c.skb_trim”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5void skb_trim (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ4void skb_trim(struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÙÑh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÕÑh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mš ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕÑh²hh³jçÑh´Mš ubj3)�”}”(hŒskb_trim”h]”j9)�”}”(hŒskb_trim”h]”hŒskb_trim”…”�”}”(hjúÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöÑubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÕÑh²hh³jçÑh´Mš ubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj4Òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j6ÒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jüÑsbŒ c.skb_trim”†”asbuh1hhjÒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTÒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒubj )�”}”(hj h]”hŒ*”…”�”}”(hjbÒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÒubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjoÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÒubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjˆÒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„Òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„ÒubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¤Òh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„Òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„Òubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÀÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÕÑh²hh³jçÑh´Mš ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÑÑh²hh³jçÑh´Mš ubah}”(h]”jÌÑah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jçÑh´Mš hjÎÑh²hubjg)�”}”(hhh]”jl)�”}”(hŒremove end from a buffer”h]”hŒremove end from a buffer”…”�”}”(hjêÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mš hjçÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÎÑh²hh³jçÑh´Mš ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÓjŒjÓj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` buffer to alter ``unsigned int len`` new length **Description** Cut the length of a buffer down by removing data from the tail. If the buffer is already under the length specified it is not modified. The skb must be linear.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj Óh]”hŒ Parameters”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mž hjÓubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to alter ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj+Óh]”hŒstruct sk_buff *skb”…”�”}”(hj-Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M› hj%Óubj)�”}”(hhh]”jl)�”}”(hŒbuffer to alter”h]”hŒbuffer to alter”…”�”}”(hjDÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@Óh´M› hjAÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@Óh´M› hj"Óubjä)�”}”(hŒ ``unsigned int len`` new length ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjdÓh]”hŒunsigned int len”…”�”}”(hjfÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjbÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mœ hj^Óubj)�”}”(hhh]”jl)�”}”(hŒ new length”h]”hŒ new length”…”�”}”(hj}Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jyÓh´Mœ hjzÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jyÓh´Mœ hj"Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÓubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŸÓh]”hŒ Description”…”�”}”(hj¡Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mž hjÓubjÒ)�”}”(hŒŸCut the length of a buffer down by removing data from the tail. If the buffer is already under the length specified it is not modified. The skb must be linear.”h]”jl)�”}”(hŒŸCut the length of a buffer down by removing data from the tail. If the buffer is already under the length specified it is not modified. The skb must be linear.”h]”hŒŸCut the length of a buffer down by removing data from the tail. If the buffer is already under the length specified it is not modified. The skb must be linear.”…”�”}”(hj¹Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M� hjµÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÇÓh´M� hjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__pskb_pull_tail (C function)”Œc.__pskb_pull_tail”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8void * __pskb_pull_tail (struct sk_buff *skb, int delta)”h]”j )�”}”(hŒ6void *__pskb_pull_tail(struct sk_buff *skb, int delta)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîÓh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêÓh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M. ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÓh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêÓh²hh³jüÓh´M. ubj )�”}”(hj h]”hŒ*”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjêÓh²hh³jüÓh´M. ubj3)�”}”(hŒ__pskb_pull_tail”h]”j9)�”}”(hŒ__pskb_pull_tail”h]”hŒ__pskb_pull_tail”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjêÓh²hh³jüÓh´M. ubj¡ )�”}”(hŒ (struct sk_buff *skb, int delta)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj8Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Ôubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjVÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jXÔŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÔsbŒc.__pskb_pull_tail”†”asbuh1hhj4Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Ôubj )�”}”(hj h]”hŒ*”…”�”}”(hj„Ôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj4Ôubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj‘Ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0Ôubj§ )�”}”(hŒ int delta”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjªÔh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¦Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦Ôubj9)�”}”(hŒdelta”h]”hŒdelta”…”�”}”(hjÆÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0Ôubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjêÓh²hh³jüÓh´M. ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæÓh²hh³jüÓh´M. ubah}”(h]”jáÓah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüÓh´M. hjãÓh²hubjg)�”}”(hhh]”jl)�”}”(hŒadvance tail of skb header”h]”hŒadvance tail of skb header”…”�”}”(hjðÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M. hjíÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjãÓh²hh³jüÓh´M. ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÕjŒjÕj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX_**Parameters** ``struct sk_buff *skb`` buffer to reallocate ``int delta`` number of bytes to advance tail **Description** The function makes a sense only on a fragmented :c:type:`sk_buff`, it expands header moving its tail forward and copying necessary data from fragmented part. :c:type:`sk_buff` MUST have reference count of 1. Returns ``NULL`` (and :c:type:`sk_buff` does not change) if pull failed or value of new tail of skb in the case of success. All the pointers pointing into skb header may change and must be reloaded after call to this function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÕh]”hŒ Parameters”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M2 hj Õubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` buffer to reallocate ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj1Õh]”hŒstruct sk_buff *skb”…”�”}”(hj3Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M/ hj+Õubj)�”}”(hhh]”jl)�”}”(hŒbuffer to reallocate”h]”hŒbuffer to reallocate”…”�”}”(hjJÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jFÕh´M/ hjGÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jFÕh´M/ hj(Õubjä)�”}”(hŒ.``int delta`` number of bytes to advance tail ”h]”(jê)�”}”(hŒ ``int delta``”h]”jð)�”}”(hjjÕh]”hŒ int delta”…”�”}”(hjlÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M0 hjdÕubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to advance tail”h]”hŒnumber of bytes to advance tail”…”�”}”(hjƒÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕh´M0 hj€Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕh´M0 hj(Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Õubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¥Õh]”hŒ Description”…”�”}”(hj§Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj£Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M2 hj ÕubjÒ)�”}”(hXµThe function makes a sense only on a fragmented :c:type:`sk_buff`, it expands header moving its tail forward and copying necessary data from fragmented part. :c:type:`sk_buff` MUST have reference count of 1. Returns ``NULL`` (and :c:type:`sk_buff` does not change) if pull failed or value of new tail of skb in the case of success. All the pointers pointing into skb header may change and must be reloaded after call to this function.”h]”(jl)�”}”(hŒ�The function makes a sense only on a fragmented :c:type:`sk_buff`, it expands header moving its tail forward and copying necessary data from fragmented part.”h]”(hŒ0The function makes a sense only on a fragmented ”…”�”}”(hj¿Õh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjÉÕh]”hŒsk_buff”…”�”}”(hjËÕh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÇÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M1 hj¿ÕubhŒ\, it expands header moving its tail forward and copying necessary data from fragmented part.”…”�”}”(hj¿Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæÕh´M1 hj»Õubjl)�”}”(hŒ1:c:type:`sk_buff` MUST have reference count of 1.”h]”(h)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj÷Õh]”hŒsk_buff”…”�”}”(hjùÕh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjõÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M5 hjñÕubhŒ MUST have reference count of 1.”…”�”}”(hjñÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖh´M5 hj»Õubjl)�”}”(hŒ{Returns ``NULL`` (and :c:type:`sk_buff` does not change) if pull failed or value of new tail of skb in the case of success.”h]”(hŒReturns ”…”�”}”(hjÖh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj'Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖubhŒ (and ”…”�”}”(hjÖh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hj;Öh]”hŒsk_buff”…”�”}”(hj=Öh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj9Öubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M7 hjÖubhŒT does not change) if pull failed or value of new tail of skb in the case of success.”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jXÖh´M7 hj»Õubjl)�”}”(hŒfAll the pointers pointing into skb header may change and must be reloaded after call to this function.”h]”hŒfAll the pointers pointing into skb header may change and must be reloaded after call to this function.”…”�”}”(hjcÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M: hj»Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jæÕh´M1 hj Õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_copy_bits (C function)”Œc.skb_copy_bits”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒLint skb_copy_bits (const struct sk_buff *skb, int offset, void *to, int len)”h]”j )�”}”(hŒKint skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj˜Öh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj”Öh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÈ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”Öh²hh³j¦Öh´MÈ ubj3)�”}”(hŒ skb_copy_bits”h]”j9)�”}”(hŒ skb_copy_bits”h]”hŒ skb_copy_bits”…”�”}”(hj¹Öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµÖubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj”Öh²hh³j¦Öh´MÈ ubj¡ )�”}”(hŒ:(const struct sk_buff *skb, int offset, void *to, int len)”h]”(j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÕÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑÖubj)�”}”(hjh]”hŒstruct”…”�”}”(hjðÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑÖubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j׌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j»ÖsbŒc.skb_copy_bits”†”asbuh1hhjÑÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑÖubj )�”}”(hj h]”hŒ*”…”�”}”(hj<×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÑÖubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjI×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÍÖubj§ )�”}”(hŒ int offset”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjb×h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj^×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^×ubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj~×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÍÖubj§ )�”}”(hŒvoid *to”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj—×h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“×ubj )�”}”(hj h]”hŒ*”…”�”}”(hj³×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“×ubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hjÀ×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÍÖubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÙ×h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÕ×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕ×ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjõ×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÍÖubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj”Öh²hh³j¦Öh´MÈ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�Öh²hh³j¦Öh´MÈ ubah}”(h]”j‹Öah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¦Öh´MÈ hj�Öh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#copy bits from skb to kernel buffer”h]”hŒ#copy bits from skb to kernel buffer”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÈ hjØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�Öh²hh³j¦Öh´MÈ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j7ØjŒj7Øj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX»**Parameters** ``const struct sk_buff *skb`` source skb ``int offset`` offset in source ``void *to`` destination buffer ``int len`` number of bytes to copy **Description** Copy the specified number of bytes from the source skb to the destination buffer. CAUTION ! : If its prototype is ever changed, check arch/{*}/net/{*}.S files, since it is called from BPF assembly code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjAØh]”hŒ Parameters”…”�”}”(hjCØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÌ hj;Øubjß)�”}”(hhh]”(jä)�”}”(hŒ)``const struct sk_buff *skb`` source skb ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj`Øh]”hŒconst struct sk_buff *skb”…”�”}”(hjbØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÉ hjZØubj)�”}”(hhh]”jl)�”}”(hŒ source skb”h]”hŒ source skb”…”�”}”(hjyØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³juØh´MÉ hjvØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³juØh´MÉ hjWØubjä)�”}”(hŒ ``int offset`` offset in source ”h]”(jê)�”}”(hŒ``int offset``”h]”jð)�”}”(hj™Øh]”hŒ int offset”…”�”}”(hj›Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÊ hj“Øubj)�”}”(hhh]”jl)�”}”(hŒoffset in source”h]”hŒoffset in source”…”�”}”(hj²Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j®Øh´MÊ hj¯Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j®Øh´MÊ hjWØubjä)�”}”(hŒ ``void *to`` destination buffer ”h]”(jê)�”}”(hŒ ``void *to``”h]”jð)�”}”(hjÒØh]”hŒvoid *to”…”�”}”(hjÔØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MË hjÌØubj)�”}”(hhh]”jl)�”}”(hŒdestination buffer”h]”hŒdestination buffer”…”�”}”(hjëØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçØh´MË hjèØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçØh´MË hjWØubjä)�”}”(hŒ$``int len`` number of bytes to copy ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hj Ùh]”hŒint len”…”�”}”(hj Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”•Lh´MÌ hjÙubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to copy”h]”hŒnumber of bytes to copy”…”�”}”(hj$Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Ùh´MÌ hj!Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Ùh´MÌ hjWØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj;Øubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjFÙh]”hŒ Description”…”�”}”(hjHÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÎ hj;ØubjÒ)�”}”(hŒãCopy the specified number of bytes from the source skb to the destination buffer. CAUTION ! : If its prototype is ever changed, check arch/{*}/net/{*}.S files, since it is called from BPF assembly code.”h]”(jl)�”}”(hŒQCopy the specified number of bytes from the source skb to the destination buffer.”h]”hŒQCopy the specified number of bytes from the source skb to the destination buffer.”…”�”}”(hj`Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÍ hj\Ùubjß)�”}”(hhh]”jä)�”}”(hŒxCAUTION ! : If its prototype is ever changed, check arch/{*}/net/{*}.S files, since it is called from BPF assembly code.”h]”(jê)�”}”(hŒ CAUTION ! :”h]”hŒ CAUTION ! :”…”�”}”(hjvÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÒ hjrÙubj)�”}”(hhh]”jl)�”}”(hŒlIf its prototype is ever changed, check arch/{*}/net/{*}.S files, since it is called from BPF assembly code.”h]”hŒlIf its prototype is ever changed, check arch/{*}/net/{*}.S files, since it is called from BPF assembly code.”…”�”}”(hjˆÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÑ hj…Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„Ùh´MÒ hjoÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj\Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jnÙh´MÍ hj;Øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_store_bits (C function)”Œc.skb_store_bits”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOint skb_store_bits (struct sk_buff *skb, int offset, const void *from, int len)”h]”j )�”}”(hŒNint skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÏÙh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjËÙh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mx ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞÙh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËÙh²hh³jÝÙh´Mx ubj3)�”}”(hŒskb_store_bits”h]”j9)�”}”(hŒskb_store_bits”h]”hŒskb_store_bits”…”�”}”(hjðÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìÙubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjËÙh²hh³jÝÙh´Mx ubj¡ )�”}”(hŒ<(struct sk_buff *skb, int offset, const void *from, int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj*Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j,ÚŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jòÙsbŒc.skb_store_bits”†”asbuh1hhjÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚubj )�”}”(hj h]”hŒ*”…”�”}”(hjXÚh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjeÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚubj§ )�”}”(hŒ int offset”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj~Úh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjzÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzÚubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjšÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚubj§ )�”}”(hŒconst void *from”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj³Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯Úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯ÚubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎÚh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯Úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯Úubj )�”}”(hj h]”hŒ*”…”�”}”(hjêÚh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¯Úubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hj÷Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj Ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Ûubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj,Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjËÙh²hh³jÝÙh´Mx ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÇÙh²hh³jÝÙh´Mx ubah}”(h]”jÂÙah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÝÙh´Mx hjÄÙh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$store bits from kernel buffer to skb”h]”hŒ$store bits from kernel buffer to skb”…”�”}”(hjVÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mx hjSÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÄÙh²hh³jÝÙh´Mx ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jnÛjŒjnÛj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXu**Parameters** ``struct sk_buff *skb`` destination buffer ``int offset`` offset in destination ``const void *from`` source buffer ``int len`` number of bytes to copy **Description** Copy the specified number of bytes from the source buffer to the destination skb. This function handles all the messy bits of traversing fragment lists and such.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjxÛh]”hŒ Parameters”…”�”}”(hjzÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjvÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M| hjrÛubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct sk_buff *skb`` destination buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj—Ûh]”hŒstruct sk_buff *skb”…”�”}”(hj™Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´My hj‘Ûubj)�”}”(hhh]”jl)�”}”(hŒdestination buffer”h]”hŒdestination buffer”…”�”}”(hj°Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬Ûh´My hj­Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬Ûh´My hjŽÛubjä)�”}”(hŒ%``int offset`` offset in destination ”h]”(jê)�”}”(hŒ``int offset``”h]”jð)�”}”(hjÐÛh]”hŒ int offset”…”�”}”(hjÒÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mz hjÊÛubj)�”}”(hhh]”jl)�”}”(hŒoffset in destination”h]”hŒoffset in destination”…”�”}”(hjéÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåÛh´Mz hjæÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåÛh´Mz hjŽÛubjä)�”}”(hŒ#``const void *from`` source buffer ”h]”(jê)�”}”(hŒ``const void *from``”h]”jð)�”}”(hj Üh]”hŒconst void *from”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M{ hjÜubj)�”}”(hhh]”jl)�”}”(hŒ source buffer”h]”hŒ source buffer”…”�”}”(hj"Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜh´M{ hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜh´M{ hjŽÛubjä)�”}”(hŒ$``int len`` number of bytes to copy ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hjBÜh]”hŒint len”…”�”}”(hjDÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M| hj<Üubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to copy”h]”hŒnumber of bytes to copy”…”�”}”(hj[Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jWÜh´M| hjXÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jWÜh´M| hjŽÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjrÛubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj}Üh]”hŒ Description”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M~ hjrÛubjÒ)�”}”(hŒ¢Copy the specified number of bytes from the source buffer to the destination skb. This function handles all the messy bits of traversing fragment lists and such.”h]”jl)�”}”(hŒ¢Copy the specified number of bytes from the source buffer to the destination skb. This function handles all the messy bits of traversing fragment lists and such.”h]”hŒ¢Copy the specified number of bytes from the source buffer to the destination skb. This function handles all the messy bits of traversing fragment lists and such.”…”�”}”(hj—Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M} hj“Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j¥Üh´M} hjrÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_zerocopy (C function)”Œc.skb_zerocopy”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint skb_zerocopy (struct sk_buff *to, struct sk_buff *from, int len, int hlen)”h]”j )�”}”(hŒMint skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÌÜh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÈÜh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈÜh²hh³jÚÜh´M-ubj3)�”}”(hŒ skb_zerocopy”h]”j9)�”}”(hŒ skb_zerocopy”h]”hŒ skb_zerocopy”…”�”}”(hjíÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéÜubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÈÜh²hh³jÚÜh´M-ubj¡ )�”}”(hŒ=(struct sk_buff *to, struct sk_buff *from, int len, int hlen)”h]”(j§ )�”}”(hŒstruct sk_buff *to”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj'Ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$Ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)ÝŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jïÜsbŒc.skb_zerocopy”†”asbuh1hhjÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝubj )�”}”(hj h]”hŒ*”…”�”}”(hjUÝh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hjbÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝubj§ )�”}”(hŒstruct sk_buff *from”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj{Ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwÝubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj™Ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–Ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›ÝŒmodname”NŒ classname”Njå jè )�”}”jë ]”jCÝŒc.skb_zerocopy”†”asbuh1hhjwÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwÝubj )�”}”(hj h]”hŒ*”…”�”}”(hjÅÝh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjwÝubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjÒÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjëÝh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjçÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçÝubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝubj§ )�”}”(hŒint hlen”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞubj9)�”}”(hŒhlen”h]”hŒhlen”…”�”}”(hj<Þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÈÜh²hh³jÚÜh´M-ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÄÜh²hh³jÚÜh´M-ubah}”(h]”j¿Üah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÚÜh´M-hjÁÜh²hubjg)�”}”(hhh]”jl)�”}”(hŒZero copy skb to skb”h]”hŒZero copy skb to skb”…”�”}”(hjfÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M-hjcÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÁÜh²hh³jÚÜh´M-ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j~ÞjŒj~Þj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÄ**Parameters** ``struct sk_buff *to`` destination buffer ``struct sk_buff *from`` source buffer ``int len`` number of bytes to copy from source buffer ``int hlen`` size of linear headroom in destination buffer **Description** Copies up to `len` bytes from `from` to `to` by creating references to the frags in the source buffer. The `hlen` as calculated by skb_zerocopy_headlen() specifies the headroom in the `to` buffer. Return value: 0: everything is OK -ENOMEM: couldn't orphan frags of **from** due to lack of memory -EFAULT: skb_copy_bits() found some problem with skb geometry, or readable head payload would be mixed with unreadable frags.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjˆÞh]”hŒ Parameters”…”�”}”(hjŠÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M1hj‚Þubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff *to`` destination buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *to``”h]”jð)�”}”(hj§Þh]”hŒstruct sk_buff *to”…”�”}”(hj©Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M.hj¡Þubj)�”}”(hhh]”jl)�”}”(hŒdestination buffer”h]”hŒdestination buffer”…”�”}”(hjÀÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼Þh´M.hj½Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼Þh´M.hjžÞubjä)�”}”(hŒ'``struct sk_buff *from`` source buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *from``”h]”jð)�”}”(hjàÞh]”hŒstruct sk_buff *from”…”�”}”(hjâÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M/hjÚÞubj)�”}”(hhh]”jl)�”}”(hŒ source buffer”h]”hŒ source buffer”…”�”}”(hjùÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõÞh´M/hjöÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõÞh´M/hjžÞubjä)�”}”(hŒ7``int len`` number of bytes to copy from source buffer ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hjßh]”hŒint len”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M0hjßubj)�”}”(hhh]”jl)�”}”(hŒ*number of bytes to copy from source buffer”h]”hŒ*number of bytes to copy from source buffer”…”�”}”(hj2ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.ßh´M0hj/ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.ßh´M0hjžÞubjä)�”}”(hŒ;``int hlen`` size of linear headroom in destination buffer ”h]”(jê)�”}”(hŒ ``int hlen``”h]”jð)�”}”(hjRßh]”hŒint hlen”…”�”}”(hjTßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjPßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M1hjLßubj)�”}”(hhh]”jl)�”}”(hŒ-size of linear headroom in destination buffer”h]”hŒ-size of linear headroom in destination buffer”…”�”}”(hjkßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jgßh´M1hjhßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgßh´M1hjžÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚Þubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�ßh]”hŒ Description”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M3hj‚ÞubjÒ)�”}”(hX§Copies up to `len` bytes from `from` to `to` by creating references to the frags in the source buffer. The `hlen` as calculated by skb_zerocopy_headlen() specifies the headroom in the `to` buffer. Return value: 0: everything is OK -ENOMEM: couldn't orphan frags of **from** due to lack of memory -EFAULT: skb_copy_bits() found some problem with skb geometry, or readable head payload would be mixed with unreadable frags.”h]”(jl)�”}”(hŒfCopies up to `len` bytes from `from` to `to` by creating references to the frags in the source buffer.”h]”(hŒ Copies up to ”…”�”}”(hj§ßh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`len`”h]”hŒlen”…”�”}”(hj±ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhj§ßubhŒ bytes from ”…”�”}”(hj§ßh²hh³Nh´Nubj°ß)�”}”(hŒ`from`”h]”hŒfrom”…”�”}”(hjÃßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhj§ßubhŒ to ”…”�”}”(hj§ßh²hh³Nh´Nubj°ß)�”}”(hŒ`to`”h]”hŒto”…”�”}”(hjÕßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhj§ßubhŒ: by creating references to the frags in the source buffer.”…”�”}”(hj§ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M2hj£ßubjl)�”}”(hŒ]The `hlen` as calculated by skb_zerocopy_headlen() specifies the headroom in the `to` buffer.”h]”(hŒThe ”…”�”}”(hjîßh²hh³Nh´Nubj°ß)�”}”(hŒ`hlen`”h]”hŒhlen”…”�”}”(hjößh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjîßubhŒG as calculated by skb_zerocopy_headlen() specifies the headroom in the ”…”�”}”(hjîßh²hh³Nh´Nubj°ß)�”}”(hŒ`to`”h]”hŒto”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjîßubhŒ buffer.”…”�”}”(hjîßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M5hj£ßubjl)�”}”(hŒàReturn value: 0: everything is OK -ENOMEM: couldn't orphan frags of **from** due to lack of memory -EFAULT: skb_copy_bits() found some problem with skb geometry, or readable head payload would be mixed with unreadable frags.”h]”(hŒFReturn value: 0: everything is OK -ENOMEM: couldn’t orphan frags of ”…”�”}”(hj!àh²hh³Nh´Nubj›)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hj)àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!àubhŒ” due to lack of memory -EFAULT: skb_copy_bits() found some problem with skb geometry, or readable head payload would be mixed with unreadable frags.”…”�”}”(hj!àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M8hj£ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jíßh´M2hj‚Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_dequeue (C function)”Œ c.skb_dequeue”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8struct sk_buff * skb_dequeue (struct sk_buff_head *list)”h]”j )�”}”(hŒ6struct sk_buff *skb_dequeue(struct sk_buff_head *list)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjhàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdàh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdàh²hh³juàh´M±ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj‡àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰àŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ skb_dequeue”sbŒ c.skb_dequeue”†”asbuh1hhjdàh²hh³juàh´M±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdàh²hh³juàh´M±ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjdàh²hh³juàh´M±ubj3)�”}”(hŒ skb_dequeue”h]”j9)�”}”(hj¥àh]”hŒ skb_dequeue”…”�”}”(hjÇàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃàubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjdàh²hh³juàh´M±ubj¡ )�”}”(hŒ(struct sk_buff_head *list)”h]”j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞàubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jáŒmodname”NŒ classname”Njå jè )�”}”jë ]”j£àŒ c.skb_dequeue”†”asbuh1hhjÞàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞàubj )�”}”(hj h]”hŒ*”…”�”}”(hj,áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÞàubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj9áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚàubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjdàh²hh³juàh´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj`àh²hh³juàh´M±ubah}”(h]”j[àah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³juàh´M±hj]àh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!remove from the head of the queue”h]”hŒ!remove from the head of the queue”…”�”}”(hjcáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M±hj`áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj]àh²hh³juàh´M±ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j{ájŒj{áj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff_head *list`` list to dequeue from **Description** Remove the head of the list. The list lock is taken so the function may be used safely with other locking list functions. The head item is returned or ``NULL`` if the list is empty.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj…áh]”hŒ Parameters”…”�”}”(hj‡áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mµhjáubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct sk_buff_head *list`` list to dequeue from ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj¤áh]”hŒstruct sk_buff_head *list”…”�”}”(hj¦áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢áubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M²hjžáubj)�”}”(hhh]”jl)�”}”(hŒlist to dequeue from”h]”hŒlist to dequeue from”…”�”}”(hj½áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹áh´M²hjºáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹áh´M²hj›áubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjáubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjßáh]”hŒ Description”…”�”}”(hjááh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÝáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M´hjáubjÒ)�”}”(hŒµRemove the head of the list. The list lock is taken so the function may be used safely with other locking list functions. The head item is returned or ``NULL`` if the list is empty.”h]”jl)�”}”(hŒµRemove the head of the list. The list lock is taken so the function may be used safely with other locking list functions. The head item is returned or ``NULL`` if the list is empty.”h]”(hŒ—Remove the head of the list. The list lock is taken so the function may be used safely with other locking list functions. The head item is returned or ”…”�”}”(hjùáh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùáubhŒ if the list is empty.”…”�”}”(hjùáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M³hjõáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jâh´M³hjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_dequeue_tail (C function)”Œc.skb_dequeue_tail”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=struct sk_buff * skb_dequeue_tail (struct sk_buff_head *list)”h]”j )�”}”(hŒ;struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj@âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<âh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<âh²hh³jMâh´MÆubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj_âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jaâŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_dequeue_tail”sbŒc.skb_dequeue_tail”†”asbuh1hhj<âh²hh³jMâh´MÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<âh²hh³jMâh´MÆubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj<âh²hh³jMâh´MÆubj3)�”}”(hŒskb_dequeue_tail”h]”j9)�”}”(hj}âh]”hŒskb_dequeue_tail”…”�”}”(hjŸâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›âubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj<âh²hh³jMâh´MÆubj¡ )�”}”(hŒ(struct sk_buff_head *list)”h]”j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjºâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶âubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjØâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÚâŒmodname”NŒ classname”Njå jè )�”}”jë ]”j{âŒc.skb_dequeue_tail”†”asbuh1hhj¶âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶âubj )�”}”(hj h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶âubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²âubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj<âh²hh³jMâh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj8âh²hh³jMâh´MÆubah}”(h]”j3âah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jMâh´MÆhj5âh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!remove from the tail of the queue”h]”hŒ!remove from the tail of the queue”…”�”}”(hj;ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÆhj8ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj5âh²hh³jMâh´MÆubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jSãjŒjSãj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff_head *list`` list to dequeue from **Description** Remove the tail of the list. The list lock is taken so the function may be used safely with other locking list functions. The tail item is returned or ``NULL`` if the list is empty.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj]ãh]”hŒ Parameters”…”�”}”(hj_ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÊhjWãubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct sk_buff_head *list`` list to dequeue from ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj|ãh]”hŒstruct sk_buff_head *list”…”�”}”(hj~ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjzãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÇhjvãubj)�”}”(hhh]”jl)�”}”(hŒlist to dequeue from”h]”hŒlist to dequeue from”…”�”}”(hj•ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘ãh´MÇhj’ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘ãh´MÇhjsãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjWãubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj·ãh]”hŒ Description”…”�”}”(hj¹ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÉhjWãubjÒ)�”}”(hŒµRemove the tail of the list. The list lock is taken so the function may be used safely with other locking list functions. The tail item is returned or ``NULL`` if the list is empty.”h]”jl)�”}”(hŒµRemove the tail of the list. The list lock is taken so the function may be used safely with other locking list functions. The tail item is returned or ``NULL`` if the list is empty.”h]”(hŒ—Remove the tail of the list. The list lock is taken so the function may be used safely with other locking list functions. The tail item is returned or ”…”�”}”(hjÑãh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÙãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑãubhŒ if the list is empty.”…”�”}”(hjÑãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÈhjÍãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jñãh´MÈhjWãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#skb_queue_purge_reason (C function)”Œc.skb_queue_purge_reason”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒTvoid skb_queue_purge_reason (struct sk_buff_head *list, enum skb_drop_reason reason)”h]”j )�”}”(hŒSvoid skb_queue_purge_reason(struct sk_buff_head *list, enum skb_drop_reason reason)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjäh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäh²hh³j&äh´MÚubj3)�”}”(hŒskb_queue_purge_reason”h]”j9)�”}”(hŒskb_queue_purge_reason”h]”hŒskb_queue_purge_reason”…”�”}”(hj9äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5äubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjäh²hh³j&äh´MÚubj¡ )�”}”(hŒ8(struct sk_buff_head *list, enum skb_drop_reason reason)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjUäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQäubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjsäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”juäŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j;äsbŒc.skb_queue_purge_reason”†”asbuh1hhjQäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQäubj )�”}”(hj h]”hŒ*”…”�”}”(hj¡äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjQäubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj®äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjMäubj§ )�”}”(hŒenum skb_drop_reason reason”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjÇäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃäubh)�”}”(hhh]”j9)�”}”(hŒskb_drop_reason”h]”hŒskb_drop_reason”…”�”}”(hjåäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jçäŒmodname”NŒ classname”Njå jè )�”}”jë ]”j�äŒc.skb_queue_purge_reason”†”asbuh1hhjÃäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃäubj9)�”}”(hŒreason”h]”hŒreason”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjMäubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjäh²hh³j&äh´MÚubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjäh²hh³j&äh´MÚubah}”(h]”j äah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j&äh´MÚhj äh²hubjg)�”}”(hhh]”jl)�”}”(hŒ empty a list”h]”hŒ empty a list”…”�”}”(hj;åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÚhj8åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj äh²hh³j&äh´MÚubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jSåjŒjSåj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX\**Parameters** ``struct sk_buff_head *list`` list to empty ``enum skb_drop_reason reason`` drop reason **Description** Delete all buffers on an :c:type:`sk_buff` list. Each buffer is removed from the list and one reference dropped. This function takes the list lock and is atomic with respect to other list locking functions.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj]åh]”hŒ Parameters”…”�”}”(hj_åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[åubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÞhjWåubjß)�”}”(hhh]”(jä)�”}”(hŒ,``struct sk_buff_head *list`` list to empty ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj|åh]”hŒstruct sk_buff_head *list”…”�”}”(hj~åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjzåubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÛhjvåubj)�”}”(hhh]”jl)�”}”(hŒ list to empty”h]”hŒ list to empty”…”�”}”(hj•åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘åh´MÛhj’åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘åh´MÛhjsåubjä)�”}”(hŒ,``enum skb_drop_reason reason`` drop reason ”h]”(jê)�”}”(hŒ``enum skb_drop_reason reason``”h]”jð)�”}”(hjµåh]”hŒenum skb_drop_reason reason”…”�”}”(hj·åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj³åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÜhj¯åubj)�”}”(hhh]”jl)�”}”(hŒ drop reason”h]”hŒ drop reason”…”�”}”(hjÎåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÊåh´MÜhjËåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÊåh´MÜhjsåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjWåubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjðåh]”hŒ Description”…”�”}”(hjòåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjîåubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÞhjWåubjÒ)�”}”(hŒÎDelete all buffers on an :c:type:`sk_buff` list. Each buffer is removed from the list and one reference dropped. This function takes the list lock and is atomic with respect to other list locking functions.”h]”jl)�”}”(hŒÎDelete all buffers on an :c:type:`sk_buff` list. Each buffer is removed from the list and one reference dropped. This function takes the list lock and is atomic with respect to other list locking functions.”h]”(hŒDelete all buffers on an ”…”�”}”(hj æh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjæh]”hŒsk_buff”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjæubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÝhj æubhŒ¤ list. Each buffer is removed from the list and one reference dropped. This function takes the list lock and is atomic with respect to other list locking functions.”…”�”}”(hj æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1æh´MÝhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j1æh´MÝhjWåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_queue_head (C function)”Œc.skb_queue_head”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFvoid skb_queue_head (struct sk_buff_head *list, struct sk_buff *newsk)”h]”j )�”}”(hŒEvoid skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjbæh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj^æh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^æh²hh³jpæh´M%ubj3)�”}”(hŒskb_queue_head”h]”j9)�”}”(hŒskb_queue_head”h]”hŒskb_queue_head”…”�”}”(hjƒæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj^æh²hh³jpæh´M%ubj¡ )�”}”(hŒ2(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŸæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›æubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj½æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¿æŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j…æsbŒc.skb_queue_head”†”asbuh1hhj›æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›æubj )�”}”(hj h]”hŒ*”…”�”}”(hjëæh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj›æubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjøæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj—æubj§ )�”}”(hŒstruct sk_buff *newsk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj çubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj/çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1çŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÙæŒc.skb_queue_head”†”asbuh1hhj çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj çubj )�”}”(hj h]”hŒ*”…”�”}”(hj[çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj çubj9)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hjhçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj—æubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj^æh²hh³jpæh´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjZæh²hh³jpæh´M%ubah}”(h]”jUæah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jpæh´M%hjWæh²hubjg)�”}”(hhh]”jl)�”}”(hŒqueue a buffer at the list head”h]”hŒqueue a buffer at the list head”…”�”}”(hj’çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M%hj�çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjWæh²hh³jpæh´M%ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jªçjŒjªçj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXa**Parameters** ``struct sk_buff_head *list`` list to use ``struct sk_buff *newsk`` buffer to queue **Description** Queue a buffer at the start of the list. This function takes the list lock and can be used safely with other locking :c:type:`sk_buff` functions safely. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj´çh]”hŒ Parameters”…”�”}”(hj¶çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²çubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M)hj®çubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff_head *list`` list to use ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hjÓçh]”hŒstruct sk_buff_head *list”…”�”}”(hjÕçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑçubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M&hjÍçubj)�”}”(hhh]”jl)�”}”(hŒ list to use”h]”hŒ list to use”…”�”}”(hjìçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèçh´M&hjéçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèçh´M&hjÊçubjä)�”}”(hŒ*``struct sk_buff *newsk`` buffer to queue ”h]”(jê)�”}”(hŒ``struct sk_buff *newsk``”h]”jð)�”}”(hj èh]”hŒstruct sk_buff *newsk”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M'hjèubj)�”}”(hhh]”jl)�”}”(hŒbuffer to queue”h]”hŒbuffer to queue”…”�”}”(hj%èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!èh´M'hj"èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!èh´M'hjÊçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj®çubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjGèh]”hŒ Description”…”�”}”(hjIèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjEèubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M)hj®çubjÒ)�”}”(hŒÒQueue a buffer at the start of the list. This function takes the list lock and can be used safely with other locking :c:type:`sk_buff` functions safely. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ˜Queue a buffer at the start of the list. This function takes the list lock and can be used safely with other locking :c:type:`sk_buff` functions safely.”h]”(hŒuQueue a buffer at the start of the list. This function takes the list lock and can be used safely with other locking ”…”�”}”(hjaèh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjkèh]”hŒsk_buff”…”�”}”(hjmèh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjièubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M(hjaèubhŒ functions safely.”…”�”}”(hjaèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆèh´M(hj]èubjl)�”}”(hŒ8A buffer cannot be placed on two lists at the same time.”h]”hŒ8A buffer cannot be placed on two lists at the same time.”…”�”}”(hj“èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M,hj]èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jˆèh´M(hj®çubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_queue_tail (C function)”Œc.skb_queue_tail”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFvoid skb_queue_tail (struct sk_buff_head *list, struct sk_buff *newsk)”h]”j )�”}”(hŒEvoid skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÈèh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÄèh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄèh²hh³jÖèh´M:ubj3)�”}”(hŒskb_queue_tail”h]”j9)�”}”(hŒskb_queue_tail”h]”hŒskb_queue_tail”…”�”}”(hjéèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåèubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÄèh²hh³jÖèh´M:ubj¡ )�”}”(hŒ2(struct sk_buff_head *list, struct sk_buff *newsk)”h]”(j§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj#éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j%éŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jëèsbŒc.skb_queue_tail”†”asbuh1hhjéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéubj )�”}”(hj h]”hŒ*”…”�”}”(hjQéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjéubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj^éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýèubj§ )�”}”(hŒstruct sk_buff *newsk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjwéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjséubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjséubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj•éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j—éŒmodname”NŒ classname”Njå jè )�”}”jë ]”j?éŒc.skb_queue_tail”†”asbuh1hhjséubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjséubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjséubj9)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hjÎéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjséubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýèubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÄèh²hh³jÖèh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÀèh²hh³jÖèh´M:ubah}”(h]”j»èah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÖèh´M:hj½èh²hubjg)�”}”(hhh]”jl)�”}”(hŒqueue a buffer at the list tail”h]”hŒqueue a buffer at the list tail”…”�”}”(hjøéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M:hjõéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½èh²hh³jÖèh´M:ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jêjŒjêj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX`**Parameters** ``struct sk_buff_head *list`` list to use ``struct sk_buff *newsk`` buffer to queue **Description** Queue a buffer at the tail of the list. This function takes the list lock and can be used safely with other locking :c:type:`sk_buff` functions safely. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjêh]”hŒ Parameters”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M>hjêubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff_head *list`` list to use ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hj9êh]”hŒstruct sk_buff_head *list”…”�”}”(hj;êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M;hj3êubj)�”}”(hhh]”jl)�”}”(hŒ list to use”h]”hŒ list to use”…”�”}”(hjRêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNêh´M;hjOêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNêh´M;hj0êubjä)�”}”(hŒ*``struct sk_buff *newsk`` buffer to queue ”h]”(jê)�”}”(hŒ``struct sk_buff *newsk``”h]”jð)�”}”(hjrêh]”hŒstruct sk_buff *newsk”…”�”}”(hjtêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjpêubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M<hjlêubj)�”}”(hhh]”jl)�”}”(hŒbuffer to queue”h]”hŒbuffer to queue”…”�”}”(hj‹êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡êh´M<hjˆêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡êh´M<hj0êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjêubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj­êh]”hŒ Description”…”�”}”(hj¯êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj«êubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M>hjêubjÒ)�”}”(hŒÑQueue a buffer at the tail of the list. This function takes the list lock and can be used safely with other locking :c:type:`sk_buff` functions safely. A buffer cannot be placed on two lists at the same time.”h]”(jl)�”}”(hŒ—Queue a buffer at the tail of the list. This function takes the list lock and can be used safely with other locking :c:type:`sk_buff` functions safely.”h]”(hŒtQueue a buffer at the tail of the list. This function takes the list lock and can be used safely with other locking ”…”�”}”(hjÇêh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjÑêh]”hŒsk_buff”…”�”}”(hjÓêh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÏêubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M=hjÇêubhŒ functions safely.”…”�”}”(hjÇêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîêh´M=hjÃêubjl)�”}”(hŒ8A buffer cannot be placed on two lists at the same time.”h]”hŒ8A buffer cannot be placed on two lists at the same time.”…”�”}”(hjùêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MAhjÃêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jîêh´M=hjêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_unlink (C function)”Œ c.skb_unlink”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@void skb_unlink (struct sk_buff *skb, struct sk_buff_head *list)”h]”j )�”}”(hŒ?void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.ëh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj*ëh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*ëh²hh³j<ëh´MOubj3)�”}”(hŒ skb_unlink”h]”j9)�”}”(hŒ skb_unlink”h]”hŒ skb_unlink”…”�”}”(hjOëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKëubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj*ëh²hh³j<ëh´MOubj¡ )�”}”(hŒ0(struct sk_buff *skb, struct sk_buff_head *list)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjkëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgëubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj‰ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹ëŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jQësbŒ c.skb_unlink”†”asbuh1hhjgëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgëubj )�”}”(hj h]”hŒ*”…”�”}”(hj·ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgëubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÄëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcëubj§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÝëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙëubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hjûëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jýëŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¥ëŒ c.skb_unlink”†”asbuh1hhjÙëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙëubj )�”}”(hj h]”hŒ*”…”�”}”(hj'ìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÙëubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj4ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcëubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj*ëh²hh³j<ëh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj&ëh²hh³j<ëh´MOubah}”(h]”j!ëah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j<ëh´MOhj#ëh²hubjg)�”}”(hhh]”jl)�”}”(hŒremove a buffer from a list”h]”hŒremove a buffer from a list”…”�”}”(hj^ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MOhj[ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj#ëh²hh³j<ëh´MOubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jvìjŒjvìj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX***Parameters** ``struct sk_buff *skb`` buffer to remove ``struct sk_buff_head *list`` list to use **Description** Remove a packet from a list. The list locks are taken and this function is atomic with respect to other list locked calls You must know what list the SKB is on.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj€ìh]”hŒ Parameters”…”�”}”(hj‚ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MShjzìubjß)�”}”(hhh]”(jä)�”}”(hŒ)``struct sk_buff *skb`` buffer to remove ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjŸìh]”hŒstruct sk_buff *skb”…”�”}”(hj¡ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MPhj™ìubj)�”}”(hhh]”jl)�”}”(hŒbuffer to remove”h]”hŒbuffer to remove”…”�”}”(hj¸ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´ìh´MPhjµìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´ìh´MPhj–ìubjä)�”}”(hŒ*``struct sk_buff_head *list`` list to use ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hjØìh]”hŒstruct sk_buff_head *list”…”�”}”(hjÚìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MQhjÒìubj)�”}”(hhh]”jl)�”}”(hŒ list to use”h]”hŒ list to use”…”�”}”(hjñìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jíìh´MQhjîìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jíìh´MQhj–ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjzìubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjíh]”hŒ Description”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MShjzìubjÒ)�”}”(hŒ¡Remove a packet from a list. The list locks are taken and this function is atomic with respect to other list locked calls You must know what list the SKB is on.”h]”(jl)�”}”(hŒyRemove a packet from a list. The list locks are taken and this function is atomic with respect to other list locked calls”h]”hŒyRemove a packet from a list. The list locks are taken and this function is atomic with respect to other list locked calls”…”�”}”(hj-íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MRhj)íubjl)�”}”(hŒ&You must know what list the SKB is on.”h]”hŒ&You must know what list the SKB is on.”…”�”}”(hj<íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MUhj)íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j;íh´MRhjzìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_append (C function)”Œ c.skb_append”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWvoid skb_append (struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list)”h]”j )�”}”(hŒVvoid skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqíh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjmíh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmíh²hh³jíh´Mcubj3)�”}”(hŒ skb_append”h]”j9)�”}”(hŒ skb_append”h]”hŒ skb_append”…”�”}”(hj’íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽíubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjmíh²hh³jíh´Mcubj¡ )�”}”(hŒG(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list)”h]”(j§ )�”}”(hŒstruct sk_buff *old”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj®íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªíubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÌíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÎíŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j”ísbŒ c.skb_append”†”asbuh1hhjªíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªíubj )�”}”(hj h]”hŒ*”…”�”}”(hjúíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjªíubj9)�”}”(hŒold”h]”hŒold”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦íubj§ )�”}”(hŒstruct sk_buff *newsk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj>îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@îŒmodname”NŒ classname”Njå jè )�”}”jë ]”jèíŒ c.skb_append”†”asbuh1hhjîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîubj )�”}”(hj h]”hŒ*”…”�”}”(hjjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjîubj9)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hjwîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦íubj§ )�”}”(hŒstruct sk_buff_head *list”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒîubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj®îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°îŒmodname”NŒ classname”Njå jè )�”}”jë ]”jèíŒ c.skb_append”†”asbuh1hhjŒîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒîubj )�”}”(hj h]”hŒ*”…”�”}”(hjÚîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒîubj9)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjçîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦íubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjmíh²hh³jíh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjiíh²hh³jíh´Mcubah}”(h]”jdíah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jíh´Mchjfíh²hubjg)�”}”(hhh]”jl)�”}”(hŒappend a buffer”h]”hŒappend a buffer”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mchjïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjfíh²hh³jíh´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j)ïjŒj)ïj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX‚**Parameters** ``struct sk_buff *old`` buffer to insert after ``struct sk_buff *newsk`` buffer to insert ``struct sk_buff_head *list`` list to use **Description** Place a packet after a given packet in a list. The list locks are taken and this function is atomic with respect to other list locked calls. A buffer cannot be placed on two lists at the same time.”•h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj3ïh]”hŒ Parameters”…”�”}”(hj5ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mghj-ïubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct sk_buff *old`` buffer to insert after ”h]”(jê)�”}”(hŒ``struct sk_buff *old``”h]”jð)�”}”(hjRïh]”hŒstruct sk_buff *old”…”�”}”(hjTïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjPïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MdhjLïubj)�”}”(hhh]”jl)�”}”(hŒbuffer to insert after”h]”hŒbuffer to insert after”…”�”}”(hjkïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jgïh´Mdhjhïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgïh´MdhjIïubjä)�”}”(hŒ+``struct sk_buff *newsk`` buffer to insert ”h]”(jê)�”}”(hŒ``struct sk_buff *newsk``”h]”jð)�”}”(hj‹ïh]”hŒstruct sk_buff *newsk”…”�”}”(hj�ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mehj…ïubj)�”}”(hhh]”jl)�”}”(hŒbuffer to insert”h]”hŒbuffer to insert”…”�”}”(hj¤ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ïh´Mehj¡ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ïh´MehjIïubjä)�”}”(hŒ*``struct sk_buff_head *list`` list to use ”h]”(jê)�”}”(hŒ``struct sk_buff_head *list``”h]”jð)�”}”(hjÄïh]”hŒstruct sk_buff_head *list”…”�”}”(hjÆïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÂïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mfhj¾ïubj)�”}”(hhh]”jl)�”}”(hŒ list to use”h]”hŒ list to use”…”�”}”(hjÝïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÙïh´MfhjÚïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙïh´MfhjIïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj-ïubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÿïh]”hŒ Description”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjýïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhhj-ïubjÒ)�”}”(hŒÅPlace a packet after a given packet in a list. The list locks are taken and this function is atomic with respect to other list locked calls. A buffer cannot be placed on two lists at the same time.”h]”jl)�”}”(hŒÅPlace a packet after a given packet in a list. The list locks are taken and this function is atomic with respect to other list locked calls. A buffer cannot be placed on two lists at the same time.”h]”hŒÅPlace a packet after a given packet in a list. The list locks are taken and this function is atomic with respect to other list locked calls. A buffer cannot be placed on two lists at the same time.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mghjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j'ðh´Mghj-ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_split (C function)”Œ c.skb_split”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒIvoid skb_split (struct sk_buff *skb, struct sk_buff *skb1, const u32 len)”h]”j )�”}”(hŒHvoid skb_split(struct sk_buff *skb, struct sk_buff *skb1, const u32 len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjNðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjJðh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJðh²hh³j\ðh´M¸ubj3)�”}”(hŒ skb_split”h]”j9)�”}”(hŒ skb_split”h]”hŒ skb_split”…”�”}”(hjoðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjJðh²hh³j\ðh´M¸ubj¡ )�”}”(hŒ:(struct sk_buff *skb, struct sk_buff *skb1, const u32 len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‹ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡ðubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj©ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«ðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jqðsbŒ c.skb_split”†”asbuh1hhj‡ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡ðubj )�”}”(hj h]”hŒ*”…”�”}”(hj×ðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‡ðubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjäðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒðubj§ )�”}”(hŒstruct sk_buff *skb1”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjýðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùðubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÅðŒ c.skb_split”†”asbuh1hhjùðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùðubj )�”}”(hj h]”hŒ*”…”�”}”(hjGñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjùðubj9)�”}”(hŒskb1”h]”hŒskb1”…”�”}”(hjTñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒðubj§ )�”}”(hŒ const u32 len”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjmñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjiñubh)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‹ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�ñŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÅðŒ c.skb_split”†”asbuh1hhjiñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjiñubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj·ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjJðh²hh³j\ðh´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjFðh²hh³j\ðh´M¸ubah}”(h]”jAðah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j\ðh´M¸hjCðh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Split fragmented skb to two parts at length len.”h]”hŒ0Split fragmented skb to two parts at length len.”…”�”}”(hjáñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¸hjÞñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjCðh²hh³j\ðh´M¸ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jùñjŒjùñj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ§**Parameters** ``struct sk_buff *skb`` the buffer to split ``struct sk_buff *skb1`` the buffer to receive the second part ``const u32 len`` new length for skb”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjòh]”hŒ Parameters”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¼hjýñubjß)�”}”(hhh]”(jä)�”}”(hŒ,``struct sk_buff *skb`` the buffer to split ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj"òh]”hŒstruct sk_buff *skb”…”�”}”(hj$òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj òubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¹hjòubj)�”}”(hhh]”jl)�”}”(hŒthe buffer to split”h]”hŒthe buffer to split”…”�”}”(hj;òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7òh´M¹hj8òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7òh´M¹hjòubjä)�”}”(hŒ?``struct sk_buff *skb1`` the buffer to receive the second part ”h]”(jê)�”}”(hŒ``struct sk_buff *skb1``”h]”jð)�”}”(hj[òh]”hŒstruct sk_buff *skb1”…”�”}”(hj]òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MºhjUòubj)�”}”(hhh]”jl)�”}”(hŒ%the buffer to receive the second part”h]”hŒ%the buffer to receive the second part”…”�”}”(hjtòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jpòh´Mºhjqòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpòh´Mºhjòubjä)�”}”(hŒ$``const u32 len`` new length for skb”h]”(jê)�”}”(hŒ``const u32 len``”h]”jð)�”}”(hj”òh]”hŒ const u32 len”…”�”}”(hj–òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’òubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¼hjŽòubj)�”}”(hhh]”jl)�”}”(hŒnew length for skb”h]”hŒnew length for skb”…”�”}”(hj­òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M»hjªòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©òh´M¼hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjýñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!skb_prepare_seq_read (C function)”Œc.skb_prepare_seq_read”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmvoid skb_prepare_seq_read (struct sk_buff *skb, unsigned int from, unsigned int to, struct skb_seq_state *st)”h]”j )�”}”(hŒlvoid skb_prepare_seq_read(struct sk_buff *skb, unsigned int from, unsigned int to, struct skb_seq_state *st)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîòh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêòh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêòh²hh³jüòh´Mkubj3)�”}”(hŒskb_prepare_seq_read”h]”j9)�”}”(hŒskb_prepare_seq_read”h]”hŒskb_prepare_seq_read”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj óubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjêòh²hh³jüòh´Mkubj¡ )�”}”(hŒS(struct sk_buff *skb, unsigned int from, unsigned int to, struct skb_seq_state *st)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj+óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'óubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjIóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKóŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jósbŒc.skb_prepare_seq_read”†”asbuh1hhj'óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjióh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'óubj )�”}”(hj h]”hŒ*”…”�”}”(hjwóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj'óubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj„óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#óubj§ )�”}”(hŒunsigned int from”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�óh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj™óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™óubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¹óh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj™óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™óubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjÕóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#óubj§ )�”}”(hŒunsigned int to”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjîóh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêóubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêóubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hj&ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#óubj§ )�”}”(hŒstruct skb_seq_state *st”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj?ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;ôubh)�”}”(hhh]”j9)�”}”(hŒ skb_seq_state”h]”hŒ skb_seq_state”…”�”}”(hj]ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j_ôŒmodname”NŒ classname”Njå jè )�”}”jë ]”jeóŒc.skb_prepare_seq_read”†”asbuh1hhj;ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;ôubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰ôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj;ôubj9)�”}”(hŒst”h]”hŒst”…”�”}”(hj–ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#óubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjêòh²hh³jüòh´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæòh²hh³jüòh´Mkubah}”(h]”jáòah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüòh´Mkhjãòh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%Prepare a sequential read of skb data”h]”hŒ%Prepare a sequential read of skb data”…”�”}”(hjÀôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mkhj½ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjãòh²hh³jüòh´Mkubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jØôjŒjØôj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXY**Parameters** ``struct sk_buff *skb`` the buffer to read ``unsigned int from`` lower offset of data to be read ``unsigned int to`` upper offset of data to be read ``struct skb_seq_state *st`` state variable **Description** Initializes the specified state variable. Must be called before invoking skb_seq_read() for the first time.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjâôh]”hŒ Parameters”…”�”}”(hjäôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MohjÜôubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct sk_buff *skb`` the buffer to read ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjõh]”hŒstruct sk_buff *skb”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mlhjûôubj)�”}”(hhh]”jl)�”}”(hŒthe buffer to read”h]”hŒthe buffer to read”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõh´Mlhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõh´Mlhjøôubjä)�”}”(hŒ6``unsigned int from`` lower offset of data to be read ”h]”(jê)�”}”(hŒ``unsigned int from``”h]”jð)�”}”(hj:õh]”hŒunsigned int from”…”�”}”(hj<õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mmhj4õubj)�”}”(hhh]”jl)�”}”(hŒlower offset of data to be read”h]”hŒlower offset of data to be read”…”�”}”(hjSõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jOõh´MmhjPõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOõh´Mmhjøôubjä)�”}”(hŒ4``unsigned int to`` upper offset of data to be read ”h]”(jê)�”}”(hŒ``unsigned int to``”h]”jð)�”}”(hjsõh]”hŒunsigned int to”…”�”}”(hjuõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjqõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mnhjmõubj)�”}”(hhh]”jl)�”}”(hŒupper offset of data to be read”h]”hŒupper offset of data to be read”…”�”}”(hjŒõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆõh´Mnhj‰õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆõh´Mnhjøôubjä)�”}”(hŒ,``struct skb_seq_state *st`` state variable ”h]”(jê)�”}”(hŒ``struct skb_seq_state *st``”h]”jð)�”}”(hj¬õh]”hŒstruct skb_seq_state *st”…”�”}”(hj®õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjªõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mohj¦õubj)�”}”(hhh]”jl)�”}”(hŒstate variable”h]”hŒstate variable”…”�”}”(hjÅõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁõh´MohjÂõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁõh´Mohjøôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÜôubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjçõh]”hŒ Description”…”�”}”(hjéõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjåõubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MqhjÜôubjl)�”}”(hŒkInitializes the specified state variable. Must be called before invoking skb_seq_read() for the first time.”h]”hŒkInitializes the specified state variable. Must be called before invoking skb_seq_read() for the first time.”…”�”}”(hjýõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MphjÜôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_seq_read (C function)”Œc.skb_seq_read”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\unsigned int skb_seq_read (unsigned int consumed, const u8 **data, struct skb_seq_state *st)”h]”j )�”}”(hŒ[unsigned int skb_seq_read(unsigned int consumed, const u8 **data, struct skb_seq_state *st)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj,öh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(öh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(öh²hh³j:öh´M�ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjIöh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(öh²hh³j:öh´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(öh²hh³j:öh´M�ubj3)�”}”(hŒ skb_seq_read”h]”j9)�”}”(hŒ skb_seq_read”h]”hŒ skb_seq_read”…”�”}”(hjiöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeöubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj(öh²hh³j:öh´M�ubj¡ )�”}”(hŒB(unsigned int consumed, const u8 **data, struct skb_seq_state *st)”h]”(j§ )�”}”(hŒunsigned int consumed”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj…öh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�öubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¡öh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�öubj9)�”}”(hŒconsumed”h]”hŒconsumed”…”�”}”(hj½öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj}öubj§ )�”}”(hŒconst u8 **data”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÖöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒöubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjôöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jööŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jkösbŒc.skb_seq_read”†”asbuh1hhjÒöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒöubj )�”}”(hj h]”hŒ*”…”�”}”(hj"÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÒöubj )�”}”(hj h]”hŒ*”…”�”}”(hj/÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÒöubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj<÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj}öubj§ )�”}”(hŒstruct skb_seq_state *st”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjU÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ÷ubh)�”}”(hhh]”j9)�”}”(hŒ skb_seq_state”h]”hŒ skb_seq_state”…”�”}”(hjs÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ju÷Œmodname”NŒ classname”Njå jè )�”}”jë ]”j÷Œc.skb_seq_read”†”asbuh1hhjQ÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ÷ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸ÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjQ÷ubj9)�”}”(hŒst”h]”hŒst”…”�”}”(hj¬÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj}öubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj(öh²hh³j:öh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj$öh²hh³j:öh´M�ubah}”(h]”jöah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j:öh´M�hj!öh²hubjg)�”}”(hhh]”jl)�”}”(hŒSequentially read skb data”h]”hŒSequentially read skb data”…”�”}”(hjÖ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M�hjÓ÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj!öh²hh³j:öh´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jî÷jŒjî÷j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``unsigned int consumed`` number of bytes consumed by the caller so far ``const u8 **data`` destination pointer for data to be returned ``struct skb_seq_state *st`` state variable **Description** Reads a block of skb data at **consumed** relative to the lower offset specified to skb_prepare_seq_read(). Assigns the head of the data block to **data** and returns the length of the block or 0 if the end of the skb data or the upper offset has been reached. The caller is not required to consume all of the data returned, i.e. **consumed** is typically set to the number of bytes already consumed and the next call to skb_seq_read() will return the remaining part of the block. Note 1: The size of each block of data returned can be arbitrary, this limitation is the cost for zerocopy sequential reads of potentially non linear data. Note 2: Fragment lists within fragments are not implemented at the moment, state->root_skb could be replaced with a stack for this purpose.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjø÷h]”hŒ Parameters”…”�”}”(hjú÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjö÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M…hjò÷ubjß)�”}”(hhh]”(jä)�”}”(hŒH``unsigned int consumed`` number of bytes consumed by the caller so far ”h]”(jê)�”}”(hŒ``unsigned int consumed``”h]”jð)�”}”(hjøh]”hŒunsigned int consumed”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚hjøubj)�”}”(hhh]”jl)�”}”(hŒ-number of bytes consumed by the caller so far”h]”hŒ-number of bytes consumed by the caller so far”…”�”}”(hj0øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,øh´M‚hj-øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,øh´M‚hjøubjä)�”}”(hŒ@``const u8 **data`` destination pointer for data to be returned ”h]”(jê)�”}”(hŒ``const u8 **data``”h]”jð)�”}”(hjPøh]”hŒconst u8 **data”…”�”}”(hjRøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjNøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MƒhjJøubj)�”}”(hhh]”jl)�”}”(hŒ+destination pointer for data to be returned”h]”hŒ+destination pointer for data to be returned”…”�”}”(hjiøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jeøh´Mƒhjføubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jeøh´Mƒhjøubjä)�”}”(hŒ,``struct skb_seq_state *st`` state variable ”h]”(jê)�”}”(hŒ``struct skb_seq_state *st``”h]”jð)�”}”(hj‰øh]”hŒstruct skb_seq_state *st”…”�”}”(hj‹øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M„hjƒøubj)�”}”(hhh]”jl)�”}”(hŒstate variable”h]”hŒstate variable”…”�”}”(hj¢øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jžøh´M„hjŸøubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jžøh´M„hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjò÷ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÄøh]”hŒ Description”…”�”}”(hjÆøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂøubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M†hjò÷ubjl)�”}”(hXReads a block of skb data at **consumed** relative to the lower offset specified to skb_prepare_seq_read(). Assigns the head of the data block to **data** and returns the length of the block or 0 if the end of the skb data or the upper offset has been reached.”h]”(hŒReads a block of skb data at ”…”�”}”(hjÚøh²hh³Nh´Nubj›)�”}”(hŒ **consumed**”h]”hŒconsumed”…”�”}”(hjâøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚøubhŒi relative to the lower offset specified to skb_prepare_seq_read(). Assigns the head of the data block to ”…”�”}”(hjÚøh²hh³Nh´Nubj›)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjôøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚøubhŒj and returns the length of the block or 0 if the end of the skb data or the upper offset has been reached.”…”�”}”(hjÚøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M…hjò÷ubjl)�”}”(hŒÛThe caller is not required to consume all of the data returned, i.e. **consumed** is typically set to the number of bytes already consumed and the next call to skb_seq_read() will return the remaining part of the block.”h]”(hŒEThe caller is not required to consume all of the data returned, i.e. ”…”�”}”(hj ùh²hh³Nh´Nubj›)�”}”(hŒ **consumed**”h]”hŒconsumed”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ùubhŒŠ is typically set to the number of bytes already consumed and the next call to skb_seq_read() will return the remaining part of the block.”…”�”}”(hj ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‹hjò÷ubjß)�”}”(hhh]”(jä)�”}”(hŒœNote 1: The size of each block of data returned can be arbitrary, this limitation is the cost for zerocopy sequential reads of potentially non linear data. ”h]”(jê)�”}”(hŒANote 1: The size of each block of data returned can be arbitrary,”h]”hŒANote 1: The size of each block of data returned can be arbitrary,”…”�”}”(hj5ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M’hj1ùubj)�”}”(hhh]”jl)�”}”(hŒYthis limitation is the cost for zerocopy sequential reads of potentially non linear data.”h]”hŒYthis limitation is the cost for zerocopy sequential reads of potentially non linear data.”…”�”}”(hjGùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‘hjDùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jCùh´M’hj.ùubjä)�”}”(hŒ‹Note 2: Fragment lists within fragments are not implemented at the moment, state->root_skb could be replaced with a stack for this purpose.”h]”(jê)�”}”(hŒ;Note 2: Fragment lists within fragments are not implemented”h]”hŒ;Note 2: Fragment lists within fragments are not implemented”…”�”}”(hjfùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M•hjbùubj)�”}”(hhh]”jl)�”}”(hŒOat the moment, state->root_skb could be replaced with a stack for this purpose.”h]”hŒOat the moment, state->root_skb could be replaced with a stack for this purpose.”…”�”}”(hjxùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jtùh´M•hjuùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jtùh´M•hj.ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjò÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_abort_seq_read (C function)”Œc.skb_abort_seq_read”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2void skb_abort_seq_read (struct skb_seq_state *st)”h]”j )�”}”(hŒ1void skb_abort_seq_read(struct skb_seq_state *st)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸ùh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj´ùh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ùh²hh³jÆùh´Mñubj3)�”}”(hŒskb_abort_seq_read”h]”j9)�”}”(hŒskb_abort_seq_read”h]”hŒskb_abort_seq_read”…”�”}”(hjÙùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕùubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj´ùh²hh³jÆùh´Mñubj¡ )�”}”(hŒ(struct skb_seq_state *st)”h]”j§ )�”}”(hŒstruct skb_seq_state *st”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjõùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñùubh)�”}”(hhh]”j9)�”}”(hŒ skb_seq_state”h]”hŒ skb_seq_state”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”júŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÛùsbŒc.skb_abort_seq_read”†”asbuh1hhjñùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñùubj )�”}”(hj h]”hŒ*”…”�”}”(hjAúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjñùubj9)�”}”(hŒst”h]”hŒst”…”�”}”(hjNúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjíùubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj´ùh²hh³jÆùh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj°ùh²hh³jÆùh´Mñubah}”(h]”j«ùah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÆùh´Mñhj­ùh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Abort a sequential read of skb data”h]”hŒ#Abort a sequential read of skb data”…”�”}”(hjxúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mñhjuúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj­ùh²hh³jÆùh´Mñubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�újŒj�új�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ”**Parameters** ``struct skb_seq_state *st`` state variable **Description** Must be called if skb_seq_read() was not called until it returned 0.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjšúh]”hŒ Parameters”…”�”}”(hjœúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜úubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mõhj”úubjß)�”}”(hhh]”jä)�”}”(hŒ,``struct skb_seq_state *st`` state variable ”h]”(jê)�”}”(hŒ``struct skb_seq_state *st``”h]”jð)�”}”(hj¹úh]”hŒstruct skb_seq_state *st”…”�”}”(hj»úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mòhj³úubj)�”}”(hhh]”jl)�”}”(hŒstate variable”h]”hŒstate variable”…”�”}”(hjÒúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÎúh´MòhjÏúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÎúh´Mòhj°úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj”úubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjôúh]”hŒ Description”…”�”}”(hjöúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjòúubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Môhj”úubjl)�”}”(hŒDMust be called if skb_seq_read() was not called until it returned 0.”h]”hŒDMust be called if skb_seq_read() was not called until it returned 0.”…”�”}”(hj ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Móhj”úubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_copy_seq_read (C function)”Œc.skb_copy_seq_read”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOint skb_copy_seq_read (struct skb_seq_state *st, int offset, void *to, int len)”h]”j )�”}”(hŒNint skb_copy_seq_read(struct skb_seq_state *st, int offset, void *to, int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj9ûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5ûh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5ûh²hh³jGûh´Mÿubj3)�”}”(hŒskb_copy_seq_read”h]”j9)�”}”(hŒskb_copy_seq_read”h]”hŒskb_copy_seq_read”…”�”}”(hjZûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVûubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj5ûh²hh³jGûh´Mÿubj¡ )�”}”(hŒ9(struct skb_seq_state *st, int offset, void *to, int len)”h]”(j§ )�”}”(hŒstruct skb_seq_state *st”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjvûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrûubh)�”}”(hhh]”j9)�”}”(hŒ skb_seq_state”h]”hŒ skb_seq_state”…”�”}”(hj”ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–ûŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j\ûsbŒc.skb_copy_seq_read”†”asbuh1hhjrûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrûubj )�”}”(hj h]”hŒ*”…”�”}”(hjÂûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjrûubj9)�”}”(hŒst”h]”hŒst”…”�”}”(hjÏûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjrûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnûubj§ )�”}”(hŒ int offset”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjèûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjäûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäûubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnûubj§ )�”}”(hŒvoid *to”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjüubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+üh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjüubj )�”}”(hj h]”hŒ*”…”�”}”(hj9üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjüubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hjFüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnûubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj_üh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmüh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[üubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj{üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnûubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj5ûh²hh³jGûh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj1ûh²hh³jGûh´Mÿubah}”(h]”j,ûah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jGûh´Mÿhj.ûh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%copy from a skb_seq_state to a buffer”h]”hŒ%copy from a skb_seq_state to a buffer”…”�”}”(hj¥üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mÿhj¢üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj.ûh²hh³jGûh´Mÿubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j½üjŒj½üj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct skb_seq_state *st`` source skb_seq_state ``int offset`` offset in source ``void *to`` destination buffer ``int len`` number of bytes to copy **Description** Copy **len** bytes from **offset** bytes into the source **st** to the destination buffer **to**. `offset` should increase (or be unchanged) with each subsequent call to this function. If offset needs to decrease from the previous use `st` should be reset first. **Return** 0 on success or -EINVAL if the copy ended early”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÇüh]”hŒ Parameters”…”�”}”(hjÉüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÅüubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÁüubjß)�”}”(hhh]”(jä)�”}”(hŒ2``struct skb_seq_state *st`` source skb_seq_state ”h]”(jê)�”}”(hŒ``struct skb_seq_state *st``”h]”jð)�”}”(hjæüh]”hŒstruct skb_seq_state *st”…”�”}”(hjèüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjäüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjàüubj)�”}”(hhh]”jl)�”}”(hŒsource skb_seq_state”h]”hŒsource skb_seq_state”…”�”}”(hjÿüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jûüh´Mhjüüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jûüh´MhjÝüubjä)�”}”(hŒ ``int offset`` offset in source ”h]”(jê)�”}”(hŒ``int offset``”h]”jð)�”}”(hjýh]”hŒ int offset”…”�”}”(hj!ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjýubj)�”}”(hhh]”jl)�”}”(hŒoffset in source”h]”hŒoffset in source”…”�”}”(hj8ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4ýh´Mhj5ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4ýh´MhjÝüubjä)�”}”(hŒ ``void *to`` destination buffer ”h]”(jê)�”}”(hŒ ``void *to``”h]”jð)�”}”(hjXýh]”hŒvoid *to”…”�”}”(hjZýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjRýubj)�”}”(hhh]”jl)�”}”(hŒdestination buffer”h]”hŒdestination buffer”…”�”}”(hjqýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jmýh´Mhjnýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmýh´MhjÝüubjä)�”}”(hŒ$``int len`` number of bytes to copy ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hj‘ýh]”hŒint len”…”�”}”(hj“ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj‹ýubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to copy”h]”hŒnumber of bytes to copy”…”�”}”(hjªýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦ýh´Mhj§ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦ýh´MhjÝüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÁüubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÌýh]”hŒ Description”…”�”}”(hjÎýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÁüubjl)�”}”(hXCopy **len** bytes from **offset** bytes into the source **st** to the destination buffer **to**. `offset` should increase (or be unchanged) with each subsequent call to this function. If offset needs to decrease from the previous use `st` should be reset first.”h]”(hŒCopy ”…”�”}”(hjâýh²hh³Nh´Nubj›)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjêýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâýubhŒ bytes from ”…”�”}”(hjâýh²hh³Nh´Nubj›)�”}”(hŒ **offset**”h]”hŒoffset”…”�”}”(hjüýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâýubhŒ bytes into the source ”…”�”}”(hjâýh²hh³Nh´Nubj›)�”}”(hŒ**st**”h]”hŒst”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâýubhŒ to the destination buffer ”…”�”}”(hjâýh²hh³Nh´Nubj›)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâýubhŒ. ”…”�”}”(hjâýh²hh³Nh´Nubj°ß)�”}”(hŒ`offset`”h]”hŒoffset”…”�”}”(hj2þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjâýubhŒ� should increase (or be unchanged) with each subsequent call to this function. If offset needs to decrease from the previous use ”…”�”}”(hjâýh²hh³Nh´Nubj°ß)�”}”(hŒ`st`”h]”hŒst”…”�”}”(hjDþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjâýubhŒ should be reset first.”…”�”}”(hjâýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÁüubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj_þh]”hŒReturn”…”�”}”(hjaþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÁüubjl)�”}”(hŒ/0 on success or -EINVAL if the copy ended early”h]”hŒ/0 on success or -EINVAL if the copy ended early”…”�”}”(hjuþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hjÁüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_find_text (C function)”Œc.skb_find_text”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒnunsigned int skb_find_text (struct sk_buff *skb, unsigned int from, unsigned int to, struct ts_config *config)”h]”j )�”}”(hŒmunsigned int skb_find_text(struct sk_buff *skb, unsigned int from, unsigned int to, struct ts_config *config)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¤þh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj þh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj þh²hh³j²þh´M0ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÁþh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj þh²hh³j²þh´M0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj þh²hh³j²þh´M0ubj3)�”}”(hŒ skb_find_text”h]”j9)�”}”(hŒ skb_find_text”h]”hŒ skb_find_text”…”�”}”(hjáþh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝþubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj þh²hh³j²þh´M0ubj¡ )�”}”(hŒS(struct sk_buff *skb, unsigned int from, unsigned int to, struct ts_config *config)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjýþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùþubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jãþsbŒc.skb_find_text”†”asbuh1hhjùþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùþubj )�”}”(hj h]”hŒ*”…”�”}”(hjIÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjùþubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjVÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõþubj§ )�”}”(hŒunsigned int from”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjoÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjkÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkÿubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‹ÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjkÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkÿubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hj§ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõþubj§ )�”}”(hŒunsigned int to”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÀÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ÿubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÜÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ÿubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hjøÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõþubj§ )�”}”(hŒstruct ts_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒ ts_config”h]”hŒ ts_config”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1Œmodname”NŒ classname”Njå jè )�”}”jë ]”j7ÿŒc.skb_find_text”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõþubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj þh²hh³j²þh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjœþh²hh³j²þh´M0ubah}”(h]”j—þah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j²þh´M0hj™þh²hubjg)�”}”(hhh]”jl)�”}”(hŒFind a text pattern in skb data”h]”hŒFind a text pattern in skb data”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M0hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj™þh²hh³j²þh´M0ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jªjŒjªj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÁ**Parameters** ``struct sk_buff *skb`` the buffer to look in ``unsigned int from`` search offset ``unsigned int to`` search limit ``struct ts_config *config`` textsearch configuration **Description** Finds a pattern in the skb data according to the specified textsearch configuration. Use textsearch_next() to retrieve subsequent occurrences of the pattern. Returns the offset to the first occurrence or UINT_MAX if no match was found.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj´h]”hŒ Parameters”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M4hj®ubjß)�”}”(hhh]”(jä)�”}”(hŒ.``struct sk_buff *skb`` the buffer to look in ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÓh]”hŒstruct sk_buff *skb”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M1hjÍubj)�”}”(hhh]”jl)�”}”(hŒthe buffer to look in”h]”hŒthe buffer to look in”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèh´M1hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèh´M1hjÊubjä)�”}”(hŒ$``unsigned int from`` search offset ”h]”(jê)�”}”(hŒ``unsigned int from``”h]”jð)�”}”(hj h]”hŒunsigned int from”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M2hjubj)�”}”(hhh]”jl)�”}”(hŒ search offset”h]”hŒ search offset”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!h´M2hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!h´M2hjÊubjä)�”}”(hŒ!``unsigned int to`` search limit ”h]”(jê)�”}”(hŒ``unsigned int to``”h]”jð)�”}”(hjEh]”hŒunsigned int to”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M3hj?ubj)�”}”(hhh]”jl)�”}”(hŒ search limit”h]”hŒ search limit”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZh´M3hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZh´M3hjÊubjä)�”}”(hŒ6``struct ts_config *config`` textsearch configuration ”h]”(jê)�”}”(hŒ``struct ts_config *config``”h]”jð)�”}”(hj~h]”hŒstruct ts_config *config”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M4hjxubj)�”}”(hhh]”jl)�”}”(hŒtextsearch configuration”h]”hŒtextsearch configuration”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“h´M4hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“h´M4hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj®ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¹h]”hŒ Description”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M6hj®ubjl)�”}”(hŒëFinds a pattern in the skb data according to the specified textsearch configuration. Use textsearch_next() to retrieve subsequent occurrences of the pattern. Returns the offset to the first occurrence or UINT_MAX if no match was found.”h]”hŒëFinds a pattern in the skb data according to the specified textsearch configuration. Use textsearch_next() to retrieve subsequent occurrences of the pattern. Returns the offset to the first occurrence or UINT_MAX if no match was found.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M5hj®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_pull_rcsum (C function)”Œc.skb_pull_rcsum”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void * skb_pull_rcsum (struct sk_buff *skb, unsigned int len)”h]”j )�”}”(hŒ;void *skb_pull_rcsum(struct sk_buff *skb, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjúh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjúh²hh³j h´Mbubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjúh²hh³j h´Mbubj3)�”}”(hŒskb_pull_rcsum”h]”j9)�”}”(hŒskb_pull_rcsum”h]”hŒskb_pull_rcsum”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjúh²hh³j h´Mbubj¡ )�”}”(hŒ'(struct sk_buff *skb, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjDubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jhŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j.sbŒc.skb_pull_rcsum”†”asbuh1hhjDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjDubj )�”}”(hj h]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjDubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@ubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjúh²hh³j h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjöh²hh³j h´Mbubah}”(h]”jñah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j h´Mbhjóh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$pull skb and update receive checksum”h]”hŒ$pull skb and update receive checksum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mbhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjóh²hh³j h´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j4jŒj4j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX°**Parameters** ``struct sk_buff *skb`` buffer to update ``unsigned int len`` length of data pulled **Description** This function performs an skb_pull on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_pull unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj>h]”hŒ Parameters”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mfhj8ubjß)�”}”(hhh]”(jä)�”}”(hŒ)``struct sk_buff *skb`` buffer to update ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj]h]”hŒstruct sk_buff *skb”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MchjWubj)�”}”(hhh]”jl)�”}”(hŒbuffer to update”h]”hŒbuffer to update”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jrh´Mchjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrh´MchjTubjä)�”}”(hŒ+``unsigned int len`` length of data pulled ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj–h]”hŒunsigned int len”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mdhj�ubj)�”}”(hhh]”jl)�”}”(hŒlength of data pulled”h]”hŒlength of data pulled”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«h´Mdhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«h´MdhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÑh]”hŒ Description”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mfhj8ubjÒ)�”}”(hXThis function performs an skb_pull on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_pull unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”h]”jl)�”}”(hXThis function performs an skb_pull on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_pull unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”h]”hXThis function performs an skb_pull on the packet and updates the CHECKSUM_COMPLETE checksum. It should be used on receive path processing instead of skb_pull unless you know that the checksum difference is zero (e.g., a valid IP header) or you are setting ip_summed to CHECKSUM_NONE.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mehjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jùh´Mehj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_segment (C function)”Œ c.skb_segment”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSstruct sk_buff * skb_segment (struct sk_buff *head_skb, netdev_features_t features)”h]”j )�”}”(hŒQstruct sk_buff *skb_segment(struct sk_buff *head_skb, netdev_features_t features)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Måubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j-h´Måubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jAŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ skb_segment”sbŒ c.skb_segment”†”asbuh1hhjh²hh³j-h´Måubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j-h´Måubj )�”}”(hj h]”hŒ*”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjh²hh³j-h´Måubj3)�”}”(hŒ skb_segment”h]”j9)�”}”(hj]h]”hŒ skb_segment”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³j-h´Måubj¡ )�”}”(hŒ6(struct sk_buff *head_skb, netdev_features_t features)”h]”(j§ )�”}”(hŒstruct sk_buff *head_skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jºŒmodname”NŒ classname”Njå jè )�”}”jë ]”j[Œ c.skb_segment”†”asbuh1hhj–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–ubj )�”}”(hj h]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj–ubj9)�”}”(hŒhead_skb”h]”hŒhead_skb”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj’ubj§ )�”}”(hŒnetdev_features_t features”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdev_features_t”h]”hŒnetdev_features_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”j[Œ c.skb_segment”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒfeatures”h]”hŒfeatures”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³j-h´Måubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³j-h´Måubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j-h´Måhjh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%Perform protocol segmentation on skb.”h]”hŒ%Perform protocol segmentation on skb.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Måhj`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j-h´Måubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j{jŒj{j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX_**Parameters** ``struct sk_buff *head_skb`` buffer to segment ``netdev_features_t features`` features for the output path (see dev->features) **Description** This function performs segmentation on the given skb. It returns a pointer to the first in a list of new skbs for the segments. In case of error it returns ERR_PTR(err).”h]”(jl)�”}”(hŒ**Parameters**”•`h]”j›)�”}”(hj…h]”hŒ Parameters”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Méhjubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct sk_buff *head_skb`` buffer to segment ”h]”(jê)�”}”(hŒ``struct sk_buff *head_skb``”h]”jð)�”}”(hj¤h]”hŒstruct sk_buff *head_skb”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mæhjžubj)�”}”(hhh]”jl)�”}”(hŒbuffer to segment”h]”hŒbuffer to segment”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹h´Mæhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹h´Mæhj›ubjä)�”}”(hŒP``netdev_features_t features`` features for the output path (see dev->features) ”h]”(jê)�”}”(hŒ``netdev_features_t features``”h]”jð)�”}”(hjÝh]”hŒnetdev_features_t features”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mçhj×ubj)�”}”(hhh]”jl)�”}”(hŒ0features for the output path (see dev->features)”h]”hŒ0features for the output path (see dev->features)”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jòh´Mçhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jòh´Mçhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MéhjubjÒ)�”}”(hŒªThis function performs segmentation on the given skb. It returns a pointer to the first in a list of new skbs for the segments. In case of error it returns ERR_PTR(err).”h]”jl)�”}”(hŒªThis function performs segmentation on the given skb. It returns a pointer to the first in a list of new skbs for the segments. In case of error it returns ERR_PTR(err).”h]”hŒªThis function performs segmentation on the given skb. It returns a pointer to the first in a list of new skbs for the segments. In case of error it returns ERR_PTR(err).”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mèhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j@h´Mèhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_to_sgvec (C function)”Œc.skb_to_sgvec”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSint skb_to_sgvec (struct sk_buff *skb, struct scatterlist *sg, int offset, int len)”h]”j )�”}”(hŒRint skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjch²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjch²hh³juh´Mubj3)�”}”(hŒ skb_to_sgvec”h]”j9)�”}”(hŒ skb_to_sgvec”h]”hŒ skb_to_sgvec”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjch²hh³juh´Mubj¡ )�”}”(hŒB(struct sk_buff *skb, struct scatterlist *sg, int offset, int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÄŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŠsbŒc.skb_to_sgvec”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœubj§ )�”}”(hŒstruct scatterlist *sg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j6Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÞŒc.skb_to_sgvec”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒsg”h]”hŒsg”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœubj§ )�”}”(hŒ int offset”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚ubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjch²hh³juh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj_h²hh³juh´Mubah}”(h]”jZah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³juh´Mhj\h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Fill a scatter-gather list from a socket buffer”h]”hŒ/Fill a scatter-gather list from a socket buffer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj\h²hh³juh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` Socket buffer containing the buffers to be mapped ``struct scatterlist *sg`` The scatter-gather list to map into ``int offset`` The offset into the buffer's contents to start mapping ``int len`` Length of buffer space to be mapped **Description** Fill the specified scatter-gather list with mappings/pointers into a region of the buffer space attached to a socket buffer. Returns either the number of scatterlist items used, or -EMSGSIZE if the contents could not fit.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj#h]”hŒ Parameters”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M!hjubjß)�”}”(hhh]”(jä)�”}”(hŒJ``struct sk_buff *skb`` Socket buffer containing the buffers to be mapped ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjBh]”hŒstruct sk_buff *skb”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj<ubj)�”}”(hhh]”jl)�”}”(hŒ1Socket buffer containing the buffers to be mapped”h]”hŒ1Socket buffer containing the buffers to be mapped”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jWh´MhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jWh´Mhj9ubjä)�”}”(hŒ?``struct scatterlist *sg`` The scatter-gather list to map into ”h]”(jê)�”}”(hŒ``struct scatterlist *sg``”h]”jð)�”}”(hj{h]”hŒstruct scatterlist *sg”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjuubj)�”}”(hhh]”jl)�”}”(hŒ#The scatter-gather list to map into”h]”hŒ#The scatter-gather list to map into”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´Mhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´Mhj9ubjä)�”}”(hŒF``int offset`` The offset into the buffer's contents to start mapping ”h]”(jê)�”}”(hŒ``int offset``”h]”jð)�”}”(hj´h]”hŒ int offset”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hj®ubj)�”}”(hhh]”jl)�”}”(hŒ6The offset into the buffer's contents to start mapping”h]”hŒ8The offset into the buffer’s contents to start mapping”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉh´M hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉh´M hj9ubjä)�”}”(hŒ0``int len`` Length of buffer space to be mapped ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hjíh]”hŒint len”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M!hjçubj)�”}”(hhh]”jl)�”}”(hŒ#Length of buffer space to be mapped”h]”hŒ#Length of buffer space to be mapped”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M!hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M!hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj( h]”hŒ Description”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M#hjubjÒ)�”}”(hŒÝFill the specified scatter-gather list with mappings/pointers into a region of the buffer space attached to a socket buffer. Returns either the number of scatterlist items used, or -EMSGSIZE if the contents could not fit.”h]”jl)�”}”(hŒÝFill the specified scatter-gather list with mappings/pointers into a region of the buffer space attached to a socket buffer. Returns either the number of scatterlist items used, or -EMSGSIZE if the contents could not fit.”h]”hŒÝFill the specified scatter-gather list with mappings/pointers into a region of the buffer space attached to a socket buffer. Returns either the number of scatterlist items used, or -EMSGSIZE if the contents could not fit.”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M"hj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jP h´M"hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_cow_data (C function)”Œc.skb_cow_data”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint skb_cow_data (struct sk_buff *skb, int tailbits, struct sk_buff **trailer)”h]”j )�”}”(hŒMint skb_cow_data(struct sk_buff *skb, int tailbits, struct sk_buff **trailer)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjs h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjs h²hh³j… h´MRubj3)�”}”(hŒ skb_cow_data”h]”j9)�”}”(hŒ skb_cow_data”h]”hŒ skb_cow_data”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj” ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjs h²hh³j… h´MRubj¡ )�”}”(hŒ=(struct sk_buff *skb, int tailbits, struct sk_buff **trailer)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj° ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj° ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jš sbŒc.skb_cow_data”†”asbuh1hhj° ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj° ubj )�”}”(hj h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj° ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj° ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬ ubj§ )�”}”(hŒ int tailbits”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj" ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj" ubj9)�”}”(hŒtailbits”h]”hŒtailbits”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj" ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬ ubj§ )�”}”(hŒstruct sk_buff **trailer”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j{ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî Œc.skb_cow_data”†”asbuh1hhjW ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjW ubj )�”}”(hj h]”hŒ*”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjW ubj9)�”}”(hŒtrailer”h]”hŒtrailer”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjW ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjs h²hh³j… h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjo h²hh³j… h´MRubah}”(h]”jj ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j… h´MRhjl h²hubjg)�”}”(hhh]”jl)�”}”(hŒ6Check that a socket buffer's data buffers are writable”h]”hŒ8Check that a socket buffer’s data buffers are writable”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MRhjæ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjl h²hh³j… h´MRubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` The socket buffer to check. ``int tailbits`` Amount of trailing space to be added ``struct sk_buff **trailer`` Returned pointer to the skb where the **tailbits** space begins **Description** Make sure that the data buffers attached to a socket buffer are writable. If they are not, private copies are made of the data buffers and the socket buffer is set to use these instead. If **tailbits** is given, make sure that there is space to write **tailbits** bytes of data beyond current end of socket buffer. **trailer** will be set to point to the skb in which this space begins. The number of scatterlist elements required to completely map the COW'd and extended socket buffer will be returned.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MVhj ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct sk_buff *skb`` The socket buffer to check. ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj* h]”hŒstruct sk_buff *skb”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MShj$ ubj)�”}”(hhh]”jl)�”}”(hŒThe socket buffer to check.”h]”hŒThe socket buffer to check.”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j? h´MShj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j? h´MShj! ubjä)�”}”(hŒ6``int tailbits`` Amount of trailing space to be added ”h]”(jê)�”}”(hŒ``int tailbits``”h]”jð)�”}”(hjc h]”hŒ int tailbits”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MThj] ubj)�”}”(hhh]”jl)�”}”(hŒ$Amount of trailing space to be added”h]”hŒ$Amount of trailing space to be added”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jx h´MThjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj] ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jx h´MThj! ubjä)�”}”(hŒ]``struct sk_buff **trailer`` Returned pointer to the skb where the **tailbits** space begins ”h]”(jê)�”}”(hŒ``struct sk_buff **trailer``”h]”jð)�”}”(hjœ h]”hŒstruct sk_buff **trailer”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjš ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MUhj– ubj)�”}”(hhh]”jl)�”}”(hŒ?Returned pointer to the skb where the **tailbits** space begins”h]”(hŒ&Returned pointer to the skb where the ”…”�”}”(hjµ h²hh³Nh´Nubj›)�”}”(hŒ **tailbits**”h]”hŒtailbits”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµ ubhŒ space begins”…”�”}”(hjµ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j± h´MUhj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj– ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j± h´MUhj! ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjé h]”hŒ Description”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MWhj ubjÒ)�”}”(hXúMake sure that the data buffers attached to a socket buffer are writable. If they are not, private copies are made of the data buffers and the socket buffer is set to use these instead. If **tailbits** is given, make sure that there is space to write **tailbits** bytes of data beyond current end of socket buffer. **trailer** will be set to point to the skb in which this space begins. The number of scatterlist elements required to completely map the COW'd and extended socket buffer will be returned.”h]”(jl)�”}”(hŒ¹Make sure that the data buffers attached to a socket buffer are writable. If they are not, private copies are made of the data buffers and the socket buffer is set to use these instead.”h]”hŒ¹Make sure that the data buffers attached to a socket buffer are writable. If they are not, private copies are made of the data buffers and the socket buffer is set to use these instead.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MVhjÿ ubjl)�”}”(hŒÉIf **tailbits** is given, make sure that there is space to write **tailbits** bytes of data beyond current end of socket buffer. **trailer** will be set to point to the skb in which this space begins.”h]”(hŒIf ”…”�”}”(hj h²hh³Nh´Nubj›)�”}”(hŒ **tailbits**”h]”hŒtailbits”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubhŒ2 is given, make sure that there is space to write ”…”�”}”(hj h²hh³Nh´Nubj›)�”}”(hŒ **tailbits**”h]”hŒtailbits”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubhŒ5 bytes of data beyond current end of socket buffer. ”…”�”}”(hj h²hh³Nh´Nubj›)�”}”(hŒ **trailer**”h]”hŒtrailer”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubhŒ< will be set to point to the skb in which this space begins.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MZhjÿ ubjl)�”}”(hŒtThe number of scatterlist elements required to completely map the COW'd and extended socket buffer will be returned.”h]”hŒvThe number of scatterlist elements required to completely map the COW’d and extended socket buffer will be returned.”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M^hjÿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j h´MVhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_clone_sk (C function)”Œc.skb_clone_sk”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3struct sk_buff * skb_clone_sk (struct sk_buff *skb)”h]”j )�”}”(hŒ1struct sk_buff *skb_clone_sk(struct sk_buff *skb)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆ h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆ h²hh³j™ h´M ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ skb_clone_sk”sbŒc.skb_clone_sk”†”asbuh1hhjˆ h²hh³j™ h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆ h²hh³j™ h´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjˆ h²hh³j™ h´M ubj3)�”}”(hŒ skb_clone_sk”h]”j9)�”}”(hjÉ h]”hŒ skb_clone_sk”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjˆ h²hh³j™ h´M ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj! ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j& Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÇ Œc.skb_clone_sk”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjþ ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjˆ h²hh³j™ h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj„ h²hh³j™ h´M ubah}”(h]”j ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j™ h´M hj� h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1create clone of skb, and take reference to socket”h]”hŒ1create clone of skb, and take reference to socket”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hj„ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj� h²hh³j™ h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŸ jŒjŸ j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXì**Parameters** ``struct sk_buff *skb`` the skb to clone **Description** This function creates a clone of a buffer that holds a reference on sk_refcnt. Buffers created via this function are meant to be returned using sock_queue_err_skb, or free via kfree_skb. When passing buffers allocated with this function to sock_queue_err_skb it is necessary to wrap the call with sock_hold/sock_put in order to prevent the socket from being released prior to being enqueued on the sk_error_queue.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj© h]”hŒ Parameters”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj£ ubjß)�”}”(hhh]”jä)�”}”(hŒ)``struct sk_buff *skb`` the skb to clone ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÈ h]”hŒstruct sk_buff *skb”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M hj ubj)�”}”(hhh]”jl)�”}”(hŒthe skb to clone”h]”hŒthe skb to clone”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝ h´M hjÞ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝ h´M hj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj£ ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj£ ubjl)�”}”(hŒ»This function creates a clone of a buffer that holds a reference on sk_refcnt. Buffers created via this function are meant to be returned using sock_queue_err_skb, or free via kfree_skb.”h]”hŒ»This function creates a clone of a buffer that holds a reference on sk_refcnt. Buffers created via this function are meant to be returned using sock_queue_err_skb, or free via kfree_skb.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj£ ubjl)�”}”(hŒâWhen passing buffers allocated with this function to sock_queue_err_skb it is necessary to wrap the call with sock_hold/sock_put in order to prevent the socket from being released prior to being enqueued on the sk_error_queue.”h]”hŒâWhen passing buffers allocated with this function to sock_queue_err_skb it is necessary to wrap the call with sock_hold/sock_put in order to prevent the socket from being released prior to being enqueued on the sk_error_queue.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj£ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!skb_partial_csum_set (C function)”Œc.skb_partial_csum_set”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCbool skb_partial_csum_set (struct sk_buff *skb, u16 start, u16 off)”h]”j )�”}”(hŒBbool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjSh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSh²hh³jdh´Mubj3)�”}”(hŒskb_partial_csum_set”h]”j9)�”}”(hŒskb_partial_csum_set”h]”hŒskb_partial_csum_set”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjSh²hh³jdh´Mubj¡ )�”}”(hŒ)(struct sk_buff *skb, u16 start, u16 off)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jysbŒc.skb_partial_csum_set”†”asbuh1hhj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹ubj§ )�”}”(hŒ u16 start”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÍŒc.skb_partial_csum_set”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒstart”h]”hŒstart”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹ubj§ )�”}”(hŒu16 off”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÍŒc.skb_partial_csum_set”†”asbuh1hhjIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIubj9)�”}”(hŒoff”h]”hŒoff”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjSh²hh³jdh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjOh²hh³jdh´Mubah}”(h]”jJah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jdh´MhjLh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0set up and verify partial csum values for packet”h]”hŒ0set up and verify partial csum values for packet”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhj£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjLh²hh³jdh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¾jŒj¾j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÖ**Parameters** ``struct sk_buff *skb`` the skb to set ``u16 start`` the number of bytes after skb->data to start checksumming. ``u16 off`` the offset from start to place the checksum. **Description** For untrusted partially-checksummed packets, we need to make sure the values for skb->csum_start and skb->csum_offset are valid so we don't oops. This function checks and sets those values and skb->ip_summed: if this returns false you should drop the packet.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÈh]”hŒ Parameters”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÂubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct sk_buff *skb`` the skb to set ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjçh]”hŒstruct sk_buff *skb”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjáubj)�”}”(hhh]”jl)�”}”(hŒthe skb to set”h]”hŒthe skb to set”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüh´Mhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jüh´MhjÞubjä)�”}”(hŒI``u16 start`` the number of bytes after skb->data to start checksumming. ”h]”(jê)�”}”(hŒ ``u16 start``”h]”jð)�”}”(hj h]”hŒ u16 start”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒ:the number of bytes after skb->data to start checksumming.”h]”hŒ:the number of bytes after skb->data to start checksumming.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j5h´Mhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j5h´MhjÞubjä)�”}”(hŒ9``u16 off`` the offset from start to place the checksum. ”h]”(jê)�”}”(hŒ ``u16 off``”h]”jð)�”}”(hjYh]”hŒu16 off”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjSubj)�”}”(hhh]”jl)�”}”(hŒ,the offset from start to place the checksum.”h]”hŒ,the offset from start to place the checksum.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jnh´Mhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jnh´MhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÂubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj”h]”hŒ Description”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÂubjl)�”}”(hŒ‘For untrusted partially-checksummed packets, we need to make sure the values for skb->csum_start and skb->csum_offset are valid so we don't oops.”h]”hŒ“For untrusted partially-checksummed packets, we need to make sure the values for skb->csum_start and skb->csum_offset are valid so we don’t oops.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÂubjl)�”}”(hŒpThis function checks and sets those values and skb->ip_summed: if this returns false you should drop the packet.”h]”hŒpThis function checks and sets those values and skb->ip_summed: if this returns false you should drop the packet.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_checksum_setup (C function)”Œc.skb_checksum_setup”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>int skb_checksum_setup (struct sk_buff *skb, bool recalculate)”h]”j )�”}”(hŒ=int skb_checksum_setup(struct sk_buff *skb, bool recalculate)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjäh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäh²hh³jöh´Mÿubj3)�”}”(hŒskb_checksum_setup”h]”j9)�”}”(hŒskb_checksum_setup”h]”hŒskb_checksum_setup”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjäh²hh³jöh´Mÿubj¡ )�”}”(hŒ'(struct sk_buff *skb, bool recalculate)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jEŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j sbŒc.skb_checksum_setup”†”asbuh1hhj!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!ubj )�”}”(hj h]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒbool recalculate”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“ubj9)�”}”(hŒ recalculate”h]”hŒ recalculate”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjäh²hh³jöh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjàh²hh³jöh´Mÿubah}”(h]”jÛah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jöh´MÿhjÝh²hubjg)�”}”(hhh]”jl)�”}”(hŒset up partial checksum offset”h]”hŒset up partial checksum offset”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÿhjÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÝh²hh³jöh´Mÿubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jôjŒjôj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ‹**Parameters** ``struct sk_buff *skb`` the skb to set up ``bool recalculate`` if true the pseudo-header checksum will be recalculated”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjþh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjøubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct sk_buff *skb`` the skb to set up ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjh]”hŒstruct sk_buff *skb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒthe skb to set up”h]”hŒthe skb to set up”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2h´Mhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2h´Mhjubjä)�”}”(hŒL``bool recalculate`` if true the pseudo-header checksum will be recalculated”h]”(jê)�”}”(hŒ``bool recalculate``”h]”jð)�”}”(hjVh]”hŒbool recalculate”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhjPubj)�”}”(hhh]”jl)�”}”(hŒ7if true the pseudo-header checksum will be recalculated”h]”hŒ7if true the pseudo-header checksum will be recalculated”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jkh´Mhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!skb_checksum_trimmed (C function)”Œc.skb_checksum_trimmed”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ€struct sk_buff * skb_checksum_trimmed (struct sk_buff *skb, unsigned int transport_len, __sum16(*skb_chkf)(struct sk_buff *skb))”h]”j )�”}”(hŒstruct sk_buff *skb_checksum_trimmed(struct sk_buff *skb, unsigned int transport_len, __sum16 (*skb_chkf)(struct sk_buff *skb))”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬h²hh³j½h´M@ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œskb_checksum_trimmed”sbŒc.skb_checksum_trimmed”†”asbuh1hhj¬h²hh³j½h´M@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬h²hh³j½h´M@ubj )�”}”(hj h]”hŒ*”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¬h²hh³j½h´M@ubj3)�”}”(hŒskb_checksum_trimmed”h]”j9)�”}”(hjíh]”hŒskb_checksum_trimmed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¬h²hh³j½h´M@ubj¡ )�”}”(hŒ[(struct sk_buff *skb, unsigned int transport_len, __sum16 (*skb_chkf)(struct sk_buff *skb))”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJŒmodname”NŒ classname”Njå jè )�”}”jë ]”jëŒc.skb_checksum_trimmed”†”asbuh1hhj&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&ubj )�”}”(hj h]”hŒ*”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj&ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj"ubj§ )�”}”(hŒunsigned int transport_len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–ubj9)�”}”(hŒ transport_len”h]”hŒ transport_len”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj"ubj§ )�”}”(hŒ(__sum16 (*skb_chkf)(struct sk_buff *skb)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__sum16”h]”hŒ__sum16”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jëŒc.skb_checksum_trimmed”†”asbuh1hhjçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçubj )�”}”(hŒ(”h]”hŒ(”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçubj )�”}”(hj h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçubj9)�”}”(hŒskb_chkf”h]”hŒskb_chkf”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçubj )�”}”(hŒ)”h]”hŒ)”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçubj )�”}”(hjh]”hŒ(”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçubj)�”}”(hjh]”hŒstruct”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j~Œmodname”NŒ classname”Njå jè )�”}”jë ]”jëŒc.skb_checksum_trimmed”†”asbuh1hhjçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçubj )�”}”(hj h]”hŒ*”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçubj )�”}”(hjEh]”hŒ)”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj"ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¬h²hh³j½h´M@ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨h²hh³j½h´M@ubah}”(h]”j£ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j½h´M@hj¥h²hubjg)�”}”(hhh]”jl)�”}”(hŒvalidate checksum of an skb”h]”hŒvalidate checksum of an skb”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M@hjéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥h²hh³j½h´M@ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX<**Parameters** ``struct sk_buff *skb`` the skb to check ``unsigned int transport_len`` the data length beyond the network header ``__sum16(*skb_chkf)(struct sk_buff *skb)`` checksum function to use **Description** Applies the given checksum function skb_chkf to the provided skb. Returns a checked and maybe trimmed skb. Returns NULL on error. If the skb has data beyond the given transport length, then a trimmed & cloned skb is checked and returned. Caller needs to set the skb transport header and free any returned skb if it differs from the provided skb.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MDhjubjß)�”}”(hhh]”(jä)�”}”(hŒ)``struct sk_buff *skb`` the skb to check ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj-h]”hŒstruct sk_buff *skb”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MAhj'ubj)�”}”(hhh]”jl)�”}”(hŒthe skb to check”h]”hŒthe skb to check”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jBh´MAhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jBh´MAhj$ubjä)�”}”(hŒI``unsigned int transport_len`` the data length beyond the network header ”h]”(jê)�”}”(hŒ``unsigned int transport_len``”h]”jð)�”}”(hjfh]”hŒunsigned int transport_len”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MBhj`ubj)�”}”(hhh]”jl)�”}”(hŒ)the data length beyond the network header”h]”hŒ)the data length beyond the network header”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{h´MBhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{h´MBhj$ubjä)�”}”(hŒE``__sum16(*skb_chkf)(struct sk_buff *skb)`` checksum function to use ”h]”(jê)�”}”(hŒ+``__sum16(*skb_chkf)(struct sk_buff *skb)``”h]”jð)�”}”(hjŸh]”hŒ'__sum16(*skb_chkf)(struct sk_buff *skb)”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MChj™ubj)�”}”(hhh]”jl)�”}”(hŒchecksum function to use”h]”hŒchecksum function to use”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´h´MChjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´h´MChj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÚh]”hŒ Description”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MEhjubjl)�”}”(hŒ�Applies the given checksum function skb_chkf to the provided skb. Returns a checked and maybe trimmed skb. Returns NULL on error.”h]”hŒ�Applies the given checksum function skb_chkf to the provided skb. Returns a checked and maybe trimmed skb. Returns NULL on error.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MDhjubjl)�”}”(hŒkIf the skb has data beyond the given transport length, then a trimmed & cloned skb is checked and returned.”h]”hŒkIf the skb has data beyond the given transport length, then a trimmed & cloned skb is checked and returned.”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MGhjubjl)�”}”(hŒkCaller needs to set the skb transport header and free any returned skb if it differs from the provided skb.”h]”hŒkCaller needs to set the skb transport header and free any returned skb if it differs from the provided skb.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MJhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_try_coalesce (C function)”Œc.skb_try_coalesce”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgbool skb_try_coalesce (struct sk_buff *to, struct sk_buff *from, bool *fragstolen, int *delta_truesize)”h]”j )�”}”(hŒfbool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, bool *fragstolen, int *delta_truesize)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj9h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9h²hh³jJh´M‚ubj3)�”}”(hŒskb_try_coalesce”h]”j9)�”}”(hŒskb_try_coalesce”h]”hŒskb_try_coalesce”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj9h²hh³jJh´M‚ubj¡ )�”}”(hŒQ(struct sk_buff *to, struct sk_buff *from, bool *fragstolen, int *delta_truesize)”h]”(j§ )�”}”(hŒstruct sk_buff *to”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j™Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j_sbŒc.skb_try_coalesce”†”asbuh1hhjuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuubj )�”}”(hj h]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjuubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjqubj§ )�”}”(hŒstruct sk_buff *from”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”j³Œc.skb_try_coalesce”†”asbuh1hhjçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçubj )�”}”(hj h]”hŒ*”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjçubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjqubj§ )�”}”(hŒbool *fragstolen”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWubj )�”}”(hj h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjWubj9)�”}”(hŒ fragstolen”h]”hŒ fragstolen”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjqubj§ )�”}”(hŒint *delta_truesize”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj˜ubj9)�”}”(hŒdelta_truesize”h]”hŒdelta_truesize”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjqubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj9h²hh³jJh´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj5h²hh³jJh´M‚ubah}”(h]”j0ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jJh´M‚hj2h²hubjg)�”}”(hhh]”jl)�”}”(hŒtry to merge skb to prior one”h]”hŒtry to merge skb to prior one”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚hjìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj2h²hh³jJh´M‚ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒÔ**Parameters** ``struct sk_buff *to`` prior buffer ``struct sk_buff *from`` buffer to add ``bool *fragstolen`` pointer to boolean ``int *delta_truesize`` how much more was allocated than was requested”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M†hj ubjß)�”}”(hhh]”(jä)�”}”(hŒ$``struct sk_buff *to`` prior buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *to``”h]”jð)�”}”(hj0h]”hŒstruct sk_buff *to”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mƒhj*ubj)�”}”(hhh]”jl)�”}”(hŒ prior buffer”h]”hŒ prior buffer”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jEh´MƒhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEh´Mƒhj'ubjä)�”}”(hŒ'``struct sk_buff *from`` buffer to add ”h]”(jê)�”}”(hŒ``struct sk_buff *from``”h]”jð)�”}”(hjih]”hŒstruct sk_buff *from”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M„hjcubj)�”}”(hhh]”jl)�”}”(hŒ buffer to add”h]”hŒ buffer to add”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~h´M„hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~h´M„hj'ubjä)�”}”(hŒ(``bool *fragstolen`` pointer to boolean ”h]”(jê)�”}”(hŒ``bool *fragstolen``”h]”jð)�”}”(hj¢h]”hŒbool *fragstolen”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M…hjœubj)�”}”(hhh]”jl)�”}”(hŒpointer to boolean”h]”hŒpointer to boolean”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j·h´M…hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·h´M…hj'ubjä)�”}”(hŒF``int *delta_truesize`` how much more was allocated than was requested”h]”(jê)�”}”(hŒ``int *delta_truesize``”h]”jð)�”}”(hjÛh]”hŒint *delta_truesize”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‡hjÕubj)�”}”(hhh]”jl)�”}”(hŒ.how much more was allocated than was requested”h]”hŒ.how much more was allocated than was requested”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M†hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðh´M‡hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_scrub_packet (C function)”Œc.skb_scrub_packet”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void skb_scrub_packet (struct sk_buff *skb, bool xnet)”h]”j )�”}”(hŒ5void skb_scrub_packet(struct sk_buff *skb, bool xnet)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj1h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1h²hh³jCh´Mïubj3)�”}”(hŒskb_scrub_packet”h]”j9)�”}”(hŒskb_scrub_packet”h]”hŒskb_scrub_packet”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj1h²hh³jCh´Mïubj¡ )�”}”(hŒ (struct sk_buff *skb, bool xnet)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jXsbŒc.skb_scrub_packet”†”asbuh1hhjnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnubj )�”}”(hj h]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjnubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjubj§ )�”}”(hŒ bool xnet”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàubj9)�”}”(hŒxnet”h]”hŒxnet”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj1h²hh³jCh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj-h²hh³jCh´Mïubah}”(h]”j(ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jCh´Mïhj*h²hubjg)�”}”(hhh]”jl)�”}”(hŒ scrub an skb”h]”hŒ scrub an skb”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mïhj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj*h²hh³jCh´Mïubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jAjŒjAj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXÒ**Parameters** ``struct sk_buff *skb`` buffer to clean ``bool xnet`` packet is crossing netns **Description** skb_scrub_packet can be used after encapsulating or decapsulating a packet into/from a tunnel. Some information have to be cleared during these operations. skb_scrub_packet can also be used to clean a skb before injecting it in another namespace (**xnet** == true). We have to clear all information in the skb that could impact namespace isolation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjKh]”hŒ Parameters”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MóhjEubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to clean ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjjh]”hŒstruct sk_buff *skb”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mñhjdubj)�”}”(hhh]”jl)�”}”(hŒbuffer to clean”h]”hŒbuffer to clean”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mñhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mñhjaubjä)�”}”(hŒ'``bool xnet`` packet is crossing netns ”h]”(jê)�”}”(hŒ ``bool xnet``”h]”jð)�”}”(hj£h]”hŒ bool xnet”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mòhj�ubj)�”}”(hhh]”jl)�”}”(hŒpacket is crossing netns”h]”hŒpacket is crossing netns”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¸h´Mòhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸h´Mòhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjEubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÞh]”hŒ Description”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MôhjEubjl)�”}”(hX\skb_scrub_packet can be used after encapsulating or decapsulating a packet into/from a tunnel. Some information have to be cleared during these operations. skb_scrub_packet can also be used to clean a skb before injecting it in another namespace (**xnet** == true). We have to clear all information in the skb that could impact namespace isolation.”h]”(hŒ÷skb_scrub_packet can be used after encapsulating or decapsulating a packet into/from a tunnel. Some information have to be cleared during these operations. skb_scrub_packet can also be used to clean a skb before injecting it in another namespace (”…”�”•}”(hjôh²hh³Nh´Nubj›)�”}”(hŒ**xnet**”h]”hŒxnet”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjôubhŒ] == true). We have to clear all information in the skb that could impact namespace isolation.”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MóhjEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_eth_pop (C function)”Œ c.skb_eth_pop”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ%int skb_eth_pop (struct sk_buff *skb)”h]”j )�”}”(hŒ$int skb_eth_pop(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj1h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1h²hh³jCh´MÛubj3)�”}”(hŒ skb_eth_pop”h]”j9)�”}”(hŒ skb_eth_pop”h]”hŒ skb_eth_pop”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj1h²hh³jCh´MÛubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jXsbŒ c.skb_eth_pop”†”asbuh1hhjnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnubj )�”}”(hj h]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjnubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj1h²hh³jCh´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj-h²hh³jCh´MÛubah}”(h]”j(ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jCh´MÛhj*h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Drop the Ethernet header at the head of a packet”h]”hŒ0Drop the Ethernet header at the head of a packet”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÛhjòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj*h²hh³jCh´MÛubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒõ**Parameters** ``struct sk_buff *skb`` Socket buffer to modify **Description** Drop the Ethernet header of **skb**. Expects that skb->data points to the mac header and that no VLAN tags are present. Returns 0 on success, -errno otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mßhjubjß)�”}”(hhh]”jä)�”}”(hŒ0``struct sk_buff *skb`` Socket buffer to modify ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj6h]”hŒstruct sk_buff *skb”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÝhj0ubj)�”}”(hhh]”jl)�”}”(hŒSocket buffer to modify”h]”hŒSocket buffer to modify”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKh´MÝhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKh´MÝhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjqh]”hŒ Description”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mßhjubjl)�”}”(hŒ$Drop the Ethernet header of **skb**.”h]”(hŒDrop the Ethernet header of ”…”�”}”(hj‡h²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡ubhŒ.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÞhjubjl)�”}”(hŒRExpects that skb->data points to the mac header and that no VLAN tags are present.”h]”hŒRExpects that skb->data points to the mac header and that no VLAN tags are present.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Màhjubjl)�”}”(hŒ'Returns 0 on success, -errno otherwise.”h]”hŒ'Returns 0 on success, -errno otherwise.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mãhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_eth_push (C function)”Œc.skb_eth_push”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZint skb_eth_push (struct sk_buff *skb, const unsigned char *dst, const unsigned char *src)”h]”j )�”}”(hŒYint skb_eth_push(struct sk_buff *skb, const unsigned char *dst, const unsigned char *src)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjâh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâh²hh³jôh´Mõubj3)�”}”(hŒ skb_eth_push”h]”j9)�”}”(hŒ skb_eth_push”h]”hŒ skb_eth_push”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjâh²hh³jôh´Mõubj¡ )�”}”(hŒI(struct sk_buff *skb, const unsigned char *dst, const unsigned char *src)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jCŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j sbŒc.skb_eth_push”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒconst unsigned char *dst”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ubj )�”}”(hj h]”hŒ*”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‘ubj9)�”}”(hŒdst”h]”hŒdst”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒconst unsigned char *src”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjâh²hh³jôh´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÞh²hh³jôh´Mõubah}”(h]”jÙah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jôh´MõhjÛh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Add a new Ethernet header at the head of a packet”h]”hŒ1Add a new Ethernet header at the head of a packet”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mõhj•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÛh²hh³jôh´Mõubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j°jŒj°j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX~**Parameters** ``struct sk_buff *skb`` Socket buffer to modify ``const unsigned char *dst`` Destination MAC address of the new header ``const unsigned char *src`` Source MAC address of the new header **Description** Prepend **skb** with a new Ethernet header. Expects that skb->data points to the mac header, which must be empty. Returns 0 on success, -errno otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjºh]”hŒ Parameters”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mùhj´ubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct sk_buff *skb`` Socket buffer to modify ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÙh]”hŒstruct sk_buff *skb”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M÷hjÓubj)�”}”(hhh]”jl)�”}”(hŒSocket buffer to modify”h]”hŒSocket buffer to modify”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîh´M÷hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîh´M÷hjÐubjä)�”}”(hŒG``const unsigned char *dst`` Destination MAC address of the new header ”h]”(jê)�”}”(hŒ``const unsigned char *dst``”h]”jð)�”}”(hjh]”hŒconst unsigned char *dst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Møhj ubj)�”}”(hhh]”jl)�”}”(hŒ)Destination MAC address of the new header”h]”hŒ)Destination MAC address of the new header”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'h´Møhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'h´MøhjÐubjä)�”}”(hŒB``const unsigned char *src`` Source MAC address of the new header ”h]”(jê)�”}”(hŒ``const unsigned char *src``”h]”jð)�”}”(hjKh]”hŒconst unsigned char *src”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MùhjEubj)�”}”(hhh]”jl)�”}”(hŒ$Source MAC address of the new header”h]”hŒ$Source MAC address of the new header”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`h´Mùhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`h´MùhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj´ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj†h]”hŒ Description”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mûhj´ubjl)�”}”(hŒ+Prepend **skb** with a new Ethernet header.”h]”(hŒPrepend ”…”�”}”(hjœh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœubhŒ with a new Ethernet header.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Múhj´ubjl)�”}”(hŒEExpects that skb->data points to the mac header, which must be empty.”h]”hŒEExpects that skb->data points to the mac header, which must be empty.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mühj´ubjl)�”}”(hŒ'Returns 0 on success, -errno otherwise.”h]”hŒ'Returns 0 on success, -errno otherwise.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mþhj´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_mpls_push (C function)”Œc.skb_mpls_push”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgint skb_mpls_push (struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto, int mac_len, bool ethernet)”h]”j )�”}”(hŒfint skb_mpls_push(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto, int mac_len, bool ethernet)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj÷h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷h²hh³j h´M+ubj3)�”}”(hŒ skb_mpls_push”h]”j9)�”}”(hŒ skb_mpls_push”h]”hŒ skb_mpls_push”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj÷h²hh³j h´M+ubj¡ )�”}”(hŒU(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto, int mac_len, bool ethernet)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4 ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjS ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jX Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j sbŒc.skb_mpls_push”†”asbuh1hhj4 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4 ubj )�”}”(hj h]”hŒ*”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj4 ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0 ubj§ )�”}”(hŒ__be32 mpls_lse”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjª ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¯ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jr Œc.skb_mpls_push”†”asbuh1hhj¦ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦ ubj9)�”}”(hŒmpls_lse”h]”hŒmpls_lse”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0 ubj§ )�”}”(hŒ__be16 mpls_proto”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be16”h]”hŒ__be16”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j÷ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jr Œc.skb_mpls_push”†”asbuh1hhjî ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî ubj9)�”}”(hŒ mpls_proto”h]”hŒ mpls_proto”…”�”}”(hj!!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0 ubj§ )�”}”(hŒ int mac_len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj:!h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj6!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6!ubj9)�”}”(hŒmac_len”h]”hŒmac_len”…”�”}”(hjV!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0 ubj§ )�”}”(hŒ bool ethernet”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjo!h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjk!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjk!ubj9)�”}”(hŒethernet”h]”hŒethernet”…”�”}”(hjŠ!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjk!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj÷h²hh³j h´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjóh²hh³j h´M+ubah}”(h]”jîah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j h´M+hjðh²hubjg)�”}”(hhh]”jl)�”}”(hŒCpush a new MPLS header after mac_len bytes from start of the packet”h]”hŒCpush a new MPLS header after mac_len bytes from start of the packet”…”�”}”(hj´!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M+hj±!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjðh²hh³j h´M+ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÌ!jŒjÌ!j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX£**Parameters** ``struct sk_buff *skb`` buffer ``__be32 mpls_lse`` MPLS label stack entry to push ``__be16 mpls_proto`` ethertype of the new MPLS header (expects 0x8847 or 0x8848) ``int mac_len`` length of the MAC header ``bool ethernet`` flag to indicate if the resulting packet after skb_mpls_push is ethernet **Description** Expects skb->data at mac header. Returns 0 on success, -errno otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÖ!h]”hŒ Parameters”…”�”}”(hjØ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÔ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M/hjÐ!ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjõ!h]”hŒstruct sk_buff *skb”…”�”}”(hj÷!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjó!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M.hjï!ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j "h´M.hj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjï!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j "h´M.hjì!ubjä)�”}”(hŒ3``__be32 mpls_lse`` MPLS label stack entry to push ”h]”(jê)�”}”(hŒ``__be32 mpls_lse``”h]”jð)�”}”(hj."h]”hŒ__be32 mpls_lse”…”�”}”(hj0"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M/hj("ubj)�”}”(hhh]”jl)�”}”(hŒMPLS label stack entry to push”h]”hŒMPLS label stack entry to push”…”�”}”(hjG"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jC"h´M/hjD"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj("ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jC"h´M/hjì!ubjä)�”}”(hŒR``__be16 mpls_proto`` ethertype of the new MPLS header (expects 0x8847 or 0x8848) ”h]”(jê)�”}”(hŒ``__be16 mpls_proto``”h]”jð)�”}”(hjg"h]”hŒ__be16 mpls_proto”…”�”}”(hji"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhje"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M0hja"ubj)�”}”(hhh]”jl)�”}”(hŒ;ethertype of the new MPLS header (expects 0x8847 or 0x8848)”h]”hŒ;ethertype of the new MPLS header (expects 0x8847 or 0x8848)”…”�”}”(hj€"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|"h´M0hj}"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|"h´M0hjì!ubjä)�”}”(hŒ)``int mac_len`` length of the MAC header ”h]”(jê)�”}”(hŒ``int mac_len``”h]”jð)�”}”(hj "h]”hŒ int mac_len”…”�”}”(hj¢"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M1hjš"ubj)�”}”(hhh]”jl)�”}”(hŒlength of the MAC header”h]”hŒlength of the MAC header”…”�”}”(hj¹"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµ"h´M1hj¶"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµ"h´M1hjì!ubjä)�”}”(hŒ[``bool ethernet`` flag to indicate if the resulting packet after skb_mpls_push is ethernet ”h]”(jê)�”}”(hŒ``bool ethernet``”h]”jð)�”}”(hjÙ"h]”hŒ bool ethernet”…”�”}”(hjÛ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M3hjÓ"ubj)�”}”(hhh]”jl)�”}”(hŒHflag to indicate if the resulting packet after skb_mpls_push is ethernet”h]”hŒHflag to indicate if the resulting packet after skb_mpls_push is ethernet”…”�”}”(hjò"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M2hjï"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jî"h´M3hjì!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÐ!ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj#h]”hŒ Description”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M5hjÐ!ubjl)�”}”(hŒ Expects skb->data at mac header.”h]”hŒ Expects skb->data at mac header.”…”�”}”(hj+#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M4hjÐ!ubjl)�”}”(hŒ'Returns 0 on success, -errno otherwise.”h]”hŒ'Returns 0 on success, -errno otherwise.”…”�”}”(hj:#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M6hjÐ!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_mpls_pop (C function)”Œc.skb_mpls_pop”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUint skb_mpls_pop (struct sk_buff *skb, __be16 next_proto, int mac_len, bool ethernet)”h]”j )�”}”(hŒTint skb_mpls_pop(struct sk_buff *skb, __be16 next_proto, int mac_len, bool ethernet)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hji#h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hje#h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje#h²hh³jw#h´Mcubj3)�”}”(hŒ skb_mpls_pop”h]”j9)�”}”(hŒ skb_mpls_pop”h]”hŒ skb_mpls_pop”…”�”}”(hjŠ#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†#ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hje#h²hh³jw#h´Mcubj¡ )�”}”(hŒD(struct sk_buff *skb, __be16 next_proto, int mac_len, bool ethernet)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢#ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÄ#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆ#Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŒ#sbŒc.skb_mpls_pop”†”asbuh1hhj¢#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢#ubj )�”}”(hj h]”hŒ*”…”�”}”(hjò#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢#ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÿ#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž#ubj§ )�”}”(hŒ__be16 next_proto”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be16”h]”hŒ__be16”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j$Œmodname”NŒ classname”Njå jè )�”}”jë ]”jà#Œc.skb_mpls_pop”†”asbuh1hhj$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$ubj9)�”}”(hŒ next_proto”h]”hŒ next_proto”…”�”}”(hjG$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž#ubj§ )�”}”(hŒ int mac_len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj`$h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\$ubj9)�”}”(hŒmac_len”h]”hŒmac_len”…”�”}”(hj|$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž#ubj§ )�”}”(hŒ bool ethernet”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj•$h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‘$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘$ubj9)�”}”(hŒethernet”h]”hŒethernet”…”�”}”(hj°$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž#ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hje#h²hh³jw#h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhja#h²hh³jw#h´Mcubah}”(h]”j\#ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jw#h´Mchj^#h²hubjg)�”}”(hhh]”jl)�”}”(hŒpop the outermost MPLS header”h]”hŒpop the outermost MPLS header”…”�”}”(hjÚ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mchj×$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^#h²hh³jw#h´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jò$jŒjò$j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX>**Parameters** ``struct sk_buff *skb`` buffer ``__be16 next_proto`` ethertype of header after popped MPLS header ``int mac_len`` length of the MAC header ``bool ethernet`` flag to indicate if the packet is ethernet **Description** Expects skb->data at mac header. Returns 0 on success, -errno otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjü$h]”hŒ Parameters”…”�”}”(hjþ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjú$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mghjö$ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj%h]”hŒstruct sk_buff *skb”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mehj%ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj4%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j0%h´Mehj1%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j0%h´Mehj%ubjä)�”}”(hŒC``__be16 next_proto`` ethertype of header after popped MPLS header ”h]”(jê)�”}”(hŒ``__be16 next_proto``”h]”jð)�”}”(hjT%h]”hŒ__be16 next_proto”…”�”}”(hjV%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MfhjN%ubj)�”}”(hhh]”jl)�”}”(hŒ,ethertype of header after popped MPLS header”h]”hŒ,ethertype of header after popped MPLS header”…”�”}”(hjm%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ji%h´Mfhjj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji%h´Mfhj%ubjä)�”}”(hŒ)``int mac_len`` length of the MAC header ”h]”(jê)�”}”(hŒ``int mac_len``”h]”jð)�”}”(hj�%h]”hŒ int mac_len”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mghj‡%ubj)�”}”(hhh]”jl)�”}”(hŒlength of the MAC header”h]”hŒlength of the MAC header”…”�”}”(hj¦%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¢%h´Mghj£%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢%h´Mghj%ubjä)�”}”(hŒ=``bool ethernet`` flag to indicate if the packet is ethernet ”h]”(jê)�”}”(hŒ``bool ethernet``”h]”jð)�”}”(hjÆ%h]”hŒ bool ethernet”…”�”}”(hjÈ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MhhjÀ%ubj)�”}”(hhh]”jl)�”}”(hŒ*flag to indicate if the packet is ethernet”h]”hŒ*flag to indicate if the packet is ethernet”…”�”}”(hjß%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛ%h´MhhjÜ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛ%h´Mhhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjö$ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj&h]”hŒ Description”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mjhjö$ubjl)�”}”(hŒ Expects skb->data at mac header.”h]”hŒ Expects skb->data at mac header.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mihjö$ubjl)�”}”(hŒ'Returns 0 on success, -errno otherwise.”h]”hŒ'Returns 0 on success, -errno otherwise.”…”�”}”(hj&&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mkhjö$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ skb_mpls_update_lse (C function)”Œc.skb_mpls_update_lse”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>int skb_mpls_update_lse (struct sk_buff *skb, __be32 mpls_lse)”h]”j )�”}”(hŒ=int skb_mpls_update_lse(struct sk_buff *skb, __be32 mpls_lse)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjU&h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjQ&h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ&h²hh³jc&h´M—ubj3)�”}”(hŒskb_mpls_update_lse”h]”j9)�”}”(hŒskb_mpls_update_lse”h]”hŒskb_mpls_update_lse”…”�”}”(hjv&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr&ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjQ&h²hh³jc&h´M—ubj¡ )�”}”(hŒ&(struct sk_buff *skb, __be32 mpls_lse)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj’&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ&ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj°&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j²&Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jx&sbŒc.skb_mpls_update_lse”†”asbuh1hhjŽ&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ&ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÞ&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŽ&ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjë&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽ&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŠ&ubj§ )�”}”(hŒ__be32 mpls_lse”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j 'Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÌ&Œc.skb_mpls_update_lse”†”asbuh1hhj'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'ubj9)�”}”(hŒmpls_lse”h]”hŒmpls_lse”…”�”}”(hj3'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŠ&ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjQ&h²hh³jc&h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjM&h²hh³jc&h´M—ubah}”(h]”jH&ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jc&h´M—hjJ&h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,modify outermost MPLS header and update csum”h]”hŒ,modify outermost MPLS header and update csum”…”�”}”(hj]'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M—hjZ'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjJ&h²hh³jc&h´M—ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ju'jŒju'j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒË**Parameters** ``struct sk_buff *skb`` buffer ``__be32 mpls_lse`` new MPLS label stack entry to update to **Description** Expects skb->data at mac header. Returns 0 on success, -errno otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj'h]”hŒ Parameters”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M›hjy'ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjž'h]”hŒstruct sk_buff *skb”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M™hj˜'ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj·'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³'h´M™hj´'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³'h´M™hj•'ubjä)�”}”(hŒ<``__be32 mpls_lse`` new MPLS label stack entry to update to ”h]”(jê)�”}”(hŒ``__be32 mpls_lse``”h]”jð)�”}”(hj×'h]”hŒ__be32 mpls_lse”…”�”}”(hjÙ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MšhjÑ'ubj)�”}”(hhh]”jl)�”}”(hŒ'new MPLS label stack entry to update to”h]”hŒ'new MPLS label stack entry to update to”…”�”}”(hjð'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì'h´Mšhjí'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì'h´Mšhj•'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjy'ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj(h]”hŒ Description”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mœhjy'ubjl)�”}”(hŒ Expects skb->data at mac header.”h]”hŒ Expects skb->data at mac header.”…”�”}”(hj((h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M›hjy'ubjl)�”}”(hŒ'Returns 0 on success, -errno otherwise.”h]”hŒ'Returns 0 on success, -errno otherwise.”…”�”}”(hj7(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M�hjy'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_mpls_dec_ttl (C function)”Œc.skb_mpls_dec_ttl”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*int skb_mpls_dec_ttl (struct sk_buff *skb)”h]”j )�”}”(hŒ)int skb_mpls_dec_ttl(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjf(h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjb(h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hju(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjb(h²hh³jt(h´M¸ubj3)�”}”(hŒskb_mpls_dec_ttl”h]”j9)�”}”(hŒskb_mpls_dec_ttl”h]”hŒskb_mpls_dec_ttl”…”�”}”(hj‡(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ(ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjb(h²hh³jt(h´M¸ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj£(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸ(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸ(ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÁ(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÃ(Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‰(sbŒc.skb_mpls_dec_ttl”†”asbuh1hhjŸ(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸ(ubj )�”}”(hj h]”hŒ*”…”�”}”(hjï(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŸ(ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjü(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj›(ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjb(h²hh³jt(h´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj^(h²hh³jt(h´M¸ubah}”(h]”jY(ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jt(h´M¸hj[(h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.decrement the TTL of the outermost MPLS header”h]”hŒ.decrement the TTL of the outermost MPLS header”…”�”}”(hj&)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¸hj#)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj[(h²hh³jt(h´M¸ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j>)jŒj>)j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒŒ**Parameters** ``struct sk_buff *skb`` buffer **Description** Expects skb->data at mac header. Returns 0 on success, -errno otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjH)h]”hŒ Parameters”…”�”}”(hjJ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjF)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¼hjB)ubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjg)h]”hŒstruct sk_buff *skb”…”�”}”(hji)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhje)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mºhja)ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj€)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|)h´Mºhj})ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|)h´Mºhj^)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjB)ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¢)h]”hŒ Description”…”�”}”(hj¤)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj )ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M¼hjB)ubjl)�”}”(hŒ Expects skb->data at mac header.”h]”hŒ Expects skb->data at mac header.”…”�”}”(hj¸)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M»hjB)ubjl)�”}”(hŒ'Returns 0 on success, -errno otherwise.”h]”hŒ'Returns 0 on success, -errno otherwise.”…”�”}”(hjÇ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M½hjB)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!alloc_skb_with_frags (C function)”Œc.alloc_skb_with_frags”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ�struct sk_buff * alloc_skb_with_frags (unsigned long header_len, unsigned long data_len, int order, int *errcode, gfp_t gfp_mask)”h]”j )�”}”(hŒstruct sk_buff *alloc_skb_with_frags(unsigned long header_len, unsigned long data_len, int order, int *errcode, gfp_t gfp_mask)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjö)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò)h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò)h²hh³j*h´MØubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j*Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œalloc_skb_with_frags”sbŒc.alloc_skb_with_frags”†”asbuh1hhjò)h²hh³j*h´MØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò)h²hh³j*h´MØubj )�”}”(hj h]”hŒ*”…”�”}”(hjD*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjò)h²hh³j*h´MØubj3)�”}”(hŒalloc_skb_with_frags”h]”j9)�”}”(hj3*h]”hŒalloc_skb_with_frags”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQ*ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjò)h²hh³j*h´MØubj¡ )�”}”(hŒ[(unsigned long header_len, unsigned long data_len, int order, int *errcode, gfp_t gfp_mask)”h]”(j§ )�”}”(hŒunsigned long header_len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjp*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjl*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjl*ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjŒ*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjl*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjl*ubj9)�”}”(hŒ header_len”h]”hŒ header_len”…”�”}”(hj¨*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjl*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh*ubj§ )�”}”(hŒunsigned long data_len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÁ*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj½*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½*ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÝ*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj½*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½*ubj9)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hjù*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh*ubj§ )�”}”(hŒ int order”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+ubj9)�”}”(hŒorder”h]”hŒorder”…”�”}”(hj.+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh*ubj§ )�”}”(hŒ int *errcode”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjG+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjC+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC+ubj )�”}”(hj h]”hŒ*”…”�”}”(hjc+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjC+ubj9)�”}”(hŒerrcode”h]”hŒerrcode”…”�”}”(hjp+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh*ubj§ )�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjŒ+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŽ+Œmodname”NŒ classname”Njå jè )�”}”jë ]”j1*Œc.alloc_skb_with_frags”†”asbuh1hhj…+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…+ubj9)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj¸+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh*ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjò)h²hh³j*h´MØubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjî)h²hh³j*h´MØubah}”(h]”jé)ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j*h´MØhjë)h²hubjg)�”}”(hhh]”jl)�”}”(hŒallocate skb with page frags”h]”hŒallocate skb with page frags”…”�”}”(hjâ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MØhjß+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjë)h²hh³j*h´MØubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jú+jŒjú+j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXT**Parameters** ``unsigned long header_len`` size of linear part ``unsigned long data_len`` needed length in frags ``int order`` max page order desired. ``int *errcode`` pointer to error code if any ``gfp_t gfp_mask`` allocation mask **Description** This can be used to allocate a paged skb, given a maximal order for frags.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj,h]”hŒ Parameters”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÜhjþ+ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``unsigned long header_len`` size of linear part ”h]”(jê)�”}”(hŒ``unsigned long header_len``”h]”jð)�”}”(hj#,h]”hŒunsigned long header_len”…”�”}”(hj%,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÚhj,ubj)�”}”(hhh]”jl)�”}”(hŒsize of linear part”h]”hŒsize of linear part”…”�”}”(hj<,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8,h´MÚhj9,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8,h´MÚhj,ubjä)�”}”(hŒ2``unsigned long data_len`` needed length in frags ”h]”(jê)�”}”(hŒ``unsigned long data_len``”h]”jð)�”}”(hj\,h]”hŒunsigned long data_len”…”�”}”(hj^,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÛhjV,ubj)�”}”(hhh]”jl)�”}”(hŒneeded length in frags”h]”hŒneeded length in frags”…”�”}”(hju,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jq,h´MÛhjr,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjV,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jq,h´MÛhj,ubjä)�”}”(hŒ&``int order`` max page order desired. ”h]”(jê)�”}”(hŒ ``int order``”h]”jð)�”}”(hj•,h]”hŒ int order”…”�”}”(hj—,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÜhj�,ubj)�”}”(hhh]”jl)�”}”(hŒmax page order desired.”h]”hŒmax page order desired.”…”�”}”(hj®,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jª,h´MÜhj«,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jª,h´MÜhj,ubjä)�”}”(hŒ.``int *errcode`` pointer to error code if any ”h]”(jê)�”}”(hŒ``int *errcode``”h]”jð)�”}”(hjÎ,h]”hŒ int *errcode”…”�”}”(hjÐ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÝhjÈ,ubj)�”}”(hhh]”jl)�”}”(hŒpointer to error code if any”h]”hŒpointer to error code if any”…”�”}”(hjç,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jã,h´MÝhjä,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jã,h´MÝhj,ubjä)�”}”(hŒ#``gfp_t gfp_mask`` allocation mask ”h]”(jê)�”}”(hŒ``gfp_t gfp_mask``”h]”jð)�”}”(hj-h]”hŒgfp_t gfp_mask”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MÞhj-ubj)�”}”(hhh]”jl)�”}”(hŒallocation mask”h]”hŒallocation mask”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j-h´MÞhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-h´MÞhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjþ+ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjB-h]”hŒ Description”…”�”}”(hjD-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj@-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Màhjþ+ubjl)�”}”(hŒJThis can be used to allocate a paged skb, given a maximal order for frags.”h]”hŒJThis can be used to allocate a paged skb, given a maximal order for frags.”…”�”}”(hjX-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mßhjþ+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_condense (C function)”Œc.skb_condense”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ'void skb_condense (struct sk_buff *skb)”h]”j )�”}”(hŒ&void skb_condense(struct sk_buff *skb)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡-h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjƒ-h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ-h²hh³j•-h´M"ubj3)�”}”(hŒ skb_condense”h]”j9)�”}”(hŒ skb_condense”h]”hŒ skb_condense”…”�”}”(hj¨-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤-ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjƒ-h²hh³j•-h´M"ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÄ-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ-ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjâ-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjß-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jä-Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jª-sbŒc.skb_condense”†”asbuh1hhjÀ-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ-ubj )�”}”(hj h]”hŒ*”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀ-ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼-ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjƒ-h²hh³j•-h´M"ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj-h²hh³j•-h´M"ubah}”(h]”jz-ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j•-h´M"hj|-h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1try to get rid of fragments/frag_list if possible”h]”hŒ1try to get rid of fragments/frag_list if possible”…”�”}”(hjG.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M"hjD.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj|-h²hh³j•-h´M"ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_.jŒj_.j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXŠ**Parameters** ``struct sk_buff *skb`` buffer **Description** Can be used to save memory before skb is added to a busy queue. If packet has bytes in frags and enough tail room in skb->head, pull all of them, so that we can free the frags right now and adjust truesize. **Notes** We do not reallocate skb->head thus can not fail. Caller must re-evaluate skb->truesize if needed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hji.h]”hŒ Parameters”…”�”}”(hjk.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjg.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M&hjc.ubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjˆ.h]”hŒstruct sk_buff *skb”…”�”}”(hjŠ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M#hj‚.ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj¡.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�.h´M#hjž.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�.h´M#hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjc.ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÃ.h]”hŒ Description”…”�”}”(hjÅ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M%hjc.ubjl)�”}”(hŒÎCan be used to save memory before skb is added to a busy queue. If packet has bytes in frags and enough tail room in skb->head, pull all of them, so that we can free the frags right now and adjust truesize.”h]”hŒÎCan be used to save memory before skb is added to a busy queue. If packet has bytes in frags and enough tail room in skb->head, pull all of them, so that we can free the frags right now and adjust truesize.”…”�”}”(hjÙ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M$hjc.ubjl)�”}”(hŒ **Notes**”h]”j›)�”}”(hjê.h]”hŒNotes”…”�”}”(hjì.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjè.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M)hjc.ubjÒ)�”}”(hŒbWe do not reallocate skb->head thus can not fail. Caller must re-evaluate skb->truesize if needed.”h]”jl)�”}”(hŒbWe do not reallocate skb->head thus can not fail. Caller must re-evaluate skb->truesize if needed.”h]”hŒbWe do not reallocate skb->head thus can not fail. Caller must re-evaluate skb->truesize if needed.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M)hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j/h´M)hjc.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__skb_ext_set (C function)”Œc.__skb_ext_set”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSvoid * __skb_ext_set (struct sk_buff *skb, enum skb_ext_id id, struct skb_ext *ext)”h]”j )�”}”(hŒQvoid *__skb_ext_set(struct sk_buff *skb, enum skb_ext_id id, struct skb_ext *ext)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5/h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5/h²hh³jG/h´M‚ubj )�”}”(hj h]”hŒ*”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj5/h²hh³jG/h´M‚ubj3)�”}”(hŒ __skb_ext_set”h]”j9)�”}”(hŒ __skb_ext_set”h]”hŒ __skb_ext_set”…”�”}”(hjg/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc/ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj5/h²hh³jG/h´M‚ubj¡ )�”}”(hŒ>(struct sk_buff *skb, enum skb_ext_id id, struct skb_ext *ext)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjƒ/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj¡/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j£/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já ji/sbŒc.__skb_ext_set”†”asbuh1hhj/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÏ/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj/ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÜ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{/ubj§ )�”}”(hŒenum skb_ext_id id”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjõ/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñ/ubh)�”}”(hhh]”j9)�”}”(hŒ skb_ext_id”h]”hŒ skb_ext_id”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0Œmodname”NŒ classname”Njå jè )�”}”jë ]”j½/Œc.__skb_ext_set”†”asbuh1hhjñ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj10h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñ/ubj9)�”}”(hŒid”h]”hŒid”…”�”}”(hj?0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{/ubj§ )�”}”(hŒstruct skb_ext *ext”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjX0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT0ubh)�”}”(hhh]”j9)�”}”(hŒskb_ext”h]”hŒskb_ext”…”�”}”(hjv0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jx0Œmodname”NŒ classname”Njå jè )�”}”jë ]”j½/Œc.__skb_ext_set”†”asbuh1hhjT0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT0ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¢0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjT0ubj9)�”}”(hŒext”h]”hŒext”…”�”}”(hj¯0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj5/h²hh³jG/h´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj1/h²hh³jG/h´M‚ubah}”(h]”j,/ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jG/h´M‚hj./h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2attach the specified extension storage to this skb”h]”hŒ2attach the specified extension storage to this skb”…”�”}”(hjÙ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M‚hjÖ0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj./h²hh³jG/h´M‚ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñ0jŒjñ0j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` buffer ``enum skb_ext_id id`` extension id ``struct skb_ext *ext`` extension storage previously allocated via __skb_ext_alloc() **Description** Existing extensions, if any, are cleared. Returns the pointer to the extension.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjû0h]”hŒ Parameters”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjù0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M†hjõ0ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sk_buff *skb`` buffer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj1h]”hŒstruct sk_buff *skb”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mƒhj1ubj)�”}”(hhh]”jl)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/1h´Mƒhj01ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/1h´Mƒhj1ubjä)�”}”(hŒ$``enum skb_ext_id id`` extension id ”h]”(jê)�”}”(hŒ``enum skb_ext_id id``”h]”jð)�”}”(hjS1h]”hŒenum skb_ext_id id”…”�”}”(hjU1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M„hjM1ubj)�”}”(hhh]”jl)�”}”(hŒ extension id”h]”hŒ extension id”…”�”}”(hjl1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh1h´M„hji1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh1h´M„hj1ubjä)�”}”(hŒU``struct skb_ext *ext`` extension storage previously allocated via __skb_ext_alloc() ”h]”(jê)�”}”(hŒ``struct skb_ext *ext``”h]”jð)�”}”(hjŒ1h]”hŒstruct skb_ext *ext”…”�”}”(hjŽ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M…hj†1ubj)�”}”(hhh]”jl)�”}”(hŒ7h´Mãubj3)�”}”(hŒnet_iov_inc_ref”h]”j9)�”}”(hŒnet_iov_inc_ref”h]”hŒnet_iov_inc_ref”…”�”}”(hjQ7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM7ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj,7h²hh³j>7h´Mãubj¡ )�”}”(hŒ(struct net_iov *niov)”h]”j§ )�”}”(hŒstruct net_iov *niov”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjm7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhji7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hji7ubh)�”}”(hhh]”j9)�”}”(hŒnet_iov”h]”hŒnet_iov”…”�”}”(hj‹7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jS7sbŒc.net_iov_inc_ref”†”asbuh1hhji7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hji7ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¹7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hji7ubj9)�”}”(hŒniov”h]”hŒniov”…”�”}”(hjÆ7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hje7ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj,7h²hh³j>7h´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj(7h²hh³j>7h´Mãubah}”(h]”j#7ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j>7h´Mãhj%7h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.acquire a non-page_pool reference on a net_iov”h]”hŒ.acquire a non-page_pool reference on a net_iov”…”�”}”(hjð7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mãhjí7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj%7h²hh³j>7h´Mãubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j8jŒj8j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_iov *niov`` net_iov to reference **Description** Acquires a non-pp backing reference (binding->ref) on **niov** regardless of page_pool membership, warning if **niov** does not support non-pp references. Counterpart to net_iov_dec_ref().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mçhj 8ubjß)�”}”(hhh]”jä)�”}”(hŒ.``struct net_iov *niov`` net_iov to reference ”h]”(jê)�”}”(hŒ``struct net_iov *niov``”h]”jð)�”}”(hj18h]”hŒstruct net_iov *niov”…”�”}”(hj38h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mähj+8ubj)�”}”(hhh]”jl)�”}”(hŒnet_iov to reference”h]”hŒnet_iov to reference”…”�”}”(hjJ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jF8h´MähjG8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jF8h´Mähj(8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj 8ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjl8h]”hŒ Description”…”�”}”(hjn8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Mæhj 8ubjl)�”}”(hŒ¼Acquires a non-pp backing reference (binding->ref) on **niov** regardless of page_pool membership, warning if **niov** does not support non-pp references. Counterpart to net_iov_dec_ref().”h]”(hŒ6Acquires a non-pp backing reference (binding->ref) on ”…”�”}”(hj‚8h²hh³Nh´Nubj›)�”}”(hŒ**niov**”h]”hŒniov”…”�”}”(hjŠ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚8ubhŒ0 regardless of page_pool membership, warning if ”…”�”}”(hj‚8h²hh³Nh´Nubj›)�”}”(hŒ**niov**”h]”hŒniov”…”�”}”(hjœ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚8ubhŒF does not support non-pp references. Counterpart to net_iov_dec_ref().”…”�”}”(hj‚8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Måhj 8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnet_iov_dec_ref (C function)”Œc.net_iov_dec_ref”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+void net_iov_dec_ref (struct net_iov *niov)”h]”j )�”}”(hŒ*void net_iov_dec_ref(struct net_iov *niov)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÕ8h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÑ8h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Môubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑ8h²hh³jã8h´Môubj3)�”}”(hŒnet_iov_dec_ref”h]”j9)�”}”(hŒnet_iov_dec_ref”h]”hŒnet_iov_dec_ref”…”�”}”(hjö8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò8ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÑ8h²hh³jã8h´Môubj¡ )�”}”(hŒ(struct net_iov *niov)”h]”j§ )�”}”(hŒstruct net_iov *niov”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9ubh)�”}”(hhh]”j9)�”}”(hŒnet_iov”h]”hŒnet_iov”…”�”}”(hj09h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j29Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jø8sbŒc.net_iov_dec_ref”†”asbuh1hhj9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9ubj )�”}”(hj h]”hŒ*”…”�”}”(hj^9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9ubj9)�”}”(hŒniov”h]”hŒniov”…”�”}”(hjk9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj 9ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÑ8h²hh³jã8h´Môubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÍ8h²hh³jã8h´Môubah}”(h]”jÈ8ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jã8h´MôhjÊ8h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.release a non-page_pool reference on a net_iov”h]”hŒ.release a non-page_pool reference on a net_iov”…”�”}”(hj•9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Môhj’9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÊ8h²hh³jã8h´Môubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j­9jŒj­9j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX **Parameters** ``struct net_iov *niov`` net_iov to unreference **Description** Drops a non-pp backing reference (binding->ref) on **niov** regardless of page_pool membership, warning if **niov** does not support non-pp references. Counterpart to net_iov_inc_ref().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj·9h]”hŒ Parameters”…”�”}”(hj¹9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Møhj±9ubjß)�”}”(hhh]”jä)�”}”(hŒ0``struct net_iov *niov`` net_iov to unreference ”h]”(jê)�”}”(hŒ``struct net_iov *niov``”h]”jð)�”}”(hjÖ9h]”hŒstruct net_iov *niov”…”�”}”(hjØ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÔ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´MõhjÐ9ubj)�”}”(hhh]”jl)�”}”(hŒnet_iov to unreference”h]”hŒnet_iov to unreference”…”�”}”(hjï9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jë9h´Mõhjì9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jë9h´MõhjÍ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±9ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj:h]”hŒ Description”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´M÷hj±9ubjl)�”}”(hŒ¹Drops a non-pp backing reference (binding->ref) on **niov** regardless of page_pool membership, warning if **niov** does not support non-pp references. Counterpart to net_iov_inc_ref().”h]”(hŒ3Drops a non-pp backing reference (binding->ref) on ”…”�”}”(hj':h²hh³Nh´Nubj›)�”}”(hŒ**niov**”h]”hŒniov”…”�”}”(hj/:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj':ubhŒ0 regardless of page_pool membership, warning if ”…”�”}”(hj':h²hh³Nh´Nubj›)�”}”(hŒ**niov**”h]”hŒniov”…”�”}”(hjA:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj':ubhŒF does not support non-pp references. Counterpart to net_iov_inc_ref().”…”�”}”(hj':h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:26: ./net/core/skbuff.c”h´Möhj±9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_ns_capable (C function)”Œc.sk_ns_capable”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSbool sk_ns_capable (const struct sock *sk, struct user_namespace *user_ns, int cap)”h]”j )�”}”(hŒRbool sk_ns_capable(const struct sock *sk, struct user_namespace *user_ns, int cap)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjz:h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjv:h²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjv:h²hh³j‡:h´K¤ubj3)�”}”(hŒ sk_ns_capable”h]”j9)�”}”(hŒ sk_ns_capable”h]”hŒ sk_ns_capable”…”�”}”(hjš:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–:ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjv:h²hh³j‡:h´K¤ubj¡ )�”}”(hŒ@(const struct sock *sk, struct user_namespace *user_ns, int cap)”h]”(j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¶:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²:ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÑ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²:ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjï:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjì:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñ:Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jœ:sbŒc.sk_ns_capable”†”asbuh1hhj²:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²:ubj )�”}”(hj h]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj²:ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj*;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®:ubj§ )�”}”(hŒstruct user_namespace *user_ns”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjC;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?;ubh)�”}”(hhh]”j9)�”}”(hŒuser_namespace”h]”hŒuser_namespace”…”�”}”(hja;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jc;Œmodname”NŒ classname”Njå jè )�”}”jë ]”j ;Œc.sk_ns_capable”†”asbuh1hhj?;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?;ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?;ubj9)�”}”(hŒuser_ns”h]”hŒuser_ns”…”�”}”(hjš;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®:ubj§ )�”}”(hŒint cap”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj³;h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯;ubj9)�”}”(hŒcap”h]”hŒcap”…”�”}”(hjÏ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®:ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjv:h²hh³j‡:h´K¤ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjr:h²hh³j‡:h´K¤ubah}”(h]”jm:ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‡:h´K¤hjo:h²hubjg)�”}”(hhh]”jl)�”}”(hŒGeneral socket capability test”h]”hŒGeneral socket capability test”…”�”}”(hjù;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¤hjö;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjo:h²hh³j‡:h´K¤ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j<jŒj<j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX{**Parameters** ``const struct sock *sk`` Socket to use a capability on or through ``struct user_namespace *user_ns`` The user namespace of the capability to use ``int cap`` The capability to use **Description** Test to see if the opener of the socket had when the socket was created and the current process has the capability **cap** in the user namespace **user_ns**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj<h]”hŒ Parameters”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¨hj<ubjß)�”}”(hhh]”(jä)�”}”(hŒC``const struct sock *sk`` Socket to use a capability on or through ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hj:<h]”hŒconst struct sock *sk”…”�”}”(hj<<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¥hj4<ubj)�”}”(hhh]”jl)�”}”(hŒ(Socket to use a capability on or through”h]”hŒ(Socket to use a capability on or through”…”�”}”(hjS<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jO<h´K¥hjP<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jO<h´K¥hj1<ubjä)�”}”(hŒO``struct user_namespace *user_ns`` The user namespace of the capability to use ”h]”(jê)�”}”(hŒ"``struct user_namespace *user_ns``”h]”jð)�”}”(hjs<h]”hŒstruct user_namespace *user_ns”…”�”}”(hju<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjq<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¦hjm<ubj)�”}”(hhh]”jl)�”}”(hŒ+The user namespace of the capability to use”h]”hŒ+The user namespace of the capability to use”…”�”}”(hjŒ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆ<h´K¦hj‰<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjm<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆ<h´K¦hj1<ubjä)�”}”(hŒ"``int cap`` The capability to use ”h]”(jê)�”}”(hŒ ``int cap``”h]”jð)�”}”(hj¬<h]”hŒint cap”…”�”}”(hj®<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K§hj¦<ubj)�”}”(hhh]”jl)�”}”(hŒThe capability to use”h]”hŒThe capability to use”…”�”}”(hjÅ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ<h´K§hjÂ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ<h´K§hj1<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj<ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjç<h]”hŒ Description”…”�”}”(hjé<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjå<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K©hj<ubjl)�”}”(hŒ�Test to see if the opener of the socket had when the socket was created and the current process has the capability **cap** in the user namespace **user_ns**.”h]”(hŒsTest to see if the opener of the socket had when the socket was created and the current process has the capability ”…”�”}”(hjý<h²hh³Nh´Nubj›)�”}”(hŒ**cap**”h]”hŒcap”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjý<ubhŒ in the user namespace ”…”�”}”(hjý<h²hh³Nh´Nubj›)�”}”(hŒ **user_ns**”h]”hŒuser_ns”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjý<ubhŒ.”…”�”}”(hjý<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¨hj<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_capable (C function)”Œ c.sk_capable”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0bool sk_capable (const struct sock *sk, int cap)”h]”j )�”}”(hŒ/bool sk_capable(const struct sock *sk, int cap)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjP=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjL=h²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL=h²hh³j]=h´K¶ubj3)�”}”(hŒ sk_capable”h]”j9)�”}”(hŒ sk_capable”h]”hŒ sk_capable”…”�”}”(hjp=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjl=ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjL=h²hh³j]=h´K¶ubj¡ )�”}”(hŒ (const struct sock *sk, int cap)”h]”(j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjŒ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆ=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆ=ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj§=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆ=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆ=ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjÅ=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂ=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÇ=Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jr=sbŒ c.sk_capable”†”asbuh1hhjˆ=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆ=ubj )�”}”(hj h]”hŒ*”…”�”}”(hjó=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjˆ=ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj„=ubj§ )�”}”(hŒint cap”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubj9)�”}”(hŒcap”h]”hŒcap”…”�”}”(hj5>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj„=ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjL=h²hh³j]=h´K¶ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjH=h²hh³j]=h´K¶ubah}”(h]”jC=ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j]=h´K¶hjE=h²hubjg)�”}”(hhh]”jl)�”}”(hŒSocket global capability test”h]”hŒSocket global capability test”…”�”}”(hj_>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¶hj\>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjE=h²hh³j]=h´K¶ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jw>jŒjw>j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX%**Parameters** ``const struct sock *sk`` Socket to use a capability on or through ``int cap`` The global capability to use **Description** Test to see if the opener of the socket had when the socket was created and the current process has the capability **cap** in all user namespaces.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�>h]”hŒ Parameters”…”�”}”(hjƒ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Kºhj{>ubjß)�”}”(hhh]”(jä)�”}”(hŒC``const struct sock *sk`` Socket to use a capability on or through ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hj >h]”hŒconst struct sock *sk”…”�”}”(hj¢>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K·hjš>ubj)�”}”(hhh]”jl)�”}”(hŒ(Socket to use a capability on or through”h]”hŒ(Socket to use a capability on or through”…”�”}”(hj¹>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµ>h´K·hj¶>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµ>h´K·hj—>ubjä)�”}”(hŒ)``int cap`` The global capability to use ”h]”(jê)�”}”(hŒ ``int cap``”h]”jð)�”}”(hjÙ>h]”hŒint cap”…”�”}”(hjÛ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¸hjÓ>ubj)�”}”(hhh]”jl)�”}”(hŒThe global capability to use”h]”hŒThe global capability to use”…”�”}”(hjò>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jî>h´K¸hjï>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jî>h´K¸hj—>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj{>ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj?h]”hŒ Description”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Kºhj{>ubjl)�”}”(hŒ’Test to see if the opener of the socket had when the socket was created and the current process has the capability **cap** in all user namespaces.”h]”(hŒsTest to see if the opener of the socket had when the socket was created and the current process has the capability ”…”�”}”(hj*?h²hh³Nh´Nubj›)�”}”(hŒ**cap**”h]”hŒcap”…”�”}”(hj2?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*?ubhŒ in all user namespaces.”…”�”}”(hj*?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´K¹hj{>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_net_capable (C function)”Œc.sk_net_capable”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4bool sk_net_capable (const struct sock *sk, int cap)”h]”j )�”}”(hŒ3bool sk_net_capable(const struct sock *sk, int cap)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjk?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjg?h²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´KÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg?h²hh³jx?h´KÅubj3)�”}”(hŒsk_net_capable”h]”j9)�”}”(hŒsk_net_capable”h]”hŒsk_net_capable”…”�”}”(hj‹?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡?ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjg?h²hh³jx?h´KÅubj¡ )�”}”(hŒ (const struct sock *sk, int cap)”h]”(j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj§?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£?ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÂ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£?ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjà?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jâ?Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�?sbŒc.sk_net_capable”†”asbuh1hhj£?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£?ubj )�”}”(hj h]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj£?ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŸ?ubj§ )�”}”(hŒint cap”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj4@h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj0@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0@ubj9)�”}”(hŒcap”h]”hŒcap”…”�”}”(hjP@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŸ?ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjg?h²hh³jx?h´KÅubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjc?h²hh³jx?h´KÅubah}”(h]”j^?ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jx?h´KÅhj`?h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Network namespace socket capability test”h]”hŒ(Network namespace socket capability test”…”�”}”(hjz@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´KÅhjw@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj`?h²hh³jx?h´KÅubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j’@jŒj’@j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX<**Parameters** ``const struct sock *sk`` Socket to use a capability on or through ``int cap`` The capability to use **Description** Test to see if the opener of the socket had when the socket was created and the current process has the capability **cap** over the network namespace the socket is a member of.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjœ@h]”hŒ Parameters”…”�”}”(hjž@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjš@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´KÉhj–@ubjß)�”}”(hhh]”(jä)�”}”(hŒC``const struct sock *sk`` Socket to use a capability on or through ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hj»@h]”hŒconst struct sock *sk”…”�”}”(hj½@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´KÆhjµ@ubj)�”}”(hhh]”jl)�”}”(hŒ(Socket to use a capability on or through”h]”hŒ(Socket to use a capability on or through”…”�”}”(hjÔ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐ@h´KÆhjÑ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐ@h´KÆhj²@ubjä)�”}”(hŒ"``int cap`` The capability to use ”h]”(jê)�”}”(hŒ ``int cap``”h]”jð)�”}”(hjô@h]”hŒint cap”…”�”}”(hjö@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´KÇhjî@ubj)�”}”(hhh]”jl)�”}”(hŒThe capability to use”h]”hŒThe capability to use”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Ah´KÇhj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Ah´KÇhj²@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–@ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj/Ah]”hŒ Description”…”�”}”(hj1Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´KÉhj–@ubjl)�”}”(hŒ°Test to see if the opener of the socket had when the socket was created and the current process has the capability **cap** over the network namespace the socket is a member of.”h]”(hŒsTest to see if the opener of the socket had when the socket was created and the current process has the capability ”…”�”}”(hjEAh²hh³Nh´Nubj›)�”}”(hŒ**cap**”h]”hŒcap”…”�”}”(hjMAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjEAubhŒ6 over the network namespace the socket is a member of.”…”�”}”(hjEAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´KÈhj–@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_set_memalloc (C function)”Œc.sk_set_memalloc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&void sk_set_memalloc (struct sock *sk)”h]”j )�”}”(hŒ%void sk_set_memalloc(struct sock *sk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†Ah²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚Ah²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Ah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Ah²hh³j”Ah´M)ubj3)�”}”(hŒsk_set_memalloc”h]”j9)�”}”(hŒsk_set_memalloc”h]”hŒsk_set_memalloc”…”�”}”(hj§Ah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£Aubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‚Ah²hh³j”Ah´M)ubj¡ )�”}”(hŒ(struct sock *sk)”h]”j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÃAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿Aubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐAh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿Aubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjáAh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jãAŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j©AsbŒc.sk_set_memalloc”†”asbuh1hhj¿Aubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿Aubj )�”}”(hj h]”hŒ*”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿Aubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj»Aubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‚Ah²hh³j”Ah´M)ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj~Ah²hh³j”Ah´M)ubah}”(h]”jyAah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j”Ah´M)hj{Ah²hubjg)�”}”(hhh]”jl)�”}”(hŒsets ``SOCK_MEMALLOC``”h]”(hŒsets ”…”�”}”(hjFBh²hh³Nh´Nubjð)�”}”(hŒ``SOCK_MEMALLOC``”h]”hŒ SOCK_MEMALLOC”…”�”}”(hjNBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjFBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M)hjCBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj{Ah²hh³j”Ah´M)ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jlBjŒjlBj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒç**Parameters** ``struct sock *sk`` socket to set it on **Description** Set ``SOCK_MEMALLOC`` on a socket for access to emergency reserves. It's the responsibility of the admin to adjust min_free_kbytes to meet the requirements”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvBh]”hŒ Parameters”…”�”}”(hjxBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtBubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M-hjpBubjß)�”}”(hhh]”jä)�”}”(hŒ(``struct sock *sk`` socket to set it on ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj•Bh]”hŒstruct sock *sk”…”�”}”(hj—Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M*hj�Bubj)�”}”(hhh]”jl)�”}”(hŒsocket to set it on”h]”hŒsocket to set it on”…”�”}”(hj®Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªBh´M*hj«Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªBh´M*hjŒBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpBubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÐBh]”hŒ Description”…”�”}”(hjÒBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎBubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M,hjpBubjl)�”}”(hŒ›Set ``SOCK_MEMALLOC`` on a socket for access to emergency reserves. It's the responsibility of the admin to adjust min_free_kbytes to meet the requirements”h]”(hŒSet ”…”�”}”(hjæBh²hh³Nh´Nubjð)�”}”(hŒ``SOCK_MEMALLOC``”h]”hŒ SOCK_MEMALLOC”…”�”}”(hjîBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjæBubhŒˆ on a socket for access to emergency reserves. It’s the responsibility of the admin to adjust min_free_kbytes to meet the requirements”…”�”}”(hjæBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M+hjpBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_alloc (C function)”Œ c.sk_alloc”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒbstruct sock * sk_alloc (struct net *net, int family, gfp_t priority, struct proto *prot, int kern)”h]”j )�”}”(hŒ`struct sock *sk_alloc(struct net *net, int family, gfp_t priority, struct proto *prot, int kern)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj'Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#Ch²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#Ch²hh³j4Ch´M ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjFCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jHCŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œsk_alloc”sbŒ c.sk_alloc”†”asbuh1hhj#Ch²hh³j4Ch´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgCh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#Ch²hh³j4Ch´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hjuCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#Ch²hh³j4Ch´M ubj3)�”}”(hŒsk_alloc”h]”j9)�”}”(hjdCh]”hŒsk_alloc”…”�”}”(hj†Ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚Cubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj#Ch²hh³j4Ch´M ubj¡ )�”}”(hŒK(struct net *net, int family, gfp_t priority, struct proto *prot, int kern)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¡Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Cubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj¿Ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÁCŒmodname”NŒ classname”Njå jè )�”}”jë ]”jbCŒ c.sk_alloc”†”asbuh1hhj�Cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝCh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Cubj )�”}”(hj h]”hŒ*”…”�”}”(hjëCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�Cubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjøCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™Cubj§ )�”}”(hŒ int family”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj Dubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Dubj9)�”}”(hŒfamily”h]”hŒfamily”…”�”}”(hj-Dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™Cubj§ )�”}”(hŒgfp_t priority”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjIDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKDŒmodname”NŒ classname”Njå jè )�”}”jë ]”jbCŒ c.sk_alloc”†”asbuh1hhjBDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBDubj9)�”}”(hŒpriority”h]”hŒpriority”…”�”}”(hjuDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™Cubj§ )�”}”(hŒstruct proto *prot”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŽDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Dh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠDubh)�”}”(hhh]”j9)�”}”(hŒproto”h]”hŒproto”…”�”}”(hj¬Dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j®DŒmodname”NŒ classname”Njå jè )�”}”jë ]”jbCŒ c.sk_alloc”†”asbuh1hhjŠDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠDubj )�”}”(hj h]”hŒ*”…”�”}”(hjØDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŠDubj9)�”}”(hŒprot”h]”hŒprot”…”�”}”(hjåDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™Cubj§ )�”}”(hŒint kern”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjþDh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjúDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjúDubj9)�”}”(hŒkern”h]”hŒkern”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™Cubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj#Ch²hh³j4Ch´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjCh²hh³j4Ch´M ubah}”(h]”jCah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j4Ch´M hjCh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%All socket objects are allocated here”h]”hŒ%All socket objects are allocated here”…”�”}”(hjDEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hjAEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjCh²hh³j4Ch´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j\EjŒj\Ej�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX,**Parameters** ``struct net *net`` the applicable net namespace ``int family`` protocol family ``gfp_t priority`` for allocation (``GFP_KERNEL``, ``GFP_ATOMIC``, etc) ``struct proto *prot`` struct proto associated with this new sock instance ``int kern`` is this to be a kernel socket?”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjfEh]”hŒ Parameters”…”�”}”(hjhEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdEubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hj`Eubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj…Eh]”hŒstruct net *net”…”�”}”(hj‡Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hjEubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hjžEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jšEh´M hj›Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšEh´M hj|Eubjä)�”}”(hŒ``int family`` protocol family ”h]”(jê)�”}”(hŒ``int family``”h]”jð)�”}”(hj¾Eh]”hŒ int family”…”�”}”(hjÀEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hj¸Eubj)�”}”(hhh]”jl)�”}”(hŒprotocol family”h]”hŒprotocol family”…”�”}”(hj×Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓEh´M hjÔEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓEh´M hj|Eubjä)�”}”(hŒH``gfp_t priority`` for allocation (``GFP_KERNEL``, ``GFP_ATOMIC``, etc) ”h]”(jê)�”}”(hŒ``gfp_t priority``”h]”jð)�”}”(hj÷Eh]”hŒgfp_t priority”…”�”}”(hjùEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hjñEubj)�”}”(hhh]”jl)�”}”(hŒ4for allocation (``GFP_KERNEL``, ``GFP_ATOMIC``, etc)”h]”(hŒfor allocation (”…”�”}”(hjFh²hh³Nh´Nubjð)�”}”(hŒ``GFP_KERNEL``”h]”hŒ GFP_KERNEL”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjFubhŒ, ”…”�”}”(hjFh²hh³Nh´Nubjð)�”}”(hŒ``GFP_ATOMIC``”h]”hŒ GFP_ATOMIC”…”�”}”(hj*Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjFubhŒ, etc)”…”�”}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Fh´M hj Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Fh´M hj|Eubjä)�”}”(hŒK``struct proto *prot`` struct proto associated with this new sock instance ”h]”(jê)�”}”(hŒ``struct proto *prot``”h]”jð)�”}”(hjTFh]”hŒstruct proto *prot”…”�”}”(hjVFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjRFubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hjNFubj)�”}”(hhh]”jl)�”}”(hŒ3struct proto associated with this new sock instance”h]”hŒ3struct proto associated with this new sock instance”…”�”}”(hjmFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jiFh´M hjjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jiFh´M hj|Eubjä)�”}”(hŒ+``int kern`` is this to be a kernel socket?”h]”(jê)�”}”(hŒ ``int kern``”h]”jð)�”}”(hj�Fh]”hŒint kern”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hj‡Fubj)�”}”(hhh]”jl)�”}”(hŒis this to be a kernel socket?”h]”hŒis this to be a kernel socket?”…”�”}”(hj¦Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M hj£Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢Fh´M hj|Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj`Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_clone (C function)”Œ c.sk_clone”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOstruct sock * sk_clone (const struct sock *sk, const gfp_t priority, bool lock)”h]”j )�”}”(hŒMstruct sock *sk_clone(const struct sock *sk, const gfp_t priority, bool lock)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjçFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãFh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÅ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõFh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãFh²hh³jôFh´MÅ ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œsk_clone”sbŒ c.sk_clone”†”asbuh1hhjãFh²hh³jôFh´MÅ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãFh²hh³jôFh´MÅ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj5Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjãFh²hh³jôFh´MÅ ubj3)�”}”(hŒsk_clone”h]”j9)�”}”(hj$Gh]”hŒsk_clone”…”�”}”(hjFGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBGubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjãFh²hh³jôFh´MÅ ubj¡ )�”}”(hŒ8(const struct sock *sk, const gfp_t priority, bool lock)”h]”(j§ )�”}”(hŒconst struct sock *sk”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjaGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]Gubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]Gubj)�”}”(hjh]”hŒstruct”…”�”}”(hj|Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]Gubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]Gubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjšGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jœGŒmodname”NŒ classname”Njå jè )�”}”jë ]”j"GŒ c.sk_clone”†”asbuh1hhj]Gubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]Gubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆGh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj]Gubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjÓGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjYGubj§ )�”}”(hŒconst gfp_t priority”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjìGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèGubh)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j HŒmodname”NŒ classname”Njå jè )�”}”jë ]”j"GŒ c.sk_clone”†”asbuh1hhjèGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèGubj9)�”}”(hŒpriority”h]”hŒpriority”…”�”}”(hj6Hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjYGubj§ )�”}”(hŒ bool lock”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjOHh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKHubj9)�”}”(hŒlock”h]”hŒlock”…”�”}”(hjjHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjYGubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjãFh²hh³jôFh´MÅ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjßFh²hh³jôFh´MÅ ubah}”(h]”jÚFah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jôFh´MÅ hjÜFh²hubjg)�”}”(hhh]”jl)�”}”(hŒclone a socket”h]”hŒclone a socket”…”�”}”(hj”Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÅ hj‘Hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÜFh²hh³jôFh´MÅ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬HjŒj¬Hj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXQ**Parameters** ``const struct sock *sk`` the socket to clone ``const gfp_t priority`` for allocation (``GFP_KERNEL``, ``GFP_ATOMIC``, etc) ``bool lock`` if true, lock the cloned sk **Description** If **lock** is true, the clone is locked by bh_lock_sock(), and caller must unlock socket even in error path by bh_unlock_sock().”•h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶Hh]”hŒ Parameters”…”�”}”(hj¸Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÉ hj°Hubjß)�”}”(hhh]”(jä)�”}”(hŒ.``const struct sock *sk`` the socket to clone ”h]”(jê)�”}”(hŒ``const struct sock *sk``”h]”jð)�”}”(hjÕHh]”hŒconst struct sock *sk”…”�”}”(hj×Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓHubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÆ hjÏHubj)�”}”(hhh]”jl)�”}”(hŒthe socket to clone”h]”hŒthe socket to clone”…”�”}”(hjîHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêHh´MÆ hjëHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêHh´MÆ hjÌHubjä)�”}”(hŒN``const gfp_t priority`` for allocation (``GFP_KERNEL``, ``GFP_ATOMIC``, etc) ”h]”(jê)�”}”(hŒ``const gfp_t priority``”h]”jð)�”}”(hjIh]”hŒconst gfp_t priority”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÇ hjIubj)�”}”(hhh]”jl)�”}”(hŒ4for allocation (``GFP_KERNEL``, ``GFP_ATOMIC``, etc)”h]”(hŒfor allocation (”…”�”}”(hj'Ih²hh³Nh´Nubjð)�”}”(hŒ``GFP_KERNEL``”h]”hŒ GFP_KERNEL”…”�”}”(hj/Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'IubhŒ, ”…”�”}”(hj'Ih²hh³Nh´Nubjð)�”}”(hŒ``GFP_ATOMIC``”h]”hŒ GFP_ATOMIC”…”�”}”(hjAIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'IubhŒ, etc)”…”�”}”(hj'Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#Ih´MÇ hj$Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Ih´MÇ hjÌHubjä)�”}”(hŒ*``bool lock`` if true, lock the cloned sk ”h]”(jê)�”}”(hŒ ``bool lock``”h]”jð)�”}”(hjkIh]”hŒ bool lock”…”�”}”(hjmIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjiIubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÈ hjeIubj)�”}”(hhh]”jl)�”}”(hŒif true, lock the cloned sk”h]”hŒif true, lock the cloned sk”…”�”}”(hj„Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€Ih´MÈ hj�Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€Ih´MÈ hjÌHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°Hubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¦Ih]”hŒ Description”…”�”}”(hj¨Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÊ hj°Hubjl)�”}”(hŒ�If **lock** is true, the clone is locked by bh_lock_sock(), and caller must unlock socket even in error path by bh_unlock_sock().”h]”(hŒIf ”…”�”}”(hj¼Ih²hh³Nh´Nubj›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hjÄIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼IubhŒv is true, the clone is locked by bh_lock_sock(), and caller must unlock socket even in error path by bh_unlock_sock().”…”�”}”(hj¼Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÉ hj°Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_set_nospace (C function)”Œc.sk_set_nospace”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ%void sk_set_nospace (struct sock *sk)”h]”j )�”}”(hŒ$void sk_set_nospace(struct sock *sk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjýIh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjùIh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M® ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùIh²hh³j Jh´M® ubj3)�”}”(hŒsk_set_nospace”h]”j9)�”}”(hŒsk_set_nospace”h]”hŒsk_set_nospace”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjùIh²hh³j Jh´M® ubj¡ )�”}”(hŒ(struct sock *sk)”h]”j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj:Jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6Jubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjXJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZJŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j JsbŒc.sk_set_nospace”†”asbuh1hhj6Jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6Jubj )�”}”(hj h]”hŒ*”…”�”}”(hj†Jh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6Jubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj“Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj2Jubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjùIh²hh³j Jh´M® ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjõIh²hh³j Jh´M® ubah}”(h]”jðIah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j Jh´M® hjòIh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0tell the transport a writer is waiting for space”h]”hŒ0tell the transport a writer is waiting for space”…”�”}”(hj½Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M® hjºJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjòIh²hh³j Jh´M® ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÕJjŒjÕJj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sock *sk`` socket **Description** Must be called before the final check of the available send space, so that the transport can not miss the request and forget to call sk->sk_write_space() once space is available again.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjßJh]”hŒ Parameters”…”�”}”(hjáJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÝJubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M² hjÙJubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjþJh]”hŒstruct sock *sk”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjüJubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M¯ hjøJubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKh´M¯ hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjøJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKh´M¯ hjõJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÙJubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj9Kh]”hŒ Description”…”�”}”(hj;Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M± hjÙJubjÒ)�”}”(hŒ¸Must be called before the final check of the available send space, so that the transport can not miss the request and forget to call sk->sk_write_space() once space is available again.”h]”jl)�”}”(hŒ¸Must be called before the final check of the available send space, so that the transport can not miss the request and forget to call sk->sk_write_space() once space is available again.”h]”hŒ¸Must be called before the final check of the available send space, so that the transport can not miss the request and forget to call sk->sk_write_space() once space is available again.”…”�”}”(hjSKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M° hjOKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jaKh´M° hjÙJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_clear_nospace (C function)”Œc.sk_clear_nospace”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ'void sk_clear_nospace (struct sock *sk)”h]”j )�”}”(hŒ&void sk_clear_nospace(struct sock *sk)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjˆKh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„Kh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÆ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„Kh²hh³j–Kh´MÆ ubj3)�”}”(hŒsk_clear_nospace”h]”j9)�”}”(hŒsk_clear_nospace”h]”hŒsk_clear_nospace”…”�”}”(hj©Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥Kubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj„Kh²hh³j–Kh´MÆ ubj¡ )�”}”(hŒ(struct sock *sk)”h]”j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÅKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁKubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjãKh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jåKŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j«KsbŒc.sk_clear_nospace”†”asbuh1hhjÁKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁKubj )�”}”(hj h]”hŒ*”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÁKubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj½Kubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj„Kh²hh³j–Kh´MÆ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj€Kh²hh³j–Kh´MÆ ubah}”(h]”j{Kah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j–Kh´MÆ hj}Kh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1tell the transport no writer is waiting for space”h]”hŒ1tell the transport no writer is waiting for space”…”�”}”(hjHLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÆ hjELh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj}Kh²hh³j–Kh´MÆ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j`LjŒj`Lj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ¥**Parameters** ``struct sock *sk`` socket **Description** Called from ->sk_write_space() handlers, once send space has been made available to writers.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjjLh]”hŒ Parameters”…”�”}”(hjlLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjhLubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÊ hjdLubjß)�”}”(hhh]”jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj‰Lh]”hŒstruct sock *sk”…”�”}”(hj‹Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÇ hjƒLubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj¢Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jžLh´MÇ hjŸLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jžLh´MÇ hj€Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjdLubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÄLh]”hŒ Description”…”�”}”(hjÆLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂLubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÉ hjdLubjÒ)�”}”(hŒ\Called from ->sk_write_space() handlers, once send space has been made available to writers.”h]”jl)�”}”(hŒ\Called from ->sk_write_space() handlers, once send space has been made available to writers.”h]”hŒ\Called from ->sk_write_space() handlers, once send space has been made available to writers.”…”�”}”(hjÞLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÈ hjÚLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jìLh´MÈ hjdLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!skb_page_frag_refill (C function)”Œc.skb_page_frag_refill”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒObool skb_page_frag_refill (unsigned int sz, struct page_frag *pfrag, gfp_t gfp)”h]”j )�”}”(hŒNbool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t gfp)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjMh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M± ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMh²hh³j Mh´M± ubj3)�”}”(hŒskb_page_frag_refill”h]”j9)�”}”(hŒskb_page_frag_refill”h]”hŒskb_page_frag_refill”…”�”}”(hj3Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/Mubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjMh²hh³j Mh´M± ubj¡ )�”}”(hŒ5(unsigned int sz, struct page_frag *pfrag, gfp_t gfp)”h]”(j§ )�”}”(hŒunsigned int sz”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjOMh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKMubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjkMh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKMubj9)�”}”(hŒsz”h]”hŒsz”…”�”}”(hj‡Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjGMubj§ )�”}”(hŒstruct page_frag *pfrag”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœMubh)�”}”(hhh]”j9)�”}”(hŒ page_frag”h]”hŒ page_frag”…”�”}”(hj¾Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÀMŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j5MsbŒc.skb_page_frag_refill”†”asbuh1hhjœMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœMubj )�”}”(hj h]”hŒ*”…”�”}”(hjìMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjœMubj9)�”}”(hŒpfrag”h]”hŒpfrag”…”�”}”(hjùMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjGMubj§ )�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jNŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÚMŒc.skb_page_frag_refill”†”asbuh1hhjNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNubj9)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjANh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjGMubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjMh²hh³j Mh´M± ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj Mh²hh³j Mh´M± ubah}”(h]”jMah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j Mh´M± hjMh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+check that a page_frag contains enough room”h]”hŒ+check that a page_frag contains enough room”…”�”}”(hjkNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M± hjhNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjMh²hh³j Mh´M± ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jƒNjŒjƒNj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX\**Parameters** ``unsigned int sz`` minimum size of the fragment we want to get ``struct page_frag *pfrag`` pointer to page_frag ``gfp_t gfp`` priority for memory allocation **Note** While this allocator tries to use high order pages, there is no guarantee that allocations succeed. Therefore, **sz** MUST be less or equal than PAGE_SIZE.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�Nh]”hŒ Parameters”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mµ hj‡Nubjß)�”}”(hhh]”(jä)�”}”(hŒ@``unsigned int sz`` minimum size of the fragment we want to get ”h]”(jê)�”}”(hŒ``unsigned int sz``”h]”jð)�”}”(hj¬Nh]”hŒunsigned int sz”…”�”}”(hj®Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjªNubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M² hj¦Nubj)�”}”(hhh]”jl)�”}”(hŒ+minimum size of the fragment we want to get”h]”hŒ+minimum size of the fragment we want to get”…”�”}”(hjÅNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁNh´M² hjÂNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁNh´M² hj£Nubjä)�”}”(hŒ1``struct page_frag *pfrag`` pointer to page_frag ”h]”(jê)�”}”(hŒ``struct page_frag *pfrag``”h]”jð)�”}”(hjåNh]”hŒstruct page_frag *pfrag”…”�”}”(hjçNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjãNubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M³ hjßNubj)�”}”(hhh]”jl)�”}”(hŒpointer to page_frag”h]”hŒpointer to page_frag”…”�”}”(hjþNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³júNh´M³ hjûNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³júNh´M³ hj£Nubjä)�”}”(hŒ-``gfp_t gfp`` priority for memory allocation ”h]”(jê)�”}”(hŒ ``gfp_t gfp``”h]”jð)�”}”(hjOh]”hŒ gfp_t gfp”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M´ hjOubj)�”}”(hhh]”jl)�”}”(hŒpriority for memory allocation”h]”hŒpriority for memory allocation”…”�”}”(hj7Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j3Oh´M´ hj4Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3Oh´M´ hj£Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‡Nubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hjYOh]”hŒNote”…”�”}”(hj[Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjWOubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M¶ hj‡Nubjl)�”}”(hŒ›While this allocator tries to use high order pages, there is no guarantee that allocations succeed. Therefore, **sz** MUST be less or equal than PAGE_SIZE.”h]”(hŒoWhile this allocator tries to use high order pages, there is no guarantee that allocations succeed. Therefore, ”…”�”}”(hjoOh²hh³Nh´Nubj›)�”}”(hŒ**sz**”h]”hŒsz”…”�”}”(hjwOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoOubhŒ& MUST be less or equal than PAGE_SIZE.”…”�”}”(hjoOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M¶ hj‡Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_wait_data (C function)”Œc.sk_wait_data”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒJint sk_wait_data (struct sock *sk, long *timeo, const struct sk_buff *skb)”h]”j )�”}”(hŒIint sk_wait_data(struct sock *sk, long *timeo, const struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj°Oh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¬Oh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M/ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬Oh²hh³j¾Oh´M/ ubj3)�”}”(hŒ sk_wait_data”h]”j9)�”}”(hŒ sk_wait_data”h]”hŒ sk_wait_data”…”�”}”(hjÑOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍOubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¬Oh²hh³j¾Oh´M/ ubj¡ )�”}”(hŒ9(struct sock *sk, long *timeo, const struct sk_buff *skb)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjíOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéOubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j PŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÓOsbŒc.sk_wait_data”†”asbuh1hhjéOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéOubj )�”}”(hj h]”hŒ*”…”�”}”(hj9Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjéOubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjFPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjåOubj§ )�”}”(hŒ long *timeo”h]”(jM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj_Ph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[Pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[Pubj )�”}”(hj h]”hŒ*”…”�”}”(hj{Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[Pubj9)�”}”(hŒtimeo”h]”hŒtimeo”…”�”}”(hjˆPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjåOubj§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¡Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Pubj)�”}”(hjh]”hŒstruct”…”�”}”(hj¼Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Pubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÚPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÜPŒmodname”NŒ classname”Njå jè )�”}”jë ]”j'PŒc.sk_wait_data”†”asbuh1hhj�Pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Pubj )�”}”(hj h]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�Pubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjåOubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¬Oh²hh³j¾Oh´M/ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨Oh²hh³j¾Oh´M/ ubah}”(h]”j£Oah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¾Oh´M/ hj¥Oh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+wait for data to arrive at sk_receive_queue”h]”hŒ+wait for data to arrive at sk_receive_queue”…”�”}”(hj=Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M/ hj:Qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥Oh²hh³j¾Oh´M/ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jUQjŒjUQj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX”**Parameters** ``struct sock *sk`` sock to wait on ``long *timeo`` for how long ``const struct sk_buff *skb`` last skb seen on sk_receive_queue **Description** Now socket state including sk->sk_err is changed only under lock, hence we may omit checks after joining wait queue. We check receive queue before schedule() only as optimization; it is very likely that release_sock() added new data.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj_Qh]”hŒ Parameters”…”�”}”(hjaQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M3 hjYQubjß)�”}”(hhh]”(jä)�”}”(hŒ$``struct sock *sk`` sock to wait on ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj~Qh]”hŒstruct sock *sk”…”�”}”(hj€Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M0 hjxQubj)�”}”(hhh]”jl)�”}”(hŒsock to wait on”h]”hŒsock to wait on”…”�”}”(hj—Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“Qh´M0 hj”Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“Qh´M0 hjuQubjä)�”}”(hŒ``long *timeo`` for how long ”h]”(jê)�”}”(hŒ``long *timeo``”h]”jð)�”}”(hj·Qh]”hŒ long *timeo”…”�”}”(hj¹Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµQubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M1 hj±Qubj)�”}”(hhh]”jl)�”}”(hŒ for how long”h]”hŒ for how long”…”�”}”(hjÐQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌQh´M1 hjÍQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌQh´M1 hjuQubjä)�”}”(hŒ@``const struct sk_buff *skb`` last skb seen on sk_receive_queue ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjðQh]”hŒconst struct sk_buff *skb”…”�”}”(hjòQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîQubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M2 hjêQubj)�”}”(hhh]”jl)�”}”(hŒ!last skb seen on sk_receive_queue”h]”hŒ!last skb seen on sk_receive_queue”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jRh´M2 hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jRh´M2 hjuQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYQubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj+Rh]”hŒ Description”…”�”}”(hj-Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M4 hjYQubjl)�”}”(hŒéNow socket state including sk->sk_err is changed only under lock, hence we may omit checks after joining wait queue. We check receive queue before schedule() only as optimization; it is very likely that release_sock() added new data.”h]”hŒéNow socket state including sk->sk_err is changed only under lock, hence we may omit checks after joining wait queue. We check receive queue before schedule() only as optimization; it is very likely that release_sock() added new data.”…”�”}”(hjARh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´M3 hjYQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__sk_mem_schedule (C function)”Œc.__sk_mem_schedule”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;int __sk_mem_schedule (struct sock *sk, int size, int kind)”h]”j )�”}”(hŒ:int __sk_mem_schedule(struct sock *sk, int size, int kind)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjpRh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjlRh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mà ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlRh²hh³j~Rh´Mà ubj3)�”}”(hŒ__sk_mem_schedule”h]”j9)�”}”(hŒ__sk_mem_schedule”h]”hŒ__sk_mem_schedule”…”�”}”(hj‘Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Rubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjlRh²hh³j~Rh´Mà ubj¡ )�”}”(hŒ%(struct sock *sk, int size, int kind)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj­Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©Rubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjËRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÍRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j“RsbŒc.__sk_mem_schedule”†”asbuh1hhj©Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©Rubj )�”}”(hj h]”hŒ*”…”�”}”(hjùRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj©Rubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¥Rubj§ )�”}”(hŒint size”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj;Sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¥Rubj§ )�”}”(hŒint kind”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjTSh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjPSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPSubj9)�”}”(hŒkind”h]”hŒkind”…”�”}”(hjpSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¥Rubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjlRh²hh³j~Rh´Mà ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjhRh²hh³j~Rh´Mà ubah}”(h]”jcRah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j~Rh´Mà hjeRh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.increase sk_forward_alloc and memory_allocated”h]”hŒ.increase sk_forward_alloc and memory_allocated”…”�”}”(hjšSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mà hj—Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjeRh²hh³j~Rh´Mà ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j²SjŒj²Sj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXZ**Parameters** ``struct sock *sk`` socket ``int size`` memory size to allocate ``int kind`` allocation type **Description** If kind is SK_MEM_SEND, it means wmem allocation. Otherwise it means rmem allocation. This function assumes that protocols which have memory_pressure use sk_wmem_queued as write buffer accounting.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¼Sh]”hŒ Parameters”…”�”}”(hj¾Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjºSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÇ hj¶Subjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjÛSh]”hŒstruct sock *sk”…”�”}”(hjÝSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÄ hjÕSubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjôSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jðSh´MÄ hjñSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðSh´MÄ hjÒSubjä)�”}”(hŒ%``int size`` memory size to allocate ”h]”(jê)�”}”(hŒ ``int size``”h]”jð)�”}”(hjTh]”hŒint size”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÅ hjTubj)�”}”(hhh]”jl)�”}”(hŒmemory size to allocate”h]”hŒmemory size to allocate”…”�”}”(hj-Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)Th´MÅ hj*Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)Th´MÅ hjÒSubjä)�”}”(hŒ``int kind`` allocation type ”h]”(jê)�”}”(hŒ ``int kind``”h]”jð)�”}”(hjMTh]”hŒint kind”…”�”}”(hjOTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÆ hjGTubj)�”}”(hhh]”jl)�”}”(hŒallocation type”h]”hŒallocation type”…”�”}”(hjfTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbTh´MÆ hjcTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbTh´MÆ hjÒSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶Subjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjˆTh]”hŒ Description”…”�”}”(hjŠTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÈ hj¶SubjÒ)�”}”(hŒÄIf kind is SK_MEM_SEND, it means wmem allocation. Otherwise it means rmem allocation. This function assumes that protocols which have memory_pressure use sk_wmem_queued as write buffer accounting.”h]”jl)�”}”(hŒÄIf kind is SK_MEM_SEND, it means wmem allocation. Otherwise it means rmem allocation. This function assumes that protocols which have memory_pressure use sk_wmem_queued as write buffer accounting.”h]”hŒÄIf kind is SK_MEM_SEND, it means wmem allocation. Otherwise it means rmem allocation. This function assumes that protocols which have memory_pressure use sk_wmem_queued as write buffer accounting.”…”�”}”(hj¢Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´MÇ hjžTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j°Th´MÇ hj¶Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__sk_mem_reclaim (C function)”Œc.__sk_mem_reclaim”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void __sk_mem_reclaim (struct sock *sk, int amount)”h]”j )�”}”(hŒ2void __sk_mem_reclaim(struct sock *sk, int amount)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj×Th²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÓTh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mï ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓTh²hh³jåTh´Mï ubj3)�”}”(hŒ__sk_mem_reclaim”h]”j9)�”}”(hŒ__sk_mem_reclaim”h]”hŒ__sk_mem_reclaim”…”�”}”(hjøTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôTubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÓTh²hh³jåTh´Mï ubj¡ )�”}”(hŒ(struct sock *sk, int amount)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj2Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j4UŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já júTsbŒc.__sk_mem_reclaim”†”asbuh1hhjUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUubj )�”}”(hj h]”hŒ*”…”�”}”(hj`Uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjUubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjmUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj Uubj§ )�”}”(hŒ int amount”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj†Uh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚Uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Uubj9)�”}”(hŒamount”h]”hŒamount”…”�”}”(hj¢Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj Uubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÓTh²hh³jåTh´Mï ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÏTh²hh³jåTh´Mï ubah}”(h]”jÊTah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jåTh´Mï hjÌTh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-reclaim sk_forward_alloc and memory_allocated”h]”hŒ-reclaim sk_forward_alloc and memory_allocated”…”�”}”(hjÌUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mï hjÉUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÌTh²hh³jåTh´Mï ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jäUjŒjäUj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒu**Parameters** ``struct sock *sk`` socket ``int amount`` number of bytes (rounded down to a PAGE_SIZE multiple)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjîUh]”hŒ Parameters”…”�”}”(hjðUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjìUubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mó hjèUubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj Vh]”hŒstruct sock *sk”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mð hjVubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj&Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"Vh´Mð hj#Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j"Vh´Mð hjVubjä)�”}”(hŒE``int amount`` number of bytes (rounded down to a PAGE_SIZE multiple)”h]”(jê)�”}”(hŒ``int amount``”h]”jð)�”}”(hjFVh]”hŒ int amount”…”�”}”(hjHVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mò hj@Vubj)�”}”(hhh]”jl)�”}”(hŒ6number of bytes (rounded down to a PAGE_SIZE multiple)”h]”hŒ6number of bytes (rounded down to a PAGE_SIZE multiple)”…”�”}”(hj_Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒO/var/lib/git/docbuild/linux/Documentation/networking/kapi:29: ./net/core/sock.c”h´Mñ hj\Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[Vh´Mò hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjèUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$__skb_try_recv_datagram (C function)”Œc.__skb_try_recv_datagram”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ•struct sk_buff * __skb_try_recv_datagram (struct sock *sk, struct sk_buff_head *queue, unsigned int flags, int *off, int *err, struct sk_buff **last)”h]”j )�”}”(hŒ“struct sk_buff *__skb_try_recv_datagram(struct sock *sk, struct sk_buff_head *queue, unsigned int flags, int *off, int *err, struct sk_buff **last)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœVh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Vh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœVh²hh³j­Vh´KÐubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj¿Vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÁVŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ__skb_try_recv_datagram”sbŒc.__skb_try_recv_datagram”†”asbuh1hhjœVh²hh³j­Vh´KÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœVh²hh³j­Vh´KÐubj )�”}”(hj h]”hŒ*”…”�”}”(hjîVh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjœVh²hh³j­Vh´KÐubj3)�”}”(hŒ__skb_try_recv_datagram”h]”j9)�”}”(hjÝVh]”hŒ__skb_try_recv_datagram”…”�”}”(hjÿVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûVubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjœVh²hh³j­Vh´KÐubj¡ )�”}”(hŒl(struct sock *sk, struct sk_buff_head *queue, unsigned int flags, int *off, int *err, struct sk_buff **last)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj8Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:WŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÛVŒc.__skb_try_recv_datagram”†”asbuh1hhjWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWubj )�”}”(hj h]”hŒ*”…”�”}”(hjdWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjWubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjqWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubj§ )�”}”(hŒstruct sk_buff_head *queue”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŠWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†Wubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj¨Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jªWŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÛVŒc.__skb_try_recv_datagram”†”asbuh1hhj†Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†Wubj )�”}”(hj h]”hŒ*”…”�”}”(hjÔWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj†Wubj9)�”}”(hŒqueue”h]”hŒqueue”…”�”}”(hjáWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubj§ )�”}”(hŒunsigned int flags”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjúWh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjöWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöWubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjöWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöWubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj2Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubj§ )�”}”(hŒint *off”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjKXh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjGXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGXubj )�”}”(hj h]”hŒ*”…”�”}”(hjgXh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjGXubj9)�”}”(hŒoff”h]”hŒoff”…”�”}”(hjtXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubj§ )�”}”(hŒint *err”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‰Xubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰Xubj )�”}”(hj h]”hŒ*”…”�”}”(hj©Xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‰Xubj9)�”}”(hŒerr”h]”hŒerr”…”�”}”(hj¶Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubj§ )�”}”(hŒstruct sk_buff **last”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÏXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËXubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjíXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jïXŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÛVŒc.__skb_try_recv_datagram”†”asbuh1hhjËXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËXubj )�”}”(hj h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËXubj )�”}”(hj h]”hŒ*”…”�”}”(hj&Yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËXubj9)�”}”(hŒlast”h]”hŒlast”…”�”}”(hj3Yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjœVh²hh³j­Vh´KÐubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj˜Vh²hh³j­Vh´KÐubah}”(h]”j“Vah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j­Vh´KÐhj•Vh²hubjg)�”}”(hhh]”jl)�”}”(hŒReceive a datagram skbuff”h]”hŒReceive a datagram skbuff”…”�”}”(hj]Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÐhjZYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj•Vh²hh³j­Vh´KÐubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹juYjŒjuYj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX{**Parameters** ``struct sock *sk`` socket ``struct sk_buff_head *queue`` socket queue from which to receive ``unsigned int flags`` MSG\_ flags ``int *off`` an offset in bytes to peek skb from. Returns an offset within an skb where data actually starts ``int *err`` error code returned ``struct sk_buff **last`` set to last peeked message to inform the wait function what to look for when peeking **Description** Get a datagram skbuff, understands the peeking, nonblocking wakeups and possible races. This replaces identical code in packet, raw and udp, as well as the IPX AX.25 and Appletalk. It also finally fixes the long standing peek and read race for datagram sockets. If you alter this routine remember it must be re-entrant. This function will lock the socket if a skb is returned, so the caller needs to unlock the socket in that case (usually by calling skb_free_datagram). Returns NULL with **err** set to -EAGAIN if no data was available or to some other value if an error was detected. * It does not lock socket since today. This function is * free of race conditions. This measure should/can improve * significantly datagram socket latencies at high loads, * when data copying to user space takes lots of time. * (BTW I've just killed the last cli() in IP/IPv6/core/netlink/packet * 8) Great win.) * --ANK (980729) The order of the tests when we find no data waiting are specified quite explicitly by POSIX 1003.1g, don't change them without having the standard around please.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjYh]”hŒ Parameters”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÔhjyYubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjžYh]”hŒstruct sock *sk”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÑhj˜Yubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj·Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³Yh´KÑhj´Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³Yh´KÑhj•Yubjä)�”}”(hŒB``struct sk_buff_head *queue`` socket queue from which to receive ”h]”(jê)�”}”(hŒ``struct sk_buff_head *queue``”h]”jð)�”}”(hj×Yh]”hŒstruct sk_buff_head *queue”…”�”}”(hjÙYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÒhjÑYubj)�”}”(hhh]”jl)�”}”(hŒ"socket queue from which to receive”h]”hŒ"socket queue from which to receive”…”�”}”(hjðYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jìYh´KÒhjíYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jìYh´KÒhj•Yubjä)�”}”(hŒ#``unsigned int flags`` MSG\_ flags ”h]”(jê)�”}”(hŒ``unsigned int flags``”h]”jð)�”}”(hjZh]”hŒunsigned int flags”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÓhj Zubj)�”}”(hhh]”jl)�”}”(hŒ MSG\_ flags”h]”hŒ MSG_ flags”…”�”}”(hj)Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%Zh´KÓhj&Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%Zh´KÓhj•Yubjä)�”}”(hŒm``int *off`` an offset in bytes to peek skb from. Returns an offset within an skb where data actually starts ”h]”(jê)�”}”(hŒ ``int *off``”h]”jð)�”}”(hjIZh]”hŒint *off”…”�”}”(hjKZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjGZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÕhjCZubj)�”}”(hhh]”jl)�”}”(hŒ_an offset in bytes to peek skb from. Returns an offset within an skb where data actually starts”h]”hŒ_an offset in bytes to peek skb from. Returns an offset within an skb where data actually starts”…”�”}”(hjbZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÔhj_Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^Zh´KÕhj•Yubjä)�”}”(hŒ!``int *err`` error code returned ”h]”(jê)�”}”(hŒ ``int *err``”h]”jð)�”}”(hjƒZh]”hŒint *err”…”�”}”(hj…Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÖhj}Zubj)�”}”(hhh]”jl)�”}”(hŒerror code returned”h]”hŒerror code returned”…”�”}”(hjœZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜Zh´KÖhj™Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜Zh´KÖhj•Yubjä)�”}”(hŒo``struct sk_buff **last`` set to last peeked message to inform the wait function what to look for when peeking ”h]”(jê)�”}”(hŒ``struct sk_buff **last``”h]”jð)�”}”(hj¼Zh]”hŒstruct sk_buff **last”…”�”}”(hj¾Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjºZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KØhj¶Zubj)�”}”(hhh]”jl)�”}”(hŒTset to last peeked message to inform the wait function what to look for when peeking”h]”hŒTset to last peeked message to inform the wait function what to look for when peeking”…”�”}”(hjÕZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´K×hjÒZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÑZh´KØhj•Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjyYubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjøZh]”hŒ Description”…”�”}”(hjúZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöZubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÚhjyYubjÒ)�”}”(hXcGet a datagram skbuff, understands the peeking, nonblocking wakeups and possible races. This replaces identical code in packet, raw and udp, as well as the IPX AX.25 and Appletalk. It also finally fixes the long standing peek and read race for datagram sockets. If you alter this routine remember it must be re-entrant. This function will lock the socket if a skb is returned, so the caller needs to unlock the socket in that case (usually by calling skb_free_datagram). Returns NULL with **err** set to -EAGAIN if no data was available or to some other value if an error was detected. * It does not lock socket since today. This function is * free of race conditions. This measure should/can improve * significantly datagram socket latencies at high loads, * when data copying to user space takes lots of time. * (BTW I've just killed the last cli() in IP/IPv6/core/netlink/packet * 8) Great win.) * --ANK (980729) The order of the tests when we find no data waiting are specified quite explicitly by POSIX 1003.1g, don't change them without having the standard around please.”h]”(jl)�”}”(hX?Get a datagram skbuff, understands the peeking, nonblocking wakeups and possible races. This replaces identical code in packet, raw and udp, as well as the IPX AX.25 and Appletalk. It also finally fixes the long standing peek and read race for datagram sockets. If you alter this routine remember it must be re-entrant.”h]”hX?Get a datagram skbuff, understands the peeking, nonblocking wakeups and possible races. This replaces identical code in packet, raw and udp, as well as the IPX AX.25 and Appletalk. It also finally fixes the long standing peek and read race for datagram sockets. If you alter this routine remember it must be re-entrant.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KÙhj[ubjl)�”}”(hX This function will lock the socket if a skb is returned, so the caller needs to unlock the socket in that case (usually by calling skb_free_datagram). Returns NULL with **err** set to -EAGAIN if no data was available or to some other value if an error was detected.”h]”(hŒ©This function will lock the socket if a skb is returned, so the caller needs to unlock the socket in that case (usually by calling skb_free_datagram). Returns NULL with ”…”�”}”(hj![h²hh³Nh´Nubj›)�”}”(hŒ**err**”h]”hŒerr”…”�”}”(hj)[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj![ubhŒY set to -EAGAIN if no data was available or to some other value if an error was detected.”…”�”}”(hj![h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Kßhj[ubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ5It does not lock socket since today. This function is”h]”jl)�”}”(hjK[h]”hŒ5It does not lock socket since today. This function is”…”�”}”(hjM[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KåhjI[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjD[ubjH[)�”}”(hŒ8free of race conditions. This measure should/can improve”h]”jl)�”}”(hjc[h]”hŒ8free of race conditions. This measure should/can improve”…”�”}”(hje[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Kæhja[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjD[ubjH[)�”}”(hŒ6significantly datagram socket latencies at high loads,”h]”jl)�”}”(hj{[h]”hŒ6significantly datagram socket latencies at high loads,”…”�”}”(hj}[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Kçhjy[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjD[ubjH[)�”}”(hŒ3when data copying to user space takes lots of time.”h]”jl)�”}”(hj“[h]”hŒ3when data copying to user space takes lots of time.”…”�”}”(hj•[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Kèhj‘[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjD[ubjH[)�”}”(hŒC(BTW I've just killed the last cli() in IP/IPv6/core/netlink/packet”h]”jl)�”}”(hj«[h]”hŒE(BTW I’ve just killed the last cli() in IP/IPv6/core/netlink/packet”…”�”}”(hj­[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Kéhj©[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjD[ubjH[)�”}”(hŒ8) Great win.)”h]”hŒenumerated_list”“”)�”}”(hhh]”jH[)�”}”(hŒ Great win.)”h]”jl)�”}”(hjÌ[h]”hŒ Great win.)”…”�”}”(hjÎ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´KêhjÊ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjÇ[ubah}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”jEŒstart”Kuh1jÅ[hjÁ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjD[ubjH[)�”}”(hŒ--ANK (980729) ”h]”jl)�”}”(hŒ--ANK (980729)”h]”hŒ--ANK (980729)”…”�”}”(hj÷[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Këhjó[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjD[ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j uh1jB[h³jZ[h´Kåhj[ubjl)�”}”(hŒ¡The order of the tests when we find no data waiting are specified quite explicitly by POSIX 1003.1g, don't change them without having the standard around please.”h]”hŒ£The order of the tests when we find no data waiting are specified quite explicitly by POSIX 1003.1g, don’t change them without having the standard around please.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Kíhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j [h´KÙhjyYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒskb_kill_datagram (C function)”Œc.skb_kill_datagram”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPint skb_kill_datagram (struct sock *sk, struct sk_buff *skb, unsigned int flags)”h]”j )�”}”(hŒOint skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjH\h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjD\h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjD\h²hh³jV\h´Mbubj3)�”}”(hŒskb_kill_datagram”h]”j9)�”}”(hŒskb_kill_datagram”h]”hŒskb_kill_datagram”…”�”}”(hji\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje\ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjD\h²hh³jV\h´Mbubj¡ )�”}”(hŒ:(struct sock *sk, struct sk_buff *skb, unsigned int flags)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj…\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�\ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj£\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj \ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¥\Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jk\sbŒc.skb_kill_datagram”†”asbuh1hhj�\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�\ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÑ\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�\ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjÞ\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj}\ubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj÷\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjó\ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¿\Œc.skb_kill_datagram”†”asbuh1hhjó\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjó\ubj )�”}”(hj h]”hŒ*”…”�”}”(hjA]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjó\ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjN]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj}\ubj§ )�”}”(hŒunsigned int flags”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjg]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjc]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hju]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjc]ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjƒ]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjc]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjc]ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjŸ]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj}\ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjD\h²hh³jV\h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj@\h²hh³jV\h´Mbubah}”(h]”j;\ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jV\h´Mbhj=\h²hubjg)�”}”(hhh]”jl)�”}”(hŒFree a datagram skbuff forcibly”h]”hŒFree a datagram skbuff forcibly”…”�”}”(hjÉ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MbhjÆ]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj=\h²hh³jV\h´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹já]jŒjá]j�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX½**Parameters** ``struct sock *sk`` socket ``struct sk_buff *skb`` datagram skbuff ``unsigned int flags`` MSG\_ flags **Description** This function frees a datagram skbuff that was received by skb_recv_datagram. The flags argument must match the one used for skb_recv_datagram. If the MSG_PEEK flag is set, and the packet is still on the receive queue of the socket, it will be taken off the queue before it is freed. This function currently only disables BH when acquiring the sk_receive_queue lock. Therefore it must not be used in a context where that lock is acquired in an IRQ context. It returns 0 if the packet was removed by us.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjë]h]”hŒ Parameters”…”�”}”(hjí]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjé]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mfhjå]ubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sock *sk`` socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj ^h]”hŒstruct sock *sk”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mchj^ubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj#^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^h´Mchj ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^h´Mchj^ub•+jä)�”}”(hŒ(``struct sk_buff *skb`` datagram skbuff ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjC^h]”hŒstruct sk_buff *skb”…”�”}”(hjE^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjA^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mdhj=^ubj)�”}”(hhh]”jl)�”}”(hŒdatagram skbuff”h]”hŒdatagram skbuff”…”�”}”(hj\^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jX^h´MdhjY^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jX^h´Mdhj^ubjä)�”}”(hŒ#``unsigned int flags`` MSG\_ flags ”h]”(jê)�”}”(hŒ``unsigned int flags``”h]”jð)�”}”(hj|^h]”hŒunsigned int flags”…”�”}”(hj~^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjz^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mehjv^ubj)�”}”(hhh]”jl)�”}”(hŒ MSG\_ flags”h]”hŒ MSG_ flags”…”�”}”(hj•^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘^h´Mehj’^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘^h´Mehj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjå]ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj·^h]”hŒ Description”…”�”}”(hj¹^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mghjå]ubjÒ)�”}”(hXûThis function frees a datagram skbuff that was received by skb_recv_datagram. The flags argument must match the one used for skb_recv_datagram. If the MSG_PEEK flag is set, and the packet is still on the receive queue of the socket, it will be taken off the queue before it is freed. This function currently only disables BH when acquiring the sk_receive_queue lock. Therefore it must not be used in a context where that lock is acquired in an IRQ context. It returns 0 if the packet was removed by us.”h]”(jl)�”}”(hŒ�This function frees a datagram skbuff that was received by skb_recv_datagram. The flags argument must match the one used for skb_recv_datagram.”h]”hŒ�This function frees a datagram skbuff that was received by skb_recv_datagram. The flags argument must match the one used for skb_recv_datagram.”…”�”}”(hjÑ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MfhjÍ^ubjl)�”}”(hŒ‹If the MSG_PEEK flag is set, and the packet is still on the receive queue of the socket, it will be taken off the queue before it is freed.”h]”hŒ‹If the MSG_PEEK flag is set, and the packet is still on the receive queue of the socket, it will be taken off the queue before it is freed.”…”�”}”(hjà^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MjhjÍ^ubjl)�”}”(hŒ­This function currently only disables BH when acquiring the sk_receive_queue lock. Therefore it must not be used in a context where that lock is acquired in an IRQ context.”h]”hŒ­This function currently only disables BH when acquiring the sk_receive_queue lock. Therefore it must not be used in a context where that lock is acquired in an IRQ context.”…”�”}”(hjï^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MnhjÍ^ubjl)�”}”(hŒ-It returns 0 if the packet was removed by us.”h]”hŒ-It returns 0 if the packet was removed by us.”…”�”}”(hjþ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MrhjÍ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jß^h´Mfhjå]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ.skb_copy_and_crc32c_datagram_iter (C function)”Œ#c.skb_copy_and_crc32c_datagram_iter”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒvint skb_copy_and_crc32c_datagram_iter (const struct sk_buff *skb, int offset, struct iov_iter *to, int len, u32 *crcp)”h]”j )�”}”(hŒuint skb_copy_and_crc32c_datagram_iter(const struct sk_buff *skb, int offset, struct iov_iter *to, int len, u32 *crcp)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj3_h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj/_h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Móubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/_h²hh³jA_h´Móubj3)�”}”(hŒ!skb_copy_and_crc32c_datagram_iter”h]”j9)�”}”(hŒ!skb_copy_and_crc32c_datagram_iter”h]”hŒ!skb_copy_and_crc32c_datagram_iter”…”�”}”(hjT_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjP_ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj/_h²hh³jA_h´Móubj¡ )�”}”(hŒP(const struct sk_buff *skb, int offset, struct iov_iter *to, int len, u32 *crcp)”h]”(j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjp_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjl_ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj‹_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjl_ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj©_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«_Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jV_sbŒ#c.skb_copy_and_crc32c_datagram_iter”†”asbuh1hhjl_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjl_ubj )�”}”(hj h]”hŒ*”…”�”}”(hj×_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjl_ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjä_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjl_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh_ubj§ )�”}”(hŒ int offset”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjý_h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjù_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù_ubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh_ubj§ )�”}”(hŒstruct iov_iter *to”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj2`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.`ubh)�”}”(hhh]”j9)�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hjP`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jR`Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÅ_Œ#c.skb_copy_and_crc32c_datagram_iter”†”asbuh1hhj.`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.`ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj.`ubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hj‰`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh_ubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¢`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjž`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž`ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj¾`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh_ubj§ )�”}”(hŒ u32 *crcp”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÚ`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÜ`Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÅ_Œ#c.skb_copy_and_crc32c_datagram_iter”†”asbuh1hhjÓ`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓ`ubj )�”}”(hj h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÓ`ubj9)�”}”(hŒcrcp”h]”hŒcrcp”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjh_ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj/_h²hh³jA_h´Móubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj+_h²hh³jA_h´Móubah}”(h]”j&_ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jA_h´Móhj(_h²hubjg)�”}”(hhh]”jl)�”}”(hŒ=Copy datagram to an iovec iterator and update a CRC32C value.”h]”hŒ=Copy datagram to an iovec iterator and update a CRC32C value.”…”�”}”(hj=ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Móhj:ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj(_h²hh³jA_h´Móubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jUajŒjUaj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXc**Parameters** ``const struct sk_buff *skb`` buffer to copy ``int offset`` offset in the buffer to start copying from ``struct iov_iter *to`` iovec iterator to copy to ``int len`` amount of data to copy from buffer to iovec ``u32 *crcp`` pointer to CRC32C value to update **Return** 0 on success, -EFAULT if there was a fault during copy.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj_ah]”hŒ Parameters”…”�”}”(hjaah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]aubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M÷hjYaubjß)�”}”(hhh]”(jä)�”}”(hŒ-``const struct sk_buff *skb`` buffer to copy ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj~ah]”hŒconst struct sk_buff *skb”…”�”}”(hj€ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|aubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mõhjxaubj)�”}”(hhh]”jl)�”}”(hŒbuffer to copy”h]”hŒbuffer to copy”…”�”}”(hj—ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“ah´Mõhj”aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“ah´Mõhjuaubjä)�”}”(hŒ:``int offset`` offset in the buffer to start copying from ”h]”(jê)�”}”(hŒ``int offset``”h]”jð)�”}”(hj·ah]”hŒ int offset”…”�”}”(hj¹ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Möhj±aubj)�”}”(hhh]”jl)�”}”(hŒ*offset in the buffer to start copying from”h]”hŒ*offset in the buffer to start copying from”…”�”}”(hjÐah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌah´MöhjÍaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌah´Möhjuaubjä)�”}”(hŒ2``struct iov_iter *to`` iovec iterator to copy to ”h]”(jê)�”}”(hŒ``struct iov_iter *to``”h]”jð)�”}”(hjðah]”hŒstruct iov_iter *to”…”�”}”(hjòah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M÷hjêaubj)�”}”(hhh]”jl)�”}”(hŒiovec iterator to copy to”h]”hŒiovec iterator to copy to”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbh´M÷hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbh´M÷hjuaubjä)�”}”(hŒ8``int len`` amount of data to copy from buffer to iovec ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hj)bh]”hŒint len”…”�”}”(hj+bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'bubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Møhj#bubj)�”}”(hhh]”jl)�”}”(hŒ+amount of data to copy from buffer to iovec”h]”hŒ+amount of data to copy from buffer to iovec”…”�”}”(hjBbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>bh´Møhj?bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>bh´Møhjuaubjä)�”}”(hŒ0``u32 *crcp`` pointer to CRC32C value to update ”h]”(jê)�”}”(hŒ ``u32 *crcp``”h]”jð)�”}”(hjbbh]”hŒ u32 *crcp”…”�”}”(hjdbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`bubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mùhj\bubj)�”}”(hhh]”jl)�”}”(hŒ!pointer to CRC32C value to update”h]”hŒ!pointer to CRC32C value to update”…”�”}”(hj{bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwbh´Mùhjxbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwbh´Mùhjuaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYaubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj�bh]”hŒReturn”…”�”}”(hjŸbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj›bubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MûhjYaubjl)�”}”(hŒ70 on success, -EFAULT if there was a fault during copy.”h]”hŒ70 on success, -EFAULT if there was a fault during copy.”…”�”}”(hj³bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MûhjYaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#skb_copy_datagram_iter (C function)”Œc.skb_copy_datagram_iter”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`int skb_copy_datagram_iter (const struct sk_buff *skb, int offset, struct iov_iter *to, int len)”h]”j )�”}”(hŒ_int skb_copy_datagram_iter(const struct sk_buff *skb, int offset, struct iov_iter *to, int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjâbh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞbh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞbh²hh³jðbh´M ubj3)�”}”(hŒskb_copy_datagram_iter”h]”j9)�”}”(hŒskb_copy_datagram_iter”h]”hŒskb_copy_datagram_iter”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿbubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÞbh²hh³jðbh´M ubj¡ )�”}”(hŒE(const struct sk_buff *skb, int offset, struct iov_iter *to, int len)”h]”(j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjcubj)�”}”(hjh]”hŒstruct”…”�”}”(hj:ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjcubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjXch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZcŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jcsbŒc.skb_copy_datagram_iter”†”asbuh1hhjcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjcubj )�”}”(hj h]”hŒ*”…”�”}”(hj†ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjcubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj“ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcubj§ )�”}”(hŒ int offset”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¬ch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨cubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjÈch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcubj§ )�”}”(hŒstruct iov_iter *to”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjách²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝcubh)�”}”(hhh]”j9)�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hjÿch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjücubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdŒmodname”NŒ classname”Njå jè )�”}”jë ]”jtcŒc.skb_copy_datagram_iter”†”asbuh1hhjÝcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝcubj )�”}”(hj h]”hŒ*”…”�”}”(hj+dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝcubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hj8dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjQdh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjMdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_dh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMdubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjmdh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÞbh²hh³jðbh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÚbh²hh³jðbh´M ubah}”(h]”jÕbah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jðbh´M hj×bh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%Copy a datagram to an iovec iterator.”h]”hŒ%Copy a datagram to an iovec iterator.”…”�”}”(hj—dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M hj”dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj×bh²hh³jðbh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¯djŒj¯dj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒë**Parameters** ``const struct sk_buff *skb`` buffer to copy ``int offset`` offset in the buffer to start copying from ``struct iov_iter *to`` iovec iterator to copy to ``int len`` amount of data to copy from buffer to iovec”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¹dh]”hŒ Parameters”…”�”}”(hj»dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·dubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mhj³dubjß)�”}”(hhh]”(jä)�”}”(hŒ-``const struct sk_buff *skb`` buffer to copy ”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hjØdh]”hŒconst struct sk_buff *skb”…”�”}”(hjÚdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖdubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MhjÒdubj)�”}”(hhh]”jl)�”}”(hŒbuffer to copy”h]”hŒbuffer to copy”…”�”}”(hjñdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jídh´Mhjîdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jídh´MhjÏdubjä)�”}”(hŒ:``int offset`` offset in the buffer to start copying from ”h]”(jê)�”}”(hŒ``int offset``”h]”jð)�”}”(hjeh]”hŒ int offset”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mhj eubj)�”}”(hhh]”jl)�”}”(hŒ*offset in the buffer to start copying from”h]”hŒ*offset in the buffer to start copying from”…”�”}”(hj*eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j&eh´Mhj'eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j&eh´MhjÏdubjä)�”}”(hŒ2``struct iov_iter *to`` iovec iterator to copy to ”h]”(jê)�”}”(hŒ``struct iov_iter *to``”h]”jð)�”}”(hjJeh]”hŒstruct iov_iter *to”…”�”}”(hjLeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjHeubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MhjDeubj)�”}”(hhh]”jl)�”}”(hŒiovec iterator to copy to”h]”hŒiovec iterator to copy to”…”�”}”(hjceh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_eh´Mhj`eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_eh´MhjÏdubjä)�”}”(hŒ7``int len`` amount of data to copy from buffer to iovec”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hjƒeh]”hŒint len”…”�”}”(hj…eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�eubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mhj}eubj)�”}”(hhh]”jl)�”}”(hŒ+amount of data to copy from buffer to iovec”h]”hŒ+amount of data to copy from buffer to iovec”…”�”}”(hjœeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mhj™eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜eh´MhjÏdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(skb_copy_datagram_from_iter (C function)”Œc.skb_copy_datagram_from_iter”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒaint skb_copy_datagram_from_iter (struct sk_buff *skb, int offset, struct iov_iter *from, int len)”h]”j )�”}”(hŒ`int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset, struct iov_iter *from, int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÝeh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÙeh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙeh²hh³jëeh´Mubj3)�”}”(hŒskb_copy_datagram_from_iter”h]”j9)�”}”(hŒskb_copy_datagram_from_iter”h]”hŒskb_copy_datagram_from_iter”…”�”}”(hjþeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúeubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÙeh²hh³jëeh´Mubj¡ )�”}”(hŒA(struct sk_buff *skb, int offset, struct iov_iter *from, int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj8fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:fŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jfsbŒc.skb_copy_datagram_from_iter”†”asbuh1hhjfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfubj )�”}”(hj h]”hŒ*”…”�”}”(hjffh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjfubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjsfh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfubj§ )�”}”(hŒ int offset”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjŒfh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjˆfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆfubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj¨fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfubj§ )�”}”(hŒstruct iov_iter *from”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÁfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½fubh)�”}”(hhh]”j9)�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hjßfh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jáfŒmodname”NŒ classname”Njå jè )�”}”jë ]”jTfŒc.skb_copy_datagram_from_iter”†”asbuh1hhj½fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½fubj )�”}”(hj h]”hŒ*”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj½fubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj1gh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj-gubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-gubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjMgh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÙeh²hh³jëeh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÕeh²hh³jëeh´Mubah}”(h]”jÐeah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jëeh´MhjÒeh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Copy a datagram from an iov_iter.”h]”hŒ!Copy a datagram from an iov_iter.”…”�”}”(hjwgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mhjtgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÒeh²hh³jëeh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�gjŒj�gj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` buffer to copy ``int offset`` offset in the buffer to start copying to ``struct iov_iter *from`` the copy source ``int len`` amount of data to copy to buffer from iovec **Description** Returns 0 or -EFAULT.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj™gh]”hŒ Parameters”…”�”}”(hj›gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—gubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M!hj“gubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct sk_buff *skb`` buffer to copy ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj¸gh]”hŒstruct sk_buff *skb”…”�”}”(hjºgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶gubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mhj²gubj)�”}”(hhh]”jl)�”}”(hŒbuffer to copy”h]”hŒbuffer to copy”…”�”}”(hjÑgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍgh´MhjÎgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍgh´Mhj¯gubjä)�”}”(hŒ8``int offset`` offset in the buffer to start copying to ”h]”(jê)�”}”(hŒ``int offset``”h]”jð)�”}”(hjñgh]”hŒ int offset”…”�”}”(hjógh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïgubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mhjëgubj)�”}”(hhh]”jl)�”}”(hŒ(offset in the buffer to start copying to”h]”hŒ(offset in the buffer to start copying to”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jhh´Mhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jhh´Mhj¯gubjä)�”}”(hŒ*``struct iov_iter *from`` the copy source ”h]”(jê)�”}”(hŒ``struct iov_iter *from``”h]”jð)�”}”(hj*hh]”hŒstruct iov_iter *from”…”�”}”(hj,hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M hj$hubj)�”}”(hhh]”jl)�”}”(hŒthe copy source”h]”hŒthe copy source”…”�”}”(hjChh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?hh´M hj@hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?hh´M hj¯gubjä)�”}”(hŒ8``int len`` amount of data to copy to buffer from iovec ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hjchh]”hŒint len”…”�”}”(hjehh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjahubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M!hj]hubj)�”}”(hhh]”jl)�”}”(hŒ+amount of data to copy to buffer from iovec”h]”hŒ+amount of data to copy to buffer from iovec”…”�”}”(hj|hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxhh´M!hjyhubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxhh´M!hj¯gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“gubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjžhh]”hŒ Description”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœhubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M#hj“gubjÒ)�”}”(hŒReturns 0 or -EFAULT.”h]”jl)�”}”(hj¶hh]”hŒReturns 0 or -EFAULT.”…”�”}”(hj¸hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M"hj´hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÅhh´M"hj“gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"zerocopy_sg_from_iter (C function)”Œc.zerocopy_sg_from_iter”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFint zerocopy_sg_from_iter (struct sk_buff *skb, struct iov_iter *from)”h]”j )�”}”(hŒEint zerocopy_sg_from_iter(struct sk_buff *skb, struct iov_iter *from)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjìhh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjèhh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèhh²hh³júhh´M ubj3)�”}”(hŒzerocopy_sg_from_iter”h]”j9)�”}”(hŒzerocopy_sg_from_iter”h]”hŒzerocopy_sg_from_iter”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj iubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjèhh²hh³júhh´M ubj¡ )�”}”(hŒ,(struct sk_buff *skb, struct iov_iter *from)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj)ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%iubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjGih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjDiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jIiŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jisbŒc.zerocopy_sg_from_iter”†”asbuh1hhj%iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%iubj )�”}”(hj h]”hŒ*”…”�”}”(hjuih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj%iubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj‚ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!iubj§ )�”}”(hŒstruct iov_iter *from”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj›ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—iubh)�”}”(hhh]”j9)�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hj¹ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»iŒmodname”NŒ classname”Njå jè )�”}”jë ]”jciŒc.zerocopy_sg_from_iter”†”asbuh1hhj—iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—iubj )�”}”(hj h]”hŒ*”…”�”}”(hjåih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—iubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjòih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!iubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjèhh²hh³júhh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjähh²hh³júhh´M ubah}”(h]”jßhah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³júhh´M hjáhh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*Build a zerocopy datagram from an iov_iter”h]”hŒ*Build a zerocopy datagram from an iov_iter”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M hjjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjáhh²hh³júhh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j4jjŒj4jj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` buffer to copy ``struct iov_iter *from`` the source to copy from **Description** The function will first copy up to headlen, and then pin the userspace pages and build frags through them. Returns 0, -EFAULT or -EMSGSIZE.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj>jh]”hŒ Parameters”…”�”}”(hj@jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+kh²hh³j=kh´Moubj3)�”}”(hŒskb_copy_and_csum_datagram_msg”h]”j9)�”}”(hŒskb_copy_and_csum_datagram_msg”h]”hŒskb_copy_and_csum_datagram_msg”…”�”}”(hjPkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLkubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj+kh²hh³j=kh´Moubj¡ )�”}”(hŒ3(struct sk_buff *skb, int hlen, struct msghdr *msg)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjlkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjykh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhkubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjŠkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒkŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jRksbŒ c.skb_copy_and_csum_datagram_msg”†”asbuh1hhjhkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhkubj )�”}”(hj h]”hŒ*”…”�”}”(hj¸kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjhkubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÅkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjdkubj§ )�”}”(hŒint hlen”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÞkh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÚkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚkubj9)�”}”(hŒhlen”h]”hŒhlen”…”�”}”(hjúkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjdkubj§ )�”}”(hŒstruct msghdr *msg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlubh)�”}”(hhh]”j9)�”}”(hŒmsghdr”h]”hŒmsghdr”…”�”}”(hj1lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j3lŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¦kŒ c.skb_copy_and_csum_datagram_msg”†”asbuh1hhjlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlubj )�”}”(hj h]”hŒ*”…”�”}”(hj]lh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjlubj9)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hjjlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjdkubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj+kh²hh³j=kh´Moubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj'kh²hh³j=kh´Moubah}”(h]”j"kah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j=kh´Mohj$kh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Copy and checksum skb to user iovec.”h]”hŒ$Copy and checksum skb to user iovec.”…”�”}”(hj”lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mohj‘lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj$kh²hh³j=kh´Moubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬ljŒj¬lj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` skbuff ``int hlen`` hardware length ``struct msghdr *msg`` destination **Description** Caller _must_ check that skb will fit to this iovec. **Return** 0 - success. -EINVAL - checksum failure. -EFAULT - fault during copy.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶lh]”hŒ Parameters”…”�”}”(hj¸lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´lubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mshj°lubjß)�”}”(hhh]”(jä)�”}”(hŒ``struct sk_buff *skb`` skbuff ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÕlh]”hŒstruct sk_buff *skb”…”�”}”(hj×lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓlubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MphjÏlubj)�”}”(hhh]”jl)�”}”(hŒskbuff”h]”hŒskbuff”…”�”}”(hjîlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêlh´Mphjëlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêlh´MphjÌlubjä)�”}”(hŒ``int hlen`` hardware length ”h]”(jê)�”}”(hŒ ``int hlen``”h]”jð)�”}”(hjmh]”hŒint hlen”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj mubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mqhjmubj)�”}”(hhh]”jl)�”}”(hŒhardware length”h]”hŒhardware length”…”�”}”(hj'mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#mh´Mqhj$mubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#mh´MqhjÌlubjä)�”}”(hŒ#``struct msghdr *msg`` destination ”h]”(jê)�”}”(hŒ``struct msghdr *msg``”h]”jð)�”}”(hjGmh]”hŒstruct msghdr *msg”…”�”}”(hjImh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEmubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MrhjAmubj)�”}”(hhh]”jl)�”}”(hŒ destination”h]”hŒ destination”…”�”}”(hj`mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\mh´Mrhj]mubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\mh´MrhjÌlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°lubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‚mh]”hŒ Description”…”�”}”(hj„mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€mubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mthj°lubjÒ)�”}”(hŒ5Caller _must_ check that skb will fit to this iovec. ”h]”jl)�”}”(hŒ4Caller _must_ check that skb will fit to this iovec.”h]”hŒ4Caller _must_ check that skb will fit to this iovec.”…”�”}”(hjœmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mshj˜mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jªmh´Mshj°lubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj³mh]”hŒReturn”…”�”}”(hjµmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±mubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Muhj°lubjl)�”}”(hŒK0 - success. -EINVAL - checksum failure. -EFAULT - fault during copy.”h]”hŒK0 - success. -EINVAL - checksum failure. -EFAULT - fault during copy.”…”�”}”(hjÉmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mvhj°lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ datagram_poll_queue (C function)”Œc.datagram_poll_queue”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒw__poll_t datagram_poll_queue (struct file *file, struct socket *sock, poll_table *wait, struct sk_buff_head *rcv_queue)”h]”j )�”}”(hŒv__poll_t datagram_poll_queue(struct file *file, struct socket *sock, poll_table *wait, struct sk_buff_head *rcv_queue)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__poll_t”h]”hŒ__poll_t”…”�”}”(hjûmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjømubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jýmŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œdatagram_poll_queue”sbŒc.datagram_poll_queue”†”asbuh1hhjômh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjômh²hh³jnh´Mžubj3)�”}”(hŒdatagram_poll_queue”h]”j9)�”}”(hjnh]”hŒdatagram_poll_queue”…”�”}”(hj/nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+nubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjômh²hh³jnh´Mžubj¡ )�”}”(hŒZ(struct file *file, struct socket *sock, poll_table *wait, struct sk_buff_head *rcv_queue)”h]”(j§ )�”}”(hŒstruct file *file”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjJnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFnubh)�”}”(hhh]”j9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjhnh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjenubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jjnŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnŒc.datagram_poll_queue”†”asbuh1hhjFnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFnubj )�”}”(hj h]”hŒ*”…”�”}”(hj”nh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjFnubj9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj¡nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjBnubj§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjºnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶nubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjØnh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÚnŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnŒc.datagram_poll_queue”†”asbuh1hhj¶nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjönh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶nubj )�”}”(hj h]”hŒ*”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶nubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjBnubj§ )�”}”(hŒpoll_table *wait”h]”(h)�”}”(hhh]”j9)�”}”(hŒ poll_table”h]”hŒ poll_table”…”�”}”(hj-oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j/oŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnŒc.datagram_poll_queue”†”asbuh1hhj&oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&oubj )�”}”(hj h]”hŒ*”…”�”}”(hjYoh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj&oubj9)�”}”(hŒwait”h]”hŒwait”…”�”}”(hjfoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjBnubj§ )�”}”(hŒstruct sk_buff_head *rcv_queue”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{oubh)�”}”(hhh]”j9)�”}”(hŒ sk_buff_head”h]”hŒ sk_buff_head”…”�”}”(hj�oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŸoŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnŒc.datagram_poll_queue”†”asbuh1hhj{oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{oubj )�”}”(hj h]”hŒ*”…”�”}”(hjÉoh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj{oubj9)�”}”(hŒ rcv_queue”h]”hŒ rcv_queue”…”�”}”(hjÖoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjBnubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjômh²hh³jnh´Mžubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjðmh²hh³jnh´Mžubah}”(h]”jëmah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jnh´Mžhjímh²hubjg)�”}”(hhh]”jl)�”}”(hŒ6same as datagram_poll, but on a specific receive queue”h]”hŒ6same as datagram_poll, but on a specific receive queue”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mžhjýoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjímh²hh³jnh´Mžubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jpjŒjpj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hXñ**Parameters** ``struct file *file`` file struct ``struct socket *sock`` socket ``poll_table *wait`` poll table ``struct sk_buff_head *rcv_queue`` receive queue to poll **Description** Performs polling on the given receive queue, handling shutdown, error, and connection state. This is useful for protocols that deliver userspace-bound packets through a custom queue instead of sk->sk_receive_queue. **Return** poll bitmask indicating the socket's current state”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj"ph]”hŒ Parameters”…”�”}”(hj$ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj pubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M¢hjpubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct file *file`` file struct ”h]”(jê)�”}”(hŒ``struct file *file``”h]”jð)�”}”(hjAph]”hŒstruct file *file”…”�”}”(hjCph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?pubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M hj;pubj)�”}”(hhh]”jl)�”}”(hŒ file struct”h]”hŒ file struct”…”�”}”(hjZph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jVph´M hjWpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVph´M hj8pubjä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hjzph]”hŒstruct socket *sock”…”�”}”(hj|ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjxpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M¡hjtpubj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj“ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�ph´M¡hj�pubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�ph´M¡hj8pubjä)�”}”(hŒ ``poll_table *wait`` poll table ”h]”(jê)�”}”(hŒ``poll_table *wait``”h]”jð)�”}”(hj³ph]”hŒpoll_table *wait”…”�”}”(hjµph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±pubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M¢hj­pubj)�”}”(hhh]”jl)�”}”(hŒ poll table”h]”hŒ poll table”…”�”}”(hjÌph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÈph´M¢hjÉpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈph´M¢hj8pubjä)�”}”(hŒ9``struct sk_buff_head *rcv_queue`` receive queue to poll ”h]”(jê)�”}”(hŒ"``struct sk_buff_head *rcv_queue``”h]”jð)�”}”(hjìph]”hŒstruct sk_buff_head *rcv_queue”…”�”}”(hjîph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M£hjæpubj)�”}”(hhh]”jl)�”}”(hŒreceive queue to poll”h]”hŒreceive queue to poll”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqh´M£hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jqh´M£hj8pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj'qh]”hŒ Description”…”�”}”(hj)qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M¥hjpubjÒ)�”}”(hŒ×Performs polling on the given receive queue, handling shutdown, error, and connection state. This is useful for protocols that deliver userspace-bound packets through a custom queue instead of sk->sk_receive_queue. ”h]”jl)�”}”(hŒÖPerforms polling on the given receive queue, handling shutdown, error, and connection state. This is useful for protocols that deliver userspace-bound packets through a custom queue instead of sk->sk_receive_queue.”h]”hŒÖPerforms polling on the given receive queue, handling shutdown, error, and connection state. This is useful for protocols that deliver userspace-bound packets through a custom queue instead of sk->sk_receive_queue.”…”�”}”(hjAqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M¤hj=qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jOqh´M¤hjpubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjXqh]”hŒReturn”…”�”}”(hjZqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjVqubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´M©hjpubjl)�”}”(hŒ2poll bitmask indicating the socket's current state”h]”hŒ4poll bitmask indicating the socket’s current state”…”�”}”(hjnqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mªhjpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdatagram_poll (C function)”Œc.datagram_poll”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQ__poll_t datagram_poll (struct file *file, struct socket *sock, poll_table *wait)”h]”j )�”}”(hŒP__poll_t datagram_poll(struct file *file, struct socket *sock, poll_table *wait)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__poll_t”h]”hŒ__poll_t”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢qŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ datagram_poll”sbŒc.datagram_poll”†”asbuh1hhj™qh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MÜubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™qh²hh³jÁqh´MÜubj3)�”}”(hŒ datagram_poll”h]”j9)�”}”(hj¾qh]”hŒ datagram_poll”…”�”}”(hjÔqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐqubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj™qh²hh³jÁqh´MÜubj¡ )�”}”(hŒ:(struct file *file, struct socket *sock, poll_table *wait)”h]”(j§ )�”}”(hŒstruct file *file”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjïqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëqubh)�”}”(hhh]”j9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jrŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¼qŒc.datagram_poll”†”asbuh1hhjëqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëqubj )�”}”(hj h]”hŒ*”…”�”}”(hj9rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjëqubj9)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjFrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjçqubj§ )�”}”(hŒstruct socket *sock”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj_rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[rubh)�”}”(hhh]”j9)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj}rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jrŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¼qŒc.datagram_poll”†”asbuh1hhj[rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[rubj )�”}”(hj h]”hŒ*”…”�”}”(hj©rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[rubj9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj¶rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjçqubj§ )�”}”(hŒpoll_table *wait”h]”(h)�”}”(hhh]”j9)�”}”(hŒ poll_table”h]”hŒ poll_table”…”�”}”(hjÒrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔrŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¼qŒc.datagram_poll”†”asbuh1hhjËrubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËrubj )�”}”(hj h]”hŒ*”…”�”}”(hjþrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËrubj9)�”}”(hŒwait”h]”hŒwait”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjçqubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj™qh²hh³jÁqh´MÜubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj•qh²hh³jÁqh´MÜubah}”(h]”j�qah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÁqh´MÜhj’qh²hubjg)�”}”(hhh]”jl)�”}”(hŒgeneric datagram poll”h]”hŒgeneric datagram poll”…”�”}”(hj5sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MÜhj2sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj’qh²hh³jÁqh´MÜubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jMsjŒjMsj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hX0**Parameters** ``struct file *file`` file struct ``struct socket *sock`` socket ``poll_table *wait`` poll table **Description** Datagram poll: Again totally generic. This also handles sequenced packet sockets providing the socket receive queue is only ever holding data ready to receive. **Note** when you *don't* use this routine for this protocol, and you use a different write policy from sock_writeable() then please supply your own write_space callback. **Return** poll bitmask indicating the socket's current state”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjWsh]”hŒ Parameters”…”�”}”(hjYsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjUsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MàhjQsubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct file *file`` file struct ”h]”(jê)�”}”(hŒ``struct file *file``”h]”jð)�”}”(hjvsh]”hŒstruct file *file”…”�”}”(hjxsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjtsubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MÝhjpsubj)�”}”(hhh]”jl)�”}”(hŒ file struct”h]”hŒ file struct”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹sh´MÝhjŒsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹sh´MÝhjmsubjä)�”}”(hŒ``struct socket *sock`` socket ”h]”(jê)�”}”(hŒ``struct socket *sock``”h]”jð)�”}”(hj¯sh]”hŒstruct socket *sock”…”�”}”(hj±sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­subah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MÞhj©subj)�”}”(hhh]”jl)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjÈsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄsh´MÞhjÅsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©subeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄsh´MÞhjmsubjä)�”}”(hŒ ``poll_table *wait`` poll table ”h]”(jê)�”}”(hŒ``poll_table *wait``”h]”jð)�”}”(hjèsh]”hŒpoll_table *wait”…”�”}”(hjêsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjæsubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mßhjâsubj)�”}”(hhh]”jl)�”}”(hŒ poll table”h]”hŒ poll table”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jýsh´Mßhjþsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jýsh´Mßhjmsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQsubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj#th]”hŒ Description”…”�”}”(hj%th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!tubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MáhjQsubjÒ)�”}”(hŒ Datagram poll: Again totally generic. This also handles sequenced packet sockets providing the socket receive queue is only ever holding data ready to receive. ”h]”jl)�”}”(hŒŸDatagram poll: Again totally generic. This also handles sequenced packet sockets providing the socket receive queue is only ever holding data ready to receive.”h]”hŒŸDatagram poll: Again totally generic. This also handles sequenced packet sockets providing the socket receive queue is only ever holding data ready to receive.”…”�”}”(hj=th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Màhj9tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jKth´MàhjQsubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hjTth]”hŒNote”…”�”}”(hjVth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjRtubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MähjQsubjß)�”}”(hhh]”jä)�”}”(hŒ¢when you *don't* use this routine for this protocol, and you use a different write policy from sock_writeable() then please supply your own write_space callback. ”h]”(jê)�”}”(hŒ4when you *don't* use this routine for this protocol,”h]”(hŒ when you ”…”�”}”(hjqth²hh³Nh´NubjÑ‹)�”}”(hŒ*don't*”h]”hŒdon’t”…”�”}”(hjyth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jЋhjqtubhŒ$ use this routine for this protocol,”…”�”}”(hjqth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mçhjmtubj)�”}”(hhh]”jl)�”}”(hŒland you use a different write policy from sock_writeable() then please supply your own write_space callback.”h]”hŒland you use a different write policy from sock_writeable() then please supply your own write_space callback.”…”�”}”(hj•th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´Mæhj’tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘th´Mçhjjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQsubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj¸th]”hŒReturn”…”�”}”(hjºth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶tubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MéhjQsubjl)�”}”(hŒ2poll bitmask indicating the socket's current state”h]”hŒ4poll bitmask indicating the socket’s current state”…”�”•}”(hjÎth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”h´MéhjQsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#sk_stream_wait_connect (C function)”Œc.sk_stream_wait_connect”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;int sk_stream_wait_connect (struct sock *sk, long *timeo_p)”h]”j )�”}”(hŒ:int sk_stream_wait_connect(struct sock *sk, long *timeo_p)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjýth²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjùth²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´K6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùth²hh³j uh´K6ubj3)�”}”(hŒsk_stream_wait_connect”h]”j9)�”}”(hŒsk_stream_wait_connect”h]”hŒsk_stream_wait_connect”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjùth²hh³j uh´K6ubj¡ )�”}”(hŒ (struct sock *sk, long *timeo_p)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj:uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6uubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjXuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZuŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j usbŒc.sk_stream_wait_connect”†”asbuh1hhj6uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6uubj )�”}”(hj h]”hŒ*”…”�”}”(hj†uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6uubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj“uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj2uubj§ )�”}”(hŒ long *timeo_p”h]”(jM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¬uh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨uubj )�”}”(hj h]”hŒ*”…”�”}”(hjÈuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¨uubj9)�”}”(hŒtimeo_p”h]”hŒtimeo_p”…”�”}”(hjÕuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj2uubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjùth²hh³j uh´K6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjõth²hh³j uh´K6ubah}”(h]”jðtah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j uh´K6hjòth²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Wait for a socket to get into the connected state”h]”hŒ1Wait for a socket to get into the connected state”…”�”}”(hjÿuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´K6hjüuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjòth²hh³j uh´K6ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jvjŒjvj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒ˜**Parameters** ``struct sock *sk`` sock to wait on ``long *timeo_p`` for how long to wait **Description** Must be called with the socket locked.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj!vh]”hŒ Parameters”…”�”}”(hj#vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´K:hjvubjß)�”}”(hhh]”(jä)�”}”(hŒ$``struct sock *sk`` sock to wait on ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj@vh]”hŒstruct sock *sk”…”�”}”(hjBvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´K7hj:vubj)�”}”(hhh]”jl)�”}”(hŒsock to wait on”h]”hŒsock to wait on”…”�”}”(hjYvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jUvh´K7hjVvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jUvh´K7hj7vubjä)�”}”(hŒ'``long *timeo_p`` for how long to wait ”h]”(jê)�”}”(hŒ``long *timeo_p``”h]”jð)�”}”(hjyvh]”hŒ long *timeo_p”…”�”}”(hj{vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjwvubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´K8hjsvubj)�”}”(hhh]”jl)�”}”(hŒfor how long to wait”h]”hŒfor how long to wait”…”�”}”(hj’vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽvh´K8hj�vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽvh´K8hj7vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjvubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj´vh]”hŒ Description”…”�”}”(hj¶vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´K:hjvubjl)�”}”(hŒ&Must be called with the socket locked.”h]”hŒ&Must be called with the socket locked.”…”�”}”(hjÊvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´K9hjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"sk_stream_wait_memory (C function)”Œc.sk_stream_wait_memory”hNt”auh1híhj" h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:int sk_stream_wait_memory (struct sock *sk, long *timeo_p)”h]”j )�”}”(hŒ9int sk_stream_wait_memory(struct sock *sk, long *timeo_p)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjùvh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõvh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´Kuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõvh²hh³jwh´Kuubj3)�”}”(hŒsk_stream_wait_memory”h]”j9)�”}”(hŒsk_stream_wait_memory”h]”hŒsk_stream_wait_memory”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjõvh²hh³jwh´Kuubj¡ )�”}”(hŒ (struct sock *sk, long *timeo_p)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj6wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2wubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjTwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jVwŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jwsbŒc.sk_stream_wait_memory”†”asbuh1hhj2wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2wubj )�”}”(hj h]”hŒ*”…”�”}”(hj‚wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj2wubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj.wubj§ )�”}”(hŒ long *timeo_p”h]”(jM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¨wh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¤wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤wubj )�”}”(hj h]”hŒ*”…”�”}”(hjÄwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¤wubj9)�”}”(hŒtimeo_p”h]”hŒtimeo_p”…”�”}”(hjÑwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj.wubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjõvh²hh³jwh´Kuubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjñvh²hh³jwh´Kuubah}”(h]”jìvah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jwh´Kuhjîvh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Wait for more memory for a socket”h]”hŒ!Wait for more memory for a socket”…”�”}”(hjûwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´Kuhjøwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjîvh²hh³jwh´Kuubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jxjŒjxj�‰jމj�‰uh1hþh²hhj" h³Nh´Nubj‘)�”}”(hŒa**Parameters** ``struct sock *sk`` socket to wait for memory ``long *timeo_p`` for how long”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjxh]”hŒ Parameters”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´Kyhjxubjß)�”}”(hhh]”(jä)�”}”(hŒ.``struct sock *sk`` socket to wait for memory ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:xubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´Kvhj6xubj)�”}”(hhh]”jl)�”}”(hŒsocket to wait for memory”h]”hŒsocket to wait for memory”…”�”}”(hjUxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQxh´KvhjRxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQxh´Kvhj3xubjä)�”}”(hŒ``long *timeo_p`` for how long”h]”(jê)�”}”(hŒ``long *timeo_p``”h]”jð)�”}”(hjuxh]”hŒ long *timeo_p”…”�”}”(hjwxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjsxubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´Kxhjoxubj)�”}”(hhh]”jl)�”}”(hŒ for how long”h]”hŒ for how long”…”�”}”(hjŽxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:35: ./net/core/stream.c”h´Kwhj‹xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠxh´Kxhj3xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj" h²hh³Nh´Nubeh}”(h]”Œsocket-buffer-functions”ah ]”h"]”Œsocket buffer functions”ah$]”h&]”uh1hµhhËh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Socket Filter”h]”hŒ Socket Filter”…”�”}”(hjÁxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¾xh²hh³hÊh´K'ubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_filter_trim_cap (C function)”Œc.sk_filter_trim_cap”hNt”auh1híhj¾xh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`enum skb_drop_reason sk_filter_trim_cap (struct sock *sk, struct sk_buff *skb, unsigned int cap)”h]”j )�”}”(hŒ_enum skb_drop_reason sk_filter_trim_cap(struct sock *sk, struct sk_buff *skb, unsigned int cap)”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjèxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäxh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´K|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäxh²hh³jõxh´K|ubh)�”}”(hhh]”j9)�”}”(hŒskb_drop_reason”h]”hŒskb_drop_reason”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j yŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œsk_filter_trim_cap”sbŒc.sk_filter_trim_cap”†”asbuh1hhjäxh²hh³jõxh´K|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäxh²hh³jõxh´K|ubj3)�”}”(hŒsk_filter_trim_cap”h]”j9)�”}”(hj%yh]”hŒsk_filter_trim_cap”…”�”}”(hj:yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6yubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjäxh²hh³jõxh´K|ubj¡ )�”}”(hŒ8(struct sock *sk, struct sk_buff *skb, unsigned int cap)”h]”(j§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjUyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbyh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQyubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjsyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”juyŒmodname”NŒ classname”Njå jè )�”}”jë ]”j#yŒc.sk_filter_trim_cap”†”asbuh1hhjQyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQyubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjQyubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj¬yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjMyubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÅyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒyh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁyubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjãyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jåyŒmodname”NŒ classname”Njå jè )�”}”jë ]”j#yŒc.sk_filter_trim_cap”†”asbuh1hhjÁyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁyubj )�”}”(hj h]”hŒ*”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÁyubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjMyubj§ )�”}”(hŒunsigned int cap”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj5zh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj1zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1zubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjQzh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj1zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1zubj9)�”}”(hŒcap”h]”hŒcap”…”�”}”(hjmzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjMyubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjäxh²hh³jõxh´K|ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjàxh²hh³jõxh´K|ubah}”(h]”jÛxah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jõxh´K|hjÝxh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$run a packet through a socket filter”h]”hŒ$run a packet through a socket filter”…”�”}”(hj—zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´K|hj”zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÝxh²hh³jõxh´K|ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¯zjŒj¯zj�‰jމj�‰uh1hþh²hhj¾xh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sock *sk`` sock associated with :c:type:`sk_buff` ``struct sk_buff *skb`` buffer to filter ``unsigned int cap`` limit on how short the eBPF program may trim the packet **Description** Run the eBPF program and then cut skb->data to correct size returned by the program. If pkt_len is 0 we toss packet. If skb->len is smaller than pkt_len we keep whole skb->data. This is the socket level wrapper to bpf_prog_run. It returns 0 if the packet should be accepted or a drop_reason if the packet should be tossed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¹zh]”hŒ Parameters”…”�”}”(hj»zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·zubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´K€hj³zubjß)�”}”(hhh]”(jä)�”}”(hŒ;``struct sock *sk`` sock associated with :c:type:`sk_buff` ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjØzh]”hŒstruct sock *sk”…”�”}”(hjÚzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖzubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´K}hjÒzubj)�”}”(hhh]”jl)�”}”(hŒ&sock associated with :c:type:`sk_buff`”h]”(hŒsock associated with ”…”�”}”(hjñzh²hh³Nh´Nubh)�”}”(hŒ:c:type:`sk_buff`”h]”jð)�”}”(hjûzh]”hŒsk_buff”…”�”}”(hjýzh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjùzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œsk_buff”uh1hh³jízh´K}hjñzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jízh´K}hjîzubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jízh´K}hjÏzubjä)�”}”(hŒ)``struct sk_buff *skb`` buffer to filter ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj0{h]”hŒstruct sk_buff *skb”…”�”}”(hj2{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´K~hj*{ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to filter”h]”hŒbuffer to filter”…”�”}”(hjI{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jE{h´K~hjF{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jE{h´K~hjÏzubjä)�”}”(hŒM``unsigned int cap`` limit on how short the eBPF program may trim the packet ”h]”(jê)�”}”(hŒ``unsigned int cap``”h]”jð)�”}”(hji{h]”hŒunsigned int cap”…”�”}”(hjk{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjg{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´Khjc{ubj)�”}”(hhh]”jl)�”}”(hŒ7limit on how short the eBPF program may trim the packet”h]”hŒ7limit on how short the eBPF program may trim the packet”…”�”}”(hj‚{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~{h´Khj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~{h´KhjÏzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³zubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¤{h]”hŒ Description”…”�”}”(hj¦{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´K�hj³zubjl)�”}”(hXBRun the eBPF program and then cut skb->data to correct size returned by the program. If pkt_len is 0 we toss packet. If skb->len is smaller than pkt_len we keep whole skb->data. This is the socket level wrapper to bpf_prog_run. It returns 0 if the packet should be accepted or a drop_reason if the packet should be tossed.”h]”hXBRun the eBPF program and then cut skb->data to correct size returned by the program. If pkt_len is 0 we toss packet. If skb->len is smaller than pkt_len we keep whole skb->data. This is the socket level wrapper to bpf_prog_run. It returns 0 if the packet should be accepted or a drop_reason if the packet should be tossed.”…”�”}”(hjº{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´K€hj³zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj¾xh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒbpf_prog_create (C function)”Œc.bpf_prog_create”hNt”auh1híhj¾xh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒJint bpf_prog_create (struct bpf_prog **pfp, struct sock_fprog_kern *fprog)”h]”j )�”}”(hŒIint bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjé{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjå{h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjå{h²hh³j÷{h´M`ubj3)�”}”(hŒbpf_prog_create”h]”j9)�”}”(hŒbpf_prog_create”h]”hŒbpf_prog_create”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjå{h²hh³j÷{h´M`ubj¡ )�”}”(hŒ6(struct bpf_prog **pfp, struct sock_fprog_kern *fprog)”h]”(j§ )�”}”(hŒstruct bpf_prog **pfp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj&|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"|ubh)�”}”(hhh]”j9)�”}”(hŒbpf_prog”h]”hŒbpf_prog”…”�”}”(hjD|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jF|Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j |sbŒc.bpf_prog_create”†”asbuh1hhj"|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"|ubj )�”}”(hj h]”hŒ*”…”�”}”(hjr|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj"|ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj"|ubj9)�”}”(hŒpfp”h]”hŒpfp”…”�”}”(hjŒ|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj|ubj§ )�”}”(hŒstruct sock_fprog_kern *fprog”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¥|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡|ubh)�”}”(hhh]”j9)�”}”(hŒsock_fprog_kern”h]”hŒsock_fprog_kern”…”�”}”(hjÃ|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÅ|Œmodname”NŒ classname”Njå jè )�”}”jë ]”j`|Œc.bpf_prog_create”†”asbuh1hhj¡|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡|ubj )�”}”(hj h]”hŒ*”…”�”}”(hjï|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¡|ubj9)�”}”(hŒfprog”h]”hŒfprog”…”�”}”(hjü|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj|ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjå{h²hh³j÷{h´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjá{h²hh³j÷{h´M`ubah}”(h]”jÜ{ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j÷{h´M`hjÞ{h²hubjg)�”}”(hhh]”jl)�”}”(hŒcreate an unattached filter”h]”hŒcreate an unattached filter”…”�”}”(hj&}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M`hj#}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÞ{h²hh³j÷{h´M`ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j>}jŒj>}j�‰jމj�‰uh1hþh²hhj¾xh³Nh´Nubj‘)�”}”(hXž**Parameters** ``struct bpf_prog **pfp`` the unattached filter that is created ``struct sock_fprog_kern *fprog`` the filter program **Description** Create a filter independent of any socket. We first run some sanity checks on it to make sure it does not explode on us later. If an error occurs or there is insufficient memory for the filter a negative errno code is returned. On success the return is zero.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjH}h]”hŒ Parameters”…”�”}”(hjJ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjF}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´MdhjB}ubjß)�”}”(hhh]”(jä)�”}”(hŒ@``struct bpf_prog **pfp`` the unattached filter that is created ”h]”(jê)�”}”(hŒ``struct bpf_prog **pfp``”h]”jð)�”}”(hjg}h]”hŒstruct bpf_prog **pfp”…”�”}”(hji}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhje}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´Mahja}ubj)�”}”(hhh]”jl)�”}”(hŒ%the unattached filter that is created”h]”hŒ%the unattached filter that is created”…”�”}”(hj€}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|}h´Mahj}}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|}h´Mahj^}ubjä)�”}”(hŒ5``struct sock_fprog_kern *fprog`` the filter program ”h]”(jê)�”}”(hŒ!``struct sock_fprog_kern *fprog``”h]”jð)�”}”(hj }h]”hŒstruct sock_fprog_kern *fprog”…”�”}”(hj¢}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´Mbhjš}ubj)�”}”(hhh]”jl)�”}”(hŒthe filter program”h]”hŒthe filter program”…”�”}”(hj¹}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµ}h´Mbhj¶}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµ}h´Mbhj^}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjB}ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÛ}h]”hŒ Description”…”�”}”(hjÝ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´MdhjB}ubjl)�”}”(hXCreate a filter independent of any socket. We first run some sanity checks on it to make sure it does not explode on us later. If an error occurs or there is insufficient memory for the filter a negative errno code is returned. On success the return is zero.”h]”hXCreate a filter independent of any socket. We first run some sanity checks on it to make sure it does not explode on us later. If an error occurs or there is insufficient memory for the filter a negative errno code is returned. On success the return is zero.”…”�”}”(hjñ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´MchjB}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj¾xh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&bpf_prog_create_from_user (C function)”Œc.bpf_prog_create_from_user”hNt”auh1híhj¾xh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ~int bpf_prog_create_from_user (struct bpf_prog **pfp, struct sock_fprog *fprog, bpf_aux_classic_check_t trans, bool save_orig)”h]”j )�”}”(hŒ}int bpf_prog_create_from_user(struct bpf_prog **pfp, struct sock_fprog *fprog, bpf_aux_classic_check_t trans, bool save_orig)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj~h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´MŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~h²hh³j.~h´MŒubj3)�”}”(hŒbpf_prog_create_from_user”h]”j9)�”}”(hŒbpf_prog_create_from_user”h]”hŒbpf_prog_create_from_user”…”�”}”(hjA~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=~ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj~h²hh³j.~h´MŒubj¡ )�”}”(hŒ`(struct bpf_prog **pfp, struct sock_fprog *fprog, bpf_aux_classic_check_t trans, bool save_orig)”h]”(j§ )�”}”(hŒstruct bpf_prog **pfp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj]~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY~ubh)�”}”(hhh]”j9)�”}”(hŒbpf_prog”h]”hŒbpf_prog”…”�”}”(hj{~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j}~Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jC~sbŒc.bpf_prog_create_from_user”†”asbuh1hhjY~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY~ubj )�”}”(hj h]”hŒ*”…”�”}”(hj©~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjY~ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjY~ubj9)�”}”(hŒpfp”h]”hŒpfp”…”�”}”(hjÃ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjY~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjU~ubj§ )�”}”(hŒstruct sock_fprog *fprog”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÜ~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ~ubh)�”}”(hhh]”j9)�”}”(hŒ sock_fprog”h]”hŒ sock_fprog”…”�”}”(hjú~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jü~Œmodname”NŒ classname”Njå jè )�”}”jë ]”j—~Œc.bpf_prog_create_from_user”†”asbuh1hhjØ~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ~ubj )�”}”(hj h]”hŒ*”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjØ~ubj9)�”}”(hŒfprog”h]”hŒfprog”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØ~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjU~ubj§ )�”}”(hŒbpf_aux_classic_check_t trans”h]”(h)�”}”(hhh]”j9)�”}”(hŒbpf_aux_classic_check_t”h]”hŒbpf_aux_classic_check_t”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jQŒmodname”NŒ classname”Njå jè )�”}”jë ]”j—~Œc.bpf_prog_create_from_user”†”asbuh1hhjHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjHubj9)�”}”(hŒtrans”h]”hŒtrans”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjU~ubj§ )�”}”(hŒbool save_orig”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubj9)�”}”(hŒ save_orig”h]”hŒ save_orig”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjU~ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj~h²hh³j.~h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj~h²hh³j.~h´MŒubah}”(h]”j~ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j.~h´MŒhj~h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,create an unattached filter from user buffer”h]”hŒ,create an unattached filter from user buffer”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´MŒhjÖh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj~h²hh³j.~h´MŒubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñjŒjñj�‰jމj�‰uh1hþh²hhj¾xh³Nh´Nubj‘)�”}”(hXÜ**Parameters** ``struct bpf_prog **pfp`` the unattached filter that is created ``struct sock_fprog *fprog`` the filter program ``bpf_aux_classic_check_t trans`` post-classic verifier transformation handler ``bool save_orig`` save classic BPF program **Description** This function effectively does the same as bpf_prog_create(), only that it builds up its insns buffer from user space provided buffer. It also allows for passing a bpf_aux_classic_check_t handler.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjûh]”hŒ Parameters”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M�hjõubjß)�”}”(hhh]”(jä)�”}”(hŒ@``struct bpf_prog **pfp`` the unattached filter that is created ”h]”(jê)�”}”(hŒ``struct bpf_prog **pfp``”h]”jð)�”}”(hj€h]”hŒstruct bpf_prog **pfp”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M�hj€ubj)�”}”(hhh]”jl)�”}”(hŒ%the unattached filter that is created”h]”hŒ%the unattached filter that is created”…”�”}”(hj3€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/€h´M�hj0€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/€h´M�hj€ubjä)�”}”(hŒ0``struct sock_fprog *fprog`` the filter program ”h]”(jê)�”}”(hŒ``struct sock_fprog *fprog``”h]”jð)�”}”(hjS€h]”hŒstruct sock_fprog *fprog”…”�”}”(hjU€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´MŽhjM€ubj)�”}”(hhh]”jl)�”}”(hŒthe filter program”h]”hŒthe filter program”…”�”}”(hjl€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh€h´MŽhji€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh€h´MŽhj€ubjä)�”}”(hŒO``bpf_aux_classic_check_t trans`` post-classic verifier transformation handler ”h]”(jê)�”}”(hŒ!``bpf_aux_classic_check_t trans``”h]”jð)�”}”(hjŒ€h]”hŒbpf_aux_classic_check_t trans”…”�”}”(hjŽ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M�hj†€ubj)�”}”(hhh]”jl)�”}”(hŒ,post-classic verifier transformation handler”h]”hŒ,post-classic verifier transformation handler”…”�”}”(hj¥€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¡€h´M�hj¢€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¡€h´M�hj€ubjä)�”}”(hŒ,``bool save_orig`` save classic BPF program ”h]”(jê)�”}”(hŒ``bool save_orig``”h]”jð)�”}”(hjÅ€h]”hŒbool save_orig”…”�”}”(hjÇ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M�hj¿€ubj)�”}”(hhh]”jl)�”}”(hŒsave classic BPF program”h]”hŒsave classic BPF program”…”�”}”(hjÞ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÚ€h´M�hjÛ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÚ€h´M�hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjþ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M’hjõubjl)�”}”(hŒÄThis function effectively does the same as bpf_prog_create(), only that it builds up its insns buffer from user space provided buffer. It also allows for passing a bpf_aux_classic_check_t handler.”h]”hŒÄThis function effectively does the same as bpf_prog_create(), only that it builds up its insns buffer from user space provided buffer. It also allows for passing a bpf_aux_classic_check_t handler.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M‘hjõubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj¾xh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsk_attach_filter (C function)”Œc.sk_attach_filter”hNt”auh1híhj¾xh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@int sk_attach_filter (struct sock_fprog *fprog, struct sock *sk)”h]”j )�”}”(hŒ?int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjA�h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjA�h²hh³jS�h´Mubj3)�”}”(hŒsk_attach_filter”h]”j9)�”}”(hŒsk_attach_filter”h]”hŒsk_attach_filter”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjb�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjA�h²hh³jS�h´Mubj¡ )�”}”(hŒ+(struct sock_fprog *fprog, struct sock *sk)”h]”(j§ )�”}”(hŒstruct sock_fprog *fprog”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~�ubh)�”}”(hhh]”j9)�”}”(hŒ sock_fprog”h]”hŒ sock_fprog”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj��ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jh�sbŒc.sk_attach_filter”†”asbuh1hhj~�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj~�ubj9)�”}”(hŒfprog”h]”hŒfprog”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjz�ubj§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjô�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjð�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjð�ubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‚Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¼�Œc.sk_attach_filter”†”asbuh1hhjð�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjð�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj>‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjð�ubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjK‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjz�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjA�h²hh³jS�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj=�h²hh³jS�h´Mubah}”(h]”j8�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jS�h´Mhj:�h²hubjg)�”}”(hhh]”jl)�”}”(hŒattach a socket filter”h]”hŒattach a socket filter”…”�”}”(hju‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´Mhjr‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj:�h²hh³jS�h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�‚jŒj�‚j�‰jމj�‰uh1hþh²hhj¾xh³Nh´Nubj‘)�”}”(hXs**Parameters** ``struct sock_fprog *fprog`` the filter program ``struct sock *sk`` the socket to use **Description** Attach the user's filter code. We first run some sanity checks on it to make sure it does not explode on us later. If an error occurs or there is insufficient memory for the filter a negative errno code is returned. On success the return is zero.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj—‚h]”hŒ Parameters”…”�”}”(hj™‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj•‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M hj‘‚ubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct sock_fprog *fprog`` the filter program ”h]”(jê)�”}”(hŒ``struct sock_fprog *fprog``”h]”jð)�”}”(hj¶‚h]”hŒstruct sock_fprog *fprog”…”�”}”(hj¸‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´Mhj°‚ubj)�”}”(hhh]”jl)�”}”(hŒthe filter program”h]”hŒthe filter program”…”�”}”(hjÏ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jË‚h´MhjÌ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jË‚h´Mhj­‚ubjä)�”}”(hŒ&``struct sock *sk`` the socket to use ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjï‚h]”hŒstruct sock *sk”…”�”}”(hjñ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjí‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M hjé‚ubj)�”}”(hhh]”jl)�”}”(hŒthe socket to use”h]”hŒthe socket to use”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒh´M hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒh´M hj­‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘‚ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj*ƒh]”hŒ Description”…”�”}”(hj,ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M hj‘‚ubjl)�”}”(hŒöAttach the user's filter code. We first run some sanity checks on it to make sure it does not explode on us later. If an error occurs or there is insufficient memory for the filter a negative errno code is returned. On success the return is zero.”h]”hŒøAttach the user’s filter code. We first run some sanity checks on it to make sure it does not explode on us later. If an error occurs or there is insufficient memory for the filter a negative errno code is returned. On success the return is zero.”…”�”}”(hj@ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:41: ./net/core/filter.c”h´M hj‘‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj¾xh²hh³Nh´Nubeh}”(h]”Œ socket-filter”ah ]”h"]”Œ socket filter”ah$]”h&]”uh1hµhhËh²hh³hÊh´K'ubh¶)�”}”(hhh]”(h»)�”}”(hŒGeneric Network Statistics”h]”hŒGeneric Network Statistics”…”�”}”(hjaƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj^ƒh²hh³hÊh´K-ubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒgnet_stats_basic (C struct)”Œc.gnet_stats_basic”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgnet_stats_basic”h]”j )�”}”(hŒstruct gnet_stats_basic”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjˆƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„ƒh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„ƒh²hh³j•ƒh´Kubj3)�”}”(hŒgnet_stats_basic”h]”j9)�”}”(hj‚ƒh]”hŒgnet_stats_basic”…”�”}”(hj¨ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤ƒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj„ƒh²hh³j•ƒh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj€ƒh²hh³j•ƒh´Kubah}”(h]”j{ƒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j•ƒh´Khj}ƒh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!byte/packet throughput statistics”h]”hŒ!byte/packet throughput statistics”…”�”}”(hjʃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Khjǃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj}ƒh²hh³j•ƒh´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jâƒjŒjâƒj�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hŒ¯**Definition**:: struct gnet_stats_basic { __u64 bytes; __u32 packets; }; **Members** ``bytes`` number of seen bytes ``packets`` number of seen packets”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjîƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêƒubhŒ:”…”�”}”(hjêƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Khjæƒubj¶)�”}”(hŒ@struct gnet_stats_basic { __u64 bytes; __u32 packets; };”h]”hŒ@struct gnet_stats_basic { __u64 bytes; __u32 packets; };”…”�”}”hj„sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Khjæƒubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj„h]”hŒMembers”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K!hjæƒubjß)�”}”(hhh]”(jä)�”}”(hŒ``bytes`` number of seen bytes ”h]”(jê)�”}”(hŒ ``bytes``”h]”jð)�”}”(hj7„h]”hŒbytes”…”�”}”(hj9„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj5„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Khj1„ubj)�”}”(hhh]”jl)�”}”(hŒnumber of seen bytes”h]”hŒnumber of seen bytes”…”�”}”(hjP„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jL„h´KhjM„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jL„h´Khj.„ubjä)�”}”(hŒ"``packets`` number of seen packets”h]”(jê)�”}”(hŒ ``packets``”h]”jð)�”}”(hjp„h]”hŒpackets”…”�”}”(hjr„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjn„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Khjj„ubj)�”}”(hhh]”jl)�”}”(hŒnumber of seen packets”h]”hŒnumber of seen packets”…”�”}”(hj‰„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Khj†„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…„h´Khj.„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjæƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒgnet_stats_rate_est (C struct)”Œc.gnet_stats_rate_est”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgnet_stats_rate_est”h]”j )�”}”(hŒstruct gnet_stats_rate_est”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÊ„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆ„h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆ„h²hh³jׄh´Kubj3)�”}”(hŒgnet_stats_rate_est”h]”j9)�”}”(hjÄ„h]”hŒgnet_stats_rate_est”…”�”}”(hjê„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ„ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÆ„h²hh³jׄh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj„h²hh³jׄh´Kubah}”(h]”j½„ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jׄh´Khj¿„h²hubjg)�”}”(hhh]”jl)�”}”(hŒrate estimator”h]”hŒrate estimator”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K hj …h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¿„h²hh³jׄh´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j$…jŒj$…j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hŒ **Definition**:: struct gnet_stats_rate_est { __u32 bps; __u32 pps; }; **Members** ``bps`` current byte rate ``pps`` current packet rate”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj0…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,…ubhŒ:”…”�”}”(hj,…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K$hj(…ubj¶)�”}”(hŒ=struct gnet_stats_rate_est { __u32 bps; __u32 pps; };”h]”hŒ=struct gnet_stats_rate_est { __u32 bps; __u32 pps; };”…”�”}”hjI…sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K&hj(…ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjZ…h]”hŒMembers”…”�”}”(hj\…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjX…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K+hj(…ubjß)�”}”(hhh]”(jä)�”}”(hŒ``bps`` current byte rate ”h]”(jê)�”}”(hŒ``bps``”h]”jð)�”}”(hjy…h]”hŒbps”…”�”}”(hj{…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K"hjs…ubj)�”}”(hhh]”jl)�”}”(hŒcurrent byte rate”h]”hŒcurrent byte rate”…”�”}”(hj’…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽ…h´K"hj�…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ…h´K"hjp…ubjä)�”}”(hŒ``pps`` current packet rate”h]”(jê)�”}”(hŒ``pps``”h]”jð)�”}”(hj²…h]”hŒpps”…”�”}”(hj´…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K"hj¬…ubj)�”}”(hhh]”jl)�”}”(hŒcurrent packet rate”h]”hŒcurrent packet rate”…”�”}”(hjË…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K#hjÈ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇ…h´K"hjp…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj(…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ gnet_stats_rate_est64 (C struct)”Œc.gnet_stats_rate_est64”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgnet_stats_rate_est64”h]”j )�”}”(hŒstruct gnet_stats_rate_est64”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†h²hh³j†h´K)ubj3)�”}”(hŒgnet_stats_rate_est64”h]”j9)�”}”(hj†h]”hŒgnet_stats_rate_est64”…”�”}”(hj,†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(†ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj†h²hh³j†h´K)ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj†h²hh³j†h´K)ubah}”(h]”jÿ…ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j†h´K)hj†h²hubjg)�”}”(hhh]”jl)�”}”(hŒrate estimator”h]”hŒrate estimator”…”�”}”(hjN†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K*hjK†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj†h²hh³j†h´K)ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jf†jŒjf†j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hŒ¢**Definition**:: struct gnet_stats_rate_est64 { __u64 bps; __u64 pps; }; **Members** ``bps`` current byte rate ``pps`` current packet rate”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjr†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjn†ubhŒ:”…”�”}”(hjn†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K.hjj†ubj¶)�”}”(hŒ?struct gnet_stats_rate_est64 { __u64 bps; __u64 pps; };”h]”hŒ?struct gnet_stats_rate_est64 { __u64 bps; __u64 pps; };”…”�”}”hj‹†sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K0hjj†ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjœ†h]”hŒMembers”…”�”}”(hjž†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjš†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K5hjj†ubjß)�”}”(hhh]”(jä)�”}”(hŒ``bps`` current byte rate ”h]”(jê)�”}”(hŒ``bps``”h]”jð)�”}”(hj»†h]”hŒbps”…”�”}”(hj½†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K,hjµ†ubj)�”}”(hhh]”jl)�”}”(hŒcurrent byte rate”h]”hŒcurrent byte rate”…”�”}”(hjÔ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jІh´K,hjцubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jІh´K,hj²†ubjä)�”}”(hŒ``pps`` current packet rate”h]”(jê)�”}”(hŒ``pps``”h]”jð)�”}”(hjô†h]”hŒpps”…”�”}”(hjö†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K,hjî†ubj)�”}”(hhh]”jl)�”}”(hŒcurrent packet rate”h]”hŒcurrent packet rate”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K-hj ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ‡h´K,hj²†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjj†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒgnet_stats_queue (C struct)”Œc.gnet_stats_queue”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgnet_stats_queue”h]”j )�”}”(hŒstruct gnet_stats_queue”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjN‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ‡h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ‡h²hh³j[‡h´K3ubj3)�”}”(hŒgnet_stats_queue”h]”j9)�”}”(hjH‡h]”hŒgnet_stats_queue”…”�”}”(hjn‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj‡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjJ‡h²hh³j[‡h´K3ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjF‡h²hh³j[‡h´K3ubah}”(h]”jA‡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j[‡h´K3hjC‡h²hubjg)�”}”(hhh]”jl)�”}”(hŒqueuing statistics”h]”hŒqueuing statistics”…”�”}”(hj�‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K4hj�‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjC‡h²hh³j[‡h´K3ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j¨‡jŒj¨‡j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hXc**Definition**:: struct gnet_stats_queue { __u32 qlen; __u32 backlog; __u32 drops; __u32 requeues; __u32 overlimits; }; **Members** ``qlen`` queue length ``backlog`` backlog size of queue ``drops`` number of dropped packets ``requeues`` number of requeues ``overlimits`` number of enqueues over the limit”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj´‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°‡ubhŒ:”…”�”}”(hj°‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K8hj¬‡ubj¶)�”}”(hŒzstruct gnet_stats_queue { __u32 qlen; __u32 backlog; __u32 drops; __u32 requeues; __u32 overlimits; };”h]”hŒzstruct gnet_stats_queue { __u32 qlen; __u32 backlog; __u32 drops; __u32 requeues; __u32 overlimits; };”…”�”}”hj͇sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K:hj¬‡ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjÞ‡h]”hŒMembers”…”�”}”(hjà‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj܇ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KBhj¬‡ubjß)�”}”(hhh]”(jä)�”}”(hŒ``qlen`` queue length ”h]”(jê)�”}”(hŒ``qlen``”h]”jð)�”}”(hjý‡h]”hŒqlen”…”�”}”(hjÿ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjû‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K6hj÷‡ubj)�”}”(hhh]”jl)�”}”(hŒ queue length”h]”hŒ queue length”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆh´K6hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆh´K6hjô‡ubjä)�”}”(hŒ"``backlog`` backlog size of queue ”h]”(jê)�”}”(hŒ ``backlog``”h]”jð)�”}”(hj6ˆh]”hŒbacklog”…”�”}”(hj8ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K7hj0ˆubj)�”}”(hhh]”jl)�”}”(hŒbacklog size of queue”h]”hŒbacklog size of queue”…”�”}”(hjOˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKˆh´K7hjLˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKˆh´K7hjô‡ubjä)�”}”(hŒ$``drops`` number of dropped packets ”h]”(jê)�”}”(hŒ ``drops``”h]”jð)�”}”(hjoˆh]”hŒdrops”…”�”}”(hjqˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjmˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K8hjiˆubj)�”}”(hhh]”jl)�”}”(hŒnumber of dropped packets”h]”hŒnumber of dropped packets”…”�”}”(hjˆˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„ˆh´K8hj…ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„ˆh´K8hjô‡ubjä)�”}”(hŒ ``requeues`` number of requeues ”h]”(jê)�”}”(hŒ ``requeues``”h]”jð)�”}”(hj¨ˆh]”hŒrequeues”…”�”}”(hjªˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K9hj¢ˆubj)�”}”(hhh]”jl)�”}”(hŒnumber of requeues”h]”hŒnumber of requeues”…”�”}”(hjÁˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½ˆh´K9hj¾ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½ˆh´K9hjô‡ubjä)�”}”(hŒ0``overlimits`` number of enqueues over the limit”h]”(jê)�”}”(hŒ``overlimits``”h]”jð)�”}”(hjáˆh]”hŒ overlimits”…”�”}”(hjãˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj߈ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K9hjÛˆubj)�”}”(hhh]”jl)�”}”(hŒ!number of enqueues over the limit”h]”hŒ!number of enqueues over the limit”…”�”}”(hjúˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K:hj÷ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöˆh´K9hjô‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¬‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒgnet_estimator (C struct)”Œc.gnet_estimator”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgnet_estimator”h]”j )�”}”(hŒstruct gnet_estimator”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj;‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7‰h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´K@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7‰h²hh³jH‰h´K@ubj3)�”}”(hŒgnet_estimator”h]”j9)�”}”(hj5‰h]”hŒgnet_estimator”…”�”}”(hj[‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjW‰ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj7‰h²hh³jH‰h´K@ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj3‰h²hh³jH‰h´K@ubah}”(h]”j.‰ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jH‰h´K@hj0‰h²hubjg)�”}”(hhh]”jl)�”}”(hŒrate estimator configuration”h]”hŒrate estimator configuration”…”�”}”(hj}‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KDhjz‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj0‰h²hh³jH‰h´K@ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j•‰jŒj•‰j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hŒÒ**Definition**:: struct gnet_estimator { signed char interval; unsigned char ewma_log; }; **Members** ``interval`` sampling period ``ewma_log`` the log of measurement window weight”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¡‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�‰ubhŒ:”…”�”}”(hj�‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KHhj™‰ubj¶)�”}”(hŒVstruct gnet_estimator { signed char interval; unsigned char ewma_log; };”h]”hŒVstruct gnet_estimator { signed char interval; unsigned char ewma_log; };”…”�”}”hjº‰sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KJhj™‰ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjˉh]”hŒMembers”…”�”}”(hj͉h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjɉubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KOhj™‰ubjß)�”}”(hhh]”(jä)�”}”(hŒ``interval`` sampling period ”h]”(jê)�”}”(hŒ ``interval``”h]”jð)�”}”(hjê‰h]”hŒinterval”…”�”}”(hjì‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjè‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KFhjä‰ubj)�”}”(hhh]”jl)�”}”(hŒsampling period”h]”hŒsampling period”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿ‰h´KFhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿ‰h´KFhjá‰ubjä)�”}”(hŒ1``ewma_log`` the log of measurement window weight”h]”(jê)�”}”(hŒ ``ewma_log``”h]”jð)�”}”(hj#Šh]”hŒewma_log”…”�”}”(hj%Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KFhjŠubj)�”}”(hhh]”jl)�”}”(hŒ$the log of measurement window weight”h]”hŒ$the log of measurement window weight”…”�”}”(hj<Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ^/var/lib/git/docbuild/linux/Documentation/networking/kapi:47: ./include/uapi/linux/gen_stats.h”h´KGhj9Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8Šh´KFhjá‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj™‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)gnet_stats_start_copy_compat (C function)”Œc.gnet_stats_start_copy_compat”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ˜int gnet_stats_start_copy_compat (struct sk_buff *skb, int type, int tc_stats_type, int xstats_type, spinlock_t *lock, struct gnet_dump *d, int padattr)”h]”j )�”}”(hŒ—int gnet_stats_start_copy_compat(struct sk_buff *skb, int type, int tc_stats_type, int xstats_type, spinlock_t *lock, struct gnet_dump *d, int padattr)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj}Šh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjyŠh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”u• h1j!hjyŠh²hh³j‹Šh´K(ubj3)�”}”(hŒgnet_stats_start_copy_compat”h]”j9)�”}”(hŒgnet_stats_start_copy_compat”h]”hŒgnet_stats_start_copy_compat”…”�”}”(hjžŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšŠubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjyŠh²hh³j‹Šh´K(ubj¡ )�”}”(hŒw(struct sk_buff *skb, int type, int tc_stats_type, int xstats_type, spinlock_t *lock, struct gnet_dump *d, int padattr)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjºŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶Šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶Šubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjØŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÚŠŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j ŠsbŒc.gnet_stats_start_copy_compat”†”asbuh1hhj¶Šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶Šubj )�”}”(hj h]”hŒ*”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶Šubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²Šubj§ )�”}”(hŒint type”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj,‹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(‹ubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjH‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²Šubj§ )�”}”(hŒint tc_stats_type”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hja‹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj]‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]‹ubj9)�”}”(hŒ tc_stats_type”h]”hŒ tc_stats_type”…”�”}”(hj}‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²Šubj§ )�”}”(hŒint xstats_type”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj–‹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj’‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’‹ubj9)�”}”(hŒ xstats_type”h]”hŒ xstats_type”…”�”}”(hj²‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²Šubj§ )�”}”(hŒspinlock_t *lock”h]”(h)�”}”(hhh]”j9)�”}”(hŒ spinlock_t”h]”hŒ spinlock_t”…”�”}”(hj΋h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjË‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jЋŒmodname”NŒ classname”Njå jè )�”}”jë ]”jôŠŒc.gnet_stats_start_copy_compat”†”asbuh1hhjÇ‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ‹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjú‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÇ‹ubj9)�”}”(hŒlock”h]”hŒlock”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇ‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²Šubj§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hj>Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@ŒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jôŠŒc.gnet_stats_start_copy_compat”†”asbuh1hhjŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒubj )�”}”(hj h]”hŒ*”…”�”}”(hjjŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒubj9)�”}”(hŒd”h]”hŒd”…”�”}”(hjwŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²Šubj§ )�”}”(hŒ int padattr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŒŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒŒubj9)�”}”(hŒpadattr”h]”hŒpadattr”…”�”}”(hj¬Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²Šubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjyŠh²hh³j‹Šh´K(ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjuŠh²hh³j‹Šh´K(ubah}”(h]”jpŠah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‹Šh´K(hjrŠh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-start dumping procedure in compatibility mode”h]”hŒ-start dumping procedure in compatibility mode”…”�”}”(hjÖŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K(hjÓŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjrŠh²hh³j‹Šh´K(ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jîŒjŒjîŒj�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hX1**Parameters** ``struct sk_buff *skb`` socket buffer to put statistics TLVs into ``int type`` TLV type for top level statistic TLV ``int tc_stats_type`` TLV type for backward compatibility struct tc_stats TLV ``int xstats_type`` TLV type for backward compatibility xstats TLV ``spinlock_t *lock`` statistics lock ``struct gnet_dump *d`` dumping handle ``int padattr`` padding attribute **Description** Initializes the dumping handle, grabs the statistic lock and appends an empty TLV header to the socket buffer for use a container for all other statistic TLVS. The dumping handle is marked to be in backward compatibility mode telling all gnet_stats_copy_XXX() functions to fill a local copy of struct tc_stats. Returns 0 on success or -1 if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjøŒh]”hŒ Parameters”…”�”}”(hjúŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K,hjòŒubjß)�”}”(hhh]”(jä)�”}”(hŒB``struct sk_buff *skb`` socket buffer to put statistics TLVs into ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj�h]”hŒstruct sk_buff *skb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K)hj�ubj)�”}”(hhh]”jl)�”}”(hŒ)socket buffer to put statistics TLVs into”h]”hŒ)socket buffer to put statistics TLVs into”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,�h´K)hj-�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,�h´K)hj�ubjä)�”}”(hŒ2``int type`` TLV type for top level statistic TLV ”h]”(jê)�”}”(hŒ ``int type``”h]”jð)�”}”(hjP�h]”hŒint type”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjN�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K*hjJ�ubj)�”}”(hhh]”jl)�”}”(hŒ$TLV type for top level statistic TLV”h]”hŒ$TLV type for top level statistic TLV”…”�”}”(hji�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³je�h´K*hjf�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³je�h´K*hj�ubjä)�”}”(hŒN``int tc_stats_type`` TLV type for backward compatibility struct tc_stats TLV ”h]”(jê)�”}”(hŒ``int tc_stats_type``”h]”jð)�”}”(hj‰�h]”hŒint tc_stats_type”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K+hjƒ�ubj)�”}”(hhh]”jl)�”}”(hŒ7TLV type for backward compatibility struct tc_stats TLV”h]”hŒ7TLV type for backward compatibility struct tc_stats TLV”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jž�h´K+hjŸ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jž�h´K+hj�ubjä)�”}”(hŒC``int xstats_type`` TLV type for backward compatibility xstats TLV ”h]”(jê)�”}”(hŒ``int xstats_type``”h]”jð)�”}”(hjÂ�h]”hŒint xstats_type”…”�”}”(hjÄ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K,hj¼�ubj)�”}”(hhh]”jl)�”}”(hŒ.TLV type for backward compatibility xstats TLV”h]”hŒ.TLV type for backward compatibility xstats TLV”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j×�h´K,hjØ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j×�h´K,hj�ubjä)�”}”(hŒ%``spinlock_t *lock`` statistics lock ”h]”(jê)�”}”(hŒ``spinlock_t *lock``”h]”jð)�”}”(hjû�h]”hŒspinlock_t *lock”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjù�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K-hjõ�ubj)�”}”(hhh]”jl)�”}”(hŒstatistics lock”h]”hŒstatistics lock”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽh´K-hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽh´K-hj�ubjä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hj4Žh]”hŒstruct gnet_dump *d”…”�”}”(hj6Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K.hj.Žubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hjMŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jIŽh´K.hjJŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jIŽh´K.hj�ubjä)�”}”(hŒ"``int padattr`` padding attribute ”h]”(jê)�”}”(hŒ``int padattr``”h]”jð)�”}”(hjmŽh]”hŒ int padattr”…”�”}”(hjoŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjkŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K/hjgŽubj)�”}”(hhh]”jl)�”}”(hŒpadding attribute”h]”hŒpadding attribute”…”�”}”(hj†Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚Žh´K/hjƒŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚Žh´K/hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjòŒubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¨Žh]”hŒ Description”…”�”}”(hjªŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K1hjòŒubjl)�”}”(hŒŸInitializes the dumping handle, grabs the statistic lock and appends an empty TLV header to the socket buffer for use a container for all other statistic TLVS.”h]”hŒŸInitializes the dumping handle, grabs the statistic lock and appends an empty TLV header to the socket buffer for use a container for all other statistic TLVS.”…”�”}”(hj¾Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K0hjòŒubjl)�”}”(hŒ–The dumping handle is marked to be in backward compatibility mode telling all gnet_stats_copy_XXX() functions to fill a local copy of struct tc_stats.”h]”hŒ–The dumping handle is marked to be in backward compatibility mode telling all gnet_stats_copy_XXX() functions to fill a local copy of struct tc_stats.”…”�”}”(hjÍŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K4hjòŒubjl)�”}”(hŒOReturns 0 on success or -1 if the room in the socket buffer was not sufficient.”h]”hŒOReturns 0 on success or -1 if the room in the socket buffer was not sufficient.”…”�”}”(hjÜŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K7hjòŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"gnet_stats_start_copy (C function)”Œc.gnet_stats_start_copy”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmint gnet_stats_start_copy (struct sk_buff *skb, int type, spinlock_t *lock, struct gnet_dump *d, int padattr)”h]”j )�”}”(hŒlint gnet_stats_start_copy(struct sk_buff *skb, int type, spinlock_t *lock, struct gnet_dump *d, int padattr)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�h²hh³j�h´K`ubj3)�”}”(hŒgnet_stats_start_copy”h]”j9)�”}”(hŒgnet_stats_start_copy”h]”hŒgnet_stats_start_copy”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�h²hh³j�h´K`ubj¡ )�”}”(hŒS(struct sk_buff *skb, int type, spinlock_t *lock, struct gnet_dump *d, int padattr)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjD�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjD�ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jh�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j.�sbŒc.gnet_stats_start_copy”†”asbuh1hhjD�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjD�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjD�ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¡�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjD�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@�ubj§ )�”}”(hŒint type”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjº�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶�ubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjÖ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@�ubj§ )�”}”(hŒspinlock_t *lock”h]”(h)�”}”(hhh]”j9)�”}”(hŒ spinlock_t”h]”hŒ spinlock_t”…”�”}”(hjò�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jô�Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‚�Œc.gnet_stats_start_copy”†”asbuh1hhjë�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjë�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjë�ubj9)�”}”(hŒlock”h]”hŒlock”…”�”}”(hj+�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjë�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@�ubj§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@�ubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jd�Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‚�Œc.gnet_stats_start_copy”†”asbuh1hhj@�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@�ubj9)�”}”(hjyŒh]”hŒd”…”�”}”(hj›�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@�ubj§ )�”}”(hŒ int padattr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj³�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯�ubj9)�”}”(hŒpadattr”h]”hŒpadattr”…”�”}”(hjÏ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�h²hh³j�h´K`ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j�h´K`ubah}”(h]”jþŽah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�h´K`hj�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ-start dumping procedure in compatibility mode”h]”hŒ-start dumping procedure in compatibility mode”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´K`hjö�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�h²hh³j�h´K`ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‘jŒj‘j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sk_buff *skb`` socket buffer to put statistics TLVs into ``int type`` TLV type for top level statistic TLV ``spinlock_t *lock`` statistics lock ``struct gnet_dump *d`` dumping handle ``int padattr`` padding attribute **Description** Initializes the dumping handle, grabs the statistic lock and appends an empty TLV header to the socket buffer for use a container for all other statistic TLVS. Returns 0 on success or -1 if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‘h]”hŒ Parameters”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kdhj‘ubjß)�”}”(hhh]”(jä)�”}”(hŒB``struct sk_buff *skb`` socket buffer to put statistics TLVs into ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj:‘h]”hŒstruct sk_buff *skb”…”�”}”(hj<‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kahj4‘ubj)�”}”(hhh]”jl)�”}”(hŒ)socket buffer to put statistics TLVs into”h]”hŒ)socket buffer to put statistics TLVs into”…”�”}”(hjS‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jO‘h´KahjP‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jO‘h´Kahj1‘ubjä)�”}”(hŒ2``int type`` TLV type for top level statistic TLV ”h]”(jê)�”}”(hŒ ``int type``”h]”jð)�”}”(hjs‘h]”hŒint type”…”�”}”(hju‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjq‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kbhjm‘ubj)�”}”(hhh]”jl)�”}”(hŒ$TLV type for top level statistic TLV”h]”hŒ$TLV type for top level statistic TLV”…”�”}”(hjŒ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆ‘h´Kbhj‰‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjm‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆ‘h´Kbhj1‘ubjä)�”}”(hŒ%``spinlock_t *lock`` statistics lock ”h]”(jê)�”}”(hŒ``spinlock_t *lock``”h]”jð)�”}”(hj¬‘h]”hŒspinlock_t *lock”…”�”}”(hj®‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kchj¦‘ubj)�”}”(hhh]”jl)�”}”(hŒstatistics lock”h]”hŒstatistics lock”…”�”}”(hjÅ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ‘h´Kchj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ‘h´Kchj1‘ubjä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hjå‘h]”hŒstruct gnet_dump *d”…”�”}”(hjç‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjã‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kdhjß‘ubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hjþ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jú‘h´Kdhjû‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jú‘h´Kdhj1‘ubjä)�”}”(hŒ"``int padattr`` padding attribute ”h]”(jê)�”}”(hŒ``int padattr``”h]”jð)�”}”(hj’h]”hŒ int padattr”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kehj’ubj)�”}”(hhh]”jl)�”}”(hŒpadding attribute”h]”hŒpadding attribute”…”�”}”(hj7’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j3’h´Kehj4’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3’h´Kehj1‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjY’h]”hŒ Description”…”�”}”(hj[’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjW’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kghj‘ubjl)�”}”(hŒŸInitializes the dumping handle, grabs the statistic lock and appends an empty TLV header to the socket buffer for use a container for all other statistic TLVS.”h]”hŒŸInitializes the dumping handle, grabs the statistic lock and appends an empty TLV header to the socket buffer for use a container for all other statistic TLVS.”…”�”}”(hjo’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kfhj‘ubjl)�”}”(hŒOReturns 0 on success or -1 if the room in the socket buffer was not sufficient.”h]”hŒOReturns 0 on success or -1 if the room in the socket buffer was not sufficient.”…”�”}”(hj~’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kjhj‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"gnet_stats_copy_basic (C function)”Œc.gnet_stats_copy_basic”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ–int gnet_stats_copy_basic (struct gnet_dump *d, const struct gnet_stats_basic_sync __percpu *cpu, const struct gnet_stats_basic_sync *b, bool running)”h]”j )�”}”(hŒ•int gnet_stats_copy_basic(struct gnet_dump *d, const struct gnet_stats_basic_sync __percpu *cpu, const struct gnet_stats_basic_sync *b, bool running)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj­’h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj©’h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©’h²hh³j»’h´Kòubj3)�”}”(hŒgnet_stats_copy_basic”h]”j9)�”}”(hŒgnet_stats_copy_basic”h]”hŒgnet_stats_copy_basic”…”�”}”(hjÎ’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ’ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj©’h²hh³j»’h´Kòubj¡ )�”}”(hŒ|(struct gnet_dump *d, const struct gnet_stats_basic_sync __percpu *cpu, const struct gnet_stats_basic_sync *b, bool running)”h]”(j§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjê’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ’ubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j “Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÐ’sbŒc.gnet_stats_copy_basic”†”asbuh1hhjæ’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ’ubj )�”}”(hj h]”hŒ*”…”�”}”(hj6“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjæ’ubj9)�”}”(hjyŒh]”hŒd”…”�”}”(hjC“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ’ubj§ )�”}”(hŒ0const struct gnet_stats_basic_sync __percpu *cpu”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj[“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW“ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjv“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW“ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hj”“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–“Œmodname”NŒ classname”Njå jè )�”}”jë ]”j$“Œc.gnet_stats_copy_basic”†”asbuh1hhjW“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW“ubhŒ__percpu”…”�”}”(hjW“h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW“ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒ“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjW“ubj9)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjß“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjW“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ’ubj§ )�”}”(hŒ%const struct gnet_stats_basic_sync *b”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjø“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjô“ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjô“ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hj1”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j3”Œmodname”NŒ classname”Njå jè )�”}”jë ]”j$“Œc.gnet_stats_copy_basic”†”asbuh1hhjô“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjô“ubj )�”}”(hj h]”hŒ*”…”�”}”(hj]”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjô“ubj9)�”}”(hŒb”h]”hŒb”…”�”}”(hjj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjô“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ’ubj§ )�”}”(hŒ bool running”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjƒ”h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”ubj9)�”}”(hŒrunning”h]”hŒrunning”…”�”}”(hjž”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj©’h²hh³j»’h´Kòubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¥’h²hh³j»’h´Kòubah}”(h]”j ’ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j»’h´Kòhj¢’h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(copy basic statistics into statistic TLV”h]”hŒ(copy basic statistics into statistic TLV”…”�”}”(hjÈ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´KòhjÅ”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢’h²hh³j»’h´Kòubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jà”jŒjà”j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hXx**Parameters** ``struct gnet_dump *d`` dumping handle ``const struct gnet_stats_basic_sync __percpu *cpu`` copy statistic per cpu ``const struct gnet_stats_basic_sync *b`` basic statistics ``bool running`` true if **b** represents a running qdisc, thus **b**'s internal values might change during basic reads. Only used if **cpu** is NULL **Context** task; must not be run from IRQ or BH contexts **Description** Appends the basic statistics to the top level TLV created by gnet_stats_start_copy(). Returns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjê”h]”hŒ Parameters”…”�”}”(hjì”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjè”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Köhjä”ubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hj •h]”hŒstruct gnet_dump *d”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kóhj•ubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hj"•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•h´Kóhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•h´Kóhj•ubjä)�”}”(hŒL``const struct gnet_stats_basic_sync __percpu *cpu`` copy statistic per cpu ”h]”(jê)�”}”(hŒ4``const struct gnet_stats_basic_sync __percpu *cpu``”h]”jð)�”}”(hjB•h]”hŒ0const struct gnet_stats_basic_sync __percpu *cpu”…”�”}”(hjD•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kôhj<•ubj)�”}”(hhh]”jl)�”}”(hŒcopy statistic per cpu”h]”hŒcopy statistic per cpu”…”�”}”(hj[•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jW•h´KôhjX•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jW•h´Kôhj•ubjä)�”}”(hŒ;``const struct gnet_stats_basic_sync *b`` basic statistics ”h]”(jê)�”}”(hŒ)``const struct gnet_stats_basic_sync *b``”h]”jð)�”}”(hj{•h]”hŒ%const struct gnet_stats_basic_sync *b”…”�”}”(hj}•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjy•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kõhju•ubj)�”}”(hhh]”jl)�”}”(hŒbasic statistics”h]”hŒbasic statistics”…”�”}”(hj”•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�•h´Kõhj‘•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhju•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�•h´Kõhj•ubjä)�”}”(hŒ–``bool running`` true if **b** represents a running qdisc, thus **b**'s internal values might change during basic reads. Only used if **cpu** is NULL ”h]”(jê)�”}”(hŒ``bool running``”h]”jð)�”}”(hj´•h]”hŒ bool running”…”�”}”(hj¶•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Køhj®•ubj)�”}”(hhh]”jl)�”}”(hŒ„true if **b** represents a running qdisc, thus **b**'s internal values might change during basic reads. Only used if **cpu** is NULL”h]”(hŒtrue if ”…”�”}”(hjÍ•h²hh³Nh´Nubj›)�”}”(hŒ**b**”h]”hŒb”…”�”}”(hjÕ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍ•ubhŒ" represents a running qdisc, thus ”…”�”}”(hjÍ•h²hh³Nh´Nubj›)�”}”(hŒ**b**”h]”hŒb”…”�”}”(hjç•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍ•ubhŒC’s internal values might change during basic reads. Only used if ”…”�”}”(hjÍ•h²hh³Nh´Nubj›)�”}”(hŒ**cpu**”h]”hŒcpu”…”�”}”(hjù•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍ•ubhŒ is NULL”…”�”}”(hjÍ•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´KöhjÊ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉ•h´Køhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjä”ubjl)�”}”(hŒ **Context**”h]”j›)�”}”(hj&–h]”hŒContext”…”�”}”(hj(–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kúhjä”ubjl)�”}”(hŒ-task; must not be run from IRQ or BH contexts”h]”hŒ-task; must not be run from IRQ or BH contexts”…”�”}”(hj<–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kúhjä”ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjM–h]”hŒ Description”…”�”}”(hjO–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjK–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kühjä”ubjl)�”}”(hŒUAppends the basic statistics to the top level TLV created by gnet_stats_start_copy().”h]”hŒUAppends the basic statistics to the top level TLV created by gnet_stats_start_copy().”…”�”}”(hjc–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kûhjä”ubjl)�”}”(hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”…”�”}”(hjr–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Kþhjä”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%gnet_stats_copy_basic_hw (C function)”Œc.gnet_stats_copy_basic_hw”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ™int gnet_stats_copy_basic_hw (struct gnet_dump *d, const struct gnet_stats_basic_sync __percpu *cpu, const struct gnet_stats_basic_sync *b, bool running)”h]”j )�”}”(hŒ˜int gnet_stats_copy_basic_hw(struct gnet_dump *d, const struct gnet_stats_basic_sync __percpu *cpu, const struct gnet_stats_basic_sync *b, bool running)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¡–h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�–h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�–h²hh³j¯–h´M ubj3)�”}”(hŒgnet_stats_copy_basic_hw”h]”j9)�”}”(hŒgnet_stats_copy_basic_hw”h]”hŒgnet_stats_copy_basic_hw”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾–ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�–h²hh³j¯–h´M ubj¡ )�”}”(hŒ|(struct gnet_dump *d, const struct gnet_stats_basic_sync __percpu *cpu, const struct gnet_stats_basic_sync *b, bool running)”h]”(j§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÞ–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ–ubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hjü–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jþ–Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÄ–sbŒc.gnet_stats_copy_basic_hw”†”asbuh1hhjÚ–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ–ubj )�”}”(hj h]”hŒ*”…”�”}”(hj*—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚ–ubj9)�”}”(hjyŒh]”hŒd”…”�”}”(hj7—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖ–ubj§ )�”}”(hŒ0const struct gnet_stats_basic_sync __percpu *cpu”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjO—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK—ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK—ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hjˆ—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŠ—Œmodname”NŒ classname”Njå jè )�”}”jë ]”j—Œc.gnet_stats_copy_basic_hw”†”asbuh1hhjK—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK—ubhŒ__percpu”…”�”}”(hjK—h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK—ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆ—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK—ubj9)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjÓ—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖ–ubj§ )�”}”(hŒ%const struct gnet_stats_basic_sync *b”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjì—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjè—ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjè—ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hj%˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j'˜Œmodname”NŒ classname”Njå jè )�”}”jë ]”j—Œc.gnet_stats_copy_basic_hw”†”asbuh1hhjè—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjè—ubj )�”}”(hj h]”hŒ*”…”�”}”(hjQ˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjè—ubj9)�”}”(hjl”h]”hŒb”…”�”}”(hj^˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjè—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖ–ubj§ )�”}”(hŒ bool running”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjv˜h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjr˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjr˜ubj9)�”}”(hŒrunning”h]”hŒrunning”…”�”}”(hj‘˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÖ–ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�–h²hh³j¯–h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj™–h²hh³j¯–h´M ubah}”(h]”j”–ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¯–h´M hj––h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+copy basic hw statistics into statistic TLV”h]”hŒ+copy basic hw statistics into statistic TLV”…”�”}”(hj»˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M hj¸˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj––h²hh³j¯–h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÓ˜jŒjÓ˜j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hXx**Parameters** ``struct gnet_dump *d`` dumping handle ``const struct gnet_stats_basic_sync __percpu *cpu`` copy statistic per cpu ``const struct gnet_stats_basic_sync *b`` basic statistics ``bool running`` true if **b** represents a running qdisc, thus **b**'s internal values might change during basic reads. Only used if **cpu** is NULL **Context** task; must not be run from IRQ or BH contexts **Description** Appends the basic statistics to the top level TLV created by gnet_stats_start_copy(). Returns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjݘh]”hŒ Parameters”…”�”}”(hjߘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjטubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hjü˜h]”hŒstruct gnet_dump *d”…”�”}”(hjþ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjú˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjö˜ubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™h´Mhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™h´Mhjó˜ubjä)�”}”(hŒL``const struct gnet_stats_basic_sync __percpu *cpu`` copy statistic per cpu ”h]”(jê)�”}”(hŒ4``const struct gnet_stats_basic_sync __percpu *cpu``”h]”jð)�”}”(hj5™h]”hŒ0const struct gnet_stats_basic_sync __percpu *cpu”…”�”}”(hj7™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhj/™ubj)�”}”(hhh]”jl)�”}”(hŒcopy statistic per cpu”h]”hŒcopy statistic per cpu”…”�”}”(hjN™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jJ™h´MhjK™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJ™h´Mhjó˜ubjä)�”}”(hŒ;``const struct gnet_stats_basic_sync *b`` basic statistics ”h]”(jê)�”}”(hŒ)``const struct gnet_stats_basic_sync *b``”h]”jð)�”}”(hjn™h]”hŒ%const struct gnet_stats_basic_sync *b”…”�”}”(hjp™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjl™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjh™ubj)�”}”(hhh]”jl)�”}”(hŒbasic statistics”h]”hŒbasic statistics”…”�”}”(hj‡™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒ™h´Mhj„™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒ™h´Mhjó˜ubjä)�”}”(hŒ–``bool running`` true if **b** represents a running qdisc, thus **b**'s internal values might change during basic reads. Only used if **cpu** is NULL ”h]”(jê)�”}”(hŒ``bool running``”h]”jð)�”}”(hj§™h]”hŒ bool running”…”�”}”(hj©™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhj¡™ubj)�”}”(hhh]”jl)�”}”(hŒ„true if **b** represents a running qdisc, thus **b**'s internal values might change during basic reads. Only used if **cpu** is NULL”h]”(hŒtrue if ”…”�”}”(hjÀ™h²hh³Nh´Nubj›)�”}”(hŒ**b**”h]”hŒb”…”�”}”(hjÈ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀ™ubhŒ" represents a running qdisc, thus ”…”�”}”(hjÀ™h²hh³Nh´Nubj›)�”}”(hŒ**b**”h]”hŒb”…”�”}”(hjÚ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀ™ubhŒC’s internal values might change during basic reads. Only used if ”…”�”}”(hjÀ™h²hh³Nh´Nubj›)�”}”(hŒ**cpu**”h]”hŒcpu”…”�”}”(hjì™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀ™ubhŒ is NULL”…”�”}”(hjÀ™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhj½™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼™h´Mhjó˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjטubjl)�”}”(hŒ **Context**”h]”j›)�”}”(hjšh]”hŒContext”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjטubjl)�”}”(hŒ-task; must not be run from IRQ or BH contexts”h]”hŒ-task; must not be run from IRQ or BH contexts”…”�”}”(hj/šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjטubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj@šh]”hŒ Description”…”�”}”(hjBšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj>šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjטubjl)�”}”(hŒUAppends the basic statistics to the top level TLV created by gnet_stats_start_copy().”h]”hŒUAppends the basic statistics to the top level TLV created by gnet_stats_start_copy().”…”�”}”(hjVšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjטubjl)�”}”(hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”…”�”}”(hješh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mhjטubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%gnet_stats_copy_rate_est (C function)”Œc.gnet_stats_copy_rate_est”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ^int gnet_stats_copy_rate_est (struct gnet_dump *d, struct net_rate_estimator __rcu **rate_est)”h]”j )�”}”(hŒ]int gnet_stats_copy_rate_est(struct gnet_dump *d, struct net_rate_estimator __rcu **rate_est)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj”šh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�šh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�šh²hh³j¢šh´M(ubj3)�”}”(hŒgnet_stats_copy_rate_est”h]”j9)�”}”(hŒgnet_stats_copy_rate_est”h]”hŒgnet_stats_copy_rate_est”…”�”}”(hjµšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±šubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�šh²hh³j¢šh´M(ubj¡ )�”}”(hŒA(struct gnet_dump *d, struct net_rate_estimator __rcu **rate_est)”h]”(j§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞšh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍšubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hjïšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñšŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·šsbŒc.gnet_stats_copy_rate_est”†”asbuh1hhjÍšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍšubj )�”}”(hj h]”hŒ*”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍšubj9)�”}”(hjyŒh]”hŒd”…”�”}”(hj*›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉšubj§ )�”}”(hŒ*struct net_rate_estimator __rcu **rate_est”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjB›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>›ubh)�”}”(hhh]”j9)�”}”(hŒnet_rate_estimator”h]”hŒnet_rate_estimator”…”�”}”(hj`›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jb›Œmodname”NŒ classname”Njå jè )�”}”jë ]”j ›Œc.gnet_stats_copy_rate_est”†”asbuh1hhj>›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>›ubhŒ__rcu”…”�”}”(hj>›h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>›ubj )�”}”(hj h]”hŒ*”…”�”}”(hjž›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>›ubj )�”}”(hj h]”hŒ*”…”�”}”(hj«›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>›ubj9)�”}”(hŒrate_est”h]”hŒrate_est”…”�”}”(hj¸›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�šh²hh³j¢šh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒšh²hh³j¢šh´M(ubah}”(h]”j‡šah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢šh´M(hj‰šh²hubjg)�”}”(hhh]”jl)�”}”(hŒ2copy rate estimator statistics into statistics TLV”h]”hŒ2copy rate estimator statistics into statistics TLV”…”�”}”(hjâ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M(hjß›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰šh²hh³j¢šh´M(ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jú›jŒjú›j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hX\**Parameters** ``struct gnet_dump *d`` dumping handle ``struct net_rate_estimator __rcu **rate_est`` rate estimator **Description** Appends the rate estimator statistics to the top level TLV created by gnet_stats_start_copy(). Returns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjœh]”hŒ Parameters”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M,hjþ›ubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hj#œh]”hŒstruct gnet_dump *d”…”�”}”(hj%œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M)hjœubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hj<œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8œh´M)hj9œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8œh´M)hjœubjä)�”}”(hŒ>``struct net_rate_estimator __rcu **rate_est`` rate estimator ”h]”(jê)�”}”(hŒ.``struct net_rate_estimator __rcu **rate_est``”h]”jð)�”}”(hj\œh]”hŒ*struct net_rate_estimator __rcu **rate_est”…”�”}”(hj^œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M*hjVœubj)�”}”(hhh]”jl)�”}”(hŒrate estimator”h]”hŒrate estimator”…”�”}”(hjuœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqœh´M*hjrœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jqœh´M*hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjþ›ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj—œh]”hŒ Description”…”�”}”(hj™œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj•œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M,hjþ›ubjl)�”}”(hŒ^Appends the rate estimator statistics to the top level TLV created by gnet_stats_start_copy().”h]”hŒ^Appends the rate estimator statistics to the top level TLV created by gnet_stats_start_copy().”…”�”}”(hj­œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M+hjþ›ubjl)�”}”(hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”…”�”}”(hj¼œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M.hjþ›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"gnet_stats_copy_queue (C function)”Œc.gnet_stats_copy_queue”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒŒint gnet_stats_copy_queue (struct gnet_dump *d, const struct gnet_stats_queue __percpu *cpu_q, const struct gnet_stats_queue *q, __u32 qlen)”h]”j )�”}”(hŒ‹int gnet_stats_copy_queue(struct gnet_dump *d, const struct gnet_stats_queue __percpu *cpu_q, const struct gnet_stats_queue *q, __u32 qlen)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjëœh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjçœh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçœh²hh³jùœh´Mtubj3)�”}”(hŒgnet_stats_copy_queue”h]”j9)�”}”(hŒgnet_stats_copy_queue”h]”hŒgnet_stats_copy_queue”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjçœh²hh³jùœh´Mtubj¡ )�”}”(hŒr(struct gnet_dump *d, const struct gnet_stats_queue __percpu *cpu_q, const struct gnet_stats_queue *q, __u32 qlen)”h]”(j§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$�ubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jH�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�sbŒc.gnet_stats_copy_queue”†”asbuh1hhj$�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$�ubj9)�”}”(hjyŒh]”hŒd”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj �ubj§ )�”}”(hŒ-const struct gnet_stats_queue __percpu *cpu_q”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•�ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj´�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•�ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_queue”h]”hŒgnet_stats_queue”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔ�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jb�Œc.gnet_stats_copy_queue”†”asbuh1hhj•�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•�ubhŒ__percpu”…”�”}”(hj•�h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•�ubj9)�”}”(hŒcpu_q”h]”hŒcpu_q”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj �ubj§ )�”}”(hŒ const struct gnet_stats_queue *q”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj6žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2žubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2žubj)�”}”(hjh]”hŒstruct”…”�”}”(hjQžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2žubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2žubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_queue”h]”hŒgnet_stats_queue”…”�”}”(hjožh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jqžŒmodname”NŒ classname”Njå jè )�”}”jë ]”jb�Œc.gnet_stats_copy_queue”†”asbuh1hhj2žubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2žubj )�”}”(hj h]”hŒ*”…”�”}”(hj›žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj2žubj9)�”}”(hŒq”h]”hŒq”…”�”}”(hj¨žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj �ubj§ )�”}”(hŒ __u32 qlen”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__u32”h]”hŒ__u32”…”�”}”(hjÄžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆžŒmodname”NŒ classname”Njå jè )�”}”jë ]”jb�Œc.gnet_stats_copy_queue”†”asbuh1hhj½žubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½žubj9)�”}”(hŒqlen”h]”hŒqlen”…”�”}”(hjðžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj �ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjçœh²hh³jùœh´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjãœh²hh³jùœh´Mtubah}”(h]”jÞœah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jùœh´Mthjàœh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)copy queue statistics into statistics TLV”h]”hŒ)copy queue statistics into statistics TLV”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MthjŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjàœh²hh³jùœh´Mtubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j2ŸjŒj2Ÿj�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hXù**Parameters** ``struct gnet_dump *d`` dumping handle ``const struct gnet_stats_queue __percpu *cpu_q`` per cpu queue statistics ``const struct gnet_stats_queue *q`` queue statistics ``__u32 qlen`` queue length statistics **Description** Appends the queue statistics to the top level TLV created by gnet_stats_start_copy(). Using per cpu queue statistics if they are available. Returns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj<Ÿh]”hŒ Parameters”…”�”}”(hj>Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mxhj6Ÿubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hj[Ÿh]”hŒstruct gnet_dump *d”…”�”}”(hj]Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MuhjUŸubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hjtŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jpŸh´MuhjqŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpŸh´MuhjRŸubjä)�”}”(hŒK``const struct gnet_stats_queue __percpu *cpu_q`` per cpu queue statistics ”h]”(jê)�”}”(hŒ1``const struct gnet_stats_queue __percpu *cpu_q``”h]”jð)�”}”(hj”Ÿh]”hŒ-const struct gnet_stats_queue __percpu *cpu_q”…”�”}”(hj–Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MvhjŽŸubj)�”}”(hhh]”jl)�”}”(hŒper cpu queue statistics”h]”hŒper cpu queue statistics”…”�”}”(hj­Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©Ÿh´MvhjªŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©Ÿh´MvhjRŸubjä)�”}”(hŒ6``const struct gnet_stats_queue *q`` queue statistics ”h]”(jê)�”}”(hŒ$``const struct gnet_stats_queue *q``”h]”jð)�”}”(hjÍŸh]”hŒ const struct gnet_stats_queue *q”…”�”}”(hjÏŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MwhjÇŸubj)�”}”(hhh]”jl)�”}”(hŒqueue statistics”h]”hŒqueue statistics”…”�”}”(hjæŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâŸh´MwhjãŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâŸh´MwhjRŸubjä)�”}”(hŒ'``__u32 qlen`` queue length statistics ”h]”(jê)�”}”(hŒ``__u32 qlen``”h]”jð)�”}”(hj h]”hŒ __u32 qlen”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mxhj ubj)�”}”(hhh]”jl)�”}”(hŒqueue length statistics”h]”hŒqueue length statistics”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´Mxhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´MxhjRŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6Ÿubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjA h]”hŒ Description”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj? ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mzhj6Ÿubjl)�”}”(hŒ‹Appends the queue statistics to the top level TLV created by gnet_stats_start_copy(). Using per cpu queue statistics if they are available.”h]”hŒ‹Appends the queue statistics to the top level TLV created by gnet_stats_start_copy(). Using per cpu queue statistics if they are available.”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Myhj6Ÿubjl)�”}”(hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M}hj6Ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ gnet_stats_copy_app (C function)”Œc.gnet_stats_copy_app”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@int gnet_stats_copy_app (struct gnet_dump *d, void *st, int len)”h]”j )�”}”(hŒ?int gnet_stats_copy_app(struct gnet_dump *d, void *st, int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‘ h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mœubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ h²hh³j£ h´Mœubj3)�”}”(hŒgnet_stats_copy_app”h]”j9)�”}”(hŒgnet_stats_copy_app”h]”hŒgnet_stats_copy_app”…”�”•=}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj² ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‘ h²hh³j£ h´Mœubj¡ )�”}”(hŒ((struct gnet_dump *d, void *st, int len)”h]”(j§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjΠubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjΠubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjí ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jò Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¸ sbŒc.gnet_stats_copy_app”†”asbuh1hhjΠubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjΠubj )�”}”(hj h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjΠubj9)�”}”(hjyŒh]”hŒd”…”�”}”(hj+¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjΠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÊ ubj§ )�”}”(hŒvoid *st”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjC¡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj?¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?¡ubj )�”}”(hj h]”hŒ*”…”�”}”(hj_¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?¡ubj9)�”}”(hŒst”h]”hŒst”…”�”}”(hjl¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÊ ubj§ )�”}”(hŒint len”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj…¡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�¡ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj¡¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÊ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‘ h²hh³j£ h´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj� h²hh³j£ h´Mœubah}”(h]”jˆ ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j£ h´MœhjŠ h²hubjg)�”}”(hhh]”jl)�”}”(hŒ8copy application specific statistics into statistics TLV”h]”hŒ8copy application specific statistics into statistics TLV”…”�”}”(hjË¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MœhjÈ¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŠ h²hh³j£ h´Mœubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jã¡jŒjã¡j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hXÎ**Parameters** ``struct gnet_dump *d`` dumping handle ``void *st`` application specific statistics data ``int len`` length of data **Description** Appends the application specific statistics to the top level TLV created by gnet_stats_start_copy() and remembers the data for XSTATS if the dumping handle is in backward compatibility mode. Returns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjí¡h]”hŒ Parameters”…”�”}”(hjï¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjë¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M hjç¡ubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hj ¢h]”hŒstruct gnet_dump *d”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M�hj¢ubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hj%¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!¢h´M�hj"¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!¢h´M�hj¢ubjä)�”}”(hŒ2``void *st`` application specific statistics data ”h]”(jê)�”}”(hŒ ``void *st``”h]”jð)�”}”(hjE¢h]”hŒvoid *st”…”�”}”(hjG¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjC¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´Mžhj?¢ubj)�”}”(hhh]”jl)�”}”(hŒ$application specific statistics data”h]”hŒ$application specific statistics data”…”�”}”(hj^¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZ¢h´Mžhj[¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZ¢h´Mžhj¢ubjä)�”}”(hŒ``int len`` length of data ”h]”(jê)�”}”(hŒ ``int len``”h]”jð)�”}”(hj~¢h]”hŒint len”…”�”}”(hj€¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MŸhjx¢ubj)�”}”(hhh]”jl)�”}”(hŒlength of data”h]”hŒlength of data”…”�”}”(hj—¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“¢h´MŸhj”¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“¢h´MŸhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjç¡ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¹¢h]”hŒ Description”…”�”}”(hj»¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M¡hjç¡ubjl)�”}”(hŒ¾Appends the application specific statistics to the top level TLV created by gnet_stats_start_copy() and remembers the data for XSTATS if the dumping handle is in backward compatibility mode.”h]”hŒ¾Appends the application specific statistics to the top level TLV created by gnet_stats_start_copy() and remembers the data for XSTATS if the dumping handle is in backward compatibility mode.”…”�”}”(hjÏ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M hjç¡ubjl)�”}”(hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”…”�”}”(hjÞ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´M¤hjç¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#gnet_stats_finish_copy (C function)”Œc.gnet_stats_finish_copy”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0int gnet_stats_finish_copy (struct gnet_dump *d)”h]”j )�”}”(hŒ/int gnet_stats_finish_copy(struct gnet_dump *d)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj £h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj £h²hh³j£h´MÁubj3)�”}”(hŒgnet_stats_finish_copy”h]”j9)�”}”(hŒgnet_stats_finish_copy”h]”hŒgnet_stats_finish_copy”…”�”}”(hj.£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*£ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj £h²hh³j£h´MÁubj¡ )�”}”(hŒ(struct gnet_dump *d)”h]”j§ )�”}”(hŒstruct gnet_dump *d”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjJ£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjF£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF£ubh)�”}”(hhh]”j9)�”}”(hŒ gnet_dump”h]”hŒ gnet_dump”…”�”}”(hjh£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jj£Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j0£sbŒc.gnet_stats_finish_copy”†”asbuh1hhjF£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF£ubj )�”}”(hj h]”hŒ*”…”�”}”(hj–£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjF£ubj9)�”}”(hjyŒh]”hŒd”…”�”}”(hj££h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjF£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjB£ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj £h²hh³j£h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj£h²hh³j£h´MÁubah}”(h]”j£ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j£h´MÁhj£h²hubjg)�”}”(hhh]”jl)�”}”(hŒfinish dumping procedure”h]”hŒfinish dumping procedure”…”�”}”(hjÌ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MÁhjÉ£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj£h²hh³j£h´MÁubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jä£jŒjä£j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hX‘**Parameters** ``struct gnet_dump *d`` dumping handle **Description** Corrects the length of the top level TLV to include all TLVs added by gnet_stats_copy_XXX() calls. Adds the backward compatibility TLVs if gnet_stats_start_copy_compat() was used and releases the statistics lock. Returns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjî£h]”hŒ Parameters”…”�”}”(hjð£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjì£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MÅhjè£ubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct gnet_dump *d`` dumping handle ”h]”(jê)�”}”(hŒ``struct gnet_dump *d``”h]”jð)�”}”(hj ¤h]”hŒstruct gnet_dump *d”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MÂhj¤ubj)�”}”(hhh]”jl)�”}”(hŒdumping handle”h]”hŒdumping handle”…”�”}”(hj&¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"¤h´MÂhj#¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j"¤h´MÂhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjè£ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjH¤h]”hŒ Description”…”�”}”(hjJ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjF¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MÄhjè£ubjl)�”}”(hŒÔCorrects the length of the top level TLV to include all TLVs added by gnet_stats_copy_XXX() calls. Adds the backward compatibility TLVs if gnet_stats_start_copy_compat() was used and releases the statistics lock.”h]”hŒÔCorrects the length of the top level TLV to include all TLVs added by gnet_stats_copy_XXX() calls. Adds the backward compatibility TLVs if gnet_stats_start_copy_compat() was used and releases the statistics lock.”…”�”}”(hj^¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MÃhjè£ubjl)�”}”(hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”h]”hŒpReturns 0 on success or -1 with the statistic lock released if the room in the socket buffer was not sufficient.”…”�”}”(hjm¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:50: ./net/core/gen_stats.c”h´MÈhjè£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒgen_new_estimator (C function)”Œc.gen_new_estimator”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒÏint gen_new_estimator (struct gnet_stats_basic_sync *bstats, struct gnet_stats_basic_sync __percpu *cpu_bstats, struct net_rate_estimator __rcu **rate_est, spinlock_t *lock, bool running, struct nlattr *opt)”h]”j )�”}”(hŒÎint gen_new_estimator(struct gnet_stats_basic_sync *bstats, struct gnet_stats_basic_sync __percpu *cpu_bstats, struct net_rate_estimator __rcu **rate_est, spinlock_t *lock, bool running, struct nlattr *opt)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjœ¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj˜¤h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜¤h²hh³jª¤h´Kqubj3)�”}”(hŒgen_new_estimator”h]”j9)�”}”(hŒgen_new_estimator”h]”hŒgen_new_estimator”…”�”}”(hj½¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹¤ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj˜¤h²hh³jª¤h´Kqubj¡ )�”}”(hŒ¹(struct gnet_stats_basic_sync *bstats, struct gnet_stats_basic_sync __percpu *cpu_bstats, struct net_rate_estimator __rcu **rate_est, spinlock_t *lock, bool running, struct nlattr *opt)”h]”(j§ )�”}”(hŒ$struct gnet_stats_basic_sync *bstats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÙ¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕ¤ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hj÷¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjô¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jù¤Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¿¤sbŒc.gen_new_estimator”†”asbuh1hhjÕ¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕ¤ubj )�”}”(hj h]”hŒ*”…”�”}”(hj%¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÕ¤ubj9)�”}”(hŒbstats”h]”hŒbstats”…”�”}”(hj2¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjѤubj§ )�”}”(hŒ1struct gnet_stats_basic_sync __percpu *cpu_bstats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjK¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjG¥ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hji¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjf¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jk¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¥Œc.gen_new_estimator”†”asbuh1hhjG¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjG¥ubhŒ__percpu”…”�”}”(hjG¥h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjG¥ubj )�”}”(hj h]”hŒ*”…”�”}”(hj§¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjG¥ubj9)�”}”(hŒ cpu_bstats”h]”hŒ cpu_bstats”…”�”}”(hj´¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjG¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjѤubj§ )�”}”(hŒ*struct net_rate_estimator __rcu **rate_est”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÍ¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉ¥ubh)�”}”(hhh]”j9)�”}”(hŒnet_rate_estimator”h]”hŒnet_rate_estimator”…”�”}”(hjë¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjè¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jí¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¥Œc.gen_new_estimator”†”asbuh1hhjÉ¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉ¥ubhŒ__rcu”…”�”}”(hjÉ¥h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉ¥ubj )�”}”(hj h]”hŒ*”…”�”}”(hj)¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÉ¥ubj )�”}”(hj h]”hŒ*”…”�”}”(hj6¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÉ¥ubj9)�”}”(hŒrate_est”h]”hŒrate_est”…”�”}”(hjC¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjѤubj§ )�”}”(hŒspinlock_t *lock”h]”(h)�”}”(hhh]”j9)�”}”(hŒ spinlock_t”h]”hŒ spinlock_t”…”�”}”(hj_¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ja¦Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¥Œc.gen_new_estimator”†”asbuh1hhjX¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjX¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‹¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjX¦ubj9)�”}”(hŒlock”h]”hŒlock”…”�”}”(hj˜¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjѤubj§ )�”}”(hŒ bool running”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj±¦h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj­¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­¦ubj9)�”}”(hŒrunning”h]”hŒrunning”…”�”}”(hj̦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjѤubj§ )�”}”(hŒstruct nlattr *opt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjå¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjá¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjá¦ubh)�”}”(hhh]”j9)�”}”(hŒnlattr”h]”hŒnlattr”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¥Œc.gen_new_estimator”†”asbuh1hhjá¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjá¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hj/§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjá¦ubj9)�”}”(hŒopt”h]”hŒopt”…”�”}”(hj<§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjá¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjѤubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj˜¤h²hh³jª¤h´Kqubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj”¤h²hh³jª¤h´Kqubah}”(h]”j�¤ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jª¤h´Kqhj‘¤h²hubjg)�”}”(hhh]”jl)�”}”(hŒcreate a new rate estimator”h]”hŒcreate a new rate estimator”…”�”}”(hjf§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kqhjc§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‘¤h²hh³jª¤h´Kqubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j~§jŒj~§j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hXµ**Parameters** ``struct gnet_stats_basic_sync *bstats`` basic statistics ``struct gnet_stats_basic_sync __percpu *cpu_bstats`` bstats per cpu ``struct net_rate_estimator __rcu **rate_est`` rate estimator statistics ``spinlock_t *lock`` lock for statistics and control path ``bool running`` true if **bstats** represents a running qdisc, thus **bstats**' internal values might change during basic reads. Only used if **bstats_cpu** is NULL ``struct nlattr *opt`` rate estimator configuration TLV **Description** Creates a new rate estimator with :c:type:`bstats` as source and :c:type:`rate_est` as destination. A new timer with the interval specified in the configuration TLV is created. Upon each interval, the latest statistics will be read from :c:type:`bstats` and the estimated rate will be stored in :c:type:`rate_est` with the statistics lock grabbed during this period. Returns 0 on success or a negative error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjˆ§h]”hŒ Parameters”…”�”}”(hjЧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kuhj‚§ubjß)�”}”(hhh]”(jä)�”}”(hŒ:``struct gnet_stats_basic_sync *bstats`` basic statistics ”h]”(jê)�”}”(hŒ(``struct gnet_stats_basic_sync *bstats``”h]”jð)�”}”(hj§§h]”hŒ$struct gnet_stats_basic_sync *bstats”…”�”}”(hj©§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Krhj¡§ubj)�”}”(hhh]”jl)�”}”(hŒbasic statistics”h]”hŒbasic statistics”…”�”}”(hjÀ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼§h´Krhj½§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼§h´Krhjž§ubjä)�”}”(hŒE``struct gnet_stats_basic_sync __percpu *cpu_bstats`` bstats per cpu ”h]”(jê)�”}”(hŒ5``struct gnet_stats_basic_sync __percpu *cpu_bstats``”h]”jð)�”}”(hjà§h]”hŒ1struct gnet_stats_basic_sync __percpu *cpu_bstats”…”�”}”(hjâ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KshjÚ§ubj)�”}”(hhh]”jl)�”}”(hŒbstats per cpu”h]”hŒbstats per cpu”…”�”}”(hjù§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõ§h´Kshjö§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõ§h´Kshjž§ubjä)�”}”(hŒI``struct net_rate_estimator __rcu **rate_est`` rate estimator statistics ”h]”(jê)�”}”(hŒ.``struct net_rate_estimator __rcu **rate_est``”h]”jð)�”}”(hj¨h]”hŒ*struct net_rate_estimator __rcu **rate_est”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kthj¨ubj)�”}”(hhh]”jl)�”}”(hŒrate estimator statistics”h]”hŒrate estimator statistics”…”�”}”(hj2¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.¨h´Kthj/¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.¨h´Kthjž§ubjä)�”}”(hŒ:``spinlock_t *lock`` lock for statistics and control path ”h]”(jê)�”}”(hŒ``spinlock_t *lock``”h]”jð)�”}”(hjR¨h]”hŒspinlock_t *lock”…”�”}”(hjT¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjP¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KuhjL¨ubj)�”}”(hhh]”jl)�”}”(hŒ$lock for statistics and control path”h]”hŒ$lock for statistics and control path”…”�”}”(hjk¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jg¨h´Kuhjh¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jg¨h´Kuhjž§ubjä)�”}”(hŒ¦``bool running`` true if **bstats** represents a running qdisc, thus **bstats**' internal values might change during basic reads. Only used if **bstats_cpu** is NULL ”h]”(jê)�”}”(hŒ``bool running``”h]”jð)�”}”(hj‹¨h]”hŒ bool running”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kxhj…¨ubj)�”}”(hhh]”jl)�”}”(hŒ”true if **bstats** represents a running qdisc, thus **bstats**' internal values might change during basic reads. Only used if **bstats_cpu** is NULL”h]”(hŒtrue if ”…”�”}”(hj¤¨h²hh³Nh´Nubj›)�”}”(hŒ **bstats**”h]”hŒbstats”…”�”}”(hj¬¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤¨ubhŒ" represents a running qdisc, thus ”…”�”}”(hj¤¨h²hh³Nh´Nubj›)�”}”(hŒ **bstats**”h]”hŒbstats”…”�”}”(hj¾¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤¨ubhŒB’ internal values might change during basic reads. Only used if ”…”�”}”(hj¤¨h²hh³Nh´Nubj›)�”}”(hŒ**bstats_cpu**”h]”hŒ bstats_cpu”…”�”}”(hjШh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤¨ubhŒ is NULL”…”�”}”(hj¤¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kvhj¡¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ¨h´Kxhjž§ubjä)�”}”(hŒ8``struct nlattr *opt`` rate estimator configuration TLV ”h]”(jê)�”}”(hŒ``struct nlattr *opt``”h]”jð)�”}”(hjû¨h]”hŒstruct nlattr *opt”…”�”}”(hjý¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjù¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kyhjõ¨ubj)�”}”(hhh]”jl)�”}”(hŒ rate estimator configuration TLV”h]”hŒ rate estimator configuration TLV”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©h´Kyhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©h´Kyhjž§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚§ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj6©h]”hŒ Description”…”�”}”(hj8©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´K{hj‚§ubjl)�”}”(hXnCreates a new rate estimator with :c:type:`bstats` as source and :c:type:`rate_est` as destination. A new timer with the interval specified in the configuration TLV is created. Upon each interval, the latest statistics will be read from :c:type:`bstats` and the estimated rate will be stored in :c:type:`rate_est` with the statistics lock grabbed during this period.”h]”(hŒ"Creates a new rate estimator with ”…”�”}”(hjL©h²hh³Nh´Nubh)�”}”(hŒ:c:type:`bstats`”h]”jð)�”}”(hjV©h]”hŒbstats”…”�”}”(hjX©h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjT©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œbstats”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KzhjL©ubhŒ as source and ”…”�”}”(hjL©h²hh³Nh´Nubh)�”}”(hŒ:c:type:`rate_est`”h]”jð)�”}”(hjz©h]”hŒrate_est”…”�”}”(hj|©h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjx©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œrate_est”uh1hh³js©h´KzhjL©ubhŒš as destination. A new timer with the interval specified in the configuration TLV is created. Upon each interval, the latest statistics will be read from ”…”�”}”(hjL©h²hh³Nh´Nubh)�”}”(hŒ:c:type:`bstats`”h]”jð)�”}”(hj�©h]”hŒbstats”…”�”}”(hjŸ©h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj›©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œbstats”uh1hh³js©h´KzhjL©ubhŒ* and the estimated rate will be stored in ”…”�”}”(hjL©h²hh³Nh´Nubh)�”}”(hŒ:c:type:`rate_est`”h]”jð)�”}”(hjÀ©h]”hŒrate_est”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¾©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œrate_est”uh1hh³js©h´KzhjL©ubhŒ5 with the statistics lock grabbed during this period.”…”�”}”(hjL©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³js©h´Kzhj‚§ubjl)�”}”(hŒ.Returns 0 on success or a negative error code.”h]”hŒ.Returns 0 on success or a negative error code.”…”�”}”(hjç©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´K€hj‚§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒgen_kill_estimator (C function)”Œc.gen_kill_estimator”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDvoid gen_kill_estimator (struct net_rate_estimator __rcu **rate_est)”h]”j )�”}”(hŒCvoid gen_kill_estimator(struct net_rate_estimator __rcu **rate_est)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjªh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªh²hh³j$ªh´KÉubj3)�”}”(hŒgen_kill_estimator”h]”j9)�”}”(hŒgen_kill_estimator”h]”hŒgen_kill_estimator”…”�”}”(hj7ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ªubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjªh²hh³j$ªh´KÉubj¡ )�”}”(hŒ,(struct net_rate_estimator __rcu **rate_est)”h]”j§ )�”}”(hŒ*struct net_rate_estimator __rcu **rate_est”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjSªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`ªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOªubh)�”}”(hhh]”j9)�”}”(hŒnet_rate_estimator”h]”hŒnet_rate_estimator”…”�”}”(hjqªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jsªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j9ªsbŒc.gen_kill_estimator”†”asbuh1hhjOªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘ªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOªubhŒ__rcu”…”�”}”(hjOªh²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOªubj )�”}”(hj h]”hŒ*”…”�”}”(hj±ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjOªubj )�”}”(hj h]”hŒ*”…”�”}”(hj¾ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjOªubj9)�”}”(hŒrate_est”h]”hŒrate_est”…”�”}”(hj˪h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKªubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjªh²hh³j$ªh´KÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjªh²hh³j$ªh´KÉubah}”(h]”j ªah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j$ªh´KÉhj ªh²hubjg)�”}”(hhh]”jl)�”}”(hŒremove a rate estimator”h]”hŒremove a rate estimator”…”�”}”(hjõªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÉhjòªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ªh²hh³j$ªh´KÉubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j «jŒj «j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hŒ}**Parameters** ``struct net_rate_estimator __rcu **rate_est`` rate estimator **Description** Removes the rate estimator.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj«h]”hŒ Parameters”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÍhj«ubjß)�”}”(hhh]”jä)�”}”(hŒ>``struct net_rate_estimator __rcu **rate_est`` rate estimator ”h]”(jê)�”}”(hŒ.``struct net_rate_estimator __rcu **rate_est``”h]”jð)�”}”(hj6«h]”hŒ*struct net_rate_estimator __rcu **rate_est”…”�”}”(hj8«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÊhj0«ubj)�”}”(hhh]”jl)�”}”(hŒrate estimator”h]”hŒrate estimator”…”�”}”(hjO«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jK«h´KÊhjL«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jK«h´KÊhj-«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj«ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjq«h]”hŒ Description”…”�”}”(hjs«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjo«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÌhj«ubjl)�”}”(hŒRemoves the rate estimator.”h]”hŒRemoves the rate estimator.”…”�”}”(hj‡«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KËhj«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"gen_replace_estimator (C function)”Œc.gen_replace_estimator”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒÓint gen_replace_estimator (struct gnet_stats_basic_sync *bstats, struct gnet_stats_basic_sync __percpu *cpu_bstats, struct net_rate_estimator __rcu **rate_est, spinlock_t *lock, bool running, struct nlattr *opt)”h]”j )�”}”(hŒÒint gen_replace_estimator(struct gnet_stats_basic_sync *bstats, struct gnet_stats_basic_sync __percpu *cpu_bstats, struct net_rate_estimator __rcu **rate_est, spinlock_t *lock, bool running, struct nlattr *opt)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¶«h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj²«h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÜubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²«h²hh³jÄ«h´KÜubj3)�”}”(hŒgen_replace_estimator”h]”j9)�”}”(hŒgen_replace_estimator”h]”hŒgen_replace_estimator”…”�”}”(hj׫h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ«ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj²«h²hh³jÄ«h´KÜubj¡ )�”}”(hŒ¹(struct gnet_stats_basic_sync *bstats, struct gnet_stats_basic_sync __percpu *cpu_bstats, struct net_rate_estimator __rcu **rate_est, spinlock_t *lock, bool running, struct nlattr *opt)”h]”(j§ )�”}”(hŒ$struct gnet_stats_basic_sync *bstats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjó«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjï«ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¬Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÙ«sbŒc.gen_replace_estimator”†”asbuh1hhjï«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjï«ubj )�”}”(hj h]”hŒ*”…”�”}”(hj?¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjï«ubj9)�”}”(hŒbstats”h]”hŒbstats”…”�”}”(hjL¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë«ubj§ )�”}”(hŒ1struct gnet_stats_basic_sync __percpu *cpu_bstats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hje¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja¬ubh)�”}”(hhh]”j9)�”}”(hŒgnet_stats_basic_sync”h]”hŒgnet_stats_basic_sync”…”�”}”(hjƒ¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j…¬Œmodname”NŒ classname”Njå jè )�”}”jë ]”j-¬Œc.gen_replace_estimator”†”asbuh1hhja¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja¬ubhŒ__percpu”…”�”}”(hja¬h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁ¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hja¬ubj9)�”}”(hŒ cpu_bstats”h]”hŒ cpu_bstats”…”�”}”(hjάh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë«ubj§ )�”}”(hŒ*struct net_rate_estimator __rcu **rate_est”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjç¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã¬ubh)�”}”(hhh]”j9)�”}”(hŒnet_rate_estimator”h]”hŒnet_rate_estimator”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­Œmodname”NŒ classname”Njå jè )�”}”jë ]”j-¬Œc.gen_replace_estimator”†”asbuh1hhjã¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã¬ubhŒ__rcu”…”�”}”(hjã¬h²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hjC­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjã¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hjP­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjã¬ubj9)�”}”(hŒrate_est”h]”hŒrate_est”…”�”}”(hj]­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë«ubj§ )�”}”(hŒspinlock_t *lock”h]”(h)�”}”(hhh]”j9)�”}”(hŒ spinlock_t”h]”hŒ spinlock_t”…”�”}”(hjy­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j{­Œmodname”NŒ classname”Njå jè )�”}”jë ]”j-¬Œc.gen_replace_estimator”†”asbuh1hhjr­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjr­ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjr­ubj9)�”}”(hŒlock”h]”hŒlock”…”�”}”(hj²­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë«ubj§ )�”}”(hŒ bool running”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjË­h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÇ­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ­ubj9)�”}”(hŒrunning”h]”hŒrunning”…”�”}”(hjæ­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇ­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë«ubj§ )�”}”(hŒstruct nlattr *opt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÿ­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjû­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjû­ubh)�”}”(hhh]”j9)�”}”(hŒnlattr”h]”hŒnlattr”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j®Œmodname”NŒ classname”Njå jè )�”}”jë ]”j-¬Œc.gen_replace_estimator”†”asbuh1hhjû­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjû­ubj )�”}”(hj h]”hŒ*”…”�”}”(hjI®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjû­ubj9)�”}”(hŒopt”h]”hŒopt”…”�”}”(hjV®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjû­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjë«ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj²«h²hh³jÄ«h´KÜubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj®«h²hh³jÄ«h´KÜubah}”(h]”j©«ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÄ«h´KÜhj««h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$replace rate estimator configuration”h]”hŒ$replace rate estimator configuration”…”�”}”(hj€®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÜhj}®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj««h²hh³jÄ«h´KÜubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j˜®jŒj˜®j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hX®**Parameters** ``struct gnet_stats_basic_sync *bstats`` basic statistics ``struct gnet_stats_basic_sync __percpu *cpu_bstats`` bstats per cpu ``struct net_rate_estimator __rcu **rate_est`` rate estimator statistics ``spinlock_t *lock`` lock for statistics and control path ``bool running`` true if **bstats** represents a running qdisc, thus **bstats**' internal values might change during basic reads. Only used if **cpu_bstats** is NULL ``struct nlattr *opt`` rate estimator configuration TLV **Description** Replaces the configuration of a rate estimator by calling gen_kill_estimator() and gen_new_estimator(). Returns 0 on success or a negative error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¢®h]”hŒ Parameters”…”�”}”(hj¤®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kàhjœ®ubjß)�”}”(hhh]”(jä)�”}”(hŒ:``struct gnet_stats_basic_sync *bstats`` basic statistics ”h]”(jê)�”}”(hŒ(``struct gnet_stats_basic_sync *bstats``”h]”jð)�”}”(hjÁ®h]”hŒ$struct gnet_stats_basic_sync *bstats”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÝhj»®ubj)�”}”(hhh]”jl)�”}”(hŒbasic statistics”h]”hŒbasic statistics”…”�”}”(hjÚ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖ®h´KÝhj×®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖ®h´KÝhj¸®ubjä)�”}”(hŒE``struct gnet_stats_basic_sync __percpu *cpu_bstats`` bstats per cpu ”h]”(jê)�”}”(hŒ5``struct gnet_stats_basic_sync __percpu *cpu_bstats``”h]”jð)�”}”(hjú®h]”hŒ1struct gnet_stats_basic_sync __percpu *cpu_bstats”…”�”}”(hjü®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjø®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KÞhjô®ubj)�”}”(hhh]”jl)�”}”(hŒbstats per cpu”h]”hŒbstats per cpu”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯h´KÞhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjô®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯h´KÞhj¸®ubjä)�”}”(hŒI``struct net_rate_estimator __rcu **rate_est`` rate estimator statistics ”h]”(jê)�”}”(hŒ.``struct net_rate_estimator __rcu **rate_est``”h]”jð)�”}”(hj3¯h]”hŒ*struct net_rate_estimator __rcu **rate_est”…”�”}”(hj5¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kßhj-¯ubj)�”}”(hhh]”jl)�”}”(hŒrate estimator statistics”h]”hŒrate estimator statistics”…”�”}”(hjL¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jH¯h´KßhjI¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jH¯h´Kßhj¸®ubjä)�”}”(hŒ:``spinlock_t *lock`` lock for statistics and control path ”h]”(jê)�”}”(hŒ``spinlock_t *lock``”h]”jð)�”}”(hjl¯h]”hŒspinlock_t *lock”…”�”}”(hjn¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kàhjf¯ubj)�”}”(hhh]”jl)�”}”(hŒ$lock for statistics and control path”h]”hŒ$lock for statistics and control path”…”�”}”(hj…¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�¯h´Kàhj‚¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�¯h´Kàhj¸®ubjä)�”}”(hŒ¦``bool running`` true if **bstats** represents a running qdisc, thus **bstats**' internal values might change during basic reads. Only used if **cpu_bstats** is NULL ”h]”(jê)�”}”(hŒ``bool running``”h]”jð)�”}”(hj¥¯h]”hŒ bool running”…”�”}”(hj§¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´KãhjŸ¯ubj)�”}”(hhh]”jl)�”}”(hŒ”true if **bstats** represents a running qdisc, thus **bstats**' internal values might change during basic reads. Only used if **cpu_bstats** is NULL”h]”(hŒtrue if ”…”�”}”(hj¾¯h²hh³Nh´Nubj›)�”}”(hŒ **bstats**”h]”hŒbstats”…”�”}”(hjƯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾¯ubhŒ" represents a running qdisc, thus ”…”�”}”(hj¾¯h²hh³Nh´Nubj›)�”}”(hŒ **bstats**”h]”hŒbstats”…”�”}”(hjدh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾¯ubhŒB’ internal values might change during basic reads. Only used if ”…”�”}”(hj¾¯h²hh³Nh´Nubj›)�”}”(hŒ**cpu_bstats**”h]”hŒ cpu_bstats”…”�”}”(hjê¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾¯ubhŒ is NULL”…”�”}”(hj¾¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Káhj»¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jº¯h´Kãhj¸®ubjä)�”}”(hŒ8``struct nlattr *opt`` rate estimator configuration TLV ”h]”(jê)�”}”(hŒ``struct nlattr *opt``”h]”jð)�”}”(hj°h]”hŒstruct nlattr *opt”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kähj°ubj)�”}”(hhh]”jl)�”}”(hŒ rate estimator configuration TLV”h]”hŒ rate estimator configuration TLV”…”�”}”(hj.°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*°h´Kähj+°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*°h´Kähj¸®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjœ®ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjP°h]”hŒ Description”…”�”}”(hjR°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjN°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kæhjœ®ubjl)�”}”(hŒgReplaces the configuration of a rate estimator by calling gen_kill_estimator() and gen_new_estimator().”h]”hŒgReplaces the configuration of a rate estimator by calling gen_kill_estimator() and gen_new_estimator().”…”�”}”(hjf°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kåhjœ®ubjl)�”}”(hŒ.Returns 0 on success or a negative error code.”h]”hŒ.Returns 0 on success or a negative error code.”…”�”}”(hju°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kèhjœ®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!gen_estimator_active (C function)”Œc.gen_estimator_active”hNt”auh1híhj^ƒh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFbool gen_estimator_active (struct net_rate_estimator __rcu **rate_est)”h]”j )�”}”(hŒEbool gen_estimator_active(struct net_rate_estimator __rcu **rate_est)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¤°h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj °h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´K÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj °h²hh³j±°h´K÷ubj3)�”}”(hŒgen_estimator_active”h]”j9)�”}”(hŒgen_estimator_active”h]”hŒgen_estimator_active”…”�”}”(hjİh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ°ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj °h²hh³j±°h´K÷ubj¡ )�”}”(hŒ,(struct net_rate_estimator __rcu **rate_est)”h]”j§ )�”}”(hŒ*struct net_rate_estimator __rcu **rate_est”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjà°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjܰubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjܰubh)�”}”(hhh]”j9)�”}”(hŒnet_rate_estimator”h]”hŒnet_rate_estimator”…”�”}”(hjþ°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjû°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j±Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jưsbŒc.gen_estimator_active”†”asbuh1hhjܰubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjܰubhŒ__rcu”…”�”}”(hjܰh²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjܰubj )�”}”(hj h]”hŒ*”…”�”}”(hj>±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjܰubj )�”}”(hj h]”hŒ*”…”�”}”(hjK±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjܰubj9)�”}”(hŒrate_est”h]”hŒrate_est”…”�”}”(hjX±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjܰubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjذubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj °h²hh³j±°h´K÷ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjœ°h²hh³j±°h´K÷ubah}”(h]”j—°ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j±°h´K÷hj™°h²hubjg)�”}”(hhh]”jl)�”}”(hŒ%test if estimator is currently in use”h]”hŒ%test if estimator is currently in use”…”�”}”(hj‚±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´K÷hj±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj™°h²hh³j±°h´K÷ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jš±jŒjš±j�‰jމj�‰uh1hþh²hhj^ƒh³Nh´Nubj‘)�”}”(hŒ˜**Parameters** ``struct net_rate_estimator __rcu **rate_est`` rate estimator **Description** Returns true if estimator is active, and false if not.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¤±h]”hŒ Parameters”…”�”}”(hj¦±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kûhjž±ubjß)�”}”(hhh]”jä)�”}”(hŒ>``struct net_rate_estimator __rcu **rate_est`` rate estimator ”h]”(jê)�”}”(hŒ.``struct net_rate_estimator __rcu **rate_est``”h]”jð)�”}”(hjñh]”hŒ*struct net_rate_estimator __rcu **rate_est”…”�”}”(hjűh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Køhj½±ubj)�”}”(hhh]”jl)�”}”(hŒrate estimator”h]”hŒrate estimator”…”�”}”(hjܱh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jرh´KøhjÙ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jرh´Køhjº±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjž±ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjþ±h]”hŒ Description”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kúhjž±ubjl)�”}”(hŒ6Returns true if estimator is active, and false if not.”h]”hŒ6Returns true if estimator is active, and false if not.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:53: ./net/core/gen_estimator.c”h´Kùhjž±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj^ƒh²hh³Nh´Nubeh}”(h]”Œgeneric-network-statistics”ah ]”h"]”Œgeneric network statistics”ah$]”h&]”uh1hµhhËh²hh³hÊh´K-ubh¶)�”}”(hhh]”(h»)�”}”(hŒSUN RPC subsystem”h]”hŒSUN RPC subsystem”…”�”}”(hj5²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj2²h²hh³hÊh´K9ubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$xdr_encode_opaque_fixed (C function)”Œc.xdr_encode_opaque_fixed”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒR__be32 * xdr_encode_opaque_fixed (__be32 *p, const void *ptr, unsigned int nbytes)”h]”j )�”}”(hŒP__be32 *xdr_encode_opaque_fixed(__be32 *p, const void *ptr, unsigned int nbytes)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hj_²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ja²Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxdr_encode_opaque_fixed”sbŒc.xdr_encode_opaque_fixed”†”asbuh1hhjX²h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjX²h²hh³j€²h´K)ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjX²h²hh³j€²h´K)ubj3)�”}”(hŒxdr_encode_opaque_fixed”h]”j9)�”}”(hj}²h]”hŒxdr_encode_opaque_fixed”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ²ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjX²h²hh³j€²h´K)ubj¡ )�”}”(hŒ1(__be32 *p, const void *ptr, unsigned int nbytes)”h]”(j§ )�”}”(hŒ __be32 *p”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hj¾²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÀ²Œmodname”NŒ classname”Njå jè )�”}”jë ]”j{²Œc.xdr_encode_opaque_fixed”†”asbuh1hhj·²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܲh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·²ubj )�”}”(hj h]”hŒ*”…”�”}”(hjê²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj·²ubj9)�”}”(hj h]”hŒp”…”�”}”(hj÷²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³²ubj§ )�”}”(hŒconst void *ptr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ³ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj*³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ³ubj )�”}”(hj h]”hŒ*”…”�”}”(hjF³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ³ubj9)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjS³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³²ubj§ )�”}”(hŒunsigned int nbytes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjl³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh³ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjˆ³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh³ubj9)�”}”(hŒnbytes”h]”hŒnbytes”…”�”}”(hj¤³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³²ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjX²h²hh³j€²h´K)ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjT²h²hh³j€²h´K)ubah}”(h]”jO²ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j€²h´K)hjQ²h²hubjg)�”}”(hhh]”jl)�”}”(hŒEncode fixed length opaque data”h]”hŒEncode fixed length opaque data”…”�”}”(hjγh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K)hj˳h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjQ²h²hh³j€²h´K)ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jæ³jŒjæ³j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXÌ**Parameters** ``__be32 *p`` pointer to current position in XDR buffer. ``const void *ptr`` pointer to data to encode (or NULL) ``unsigned int nbytes`` size of data. **Description** Copy the array of data of length nbytes at ptr to the XDR buffer at position p, then align to the next 32-bit boundary by padding with zero bytes (see RFC1832). **Note** if ptr is NULL, only the padding is performed. Returns the updated current XDR buffer position”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjð³h]”hŒ Parameters”…”�”}”(hjò³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K-hjê³ubjß)�”}”(hhh]”(jä)�”}”(hŒ9``__be32 *p`` pointer to current position in XDR buffer. ”h]”(jê)�”}”(hŒ ``__be32 *p``”h]”jð)�”}”(hj´h]”hŒ __be32 *p”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K*hj ´ubj)�”}”(hhh]”jl)�”}”(hŒ*pointer to current position in XDR buffer.”h]”hŒ*pointer to current position in XDR buffer.”…”�”}”(hj(´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j$´h´K*hj%´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j$´h´K*hj´ubjä)�”}”(hŒ8``const void *ptr`` pointer to data to encode (or NULL) ”h]”(jê)�”}”(hŒ``const void *ptr``”h]”jð)�”}”(hjH´h]”hŒconst void *ptr”…”�”}”(hjJ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjF´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K+hjB´ubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to data to encode (or NULL)”h]”hŒ#pointer to data to encode (or NULL)”…”�”}”(hja´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]´h´K+hj^´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]´h´K+hj´ubjä)�”}”(hŒ&``unsigned int nbytes`` size of data. ”h]”(jê)�”}”(hŒ``unsigned int nbytes``”h]”jð)�”}”(hj�´h]”hŒunsigned int nbytes”…”�”}”(hjƒ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K,hj{´ubj)�”}”(hhh]”jl)�”}”(hŒ size of data.”h]”hŒ size of data.”…”�”}”(hjš´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j–´h´K,hj—´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–´h´K,hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjê³ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¼´h]”hŒ Description”…”�”}”(hj¾´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjº´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K.hjê³ubjl)�”}”(hŒ Copy the array of data of length nbytes at ptr to the XDR buffer at position p, then align to the next 32-bit boundary by padding with zero bytes (see RFC1832).”h]”hŒ Copy the array of data of length nbytes at ptr to the XDR buffer at position p, then align to the next 32-bit boundary by padding with zero bytes (see RFC1832).”…”�”}”(hjÒ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K-hjê³ubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hjã´h]”hŒNote”…”�”}”(hjå´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjá´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K1hjê³ubjl)�”}”(hŒ.if ptr is NULL, only the padding is performed.”h]”hŒ.if ptr is NULL, only the padding is performed.”…”�”}”(hjù´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K1hjê³ubjl)�”}”(hŒ/Returns the updated current XDR buffer position”h]”hŒ/Returns the updated current XDR buffer position”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K3hjê³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_encode_opaque (C function)”Œc.xdr_encode_opaque”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒL__be32 * xdr_encode_opaque (__be32 *p, const void *ptr, unsigned int nbytes)”h]”j )�”}”(hŒJ__be32 *xdr_encode_opaque(__be32 *p, const void *ptr, unsigned int nbytes)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hj:µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7µubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j<µŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxdr_encode_opaque”sbŒc.xdr_encode_opaque”†”asbuh1hhj3µh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\µh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3µh²hh³j[µh´KGubj )�”}”(hj h]”hŒ*”…”�”}”(hjjµh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj3µh²hh³j[µh´KGubj3)�”}”(hŒxdr_encode_opaque”h]”j9)�”}”(hjXµh]”hŒxdr_encode_opaque”…”�”}”(hj{µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwµubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj3µh²hh³j[µh´KGubj¡ )�”}”(hŒ1(__be32 *p, const void *ptr, unsigned int nbytes)”h]”(j§ )�”}”(hŒ __be32 *p”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hj™µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–µubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›µŒmodname”NŒ classname”Njå jè )�”}”jë ]”jVµŒc.xdr_encode_opaque”†”asbuh1hhj’µubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·µh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’µubj )�”}”(hj h]”hŒ*”…”�”}”(hjŵh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’µubj9)�”}”(hj h]”hŒp”…”�”}”(hjÒµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj޵ubj§ )�”}”(hŒconst void *ptr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjêµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷µh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæµubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjæµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæµubj )�”}”(hj h]”hŒ*”…”�”}”(hj!¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjæµubj9)�”}”(hŒptr”h]”hŒptr”…”�”}”(hj.¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj޵ubj§ )�”}”(hŒunsigned int nbytes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjG¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjC¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC¶ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjc¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjC¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC¶ubj9)�”}”(hŒnbytes”h]”hŒnbytes”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj޵ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj3µh²hh³j[µh´KGubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj/µh²hh³j[µh´KGubah}”(h]”j*µah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j[µh´KGhj,µh²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Encode variable length opaque data”h]”hŒ"Encode variable length opaque data”…”�”}”(hj©¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KGhj¦¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj,µh²hh³j[µh´KGubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÁ¶jŒjÁ¶j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒð**Parameters** ``__be32 *p`` pointer to current position in XDR buffer. ``const void *ptr`` pointer to data to encode (or NULL) ``unsigned int nbytes`` size of data. **Description** Returns the updated current XDR buffer position”•h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj˶h]”hŒ Parameters”…”�”}”(hjͶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjɶubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KKhjŶubjß)�”}”(hhh]”(jä)�”}”(hŒ9``__be32 *p`` pointer to current position in XDR buffer. ”h]”(jê)�”}”(hŒ ``__be32 *p``”h]”jð)�”}”(hjê¶h]”hŒ __be32 *p”…”�”}”(hjì¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjè¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KHhjä¶ubj)�”}”(hhh]”jl)�”}”(hŒ*pointer to current position in XDR buffer.”h]”hŒ*pointer to current position in XDR buffer.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿ¶h´KHhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿ¶h´KHhjá¶ubjä)�”}”(hŒ8``const void *ptr`` pointer to data to encode (or NULL) ”h]”(jê)�”}”(hŒ``const void *ptr``”h]”jð)�”}”(hj#·h]”hŒconst void *ptr”…”�”}”(hj%·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KIhj·ubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to data to encode (or NULL)”h]”hŒ#pointer to data to encode (or NULL)”…”�”}”(hj<·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8·h´KIhj9·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8·h´KIhjá¶ubjä)�”}”(hŒ&``unsigned int nbytes`` size of data. ”h]”(jê)�”}”(hŒ``unsigned int nbytes``”h]”jð)�”}”(hj\·h]”hŒunsigned int nbytes”…”�”}”(hj^·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KJhjV·ubj)�”}”(hhh]”jl)�”}”(hŒ size of data.”h]”hŒ size of data.”…”�”}”(hju·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jq·h´KJhjr·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjV·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jq·h´KJhjá¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŶubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj—·h]”hŒ Description”…”�”}”(hj™·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj•·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KLhjŶubjl)�”}”(hŒ/Returns the updated current XDR buffer position”h]”hŒ/Returns the updated current XDR buffer position”…”�”}”(hj­·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KKhjŶubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!xdr_terminate_string (C function)”Œc.xdr_terminate_string”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDvoid xdr_terminate_string (const struct xdr_buf *buf, const u32 len)”h]”j )�”}”(hŒCvoid xdr_terminate_string(const struct xdr_buf *buf, const u32 len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜ·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjØ·h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ·h²hh³jê·h´K]ubj3)�”}”(hŒxdr_terminate_string”h]”j9)�”}”(hŒxdr_terminate_string”h]”hŒxdr_terminate_string”…”�”}”(hjý·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù·ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjØ·h²hh³jê·h´K]ubj¡ )�”}”(hŒ*(const struct xdr_buf *buf, const u32 len)”h]”(j§ )�”}”(hŒconst struct xdr_buf *buf”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj4¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸ubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hjR¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjO¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jT¸Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÿ·sbŒc.xdr_terminate_string”†”asbuh1hhj¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸ubj )�”}”(hj h]”hŒ*”…”�”}”(hj€¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¸ubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸ubj§ )�”}”(hŒ const u32 len”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¦¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢¸ubh)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjĸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jƸŒmodname”NŒ classname”Njå jè )�”}”jë ]”jn¸Œc.xdr_terminate_string”†”asbuh1hhj¢¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢¸ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjð¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjØ·h²hh³jê·h´K]ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÔ·h²hh³jê·h´K]ubah}”(h]”jÏ·ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jê·h´K]hjÑ·h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.'\0'-terminate a string residing in an xdr_buf”h]”hŒ2‘0’-terminate a string residing in an xdr_buf”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K]hj¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÑ·h²hh³jê·h´K]ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j2¹jŒj2¹j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ**Parameters** ``const struct xdr_buf *buf`` XDR buffer where string resides ``const u32 len`` length of string, in bytes”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj<¹h]”hŒ Parameters”…”�”}”(hj>¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Kahj6¹ubjß)�”}”(hhh]”(jä)�”}”(hŒ>``const struct xdr_buf *buf`` XDR buffer where string resides ”h]”(jê)�”}”(hŒ``const struct xdr_buf *buf``”h]”jð)�”}”(hj[¹h]”hŒconst struct xdr_buf *buf”…”�”}”(hj]¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjY¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K^hjU¹ubj)�”}”(hhh]”jl)�”}”(hŒXDR buffer where string resides”h]”hŒXDR buffer where string resides”…”�”}”(hjt¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jp¹h´K^hjq¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jp¹h´K^hjR¹ubjä)�”}”(hŒ,``const u32 len`` length of string, in bytes”h]”(jê)�”}”(hŒ``const u32 len``”h]”jð)�”}”(hj”¹h]”hŒ const u32 len”…”�”}”(hj–¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K`hj޹ubj)�”}”(hhh]”jl)�”}”(hŒlength of string, in bytes”h]”hŒlength of string, in bytes”…”�”}”(hj­¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K_hjª¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj޹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©¹h´K`hjR¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_buf_to_bvec (C function)”Œc.xdr_buf_to_bvec”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ]int xdr_buf_to_bvec (struct bio_vec *bvec, unsigned int bvec_size, const struct xdr_buf *xdr)”h]”j )�”}”(hŒ\int xdr_buf_to_bvec(struct bio_vec *bvec, unsigned int bvec_size, const struct xdr_buf *xdr)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjî¹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjê¹h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjê¹h²hh³jü¹h´KŒubj3)�”}”(hŒxdr_buf_to_bvec”h]”j9)�”}”(hŒxdr_buf_to_bvec”h]”hŒxdr_buf_to_bvec”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ºubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjê¹h²hh³jü¹h´KŒubj¡ )�”}”(hŒI(struct bio_vec *bvec, unsigned int bvec_size, const struct xdr_buf *xdr)”h]”(j§ )�”}”(hŒstruct bio_vec *bvec”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj+ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8ºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'ºubh)�”}”(hhh]”j9)�”}”(hŒbio_vec”h]”hŒbio_vec”…”�”}”(hjIºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKºŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jºsbŒc.xdr_buf_to_bvec”†”asbuh1hhj'ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'ºubj )�”}”(hj h]”hŒ*”…”�”}”(hjwºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj'ºubj9)�”}”(hŒbvec”h]”hŒbvec”…”�”}”(hj„ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#ºubj§ )�”}”(hŒunsigned int bvec_size”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�ºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj™ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«ºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™ºubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¹ºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj™ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjǺh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™ºubj9)�”}”(hŒ bvec_size”h]”hŒ bvec_size”…”�”}”(hjÕºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#ºubj§ )�”}”(hŒconst struct xdr_buf *xdr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjîºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêºubj)�”}”(hjh]”hŒstruct”…”�”}”(hj »h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêºubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hj'»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)»Œmodname”NŒ classname”Njå jè )�”}”jë ]”jeºŒc.xdr_buf_to_bvec”†”asbuh1hhjêºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêºubj )�”}”(hj h]”hŒ*”…”�”}”(hjS»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjêºubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj`»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#ºubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjê¹h²hh³jü¹h´KŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæ¹h²hh³jü¹h´KŒubah}”(h]”já¹ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jü¹h´KŒhjã¹h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2Copy components of an xdr_buf into a bio_vec array”h]”hŒ2Copy components of an xdr_buf into a bio_vec array”…”�”}”(hjŠ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KŒhj‡»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjã¹h²hh³jü¹h´KŒubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¢»jŒj¢»j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXL**Parameters** ``struct bio_vec *bvec`` bio_vec array to populate ``unsigned int bvec_size`` element count of **bvec** ``const struct xdr_buf *xdr`` xdr_buf to be copied **Description** Returns the number of entries consumed in **bvec** on success, or -ESERVERFAULT when **xdr** does not fit within **bvec_size** entries.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¬»h]”hŒ Parameters”…”�”}”(hj®»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjª»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K�hj¦»ubjß)�”}”(hhh]”(jä)�”}”(hŒ3``struct bio_vec *bvec`` bio_vec array to populate ”h]”(jê)�”}”(hŒ``struct bio_vec *bvec``”h]”jð)�”}”(hjË»h]”hŒstruct bio_vec *bvec”…”�”}”(hjÍ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K�hjÅ»ubj)�”}”(hhh]”jl)�”}”(hŒbio_vec array to populate”h]”hŒbio_vec array to populate”…”�”}”(hjä»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jà»h´K�hjá»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅ»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jà»h´K�hj»ubjä)�”}”(hŒ5``unsigned int bvec_size`` element count of **bvec** ”h]”(jê)�”}”(hŒ``unsigned int bvec_size``”h]”jð)�”}”(hj¼h]”hŒunsigned int bvec_size”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KŽhjþ»ubj)�”}”(hhh]”jl)�”}”(hŒelement count of **bvec**”h]”(hŒelement count of ”…”�”}”(hj¼h²hh³Nh´Nubj›)�”}”(hŒ**bvec**”h]”hŒbvec”…”�”}”(hj%¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼h´KŽhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼h´KŽhj»ubjä)�”}”(hŒ3``const struct xdr_buf *xdr`` xdr_buf to be copied ”h]”(jê)�”}”(hŒ``const struct xdr_buf *xdr``”h]”jð)�”}”(hjK¼h]”hŒconst struct xdr_buf *xdr”…”�”}”(hjM¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjI¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K�hjE¼ubj)�”}”(hhh]”jl)�”}”(hŒxdr_buf to be copied”h]”hŒxdr_buf to be copied”…”�”}”(hjd¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`¼h´K�hja¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`¼h´K�hj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¦»ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj†¼h]”hŒ Description”…”�”}”(hjˆ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K‘hj¦»ubjl)�”}”(hŒ‡Returns the number of entries consumed in **bvec** on success, or -ESERVERFAULT when **xdr** does not fit within **bvec_size** entries.”h]”(hŒ*Returns the number of entries consumed in ”…”�”}”(hjœ¼h²hh³Nh´Nubj›)�”}”(hŒ**bvec**”h]”hŒbvec”…”�”}”(hj¤¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœ¼ubhŒ# on success, or -ESERVERFAULT when ”…”�”}”(hjœ¼h²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hj¶¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœ¼ubhŒ does not fit within ”…”�”}”(hjœ¼h²hh³Nh´Nubj›)�”}”(hŒ **bvec_size**”h]”hŒ bvec_size”…”�”}”(hjȼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœ¼ubhŒ entries.”…”�”}”(hjœ¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´K�hj¦»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_buf_to_sg (C function)”Œc.xdr_buf_to_sg”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ~int xdr_buf_to_sg (const struct xdr_buf *buf, unsigned int offset, unsigned int len, struct scatterlist *sg, unsigned int nsg)”h]”j )�”}”(hŒ}int xdr_buf_to_sg(const struct xdr_buf *buf, unsigned int offset, unsigned int len, struct scatterlist *sg, unsigned int nsg)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjý¼h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÄubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjý¼h²hh³j½h´KÄubj3)�”}”(hŒ xdr_buf_to_sg”h]”j9)�”}”(hŒ xdr_buf_to_sg”h]”hŒ xdr_buf_to_sg”…”�”}”(hj"½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjý¼h²hh³j½h´KÄubj¡ )�”}”(hŒl(const struct xdr_buf *buf, unsigned int offset, unsigned int len, struct scatterlist *sg, unsigned int nsg)”h]”(j§ )�”}”(hŒconst struct xdr_buf *buf”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj>½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:½ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:½ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjY½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:½ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:½ubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hjw½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jy½Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j$½sbŒc.xdr_buf_to_sg”†”asbuh1hhj:½ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:½ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj:½ubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj²½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6½ubj§ )�”}”(hŒunsigned int offset”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj˽h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjǽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjǽubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjç½h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjǽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjǽubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjǽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6½ubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj8¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjT¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6½ubj§ )�”}”(hŒstruct scatterlist *sg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjm¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhji¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hji¾ubh)�”}”(hhh]”j9)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj‹¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆ¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”j“½Œc.xdr_buf_to_sg”†”asbuh1hhji¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hji¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hj·¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hji¾ubj9)�”}”(hŒsg”h]”hŒsg”…”�”}”(hjľh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6½ubj§ )�”}”(hŒunsigned int nsg”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjݾh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÙ¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ¾ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjù¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÙ¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ¾ubj9)�”}”(hŒnsg”h]”hŒnsg”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6½ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjý¼h²hh³j½h´KÄubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjù¼h²hh³j½h´KÄubah}”(h]”jô¼ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j½h´KÄhjö¼h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Populate a scatterlist from an xdr_buf range”h]”hŒ,Populate a scatterlist from an xdr_buf range”…”�”}”(hj?¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÄhj<¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjö¼h²hh³j½h´KÄubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jW¿jŒjW¿j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX;**Parameters** ``const struct xdr_buf *buf`` xdr_buf to map ``unsigned int offset`` starting byte offset within **buf** ``unsigned int len`` number of bytes to cover ``struct scatterlist *sg`` scatterlist array initialized with sg_init_table() ``unsigned int nsg`` number of entries available in **sg** **Description** **sg** is traversed with sg_next(), so callers may pass a list assembled with sg_chain(). **Return** on success, the number of scatterlist entries used; the last used entry is marked with sg_mark_end(). On failure, a negative errno.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hja¿h]”hŒ Parameters”…”�”}”(hjc¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj_¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÈhj[¿ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``const struct xdr_buf *buf`` xdr_buf to map ”h]”(jê)�”}”(hŒ``const struct xdr_buf *buf``”h]”jð)�”}”(hj€¿h]”hŒconst struct xdr_buf *buf”…”�”}”(hj‚¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÅhjz¿ubj)�”}”(hhh]”jl)�”}”(hŒxdr_buf to map”h]”hŒxdr_buf to map”…”�”}”(hj™¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•¿h´KÅhj–¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•¿h´KÅhjw¿ubjä)�”}”(hŒ<``unsigned int offset`` starting byte offset within **buf** ”h]”(jê)�”}”(hŒ``unsigned int offset``”h]”jð)�”}”(hj¹¿h]”hŒunsigned int offset”…”�”}”(hj»¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÆhj³¿ubj)�”}”(hhh]”jl)�”}”(hŒ#starting byte offset within **buf**”h]”(hŒstarting byte offset within ”…”�”}”(hjÒ¿h²hh³Nh´Nubj›)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjÚ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jοh´KÆhjÏ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jοh´KÆhjw¿ubjä)�”}”(hŒ.``unsigned int len`` number of bytes to cover ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjÀh]”hŒunsigned int len”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÇhjú¿ubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to cover”h]”hŒnumber of bytes to cover”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀh´KÇhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀh´KÇhjw¿ubjä)�”}”(hŒN``struct scatterlist *sg`` scatterlist array initialized with sg_init_table() ”h]”(jê)�”}”(hŒ``struct scatterlist *sg``”h]”jð)�”}”(hj9Àh]”hŒstruct scatterlist *sg”…”�”}”(hj;Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÈhj3Àubj)�”}”(hhh]”jl)�”}”(hŒ2scatterlist array initialized with sg_init_table()”h]”hŒ2scatterlist array initialized with sg_init_table()”…”�”}”(hjRÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNÀh´KÈhjOÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNÀh´KÈhjw¿ubjä)�”}”(hŒ;``unsigned int nsg`` number of entries available in **sg** ”h]”(jê)�”}”(hŒ``unsigned int nsg``”h]”jð)�”}”(hjrÀh]”hŒunsigned int nsg”…”�”}”(hjtÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjpÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÉhjlÀubj)�”}”(hhh]”jl)�”}”(hŒ%number of entries available in **sg**”h]”(hŒnumber of entries available in ”…”�”}”(hj‹Àh²hh³Nh´Nubj›)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hj“Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡Àh´KÉhjˆÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡Àh´KÉhjw¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj[¿ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj»Àh]”hŒ Description”…”�”}”(hj½Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¹Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KËhj[¿ubjl)�”}”(hŒY**sg** is traversed with sg_next(), so callers may pass a list assembled with sg_chain().”h]”(j›)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hjÕÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÑÀubhŒS is traversed with sg_next(), so callers may pass a list assembled with sg_chain().”…”�”}”(hjÑÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÊhj[¿ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjðÀh]”hŒReturn”…”�”}”(hjòÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjîÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÍhj[¿ubjl)�”}”(hŒ„on success, the number of scatterlist entries used; the last used entry is marked with sg_mark_end(). On failure, a negative errno.”h]”hŒ„on success, the number of scatterlist entries used; the last used entry is marked with sg_mark_end(). On failure, a negative errno.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´KÎhj[¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ xdr_buf_to_sg_alloc (C function)”Œc.xdr_buf_to_sg_alloc”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒÀint xdr_buf_to_sg_alloc (const struct xdr_buf *buf, unsigned int offset, unsigned int len, struct scatterlist *sg_head, unsigned int sg_head_nents, struct scatterlist **sg_overflow, gfp_t gfp)”h]”j )�”}”(hŒ¿int xdr_buf_to_sg_alloc(const struct xdr_buf *buf, unsigned int offset, unsigned int len, struct scatterlist *sg_head, unsigned int sg_head_nents, struct scatterlist **sg_overflow, gfp_t gfp)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj5Áh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj1Áh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1Áh²hh³jCÁh´MLubj3)�”}”(hŒxdr_buf_to_sg_alloc”h]”j9)�”}”(hŒxdr_buf_to_sg_alloc”h]”hŒxdr_buf_to_sg_alloc”…”�”}”(hjVÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRÁubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj1Áh²hh³jCÁh´MLubj¡ )�”}”(hŒ¨(const struct xdr_buf *buf, unsigned int offset, unsigned int len, struct scatterlist *sg_head, unsigned int sg_head_nents, struct scatterlist **sg_overflow, gfp_t gfp)”h]”(j§ )�”}”(hŒconst struct xdr_buf *buf”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjrÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnÁubj)�”}”(hjh]”hŒstruct”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnÁubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hj«Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­ÁŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jXÁsbŒc.xdr_buf_to_sg_alloc”†”asbuh1hhjnÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnÁubj )�”}”(hj h]”hŒ*”…”�”}”(hjÙÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjnÁubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjæÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjÁubj§ )�”}”(hŒunsigned int offset”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÿÁh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjûÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûÁubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjûÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûÁubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj7Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjÁubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjPÂh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjLÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLÂubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjlÂh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjLÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLÂubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjˆÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjÁubj§ )�”}”(hŒstruct scatterlist *sg_head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¡Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Âubh)�”}”(hhh]”j9)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj¿Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÁÂŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÇÁŒc.xdr_buf_to_sg_alloc”†”asbuh1hhj�Âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Âubj )�”}”(hj h]”hŒ*”…”�”}”(hjëÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�Âubj9)�”}”(hŒsg_head”h]”hŒsg_head”…”�”}”(hjøÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjÁubj§ )�”}”(hŒunsigned int sg_head_nents”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj Ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ÃubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj-Ãh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj Ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Ãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Ãubj9)�”}”(hŒ sg_head_nents”h]”hŒ sg_head_nents”…”�”}”(hjIÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjÁubj§ )�”}”(hŒ struct scatterlist **sg_overflow”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjbÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^Ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^Ãubh)�”}”(hhh]”j9)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj€Ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‚ÃŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÇÁŒc.xdr_buf_to_sg_alloc”†”asbuh1hhj^Ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^Ãubj )�”}”(hj h]”hŒ*”…”�”}”(hj¬Ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^Ãubj )�”}”(hj h]”hŒ*”…”�”}”(hj¹Ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^Ãubj9)�”}”(hŒ sg_overflow”h]”hŒ sg_overflow”…”�”}”(hjÆÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjÁubj§ )�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjâÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jäÃŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÇÁŒc.xdr_buf_to_sg_alloc”†”asbuh1hhjÛÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛÃubj9)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjjÁubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj1Áh²hh³jCÁh´MLubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj-Áh²hh³jCÁh´MLubah}”(h]”j(Áah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jCÁh´MLhj*Áh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Populate a scatterlist for an xdr_buf range”h]”hŒ+Populate a scatterlist for an xdr_buf range”…”�”}”(hj8Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MLhj5Äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj*Áh²hh³jCÁh´MLubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jPÄjŒjPÄj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX¸**Parameters** ``const struct xdr_buf *buf`` xdr_buf to map ``unsigned int offset`` starting byte offset within **buf** ``unsigned int len`` number of bytes to cover ``struct scatterlist *sg_head`` caller-provided scatterlist array (typically stack-allocated) ``unsigned int sg_head_nents`` number of entries in **sg_head** ``struct scatterlist **sg_overflow`` OUT: chained extension, or NULL when **sg_head** sufficed ``gfp_t gfp`` memory allocation flags for overflow **Description** Populates **sg_head** directly when the xdr_buf fits. When more entries are needed, an overflow scatterlist is allocated and chained from **sg_head** so that the result is traversable with sg_next(). **Return** on success, the number of populated scatterlist entries (counting only data entries, not chain entries). **sg_head** is the head of the resulting list. Caller must kfree **sg_overflow** when done. On failure, a negative errno.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjZÄh]”hŒ Parameters”…”�”}”(hj\Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjXÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MPhjTÄubjß)�”}”(hhh]”(jä)�”}”(hŒ-``const struct xdr_buf *buf`` xdr_buf to map ”h]”(jê)�”}”(hŒ``const struct xdr_buf *buf``”h]”jð)�”}”(hjyÄh]”hŒconst struct xdr_buf *buf”…”�”}”(hj{Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjwÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MMhjsÄubj)�”}”(hhh]”jl)�”}”(hŒxdr_buf to map”h]”hŒxdr_buf to map”…”�”}”(hj’Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽÄh´MMhj�Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽÄh´MMhjpÄubjä)�”}”(hŒ<``unsigned int offset`` starting byte offset within **buf** ”h]”(jê)�”}”(hŒ``unsigned int offset``”h]”jð)�”}”(hj²Äh]”hŒunsigned int offset”…”�”}”(hj´Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MNhj¬Äubj)�”}”(hhh]”jl)�”}”(hŒ#starting byte offset within **buf**”h]”(hŒstarting byte offset within ”…”�”}”(hjËÄh²hh³Nh´Nubj›)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjÓÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjËÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇÄh´MNhjÈÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇÄh´MNhjpÄubjä)�”}”(hŒ.``unsigned int len`` number of bytes to cover ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjùÄh]”hŒunsigned int len”…”�”}”(hjûÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MOhjóÄubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to cover”h]”hŒnumber of bytes to cover”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÅh´MOhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjóÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÅh´MOhjpÄubjä)�”}”(hŒ^``struct scatterlist *sg_head`` caller-provided scatterlist array (typically stack-allocated) ”h]”(jê)�”}”(hŒ``struct scatterlist *sg_head``”h]”jð)�”}”(hj2Åh]”hŒstruct scatterlist *sg_head”…”�”}”(hj4Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MPhj,Åubj)�”}”(hhh]”jl)�”}”(hŒ=caller-provided scatterlist array (typically stack-allocated)”h]”hŒ=caller-provided scatterlist array (typically stack-allocated)”…”�”}”(hjKÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jGÅh´MPhjHÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGÅh´MPhjpÄubjä)�”}”(hŒ@``unsigned int sg_head_nents`` number of entries in **sg_head** ”h]”(jê)�”}”(hŒ``unsigned int sg_head_nents``”h]”jð)�”}”(hjkÅh]”hŒunsigned int sg_head_nents”…”�”}”(hjmÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjiÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MQhjeÅubj)�”}”(hhh]”jl)�”}”(hŒ number of entries in **sg_head**”h]”(hŒnumber of entries in ”…”�”}”(hj„Åh²hh³Nh´Nubj›)�”}”(hŒ **sg_head**”h]”hŒsg_head”…”�”}”(hjŒÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€Åh´MQhj�Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€Åh´MQhjpÄubjä)�”}”(hŒ_``struct scatterlist **sg_overflow`` OUT: chained extension, or NULL when **sg_head** sufficed ”h]”(jê)�”}”(hŒ$``struct scatterlist **sg_overflow``”h]”jð)�”}”(hj²Åh]”hŒ struct scatterlist **sg_overflow”…”�”}”(hj´Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MRhj¬Åubj)�”}”(hhh]”jl)�”}”(hŒ9OUT: chained extension, or NULL when **sg_head** sufficed”h]”(hŒ%OUT: chained extension, or NULL when ”…”�”}”(hjËÅh²hh³Nh´Nubj›)�”}”(hŒ **sg_head**”h]”hŒsg_head”…”�”}”(hjÓÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjËÅubhŒ sufficed”…”�”}”(hjËÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇÅh´MRhjÈÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇÅh´MRhjpÄubjä)�”}”(hŒ3``gfp_t gfp`` memory allocation flags for overflow ”h]”(jê)�”}”(hŒ ``gfp_t gfp``”h]”jð)�”}”(hjýÅh]”hŒ gfp_t gfp”…”�”}”(hjÿÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MShj÷Åubj)�”}”(hhh]”jl)�”}”(hŒ$memory allocation flags for overflow”h]”hŒ$memory allocation flags for overflow”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÆh´MShjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÆh´MShjpÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjTÄubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj8Æh]”hŒ Description”…”�”}”(hj:Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MUhjTÄubjl)�”}”(hŒÈPopulates **sg_head** directly when the xdr_buf fits. When more entries are needed, an overflow scatterlist is allocated and chained from **sg_head** so that the result is traversable with sg_next().”h]”(hŒ Populates ”…”�”}”(hjNÆh²hh³Nh´Nubj›)�”}”(hŒ **sg_head**”h]”hŒsg_head”…”�”}”(hjVÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjNÆubhŒv directly when the xdr_buf fits. When more entries are needed, an overflow scatterlist is allocated and chained from ”…”�”}”(hjNÆh²hh³Nh´Nubj›)�”}”(hŒ **sg_head**”h]”hŒsg_head”…”�”}”(hjhÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjNÆubhŒ2 so that the result is traversable with sg_next().”…”�”}”(hjNÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MThjTÄubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjƒÆh]”hŒReturn”…”�”}”(hj…Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MYhjTÄubjl)�”}”(hŒåon success, the number of populated scatterlist entries (counting only data entries, not chain entries). **sg_head** is the head of the resulting list. Caller must kfree **sg_overflow** when done. On failure, a negative errno.”h]”(hŒjon success, the number of populated scatterlist entries (counting only data entries, not chain entries). ”…”�”}”(hj™Æh²hh³Nh´Nubj›)�”}”(hŒ **sg_head**”h]”hŒsg_head”…”�”}”(hj¡Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™ÆubhŒ7 is the head of the resulting list. Caller must kfree ”…”�”}”(hj™Æh²hh³Nh´Nubj›)�”}”(hŒ**sg_overflow**”h]”hŒ sg_overflow”…”�”}”(hj³Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™ÆubhŒ* when done. On failure, a negative errno.”…”�”}”(hj™Æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MZhjTÄubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_inline_pages (C function)”Œc.xdr_inline_pages”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒzvoid xdr_inline_pages (struct xdr_buf *xdr, unsigned int offset, struct page **pages, unsigned int base, unsigned int len)”h]”j )�”}”(hŒyvoid xdr_inline_pages(struct xdr_buf *xdr, unsigned int offset, struct page **pages, unsigned int base, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjìÆh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjèÆh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MŠubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèÆh²hh³júÆh´MŠubj3)�”}”(hŒxdr_inline_pages”h]”j9)�”}”(hŒxdr_inline_pages”h]”hŒxdr_inline_pages”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Çubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjèÆh²hh³júÆh´MŠubj¡ )�”}”(hŒd(struct xdr_buf *xdr, unsigned int offset, struct page **pages, unsigned int base, unsigned int len)”h]”(j§ )�”}”(hŒstruct xdr_buf *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj)Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%Çubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hjGÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjDÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jIÇŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÇsbŒc.xdr_inline_pages”†”asbuh1hhj%Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%Çubj )�”}”(hj h]”hŒ*”…”�”}”(hjuÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj%Çubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj‚Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!Çubj§ )�”}”(hŒunsigned int offset”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj›Çh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj—Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—ÇubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj·Çh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj—Çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—Çubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjÓÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!Çubj§ )�”}”(hŒstruct page **pages”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjìÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèÇubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj Èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ÈŒmodname”NŒ classname”Njå jè )�”}”jë ]”jcÇŒc.xdr_inline_pages”†”asbuh1hhjèÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèÇubj )�”}”(hj h]”hŒ*”…”�”}”(hj6Èh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjèÇubj )�”}”(hj h]”hŒ*”…”�”}”(hjCÈh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjèÇubj9)�”}”(hŒpages”h]”hŒpages”…”�”}”(hjPÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!Çubj§ )�”}”(hŒunsigned int base”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjiÈh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjeÈubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeÈubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj…Èh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjeÈubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeÈubj9)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj¡Èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!Çubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjºÈh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶Èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶ÈubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÖÈh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶Èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶Èubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjòÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶Èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!Çubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjèÆh²hh³júÆh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjäÆh²hh³júÆh´MŠubah}”(h]”j߯ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³júÆh´MŠhjáÆh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Prepare receive buffer for a large reply”h]”hŒ(Prepare receive buffer for a large reply”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MŠhjÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjáÆh²hh³júÆh´MŠubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j4ÉjŒj4Éj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct xdr_buf *xdr`` xdr_buf into which reply will be placed ``unsigned int offset`` expected offset where data payload will start, in bytes ``struct page **pages`` vector of struct page pointers ``unsigned int base`` offset in first page where receive should start, in bytes ``unsigned int len`` expected size of the upper layer data payload, in bytes”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj>Éh]”hŒ Parameters”…”�”}”(hj@Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj<Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MŽhj8Éubjß)�”}”(hhh]”(jä)�”}”(hŒ@``struct xdr_buf *xdr`` xdr_buf into which reply will be placed ”h]”(jê)�”}”(hŒ``struct xdr_buf *xdr``”h]”jð)�”}”(hj]Éh]”hŒstruct xdr_buf *xdr”…”�”}”(hj_Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M‹hjWÉubj)�”}”(hhh]”jl)�”}”(hŒ'xdr_buf into which reply will be placed”h]”hŒ'xdr_buf into which reply will be placed”…”�”}”(hjvÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jrÉh´M‹hjsÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrÉh´M‹hjTÉubjä)�”}”(hŒP``unsigned int offset`` expected offset where data payload will start, in bytes ”h]”(jê)�”}”(hŒ``unsigned int offset``”h]”jð)�”}”(hj–Éh]”hŒunsigned int offset”…”�”}”(hj˜Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MŒhj�Éubj)�”}”(hhh]”jl)�”}”(hŒ7expected offset where data payload will start, in bytes”h]”hŒ7expected offset where data payload will start, in bytes”…”�”}”(hj¯Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«Éh´MŒhj¬Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«Éh´MŒhjTÉubjä)�”}”(hŒ7``struct page **pages`` vector of struct page pointers ”h]”(jê)�”}”(hŒ``struct page **pages``”h]”jð)�”}”(hjÏÉh]”hŒstruct page **pages”…”�”}”(hjÑÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M�hjÉÉubj)�”}”(hhh]”jl)�”}”(hŒvector of struct page pointers”h]”hŒvector of struct page pointers”…”�”}”(hjèÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jäÉh´M�hjåÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jäÉh´M�hjTÉubjä)�”}”(hŒP``unsigned int base`` offset in first page where receive should start, in bytes ”h]”(jê)�”}”(hŒ``unsigned int base``”h]”jð)�”}”(hjÊh]”hŒunsigned int base”…”�”}”(hj Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MŽhjÊubj)�”}”(hhh]”jl)�”}”(hŒ9offset in first page where receive should start, in bytes”h]”hŒ9offset in first page where receive should start, in bytes”…”�”}”(hj!Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÊh´MŽhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÊh´MŽhjTÉubjä)�”}”(hŒL``unsigned int len`` expected size of the upper layer data payload, in bytes”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjAÊh]”hŒunsigned int len”…”�”}”(hjCÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M�hj;Êubj)�”}”(hhh]”jl)�”}”(hŒ7expected size of the upper layer data payload, in bytes”h]”hŒ7expected size of the upper layer data payload, in bytes”…”�”}”(hjZÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M�hjWÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVÊh´M�hjTÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8Éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ_copy_from_pages (C function)”Œc._copy_from_pages”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOvoid _copy_from_pages (char *p, struct page **pages, size_t pgbase, size_t len)”h]”j )�”}”(hŒNvoid _copy_from_pages(char *p, struct page **pages, size_t pgbase, size_t len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj›Êh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj—Êh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÊh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—Êh²hh³j©Êh´M`ubj3)�”}”(hŒ_copy_from_pages”h]”j9)�”}”(hŒ_copy_from_pages”h]”hŒ_copy_from_pages”…”�”}”(hj¼Êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸Êubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj—Êh²hh³j©Êh´M`ubj¡ )�”}”(hŒ9(char *p, struct page **pages, size_t pgbase, size_t len)”h]”(j§ )�”}”(hŒchar *p”h]”(jM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjØÊh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÔÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæÊh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔÊubj )�”}”(hj h]”hŒ*”…”�”}”(hjôÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÔÊubj9)�”}”(hj h]”hŒp”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÐÊubj§ )�”}”(hŒstruct page **pages”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj7Ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j9ËŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¾ÊsbŒc._copy_from_pages”†”asbuh1hhjËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWËh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËubj )�”}”(hj h]”hŒ*”…”�”}”(hjeËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËubj )�”}”(hj h]”hŒ*”…”�”}”(hjrËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËubj9)�”}”(hŒpages”h]”hŒpages”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÐÊubj§ )�”}”(hŒ size_t pgbase”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj›Ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�ËŒmodname”NŒ classname”Njå jè )�”}”jë ]”jSËŒc._copy_from_pages”†”asbuh1hhj”Ëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”Ëubj9)�”}”(hŒpgbase”h]”hŒpgbase”…”�”}”(hjÇËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÐÊubj§ )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjãËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jåËŒmodname”NŒ classname”Njå jè )�”}”jë ]”jSËŒc._copy_from_pages”†”asbuh1hhjÜËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜËubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÐÊubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj—Êh²hh³j©Êh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj“Êh²hh³j©Êh´M`ubah}”(h]”jŽÊah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j©Êh´M`hj�Êh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�Êh²hh³j©Êh´M`ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jBÌjŒjBÌj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX$**Parameters** ``char *p`` pointer to destination ``struct page **pages`` array of pages ``size_t pgbase`` offset of source data ``size_t len`` length **Description** Copies data into an arbitrary memory location from an array of pages The copy is assumed to be non-overlapping.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjLÌh]”hŒ Parameters”…”�”}”(hjNÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjJÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MdhjFÌubjß)�”}”(hhh]”(jä)�”}”(hŒ#``char *p`` pointer to destination ”h]”(jê)�”}”(hŒ ``char *p``”h]”jð)�”}”(hjkÌh]”hŒchar *p”…”�”}”(hjmÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjiÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MahjeÌubj)�”}”(hhh]”jl)�”}”(hŒpointer to destination”h]”hŒpointer to destination”…”�”}”(hj„Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€Ìh´Mahj�Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€Ìh´MahjbÌubjä)�”}”(hŒ'``struct page **pages`` array of pages ”h]”(jê)�”}”(hŒ``struct page **pages``”h]”jð)�”}”(hj¤Ìh]”hŒstruct page **pages”…”�”}”(hj¦Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MbhjžÌubj)�”}”(hhh]”jl)�”}”(hŒarray of pages”h]”hŒarray of pages”…”�”}”(hj½Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹Ìh´MbhjºÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹Ìh´MbhjbÌubjä)�”}”(hŒ(``size_t pgbase`` offset of source data ”h]”(jê)�”}”(hŒ``size_t pgbase``”h]”jð)�”}”(hjÝÌh]”hŒ size_t pgbase”…”�”}”(hjßÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mchj×Ìubj)�”}”(hhh]”jl)�”}”(hŒoffset of source data”h]”hŒoffset of source data”…”�”}”(hjöÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jòÌh´MchjóÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jòÌh´MchjbÌubjä)�”}”(hŒ``size_t len`` length ”h]”(jê)�”}”(hŒ``size_t len``”h]”jð)�”}”(hjÍh]”hŒ size_t len”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MdhjÍubj)�”}”(hhh]”jl)�”}”(hŒlength”h]”hŒlength”…”�”}”(hj/Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+Íh´Mdhj,Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+Íh´MdhjbÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjFÌubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjQÍh]”hŒ Description”…”�”}”(hjSÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MfhjFÌubjl)�”}”(hŒoCopies data into an arbitrary memory location from an array of pages The copy is assumed to be non-overlapping.”h]”hŒoCopies data into an arbitrary memory location from an array of pages The copy is assumed to be non-overlapping.”…”�”}”(hjgÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MehjFÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_stream_pos (C function)”Œc.xdr_stream_pos”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:unsigned int xdr_stream_pos (const struct xdr_stream *xdr)”h]”j )�”}”(hŒ9unsigned int xdr_stream_pos(const struct xdr_stream *xdr)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj–Íh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj’Íh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’Íh²hh³j¤Íh´MDubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj³Íh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj’Íh²hh³j¤Íh´MDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’Íh²hh³j¤Íh´MDubj3)�”}”(hŒxdr_stream_pos”h]”j9)�”}”(hŒxdr_stream_pos”h]”hŒxdr_stream_pos”…”�”}”(hjÓÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏÍubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj’Íh²hh³j¤Íh´MDubj¡ )�”}”(hŒ(const struct xdr_stream *xdr)”h]”j§ )�”}”(hŒconst struct xdr_stream *xdr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjïÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëÍubj)�”}”(hjh]”hŒstruct”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëÍubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj(Îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%Îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j*ÎŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÕÍsbŒc.xdr_stream_pos”†”asbuh1hhjëÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHÎh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëÍubj )�”}”(hj h]”hŒ*”…”�”}”(hjVÎh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjëÍubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjcÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjçÍubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj’Íh²hh³j¤Íh´MDubeh}”(h]”h ]”h"]”h$]”h&•]”jPjQjXˆuh1j jYjZhjŽÍh²hh³j¤Íh´MDubah}”(h]”j‰Íah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¤Íh´MDhj‹Íh²hubjg)�”}”(hhh]”jl)�”}”(hŒ:Return the current offset from the start of the xdr_stream”h]”hŒ:Return the current offset from the start of the xdr_stream”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MDhjŠÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‹Íh²hh³j¤Íh´MDubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¥ÎjŒj¥Îj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒO**Parameters** ``const struct xdr_stream *xdr`` pointer to struct xdr_stream”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¯Îh]”hŒ Parameters”…”�”}”(hj±Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj­Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MHhj©Îubjß)�”}”(hhh]”jä)�”}”(hŒ=``const struct xdr_stream *xdr`` pointer to struct xdr_stream”h]”(jê)�”}”(hŒ ``const struct xdr_stream *xdr``”h]”jð)�”}”(hjÎÎh]”hŒconst struct xdr_stream *xdr”…”�”}”(hjÐÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MJhjÈÎubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct xdr_stream”h]”hŒpointer to struct xdr_stream”…”�”}”(hjçÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MEhjäÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãÎh´MJhjÅÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj©Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_page_pos (C function)”Œc.xdr_page_pos”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8unsigned int xdr_page_pos (const struct xdr_stream *xdr)”h]”j )�”}”(hŒ7unsigned int xdr_page_pos(const struct xdr_stream *xdr)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj(Ïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$Ïh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Ïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$Ïh²hh³j6Ïh´MZubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjEÏh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$Ïh²hh³j6Ïh´MZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$Ïh²hh³j6Ïh´MZubj3)�”}”(hŒ xdr_page_pos”h]”j9)�”}”(hŒ xdr_page_pos”h]”hŒ xdr_page_pos”…”�”}”(hjeÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaÏubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj$Ïh²hh³j6Ïh´MZubj¡ )�”}”(hŒ(const struct xdr_stream *xdr)”h]”j§ )�”}”(hŒconst struct xdr_stream *xdr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj�Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Ïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}Ïubj)�”}”(hjh]”hŒstruct”…”�”}”(hjœÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Ïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Ïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}Ïubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjºÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¼ÏŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jgÏsbŒc.xdr_page_pos”†”asbuh1hhj}Ïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}Ïubj )�”}”(hj h]”hŒ*”…”�”}”(hjèÏh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}Ïubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjõÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}Ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjyÏubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj$Ïh²hh³j6Ïh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj Ïh²hh³j6Ïh´MZubah}”(h]”jÏah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j6Ïh´MZhjÏh²hubjg)�”}”(hhh]”jl)�”}”(hŒ9Return the current offset from the start of the xdr pages”h]”hŒ9Return the current offset from the start of the xdr pages”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MZhjÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÏh²hh³j6Ïh´MZubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j7ÐjŒj7Ðj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒO**Parameters** ``const struct xdr_stream *xdr`` pointer to struct xdr_stream”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjAÐh]”hŒ Parameters”…”�”}”(hjCÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M^hj;Ðubjß)�”}”(hhh]”jä)�”}”(hŒ=``const struct xdr_stream *xdr`` pointer to struct xdr_stream”h]”(jê)�”}”(hŒ ``const struct xdr_stream *xdr``”h]”jð)�”}”(hj`Ðh]”hŒconst struct xdr_stream *xdr”…”�”}”(hjbÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M`hjZÐubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct xdr_stream”h]”hŒpointer to struct xdr_stream”…”�”}”(hjyÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M[hjvÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³juÐh´M`hjWÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj;Ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_init_encode (C function)”Œc.xdr_init_encode”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒdvoid xdr_init_encode (struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst)”h]”j )�”}”(hŒcvoid xdr_init_encode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjºÐh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶Ðh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶Ðh²hh³jÈÐh´Mgubj3)�”}”(hŒxdr_init_encode”h]”j9)�”}”(hŒxdr_init_encode”h]”hŒxdr_init_encode”…”�”}”(hjÛÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×Ðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶Ðh²hh³jÈÐh´Mgubj¡ )�”}”(hŒO(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj÷Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjóÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóÐubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÝÐsbŒc.xdr_init_encode”†”asbuh1hhjóÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóÐubj )�”}”(hj h]”hŒ*”…”�”}”(hjCÑh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjóÐubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjPÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïÐubj§ )�”}”(hŒstruct xdr_buf *buf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjiÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeÑubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hj‡Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„Ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰ÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”j1ÑŒc.xdr_init_encode”†”asbuh1hhjeÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeÑubj )�”}”(hj h]”hŒ*”…”�”}”(hj³Ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjeÑubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÀÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïÐubj§ )�”}”(hŒ __be32 *p”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hjÜÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÞÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”j1ÑŒc.xdr_init_encode”†”asbuh1hhjÕÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕÑubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÕÑubj9)�”}”(hj h]”hŒp”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïÐubj§ )�”}”(hŒstruct rpc_rqst *rqst”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj-Òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)Òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)Òubh)�”}”(hhh]”j9)�”}”(hŒrpc_rqst”h]”hŒrpc_rqst”…”�”}”(hjKÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jMÒŒmodname”NŒ classname”Njå jè )�”}”jë ]”j1ÑŒc.xdr_init_encode”†”asbuh1hhj)Òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)Òubj )�”}”(hj h]”hŒ*”…”�”}”(hjwÒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj)Òubj9)�”}”(hŒrqst”h]”hŒrqst”…”�”}”(hj„Òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïÐubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶Ðh²hh³jÈÐh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj²Ðh²hh³jÈÐh´Mgubah}”(h]”j­Ðah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÈÐh´Mghj¯Ðh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Initialize a struct xdr_stream for sending data.”h]”hŒ0Initialize a struct xdr_stream for sending data.”…”�”}”(hj®Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mghj«Òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯Ðh²hh³jÈÐh´Mgubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÆÒjŒjÆÒj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXx**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``struct xdr_buf *buf`` pointer to XDR buffer in which to encode data ``__be32 *p`` current pointer inside XDR buffer ``struct rpc_rqst *rqst`` pointer to controlling rpc_rqst, for debugging **Note** at the moment the RPC client only passes the length of our scratch buffer in the xdr_buf's header kvec. Previously this meant we needed to call xdr_adjust_iovec() after encoding the data. With the new scheme, the xdr_stream manages the details of the buffer length, and takes care of adjusting the kvec length for us.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÐÒh]”hŒ Parameters”…”�”}”(hjÒÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MkhjÊÒubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjïÒh]”hŒstruct xdr_stream *xdr”…”�”}”(hjñÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhhjéÒubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓh´MhhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓh´MhhjæÒubjä)�”}”(hŒF``struct xdr_buf *buf`` pointer to XDR buffer in which to encode data ”h]”(jê)�”}”(hŒ``struct xdr_buf *buf``”h]”jð)�”}”(hj(Óh]”hŒstruct xdr_buf *buf”…”�”}”(hj*Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mihj"Óubj)�”}”(hhh]”jl)�”}”(hŒ-pointer to XDR buffer in which to encode data”h]”hŒ-pointer to XDR buffer in which to encode data”…”�”}”(hjAÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=Óh´Mihj>Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=Óh´MihjæÒubjä)�”}”(hŒ0``__be32 *p`` current pointer inside XDR buffer ”h]”(jê)�”}”(hŒ ``__be32 *p``”h]”jð)�”}”(hjaÓh]”hŒ __be32 *p”…”�”}”(hjcÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mjhj[Óubj)�”}”(hhh]”jl)�”}”(hŒ!current pointer inside XDR buffer”h]”hŒ!current pointer inside XDR buffer”…”�”}”(hjzÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvÓh´MjhjwÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvÓh´MjhjæÒubjä)�”}”(hŒI``struct rpc_rqst *rqst`` pointer to controlling rpc_rqst, for debugging ”h]”(jê)�”}”(hŒ``struct rpc_rqst *rqst``”h]”jð)�”}”(hjšÓh]”hŒstruct rpc_rqst *rqst”…”�”}”(hjœÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mkhj”Óubj)�”}”(hhh]”jl)�”}”(hŒ.pointer to controlling rpc_rqst, for debugging”h]”hŒ.pointer to controlling rpc_rqst, for debugging”…”�”}”(hj³Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯Óh´Mkhj°Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯Óh´MkhjæÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊÒubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hjÕÓh]”hŒNote”…”�”}”(hj×Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MmhjÊÒubjß)�”}”(hhh]”jä)�”}”(hX=at the moment the RPC client only passes the length of our scratch buffer in the xdr_buf's header kvec. Previously this meant we needed to call xdr_adjust_iovec() after encoding the data. With the new scheme, the xdr_stream manages the details of the buffer length, and takes care of adjusting the kvec length for us.”h]”(jê)�”}”(hŒ:at the moment the RPC client only passes the length of our”h]”hŒ:at the moment the RPC client only passes the length of our”…”�”}”(hjòÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MqhjîÓubj)�”}”(hhh]”jl)�”}”(hXscratch buffer in the xdr_buf's header kvec. Previously this meant we needed to call xdr_adjust_iovec() after encoding the data. With the new scheme, the xdr_stream manages the details of the buffer length, and takes care of adjusting the kvec length for us.”h]”hXscratch buffer in the xdr_buf’s header kvec. Previously this meant we needed to call xdr_adjust_iovec() after encoding the data. With the new scheme, the xdr_stream manages the details of the buffer length, and takes care of adjusting the kvec length for us.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MnhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔh´MqhjëÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"xdr_init_encode_pages (C function)”Œc.xdr_init_encode_pages”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHvoid xdr_init_encode_pages (struct xdr_stream *xdr, struct xdr_buf *buf)”h]”j )�”}”(hŒGvoid xdr_init_encode_pages(struct xdr_stream *xdr, struct xdr_buf *buf)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEÔh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjAÔh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAÔh²hh³jSÔh´M‘ubj3)�”}”(hŒxdr_init_encode_pages”h]”j9)�”}”(hŒxdr_init_encode_pages”h]”hŒxdr_init_encode_pages”…”�”}”(hjfÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbÔubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjAÔh²hh³jSÔh´M‘ubj¡ )�”}”(hŒ-(struct xdr_stream *xdr, struct xdr_buf *buf)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~Ôubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢ÔŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jhÔsbŒc.xdr_init_encode_pages”†”asbuh1hhj~Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~Ôubj )�”}”(hj h]”hŒ*”…”�”}”(hjÎÔh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj~Ôubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjÛÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjzÔubj§ )�”}”(hŒstruct xdr_buf *buf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjôÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðÔubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÕŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¼ÔŒc.xdr_init_encode_pages”†”asbuh1hhjðÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðÔubj )�”}”(hj h]”hŒ*”…”�”}”(hj>Õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjðÔubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjKÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjzÔubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjAÔh²hh³jSÔh´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj=Ôh²hh³jSÔh´M‘ubah}”(h]”j8Ôah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jSÔh´M‘hj:Ôh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Initialize an xdr_stream for encoding into pages”h]”hŒ0Initialize an xdr_stream for encoding into pages”…”�”}”(hjuÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M‘hjrÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj:Ôh²hh³jSÔh´M‘ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�ÕjŒj�Õj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ”**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``struct xdr_buf *buf`` pointer to XDR buffer into which to encode data”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj—Õh]”hŒ Parameters”…”�”}”(hj™Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj•Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M•hj‘Õubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hj¶Õh]”hŒstruct xdr_stream *xdr”…”�”}”(hj¸Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M’hj°Õubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hjÏÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËÕh´M’hjÌÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËÕh´M’hj­Õubjä)�”}”(hŒG``struct xdr_buf *buf`` pointer to XDR buffer into which to encode data”h]”(jê)�”}”(hŒ``struct xdr_buf *buf``”h]”jð)�”}”(hjïÕh]”hŒstruct xdr_buf *buf”…”�”}”(hjñÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M”hjéÕubj)�”}”(hhh]”jl)�”}”(hŒ/pointer to XDR buffer into which to encode data”h]”hŒ/pointer to XDR buffer into which to encode data”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M“hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖh´M”hj­Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘Õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ __xdr_commit_encode (C function)”Œc.__xdr_commit_encode”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void __xdr_commit_encode (struct xdr_stream *xdr)”h]”j )�”}”(hŒ0void __xdr_commit_encode(struct xdr_stream *xdr)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjIÖh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjEÖh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEÖh²hh³jWÖh´M¥ubj3)�”}”(hŒ__xdr_commit_encode”h]”j9)�”}”(hŒ__xdr_commit_encode”h]”hŒ__xdr_commit_encode”…”�”}”(hjjÖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfÖubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjEÖh²hh³jWÖh´M¥ubj¡ )�”}”(hŒ(struct xdr_stream *xdr)”h]”j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj†Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Öubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj¤Öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡Öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¦ÖŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jlÖsbŒc.__xdr_commit_encode”†”asbuh1hhj‚Öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Öubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒÖh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‚Öubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjßÖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚Öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~Öubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjEÖh²hh³jWÖh´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjAÖh²hh³jWÖh´M¥ubah}”(h]”j<Öah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jWÖh´M¥hj>Öh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Ensure all data is written to buffer”h]”hŒ$Ensure all data is written to buffer”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¥hj×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj>Öh²hh³jWÖh´M¥ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j!×jŒj!×j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXß**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream **Description** We handle encoding across page boundaries by giving the caller a temporary location to write to, then later copying the data into place; xdr_commit_encode does that copying. Normally the caller doesn't need to call this directly, as the following xdr_reserve_space will do it. But an explicit call may be required at the end of encoding, or any other time when the xdr_buf data might be read.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj+×h]”hŒ Parameters”…”�”}”(hj-×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M©hj%×ubjß)�”}”(hhh]”jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjJ×h]”hŒstruct xdr_stream *xdr”…”�”}”(hjL×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjH×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¦hjD×ubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hjc×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_×h´M¦hj`×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_×h´M¦hjA×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj%×ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj…×h]”hŒ Description”…”�”}”(hj‡×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¨hj%×ubjl)�”}”(hŒ­We handle encoding across page boundaries by giving the caller a temporary location to write to, then later copying the data into place; xdr_commit_encode does that copying.”h]”hŒ­We handle encoding across page boundaries by giving the caller a temporary location to write to, then later copying the data into place; xdr_commit_encode does that copying.”…”�”}”(hj›×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M§hj%×ubjl)�”}”(hŒÛNormally the caller doesn't need to call this directly, as the following xdr_reserve_space will do it. But an explicit call may be required at the end of encoding, or any other time when the xdr_buf data might be read.”h]”hŒÝNormally the caller doesn’t need to call this directly, as the following xdr_reserve_space will do it. But an explicit call may be required at the end of encoding, or any other time when the xdr_buf data might be read.”…”�”}”(hjª×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M«hj%×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_reserve_space (C function)”Œc.xdr_reserve_space”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒB__be32 * xdr_reserve_space (struct xdr_stream *xdr, size_t nbytes)”h]”j )�”}”(hŒ@__be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hjÜ×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÞ׌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxdr_reserve_space”sbŒc.xdr_reserve_space”†”asbuh1hhjÕ×h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Môubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕ×h²hh³jý×h´Môubj )�”}”(hj h]”hŒ*”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÕ×h²hh³jý×h´Môubj3)�”}”(hŒxdr_reserve_space”h]”j9)�”}”(hjú×h]”hŒxdr_reserve_space”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÕ×h²hh³jý×h´Môubj¡ )�”}”(hŒ'(struct xdr_stream *xdr, size_t nbytes)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj8Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Øubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjVØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jXØŒmodname”NŒ classname”Njå jè )�”}”jë ]”jø×Œc.xdr_reserve_space”†”asbuh1hhj4Øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Øubj )�”}”(hj h]”hŒ*”…”�”}”(hj‚Øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj4Øubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0Øubj§ )�”}”(hŒ size_t nbytes”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj«Øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨Øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­ØŒmodname”NŒ classname”Njå jè )�”}”jë ]”jø×Œc.xdr_reserve_space”†”asbuh1hhj¤Øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤Øubj9)�”}”(hŒnbytes”h]”hŒnbytes”…”�”}”(hjרh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj0Øubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÕ×h²hh³jý×h´Môubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÑ×h²hh³jý×h´Môubah}”(h]”jÌ×ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jý×h´MôhjÎ×h²hubjg)�”}”(hhh]”jl)�”}”(hŒ Reserve buffer space for sending”h]”hŒ Reserve buffer space for sending”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MôhjþØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÎ×h²hh³jý×h´Môubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÙjŒjÙj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXS**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream ``size_t nbytes`` number of bytes to reserve **Description** Checks that we have enough buffer space to encode 'nbytes' more bytes of data. If so, update the total xdr_buf length, and adjust the length of the current kvec. The returned pointer is valid only until the next call to xdr_reserve_space() or xdr_commit_encode() on **xdr**. The current implementation of this API guarantees that space reserved for a four-byte data item remains valid until **xdr** is destroyed, but that might not always be true in the future.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj#Ùh]”hŒ Parameters”…”�”}”(hj%Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MøhjÙubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjBÙh]”hŒstruct xdr_stream *xdr”…”�”}”(hjDÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mõhj<Ùubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hj[Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jWÙh´MõhjXÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jWÙh´Mõhj9Ùubjä)�”}”(hŒ-``size_t nbytes`` number of bytes to reserve ”h]”(jê)�”}”(hŒ``size_t nbytes``”h]”jð)�”}”(hj{Ùh]”hŒ size_t nbytes”…”�”}”(hj}Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MöhjuÙubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to reserve”h]”hŒnumber of bytes to reserve”…”�”}”(hj”Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Ùh´Möhj‘Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Ùh´Möhj9Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÙubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¶Ùh]”hŒ Description”…”�”}”(hj¸Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MøhjÙubjl)�”}”(hŒ¡Checks that we have enough buffer space to encode 'nbytes' more bytes of data. If so, update the total xdr_buf length, and adjust the length of the current kvec.”h]”hŒ¥Checks that we have enough buffer space to encode ‘nbytes’ more bytes of data. If so, update the total xdr_buf length, and adjust the length of the current kvec.”…”�”}”(hjÌÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M÷hjÙubjl)�”}”(hX+The returned pointer is valid only until the next call to xdr_reserve_space() or xdr_commit_encode() on **xdr**. The current implementation of this API guarantees that space reserved for a four-byte data item remains valid until **xdr** is destroyed, but that might not always be true in the future.”h]”(hŒhThe returned pointer is valid only until the next call to xdr_reserve_space() or xdr_commit_encode() on ”…”�”}”(hjÛÙh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjãÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛÙubhŒv. The current implementation of this API guarantees that space reserved for a four-byte data item remains valid until ”…”�”}”(hjÛÙh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjõÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛÙubhŒ? is destroyed, but that might not always be true in the future.”…”�”}”(hjÛÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MûhjÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"xdr_reserve_space_vec (C function)”Œc.xdr_reserve_space_vec”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAint xdr_reserve_space_vec (struct xdr_stream *xdr, size_t nbytes)”h]”j )�”}”(hŒ@int xdr_reserve_space_vec(struct xdr_stream *xdr, size_t nbytes)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj.Úh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj*Úh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*Úh²hh³j<Úh´Mubj3)�”}”(hŒxdr_reserve_space_vec”h]”j9)�”}”(hŒxdr_reserve_space_vec”h]”hŒxdr_reserve_space_vec”…”�”}”(hjOÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKÚubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj*Úh²hh³j<Úh´Mubj¡ )�”}”(hŒ'(struct xdr_stream *xdr, size_t nbytes)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjkÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgÚubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj‰Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹ÚŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jQÚsbŒc.xdr_reserve_space_vec”†”asbuh1hhjgÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgÚubj )�”}”(hj h]”hŒ*”…”�”}”(hj·Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgÚubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjÄÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcÚubj§ )�”}”(hŒ size_t nbytes”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjàÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jâÚŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¥ÚŒc.xdr_reserve_space_vec”†”asbuh1hhjÙÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙÚubj9)�”}”(hŒnbytes”h]”hŒnbytes”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcÚubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj*Úh²hh³j<Úh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj&Úh²hh³j<Úh´Mubah}”(h]”j!Úah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j<Úh´Mhj#Úh²hubjg)�”}”(hhh]”jl)�”}”(hŒ3Reserves a large amount of buffer space for sending”h]”hŒ3Reserves a large amount of buffer space for sending”…”�”}”(hj6Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhj3Ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj#Úh²hh³j<Úh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jNÛjŒjNÛj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX¤**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream ``size_t nbytes`` number of bytes to reserve **Description** The size argument passed to xdr_reserve_space() is determined based on the number of bytes remaining in the current page to avoid invalidating iov_base pointers when xdr_commit_encode() is called. Return values: ``0``: success ``-EMSGSIZE``: not enough space is available in **xdr**”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjXÛh]”hŒ Parameters”…”�”}”(hjZÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjVÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjRÛubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjwÛh]”hŒstruct xdr_stream *xdr”…”�”}”(hjyÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjqÛubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hj�Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒÛh´Mhj�Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒÛh´MhjnÛubjä)�”}”(hŒ-``size_t nbytes`` number of bytes to reserve ”h]”(jê)�”}”(hŒ``size_t nbytes``”h]”jð)�”}”(hj°Ûh]”hŒ size_t nbytes”…”�”}”(hj²Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjªÛubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes to reserve”h]”hŒnumber of bytes to reserve”…”�”}”(hjÉÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÅÛh´MhjÆÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÅÛh´MhjnÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjRÛubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjëÛh]”hŒ Description”…”�”}”(hjíÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjéÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjRÛubjl)�”}”(hŒÄThe size argument passed to xdr_reserve_space() is determined based on the number of bytes remaining in the current page to avoid invalidating iov_base pointers when xdr_commit_encode() is called.”h]”hŒÄThe size argument passed to xdr_reserve_space() is determined based on the number of bytes remaining in the current page to avoid invalidating iov_base pointers when xdr_commit_encode() is called.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjRÛubjß)�”}”(hhh]”jä)�”}”(hŒUReturn values: ``0``: success ``-EMSGSIZE``: not enough space is available in **xdr**”h]”(jê)�”}”(hŒReturn values:”h]”hŒReturn values:”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M!hjÜubj)�”}”(hhh]”jl)�”}”(hŒF``0``: success ``-EMSGSIZE``: not enough space is available in **xdr**”h]”(jð)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj-Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)ÜubhŒ : success ”…”�”}”(hj)Üh²hh³Nh´Nubjð)�”}”(hŒ ``-EMSGSIZE``”h]”hŒ -EMSGSIZE”…”�”}”(hj?Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)ÜubhŒ#: not enough space is available in ”…”�”}”(hj)Üh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjQÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%Üh´M!hj&Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%Üh´M!hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjRÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ xdr_truncate_encode (C function)”Œc.xdr_truncate_encode”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void xdr_truncate_encode (struct xdr_stream *xdr, size_t len)”h]”j )�”}”(hŒbuf->len == len, and xdr->p points at offset len from the start of the buffer, and head, tail, and page lengths are adjusted to correspond. If this means moving xdr->p to a different buffer, we assume that the end pointer should be set to the end of the current page, except in the case of the head buffer when we assume the head buffer's current length represents the end of the available buffer. This is *not* safe to use on a buffer that already has inlined page cache pages (as in a zero-copy server read reply), except for the simple case of truncating from one position in the tail to another.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÁÝh]”hŒ Parameters”…”�”}”(hjÃÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¿Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MHhj»Ýubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjàÝh]”hŒstruct xdr_stream *xdr”…”�”}”(hjâÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MEhjÚÝubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hjùÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõÝh´MEhjöÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõÝh´MEhj×Ýubjä)�”}”(hŒ$``size_t len`` new length of buffer ”h]”(jê)�”}”(hŒ``size_t len``”h]”jð)�”}”(hjÞh]”hŒ size_t len”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MFhjÞubj)�”}”(hhh]”jl)�”}”(hŒnew length of buffer”h]”hŒnew length of buffer”…”�”}”(hj2Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.Þh´MFhj/Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.Þh´MFhj×Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj»Ýubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjTÞh]”hŒ Description”…”�”}”(hjVÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjRÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MHhj»Ýubjl)�”}”(hŒ²Truncates the xdr stream, so that xdr->buf->len == len, and xdr->p points at offset len from the start of the buffer, and head, tail, and page lengths are adjusted to correspond.”h]”hŒ²Truncates the xdr stream, so that xdr->buf->len == len, and xdr->p points at offset len from the start of the buffer, and head, tail, and page lengths are adjusted to correspond.”…”�”}”(hjjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MGhj»Ýubjl)�”}”(hXIf this means moving xdr->p to a different buffer, we assume that the end pointer should be set to the end of the current page, except in the case of the head buffer when we assume the head buffer's current length represents the end of the available buffer.”h]”hXIf this means moving xdr->p to a different buffer, we assume that the end pointer should be set to the end of the current page, except in the case of the head buffer when we assume the head buffer’s current length represents the end of the available buffer.”…”�”}”(hjyÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MKhj»Ýubjl)�”}”(hŒÉThis is *not* safe to use on a buffer that already has inlined page cache pages (as in a zero-copy server read reply), except for the simple case of truncating from one position in the tail to another.”h]”(hŒThis is ”…”�”}”(hjˆÞh²hh³Nh´NubjÑ‹)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jЋhjˆÞubhŒ¼ safe to use on a buffer that already has inlined page cache pages (as in a zero-copy server read reply), except for the simple case of truncating from one position in the tail to another.”…”�”}”(hjˆÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MPhj»Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ xdr_truncate_decode (C function)”Œc.xdr_truncate_decode”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void xdr_truncate_decode (struct xdr_stream *xdr, size_t len)”h]”j )�”}”(hŒint xdr_restrict_buflen(struct xdr_stream *xdr, int newbuflen)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¥àh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡àh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡àh²hh³j³àh´M˜ubj3)�”}”(hŒxdr_restrict_buflen”h]”j9)�”}”(hŒxdr_restrict_buflen”h]”hŒxdr_restrict_buflen”…”�”}”(hjÆàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂàubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡àh²hh³j³àh´M˜ubj¡ )�”}”(hŒ'(struct xdr_stream *xdr, int newbuflen)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞàubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jáŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÈàsbŒc.xdr_restrict_buflen”†”asbuh1hhjÞàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞàubj )�”}”(hj h]”hŒ*”…”�”}”(hj.áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÞàubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj;áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚàubj§ )�”}”(hŒ int newbuflen”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjTáh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjPáubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbáh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPáubj9)�”}”(hŒ newbuflen”h]”hŒ newbuflen”…”�”}”(hjpáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚàubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡àh²hh³j³àh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�àh²hh³j³àh´M˜ubah}”(h]”j˜àah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j³àh´M˜hjšàh²hubjg)�”}”(hhh]”jl)�”}”(hŒdecrease available buffer space”h]”hŒdecrease available buffer space”…”�”}”(hjšáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M˜hj—áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšàh²hh³j³àh´M˜ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j²ájŒj²áj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXè**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream ``int newbuflen`` new maximum number of bytes available **Description** Adjust our idea of how much space is available in the buffer. If we've already used too much space in the buffer, returns -1. If the available space is already smaller than newbuflen, returns 0 and does nothing. Otherwise, adjusts xdr->buf->buflen to newbuflen and ensures xdr->end is set at most offset newbuflen from the start of the buffer.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¼áh]”hŒ Parameters”…”�”}”(hj¾áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjºáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mœhj¶áubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjÛáh]”hŒstruct xdr_stream *xdr”…”�”}”(hjÝáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙáubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M™hjÕáubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hjôáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jðáh´M™hjñáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðáh´M™hjÒáubjä)�”}”(hŒ8``int newbuflen`` new maximum number of bytes available ”h]”(jê)�”}”(hŒ``int newbuflen``”h]”jð)�”}”(hjâh]”hŒ int newbuflen”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mšhjâubj)�”}”(hhh]”jl)�”}”(hŒ%new maximum number of bytes available”h]”hŒ%new maximum number of bytes available”…”�”}”(hj-âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)âh´Mšhj*âubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)âh´MšhjÒáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶áubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjOâh]”hŒ Description”…”�”}”(hjQâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjMâubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mœhj¶áubjl)�”}”(hXXAdjust our idea of how much space is available in the buffer. If we've already used too much space in the buffer, returns -1. If the available space is already smaller than newbuflen, returns 0 and does nothing. Otherwise, adjusts xdr->buf->buflen to newbuflen and ensures xdr->end is set at most offset newbuflen from the start of the buffer.”h]”hXZAdjust our idea of how much space is available in the buffer. If we’ve already used too much space in the buffer, returns -1. If the available space is already smaller than newbuflen, returns 0 and does nothing. Otherwise, adjusts xdr->buf->buflen to newbuflen and ensures xdr->end is set at most offset newbuflen from the start of the buffer.”…”�”}”(hjeâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M›hj¶áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_write_pages (C function)”Œc.xdr_write_pages”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgvoid xdr_write_pages (struct xdr_stream *xdr, struct page **pages, unsigned int base, unsigned int len)”h]”j )�”}”(hŒfvoid xdr_write_pages(struct xdr_stream *xdr, struct page **pages, unsigned int base, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”âh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�âh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�âh²hh³j¢âh´Mµubj3)�”}”(hŒxdr_write_pages”h]”j9)�”}”(hŒxdr_write_pages”h]”hŒxdr_write_pages”…”�”}”(hjµâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±âubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�âh²hh³j¢âh´Mµubj¡ )�”}”(hŒR(struct xdr_stream *xdr, struct page **pages, unsigned int base, unsigned int len)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍâubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjïâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñâŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·âsbŒc.xdr_write_pages”†”asbuh1hhjÍâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍâubj )�”}”(hj h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍâubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj*ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉâubj§ )�”}”(hŒstruct page **pages”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjCãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?ãubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjaãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jcãŒmodname”NŒ classname”Njå jè )�”}”jë ]”j ãŒc.xdr_write_pages”†”asbuh1hhj?ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?ãubj )�”}”(hj h]”hŒ*”…”�”}”(hj�ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?ãubj )�”}”(hj h]”hŒ*”…”�”}”(hjšãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?ãubj9)�”}”(hŒpages”h]”hŒpages”…”�”}”(hj§ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉâubj§ )�”}”(hŒunsigned int base”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÀãh²hh³Nh´Nubah}”(h]”•%h ]”jY ah"]”h$]”h&]”uh1jL hj¼ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ãubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÜãh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ãubj9)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjøãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉâubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj äubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj-äh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj äubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjIäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉâubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�âh²hh³j¢âh´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒâh²hh³j¢âh´Mµubah}”(h]”j‡âah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢âh´Mµhj‰âh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5Insert a list of pages into an XDR buffer for sending”h]”hŒ5Insert a list of pages into an XDR buffer for sending”…”�”}”(hjsäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mµhjpäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰âh²hh³j¢âh´Mµubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‹äjŒj‹äj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXº**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream ``struct page **pages`` array of pages to insert ``unsigned int base`` starting offset of first data byte in **pages** ``unsigned int len`` number of data bytes in **pages** to insert **Description** After the **pages** are added, the tail iovec is instantiated pointing to end of the head buffer, and the stream is set up to encode subsequent items into the tail.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj•äh]”hŒ Parameters”…”�”}”(hj—äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj“äubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¹hj�äubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hj´äh]”hŒstruct xdr_stream *xdr”…”�”}”(hj¶äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¶hj®äubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hjÍäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉäh´M¶hjÊäubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉäh´M¶hj«äubjä)�”}”(hŒ1``struct page **pages`` array of pages to insert ”h]”(jê)�”}”(hŒ``struct page **pages``”h]”jð)�”}”(hjíäh]”hŒstruct page **pages”…”�”}”(hjïäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëäubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M·hjçäubj)�”}”(hhh]”jl)�”}”(hŒarray of pages to insert”h]”hŒarray of pages to insert”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåh´M·hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåh´M·hj«äubjä)�”}”(hŒF``unsigned int base`` starting offset of first data byte in **pages** ”h]”(jê)�”}”(hŒ``unsigned int base``”h]”jð)�”}”(hj&åh]”hŒunsigned int base”…”�”}”(hj(åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj$åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¸hj åubj)�”}”(hhh]”jl)�”}”(hŒ/starting offset of first data byte in **pages**”h]”(hŒ&starting offset of first data byte in ”…”�”}”(hj?åh²hh³Nh´Nubj›)�”}”(hŒ **pages**”h]”hŒpages”…”�”}”(hjGåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j;åh´M¸hj<åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j;åh´M¸hj«äubjä)�”}”(hŒA``unsigned int len`` number of data bytes in **pages** to insert ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjmåh]”hŒunsigned int len”…”�”}”(hjoåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjkåubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¹hjgåubj)�”}”(hhh]”jl)�”}”(hŒ+number of data bytes in **pages** to insert”h]”(hŒnumber of data bytes in ”…”�”}”(hj†åh²hh³Nh´Nubj›)�”}”(hŒ **pages**”h]”hŒpages”…”�”}”(hjŽåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†åubhŒ to insert”…”�”}”(hj†åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚åh´M¹hjƒåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚åh´M¹hj«äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�äubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjºåh]”hŒ Description”…”�”}”(hj¼åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸åubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M»hj�äubjl)�”}”(hŒ¤After the **pages** are added, the tail iovec is instantiated pointing to end of the head buffer, and the stream is set up to encode subsequent items into the tail.”h]”(hŒ After the ”…”�”}”(hjÐåh²hh³Nh´Nubj›)�”}”(hŒ **pages**”h]”hŒpages”…”�”}”(hjØåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐåubhŒ‘ are added, the tail iovec is instantiated pointing to end of the head buffer, and the stream is set up to encode subsequent items into the tail.”…”�”}”(hjÐåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mºhj�äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_init_decode (C function)”Œc.xdr_init_decode”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒdvoid xdr_init_decode (struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst)”h]”j )�”}”(hŒcvoid xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj æh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj æh²hh³jæh´MBubj3)�”}”(hŒxdr_init_decode”h]”j9)�”}”(hŒxdr_init_decode”h]”hŒxdr_init_decode”…”�”}”(hj2æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.æubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj æh²hh³jæh´MBubj¡ )�”}”(hŒO(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjNæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJæubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjlæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jnæŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4æsbŒc.xdr_init_decode”†”asbuh1hhjJæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJæubj )�”}”(hj h]”hŒ*”…”�”}”(hjšæh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJæubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj§æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFæubj§ )�”}”(hŒstruct xdr_buf *buf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÀæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼æubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hjÞæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jàæŒmodname”NŒ classname”Njå jè )�”}”jë ]”jˆæŒc.xdr_init_decode”†”asbuh1hhj¼æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼æubj )�”}”(hj h]”hŒ*”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼æubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFæubj§ )�”}”(hŒ __be32 *p”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hj3çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j5çŒmodname”NŒ classname”Njå jè )�”}”jë ]”jˆæŒc.xdr_init_decode”†”asbuh1hhj,çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,çubj )�”}”(hj h]”hŒ*”…”�”}”(hj_çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj,çubj9)�”}”(hj h]”hŒp”…”�”}”(hjlçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFæubj§ )�”}”(hŒstruct rpc_rqst *rqst”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj„çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€çubh)�”}”(hhh]”j9)�”}”(hŒrpc_rqst”h]”hŒrpc_rqst”…”�”}”(hj¢çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¤çŒmodname”NŒ classname”Njå jè )�”}”jë ]”jˆæŒc.xdr_init_decode”†”asbuh1hhj€çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€çubj )�”}”(hj h]”hŒ*”…”�”}”(hjÎçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€çubj9)�”}”(hŒrqst”h]”hŒrqst”…”�”}”(hjÛçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFæubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj æh²hh³jæh´MBubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj æh²hh³jæh´MBubah}”(h]”jæah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jæh´MBhjæh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Initialize an xdr_stream for decoding data.”h]”hŒ+Initialize an xdr_stream for decoding data.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MBhjèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjæh²hh³jæh´MBubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jèjŒjèj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``struct xdr_buf *buf`` pointer to XDR buffer from which to decode data ``__be32 *p`` current pointer inside XDR buffer ``struct rpc_rqst *rqst`` pointer to controlling rpc_rqst, for debugging”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj'èh]”hŒ Parameters”…”�”}”(hj)èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%èubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MFhj!èubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjFèh]”hŒstruct xdr_stream *xdr”…”�”}”(hjHèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDèubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MChj@èubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hj_èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j[èh´MChj\èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[èh´MChj=èubjä)�”}”(hŒH``struct xdr_buf *buf`` pointer to XDR buffer from which to decode data ”h]”(jê)�”}”(hŒ``struct xdr_buf *buf``”h]”jð)�”}”(hjèh]”hŒstruct xdr_buf *buf”…”�”}”(hj�èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MDhjyèubj)�”}”(hhh]”jl)�”}”(hŒ/pointer to XDR buffer from which to decode data”h]”hŒ/pointer to XDR buffer from which to decode data”…”�”}”(hj˜èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”èh´MDhj•èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”èh´MDhj=èubjä)�”}”(hŒ0``__be32 *p`` current pointer inside XDR buffer ”h]”(jê)�”}”(hŒ ``__be32 *p``”h]”jð)�”}”(hj¸èh]”hŒ __be32 *p”…”�”}”(hjºèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MEhj²èubj)�”}”(hhh]”jl)�”}”(hŒ!current pointer inside XDR buffer”h]”hŒ!current pointer inside XDR buffer”…”�”}”(hjÑèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍèh´MEhjÎèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍèh´MEhj=èubjä)�”}”(hŒH``struct rpc_rqst *rqst`` pointer to controlling rpc_rqst, for debugging”h]”(jê)�”}”(hŒ``struct rpc_rqst *rqst``”h]”jð)�”}”(hjñèh]”hŒstruct rpc_rqst *rqst”…”�”}”(hjóèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïèubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MGhjëèubj)�”}”(hhh]”jl)�”}”(hŒ.pointer to controlling rpc_rqst, for debugging”h]”hŒ.pointer to controlling rpc_rqst, for debugging”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MFhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéh´MGhj=èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj!èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"xdr_init_decode_pages (C function)”Œc.xdr_init_decode_pages”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒovoid xdr_init_decode_pages (struct xdr_stream *xdr, struct xdr_buf *buf, struct page **pages, unsigned int len)”h]”j )�”}”(hŒnvoid xdr_init_decode_pages(struct xdr_stream *xdr, struct xdr_buf *buf, struct page **pages, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjKéh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjGéh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGéh²hh³jYéh´M\ubj3)�”}”(hŒxdr_init_decode_pages”h]”j9)�”}”(hŒxdr_init_decode_pages”h]”hŒxdr_init_decode_pages”…”�”}”(hjléh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhéubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjGéh²hh³jYéh´M\ubj¡ )�”}”(hŒT(struct xdr_stream *xdr, struct xdr_buf *buf, struct page **pages, unsigned int len)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjˆéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„éubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj¦éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¨éŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jnésbŒc.xdr_init_decode_pages”†”asbuh1hhj„éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„éubj )�”}”(hj h]”hŒ*”…”�”}”(hjÔéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj„éubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjáéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€éubj§ )�”}”(hŒstruct xdr_buf *buf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjúéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöéubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jêŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÂéŒc.xdr_init_decode_pages”†”asbuh1hhjöéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöéubj )�”}”(hj h]”hŒ*”…”�”}”(hjDêh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjöéubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjQêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€éubj§ )�”}”(hŒstruct page **pages”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfêubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjˆêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŠêŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÂéŒc.xdr_init_decode_pages”†”asbuh1hhjfêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfêubj )�”}”(hj h]”hŒ*”…”�”}”(hj´êh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjfêubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁêh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjfêubj9)�”}”(hŒpages”h]”hŒpages”…”�”}”(hjÎêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€éubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjçêh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjãêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãêubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjãêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãêubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjãêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€éubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjGéh²hh³jYéh´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjCéh²hh³jYéh´M\ubah}”(h]”j>éah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jYéh´M\hj@éh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Initialize an xdr_stream for decoding into pages”h]”hŒ0Initialize an xdr_stream for decoding into pages”…”�”}”(hjIëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M\hjFëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj@éh²hh³jYéh´M\ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jaëjŒjaëj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``struct xdr_buf *buf`` pointer to XDR buffer from which to decode data ``struct page **pages`` list of pages to decode into ``unsigned int len`` length in bytes of buffer in pages”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjkëh]”hŒ Parameters”…”�”}”(hjmëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjiëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M`hjeëubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjŠëh]”hŒstruct xdr_stream *xdr”…”�”}”(hjŒëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M]hj„ëubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hj£ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸëh´M]hj ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸëh´M]hj�ëubjä)�”}”(hŒH``struct xdr_buf *buf`` pointer to XDR buffer from which to decode data ”h]”(jê)�”}”(hŒ``struct xdr_buf *buf``”h]”jð)�”}”(hjÃëh]”hŒstruct xdr_buf *buf”…”�”}”(hjÅëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M^hj½ëubj)�”}”(hhh]”jl)�”}”(hŒ/pointer to XDR buffer from which to decode data”h]”hŒ/pointer to XDR buffer from which to decode data”…”�”}”(hjÜëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØëh´M^hjÙëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØëh´M^hj�ëubjä)�”}”(hŒ5``struct page **pages`` list of pages to decode into ”h]”(jê)�”}”(hŒ``struct page **pages``”h]”jð)�”}”(hjüëh]”hŒstruct page **pages”…”�”}”(hjþëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjúëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M_hjöëubj)�”}”(hhh]”jl)�”}”(hŒlist of pages to decode into”h]”hŒlist of pages to decode into”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jìh´M_hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jìh´M_hj�ëubjä)�”}”(hŒ7``unsigned int len`` length in bytes of buffer in pages”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj5ìh]”hŒunsigned int len”…”�”}”(hj7ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mahj/ìubj)�”}”(hhh]”jl)�”}”(hŒ"length in bytes of buffer in pages”h]”hŒ"length in bytes of buffer in pages”…”�”}”(hjNìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M`hjKìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJìh´Mahj�ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjeëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_finish_decode (C function)”Œc.xdr_finish_decode”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void xdr_finish_decode (struct xdr_stream *xdr)”h]”j )�”}”(hŒ.void xdr_finish_decode(struct xdr_stream *xdr)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�ìh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‹ìh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Moubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹ìh²hh³j�ìh´Moubj3)�”}”(hŒxdr_finish_decode”h]”j9)�”}”(hŒxdr_finish_decode”h]”hŒxdr_finish_decode”…”�”}”(hj°ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ìubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‹ìh²hh³j�ìh´Moubj¡ )�”}”(hŒ(struct xdr_stream *xdr)”h]”j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÌìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈìubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjêìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jììŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j²ìsbŒc.xdr_finish_decode”†”asbuh1hhjÈìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈìubj )�”}”(hj h]”hŒ*”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÈìubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj%íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÄìubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‹ìh²hh³j�ìh´Moubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‡ìh²hh³j�ìh´Moubah}”(h]”j‚ìah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�ìh´Mohj„ìh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Clean up the xdr_stream after decoding data.”h]”hŒ,Clean up the xdr_stream after decoding data.”…”�”}”(hjOíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MohjLíh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj„ìh²hh³j�ìh´Moubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jgíjŒjgíj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒI**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjqíh]”hŒ Parameters”…”�”}”(hjsíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoíubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mshjkíubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct xdr_stream *xdr`` pointer to xdr_stream struct”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hj�íh]”hŒstruct xdr_stream *xdr”…”�”}”(hj’íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MuhjŠíubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hj©íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mphj¦íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥íh´Muhj‡íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjkíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_inline_decode (C function)”Œc.xdr_inline_decode”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒB__be32 * xdr_inline_decode (struct xdr_stream *xdr, size_t nbytes)”h]”j )�”}”(hŒ@__be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hjííh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jïíŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxdr_inline_decode”sbŒc.xdr_inline_decode”†”asbuh1hhjæíh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæíh²hh³jîh´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjæíh²hh³jîh´M ubj3)�”}”(hŒxdr_inline_decode”h]”j9)�”}”(hj îh]”hŒxdr_inline_decode”…”�”}”(hj.îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*îubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjæíh²hh³jîh´M ubj¡ )�”}”(hŒ'(struct xdr_stream *xdr, size_t nbytes)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjIîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEîubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjgîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jiîŒmodname”NŒ classname”Njå jè )�”}”jë ]”j îŒc.xdr_inline_decode”†”asbuh1hhjEîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEîubj )�”}”(hj h]”hŒ*”…”�”}”(hj“îh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjEîubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjAîubj§ )�”}”(hŒ size_t nbytes”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¼îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¾îŒmodname”NŒ classname”Njå jè )�”}”jë ]”j îŒc.xdr_inline_decode”†”asbuh1hhjµîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµîubj9)�”}”(hŒnbytes”h]”hŒnbytes”…”�”}”(hjèîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjAîubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjæíh²hh³jîh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjâíh²hh³jîh´M ubah}”(h]”jÝíah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jîh´M hjßíh²hubjg)�”}”(hhh]”jl)�”}”(hŒRetrieve XDR data to decode”h]”hŒRetrieve XDR data to decode”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M hjïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjßíh²hh³jîh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j*ïjŒj*ïj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX\**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``size_t nbytes`` number of bytes of data to decode **Description** Check if the input buffer is long enough to enable us to decode 'nbytes' more bytes of data starting at the current position. If so return the current pointer, then update the current pointer position.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj4ïh]”hŒ Parameters”…”�”}”(hj6ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¤hj.ïubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjSïh]”hŒstruct xdr_stream *xdr”…”�”}”(hjUïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¡hjMïubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hjlïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jhïh´M¡hjiïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jhïh´M¡hjJïubjä)�”}”(hŒ4``size_t nbytes`` number of bytes of data to decode ”h]”(jê)�”}”(hŒ``size_t nbytes``”h]”jð)�”}”(hjŒïh]”hŒ size_t nbytes”…”�”}”(hjŽïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¢hj†ïubj)�”}”(hhh]”jl)�”}”(hŒ!number of bytes of data to decode”h]”hŒ!number of bytes of data to decode”…”�”}”(hj¥ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¡ïh´M¢hj¢ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¡ïh´M¢hjJïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj.ïubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÇïh]”hŒ Description”…”�”}”(hjÉïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÅïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¤hj.ïubjl)�”}”(hŒÉCheck if the input buffer is long enough to enable us to decode 'nbytes' more bytes of data starting at the current position. If so return the current pointer, then update the current pointer position.”h]”hŒÍCheck if the input buffer is long enough to enable us to decode ‘nbytes’ more bytes of data starting at the current position. If so return the current pointer, then update the current pointer position.”…”�”}”(hjÝïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M£hj.ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_read_pages (C function)”Œc.xdr_read_pages”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFunsigned int xdr_read_pages (struct xdr_stream *xdr, unsigned int len)”h]”j )�”}”(hŒEunsigned int xdr_read_pages(struct xdr_stream *xdr, unsigned int len)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjðh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðh²hh³jðh´MãubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj)ðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjðh²hh³jðh´Mãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðh²hh³jðh´Mãubj3)�”}”(hŒxdr_read_pages”h]”j9)�”}”(hŒxdr_read_pages”h]”hŒxdr_read_pages”…”�”}”(hjIðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjðh²hh³jðh´Mãubj¡ )�”}”(hŒ*(struct xdr_stream *xdr, unsigned int len)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjeðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaðubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjƒðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j…ðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jKðsbŒc.xdr_read_pages”†”asbuh1hhjaðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaðubj )�”}”(hj h]”hŒ*”…”�”}”(hj±ðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjaðubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj¾ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]ðubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj×ðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÓðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓðubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjóðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÓðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓðubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]ðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjðh²hh³jðh´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjðh²hh³jðh´Mãubah}”(h]”jÿïah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jðh´Mãhjðh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5align page-based XDR data to current pointer position”h]”hŒ5align page-based XDR data to current pointer position”…”�”}”(hj9ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mãhj6ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjðh²hh³jðh´Mãubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jQñjŒjQñj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXø**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``unsigned int len`` number of bytes of page data **Description** Moves data beyond the current pointer position from the XDR head[] buffer into the page list. Any data that lies beyond current position + **len** bytes is moved into the XDR tail[]. The xdr_stream current position is then advanced past that data to align to the next XDR object in the tail. Returns the number of XDR encoded bytes now contained in the pages”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj[ñh]”hŒ Parameters”…”�”}”(hj]ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjYñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MçhjUñubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjzñh]”hŒstruct xdr_stream *xdr”…”�”}”(hj|ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjxñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mähjtñubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hj“ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�ñh´Mähj�ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�ñh´Mähjqñubjä)�”}”(hŒ2``unsigned int len`` number of bytes of page data ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj³ñh]”hŒunsigned int len”…”�”}”(hjµñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Måhj­ñubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes of page data”h]”hŒnumber of bytes of page data”…”�”}”(hjÌñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÈñh´MåhjÉñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈñh´Måhjqñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjUñubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjîñh]”hŒ Description”…”�”}”(hjðñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjìñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MçhjUñubjl)�”}”(hX#Moves data beyond the current pointer position from the XDR head[] buffer into the page list. Any data that lies beyond current position + **len** bytes is moved into the XDR tail[]. The xdr_stream current position is then advanced past that data to align to the next XDR object in the tail.”h]”(hŒ‹Moves data beyond the current pointer position from the XDR head[] buffer into the page list. Any data that lies beyond current position + ”…”�”}”(hjòh²hh³Nh´Nubj›)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjòubhŒ‘ bytes is moved into the XDR tail[]. The xdr_stream current position is then advanced past that data to align to the next XDR object in the tail.”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MæhjUñubjl)�”}”(hŒBReturns the number of XDR encoded bytes now contained in the pages”h]”hŒBReturns the number of XDR encoded bytes now contained in the pages”…”�”}”(hj%òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MëhjUñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_set_pagelen (C function)”Œc.xdr_set_pagelen”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ?void xdr_set_pagelen (struct xdr_stream *xdr, unsigned int len)”h]”j )�”}”(hŒ>void xdr_set_pagelen(struct xdr_stream *xdr, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjTòh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjPòh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPòh²hh³jbòh´Mubj3)�”}”(hŒxdr_set_pagelen”h]”j9)�”}”(hŒxdr_set_pagelen”h]”hŒxdr_set_pagelen”…”�”}”(hjuòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqòubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjPòh²hh³jbòh´Mubj¡ )�”}”(hŒ*(struct xdr_stream *xdr, unsigned int len)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‘òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�òubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj¯òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j±òŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jwòsbŒc.xdr_set_pagelen”†”asbuh1hhj�òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�òubj )�”}”(hj h]”hŒ*”…”�”}”(hjÝòh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�òubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjêòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‰òubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÿòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿòubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÿòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿòubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj;óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‰òubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjPòh²hh³jbòh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjLòh²hh³jbòh´Mubah}”(h]”jGòah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jbòh´MhjIòh²hubjg)�”}”(hhh]”jl)�”}”(hŒ Sets the length of the XDR pages”h]”hŒ Sets the length of the XDR pages”…”�”}”(hjeóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhjbóh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjIòh²hh³jbòh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j}ójŒj}ój�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX¹**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``unsigned int len`` new length of the XDR page data **Description** Either grows or shrinks the length of the xdr pages by setting pagelen to **len** bytes. When shrinking, any extra data is moved into buf->tail, whereas when growing any data beyond the current pointer is moved into the tail. Returns True if the operation was successful, and False otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‡óh]”hŒ Parameters”…”�”}”(hj‰óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhj�óubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hj¦óh]”hŒstruct xdr_stream *xdr”…”�”}”(hj¨óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhj óubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hj¿óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»óh´Mhj¼óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»óh´Mhj�óubjä)�”}”(hŒ5``unsigned int len`` new length of the XDR page data ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjßóh]”hŒunsigned int len”…”�”}”(hjáóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝóubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjÙóubj)�”}”(hhh]”jl)�”}”(hŒnew length of the XDR page data”h]”hŒnew length of the XDR page data”…”�”}”(hjøóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jôóh´Mhjõóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jôóh´Mhj�óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�óubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjôh]”hŒ Description”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhj�óubjl)�”}”(hŒáEither grows or shrinks the length of the xdr pages by setting pagelen to **len** bytes. When shrinking, any extra data is moved into buf->tail, whereas when growing any data beyond the current pointer is moved into the tail.”h]”(hŒJEither grows or shrinks the length of the xdr pages by setting pagelen to ”…”�”}”(hj0ôh²hh³Nh´Nubj›)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hj8ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0ôubhŒ� bytes. When shrinking, any extra data is moved into buf->tail, whereas when growing any data beyond the current pointer is moved into the tail.”…”�”}”(hj0ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhj�óubjl)�”}”(hŒBReturns True if the operation was successful, and False otherwise.”h]”hŒBReturns True if the operation was successful, and False otherwise.”…”�”}”(hjQôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhj�óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_enter_page (C function)”Œc.xdr_enter_page”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>void xdr_enter_page (struct xdr_stream *xdr, unsigned int len)”h]”j )�”}”(hŒ=void xdr_enter_page(struct xdr_stream *xdr, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€ôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj|ôh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|ôh²hh³jŽôh´Mubj3)�”}”(hŒxdr_enter_page”h]”j9)�”}”(hŒxdr_enter_page”h]”hŒxdr_enter_page”…”�”}”(hj¡ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ôubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj|ôh²hh³jŽôh´Mubj¡ )�”}”(hŒ*(struct xdr_stream *xdr, unsigned int len)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj½ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹ôubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjÛôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÝôŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j£ôsbŒc.xdr_enter_page”†”asbuh1hhj¹ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹ôubj )�”}”(hj h]”hŒ*”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¹ôubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjµôubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj/õh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj+õubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+õubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjKõh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj+õubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYõh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+õubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjgõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjµôubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj|ôh²hh³jŽôh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjxôh²hh³jŽôh´Mubah}”(h]”jsôah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŽôh´Mhjuôh²hubjg)�”}”(hhh]”jl)�”}”(hŒdecode data from the XDR page”h]”hŒdecode data from the XDR page”…”�”}”(hj‘õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjŽõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjuôh²hh³jŽôh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©õjŒj©õj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX–**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream struct ``unsigned int len`` number of bytes of page data **Description** Moves data beyond the current pointer position from the XDR head[] buffer into the page list. Any data that lies beyond current position + "len" bytes is moved into the XDR tail[]. The current pointer is then repositioned at the beginning of the first XDR page.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³õh]”hŒ Parameters”…”�”}”(hjµõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±õubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M"hj­õubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct xdr_stream *xdr`` pointer to xdr_stream struct ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjÒõh]”hŒstruct xdr_stream *xdr”…”�”}”(hjÔõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MhjÌõubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream struct”h]”hŒpointer to xdr_stream struct”…”�”}”(hjëõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçõh´Mhjèõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçõh´MhjÉõubjä)�”}”(hŒ2``unsigned int len`` number of bytes of page data ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj öh]”hŒunsigned int len”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M hjöubj)�”}”(hhh]”jl)�”}”(hŒnumber of bytes of page data”h]”hŒnumber of bytes of page data”…”�”}”(hj$öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j öh´M hj!öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j öh´M hjÉõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­õubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjFöh]”hŒ Description”…”�”}”(hjHöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDöubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M"hj­õubjl)�”}”(hXMoves data beyond the current pointer position from the XDR head[] buffer into the page list. Any data that lies beyond current position + "len" bytes is moved into the XDR tail[]. The current pointer is then repositioned at the beginning of the first XDR page.”h]”hX Moves data beyond the current pointer position from the XDR head[] buffer into the page list. Any data that lies beyond current position + “lenâ€� bytes is moved into the XDR tail[]. The current pointer is then repositioned at the beginning of the first XDR page.”…”�”}”(hj\öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M!hj­õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_buf_subsegment (C function)”Œc.xdr_buf_subsegment”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒoint xdr_buf_subsegment (const struct xdr_buf *buf, struct xdr_buf *subbuf, unsigned int base, unsigned int len)”h]”j )�”}”(hŒnint xdr_buf_subsegment(const struct xdr_buf *buf, struct xdr_buf *subbuf, unsigned int base, unsigned int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‹öh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‡öh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡öh²hh³j™öh´M?ubj3)�”}”(hŒxdr_buf_subsegment”h]”j9)�”}”(hŒxdr_buf_subsegment”h]”hŒxdr_buf_subsegment”…”�”}”(hj¬öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨öubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‡öh²hh³j™öh´M?ubj¡ )�”}”(hŒX(const struct xdr_buf *buf, struct xdr_buf *subbuf, unsigned int base, unsigned int len)”h]”(j§ )�”}”(hŒconst struct xdr_buf *buf”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÈöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄöubj)�”}”(hjh]”hŒstruct”…”�”}”(hjãöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄöubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j÷Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j®ösbŒc.xdr_buf_subsegment”†”asbuh1hhjÄöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄöubj )�”}”(hj h]”hŒ*”…”�”}”(hj/÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÄöubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj<÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀöubj§ )�”}”(hŒstruct xdr_buf *subbuf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjU÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ÷ubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hjs÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ju÷Œmodname”NŒ classname”Njå jè )�”}”jë ]”j÷Œc.xdr_buf_subsegment”†”asbuh1hhjQ÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ÷ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸ÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjQ÷ubj9)�”}”(hŒsubbuf”h]”hŒsubbuf”…”�”}”(hj¬÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀöubj§ )�”}”(hŒunsigned int base”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÅ÷h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÁ÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁ÷ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjá÷h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÁ÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁ÷ubj9)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjý÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀöubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjøubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj2øh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjøubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjNøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀöubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‡öh²hh³j™öh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjƒöh²hh³j™öh´M?ubah}”(h]”j~öah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j™öh´M?hj€öh²hubjg)�”}”(hhh]”jl)�”}”(hŒset subbuf to a portion of buf”h]”hŒset subbuf to a portion of buf”…”�”}”(hjxøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M?hjuøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj€öh²hh³j™öh´M?ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�øjŒj�øj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXÎ**Parameters** ``const struct xdr_buf *buf`` an xdr buffer ``struct xdr_buf *subbuf`` the result buffer ``unsigned int base`` beginning of range in bytes ``unsigned int len`` length of range in bytes **Description** sets **subbuf** to an xdr buffer representing the portion of **buf** of length **len** starting at offset **base**. **buf** and **subbuf** may be pointers to the same struct xdr_buf. Returns -1 if base or length are out of bounds.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjšøh]”hŒ Parameters”…”�”}”(hjœøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜øubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MChj”øubjß)�”}”(hhh]”(jä)�”}”(hŒ,``const struct xdr_buf *buf`` an xdr buffer ”h]”(jê)�”}”(hŒ``const struct xdr_buf *buf``”h]”jð)�”}”(hj¹øh]”hŒconst struct xdr_buf *buf”…”�”}”(hj»øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M@hj³øubj)�”}”(hhh]”jl)�”}”(hŒ an xdr buffer”h]”hŒ an xdr buffer”…”�”}”(hjÒøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÎøh´M@hjÏøubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÎøh´M@hj°øubjä)�”}”(hŒ-``struct xdr_buf *subbuf`` the result buffer ”h]”(jê)�”}”(hŒ``struct xdr_buf *subbuf``”h]”jð)�”}”(hjòøh]”hŒstruct xdr_buf *subbuf”…”�”}”(hjôøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MAhjìøubj)�”}”(hhh]”jl)�”}”(hŒthe result buffer”h]”hŒthe result buffer”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jùh´MAhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jùh´MAhj°øubjä)�”}”(hŒ2``unsigned int base`` beginning of range in bytes ”h]”(jê)�”}”(hŒ``unsigned int base``”h]”jð)�”}”(hj+ùh]”hŒunsigned int base”…”�”}”(hj-ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MBhj%ùubj)�”}”(hhh]”jl)�”}”(hŒbeginning of range in bytes”h]”hŒbeginning of range in bytes”…”�”}”(hjDùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@ùh´MBhjAùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@ùh´MBhj°øubjä)�”}”(hŒ.``unsigned int len`` length of range in bytes ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjdùh]”hŒunsigned int len”…”�”}”(hjfùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjbùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MChj^ùubj)�”}”(hhh]”jl)�”}”(hŒlength of range in bytes”h]”hŒlength of range in bytes”…”�”}”(hj}ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jyùh´MChjzùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jyùh´MChj°øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj”øubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŸùh]”hŒ Description”…”�”}”(hj¡ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MEhj”øubjl)�”}”(hŒssets **subbuf** to an xdr buffer representing the portion of **buf** of length **len** starting at offset **base**.”h]”(hŒsets ”…”�”}”(hjµùh²hh³Nh´Nubj›)�”}”(hŒ **subbuf**”h]”hŒsubbuf”…”�”}”(hj½ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµùubhŒ. to an xdr buffer representing the portion of ”…”�”}”(hjµùh²hh³Nh´Nubj›)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjÏùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµùubhŒ of length ”…”�”}”(hjµùh²hh³Nh´Nubj›)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjáùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµùubhŒ starting at offset ”…”�”}”(hjµùh²hh³Nh´Nubj›)�”}”(hŒ**base**”h]”hŒbase”…”�”}”(hjóùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµùubhŒ.”…”�”}”(hjµùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MDhj”øubjl)�”}”(hŒB**buf** and **subbuf** may be pointers to the same struct xdr_buf.”h]”(j›)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj úubhŒ and ”…”�”}”(hj úh²hh³Nh´Nubj›)�”}”(hŒ **subbuf**”h]”hŒsubbuf”…”�”}”(hj"úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj úubhŒ, may be pointers to the same struct xdr_buf.”…”�”}”(hj úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MGhj”øubjl)�”}”(hŒ/Returns -1 if base or length are out of bounds.”h]”hŒ/Returns -1 if base or length are out of bounds.”…”�”}”(hj;úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MIhj”øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"xdr_stream_subsegment (C function)”Œc.xdr_stream_subsegment”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`bool xdr_stream_subsegment (struct xdr_stream *xdr, struct xdr_buf *subbuf, unsigned int nbytes)”h]”j )�”}”(hŒ_bool xdr_stream_subsegment(struct xdr_stream *xdr, struct xdr_buf *subbuf, unsigned int nbytes)”•h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjjúh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjfúh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfúh²hh³jwúh´M}ubj3)�”}”(hŒxdr_stream_subsegment”h]”j9)�”}”(hŒxdr_stream_subsegment”h]”hŒxdr_stream_subsegment”…”�”}”(hjŠúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†úubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjfúh²hh³jwúh´M}ubj¡ )�”}”(hŒE(struct xdr_stream *xdr, struct xdr_buf *subbuf, unsigned int nbytes)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢úubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjÄúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆúŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŒúsbŒc.xdr_stream_subsegment”†”asbuh1hhj¢úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢úubj )�”}”(hj h]”hŒ*”…”�”}”(hjòúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢úubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjÿúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžúubj§ )�”}”(hŒstruct xdr_buf *subbuf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hj6ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j8ûŒmodname”NŒ classname”Njå jè )�”}”jë ]”jàúŒc.xdr_stream_subsegment”†”asbuh1hhjûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûubj )�”}”(hj h]”hŒ*”…”�”}”(hjbûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjûubj9)�”}”(hŒsubbuf”h]”hŒsubbuf”…”�”}”(hjoûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžúubj§ )�”}”(hŒunsigned int nbytes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjˆûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„ûubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¤ûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„ûubj9)�”}”(hŒnbytes”h]”hŒnbytes”…”�”}”(hjÀûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžúubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjfúh²hh³jwúh´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjbúh²hh³jwúh´M}ubah}”(h]”j]úah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jwúh´M}hj_úh²hubjg)�”}”(hhh]”jl)�”}”(hŒ&set **subbuf** to a portion of **xdr**”h]”(hŒset ”…”�”}”(hjêûh²hh³Nh´Nubj›)�”}”(hŒ **subbuf**”h]”hŒsubbuf”…”�”}”(hjòûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêûubhŒ to a portion of ”…”�”}”(hjêûh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M}hjçûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj_úh²hh³jwúh´M}ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j"üjŒj"üj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXG**Parameters** ``struct xdr_stream *xdr`` an xdr_stream set up for decoding ``struct xdr_buf *subbuf`` the result buffer ``unsigned int nbytes`` length of **xdr** to extract, in bytes **Description** Sets up **subbuf** to represent a portion of **xdr**. The portion starts at the current offset in **xdr**, and extends for a length of **nbytes**. If this is successful, **xdr** is advanced to the next XDR data item following that portion. Return values: ``true``: **subbuf** has been initialized, and **xdr** has been advanced. ``false``: a bounds error has occurred”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj,üh]”hŒ Parameters”…”�”}”(hj.üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*üubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M�hj&üubjß)�”}”(hhh]”(jä)�”}”(hŒ=``struct xdr_stream *xdr`` an xdr_stream set up for decoding ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjKüh]”hŒstruct xdr_stream *xdr”…”�”}”(hjMüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M~hjEüubj)�”}”(hhh]”jl)�”}”(hŒ!an xdr_stream set up for decoding”h]”hŒ!an xdr_stream set up for decoding”…”�”}”(hjdüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`üh´M~hjaüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`üh´M~hjBüubjä)�”}”(hŒ-``struct xdr_buf *subbuf`` the result buffer ”h]”(jê)�”}”(hŒ``struct xdr_buf *subbuf``”h]”jð)�”}”(hj„üh]”hŒstruct xdr_buf *subbuf”…”�”}”(hj†üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mhj~üubj)�”}”(hhh]”jl)�”}”(hŒthe result buffer”h]”hŒthe result buffer”…”�”}”(hj�üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™üh´Mhjšüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™üh´MhjBüubjä)�”}”(hŒ?``unsigned int nbytes`` length of **xdr** to extract, in bytes ”h]”(jê)�”}”(hŒ``unsigned int nbytes``”h]”jð)�”}”(hj½üh]”hŒunsigned int nbytes”…”�”}”(hj¿üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M€hj·üubj)�”}”(hhh]”jl)�”}”(hŒ&length of **xdr** to extract, in bytes”h]”(hŒ length of ”…”�”}”(hjÖüh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjÞüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÖüubhŒ to extract, in bytes”…”�”}”(hjÖüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒüh´M€hjÓüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒüh´M€hjBüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&üubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj ýh]”hŒ Description”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M‚hj&üubjl)�”}”(hŒïSets up **subbuf** to represent a portion of **xdr**. The portion starts at the current offset in **xdr**, and extends for a length of **nbytes**. If this is successful, **xdr** is advanced to the next XDR data item following that portion.”h]”(hŒSets up ”…”�”}”(hj ýh²hh³Nh´Nubj›)�”}”(hŒ **subbuf**”h]”hŒsubbuf”…”�”}”(hj(ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ýubhŒ to represent a portion of ”…”�”}”(hj ýh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hj:ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ýubhŒ.. The portion starts at the current offset in ”…”�”}”(hj ýh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjLýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ýubhŒ, and extends for a length of ”…”�”}”(hj ýh²hh³Nh´Nubj›)�”}”(hŒ **nbytes**”h]”hŒnbytes”…”�”}”(hj^ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ýubhŒ. If this is successful, ”…”�”}”(hj ýh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjpýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ýubhŒ> is advanced to the next XDR data item following that portion.”…”�”}”(hj ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M�hj&üubjß)�”}”(hhh]”jä)�”}”(hŒReturn values: ``true``: **subbuf** has been initialized, and **xdr** has been advanced. ``false``: a bounds error has occurred”h]”(jê)�”}”(hŒReturn values:”h]”hŒReturn values:”…”�”}”(hj�ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M‡hjŒýubj)�”}”(hhh]”jl)�”}”(hŒp``true``: **subbuf** has been initialized, and **xdr** has been advanced. ``false``: a bounds error has occurred”h]”(jð)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj¦ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢ýubhŒ: ”…”�”}”(hj¢ýh²hh³Nh´Nubj›)�”}”(hŒ **subbuf**”h]”hŒsubbuf”…”�”}”(hj¸ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢ýubhŒ has been initialized, and ”…”�”}”(hj¢ýh²hh³Nh´Nubj›)�”}”(hŒ**xdr**”h]”hŒxdr”…”�”}”(hjÊýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢ýubhŒ has been advanced. ”…”�”}”(hj¢ýh²hh³Nh´Nubjð)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjÜýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢ýubhŒ: a bounds error has occurred”…”�”}”(hj¢ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jžýh´M‡hjŸýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jžýh´M‡hj‰ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'xdr_stream_move_subsegment (C function)”Œc.xdr_stream_move_subsegment”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒunsigned int xdr_stream_move_subsegment (struct xdr_stream *xdr, unsigned int offset, unsigned int target, unsigned int length)”h]”j )�”}”(hŒ~unsigned int xdr_stream_move_subsegment(struct xdr_stream *xdr, unsigned int offset, unsigned int target, unsigned int length)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj&þh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"þh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"þh²hh³j4þh´M¬ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjCþh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"þh²hh³j4þh´M¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"þh²hh³j4þh´M¬ubj3)�”}”(hŒxdr_stream_move_subsegment”h]”j9)�”}”(hŒxdr_stream_move_subsegment”h]”hŒxdr_stream_move_subsegment”…”�”}”(hjcþh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_þubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj"þh²hh³j4þh´M¬ubj¡ )�”}”(hŒW(struct xdr_stream *xdr, unsigned int offset, unsigned int target, unsigned int length)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{þubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{þubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŸþŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jeþsbŒc.xdr_stream_move_subsegment”†”asbuh1hhj{þubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{þubj )�”}”(hj h]”hŒ*”…”�”}”(hjËþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj{þubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjØþh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwþubj§ )�”}”(hŒunsigned int offset”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjñþh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjíþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjíþubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj ÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjíþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjíþubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj)ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwþubj§ )�”}”(hŒunsigned int target”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjBÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj>ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ÿubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj^ÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj>ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ÿubj9)�”}”(hŒtarget”h]”hŒtarget”…”�”}”(hjzÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwþubj§ )�”}”(hŒunsigned int length”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj“ÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ÿubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¯ÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ÿubj9)�”}”(hŒlength”h]”hŒlength”…”�”}”(hjËÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwþubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj"þh²hh³j4þh´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjþh²hh³j4þh´M¬ubah}”(h]”jþah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j4þh´M¬hjþh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)Move part of a stream to another position”h]”hŒ)Move part of a stream to another position”…”�”}”(hjõÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¬hjòÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjþh²hh³j4þh´M¬ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXš**Parameters** ``struct xdr_stream *xdr`` the source xdr_stream ``unsigned int offset`` the source offset of the segment ``unsigned int target`` the target offset of the segment ``unsigned int length`` the number of bytes to move **Description** Moves **length** bytes from **offset** to **target** in the xdr_stream, overwriting anything in its space. Returns the number of bytes in the segment.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M°hjubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` the source xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hj6h]”hŒstruct xdr_stream *xdr”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M­hj0ubj)�”}”(hhh]”jl)�”}”(hŒthe source xdr_stream”h]”hŒthe source xdr_stream”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKh´M­hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKh´M­hj-ubjä)�”}”(hŒ9``unsigned int offset`` the source offset of the segment ”h]”(jê)�”}”(hŒ``unsigned int offset``”h]”jð)�”}”(hjoh]”hŒunsigned int offset”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M®hjiubj)�”}”(hhh]”jl)�”}”(hŒ the source offset of the segment”h]”hŒ the source offset of the segment”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„h´M®hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„h´M®hj-ubjä)�”}”(hŒ9``unsigned int target`` the target offset of the segment ”h]”(jê)�”}”(hŒ``unsigned int target``”h]”jð)�”}”(hj¨h]”hŒunsigned int target”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M¯hj¢ubj)�”}”(hhh]”jl)�”}”(hŒ the target offset of the segment”h]”hŒ the target offset of the segment”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½h´M¯hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½h´M¯hj-ubjä)�”}”(hŒ4``unsigned int length`` the number of bytes to move ”h]”(jê)�”}”(hŒ``unsigned int length``”h]”jð)�”}”(hjáh]”hŒunsigned int length”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M°hjÛubj)�”}”(hhh]”jl)�”}”(hŒthe number of bytes to move”h]”hŒthe number of bytes to move”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöh´M°hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöh´M°hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M²hjubjl)�”}”(hŒ–Moves **length** bytes from **offset** to **target** in the xdr_stream, overwriting anything in its space. Returns the number of bytes in the segment.”h]”(hŒMoves ”…”�”}”(hj2h²hh³Nh´Nubj›)�”}”(hŒ **length**”h]”hŒlength”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2ubhŒ bytes from ”…”�”}”(hj2h²hh³Nh´Nubj›)�”}”(hŒ **offset**”h]”hŒoffset”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2ubhŒ to ”…”�”}”(hj2h²hh³Nh´Nubj›)�”}”(hŒ **target**”h]”hŒtarget”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2ubhŒb in the xdr_stream, overwriting anything in its space. Returns the number of bytes in the segment.”…”�”}”(hj2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M±hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_stream_zero (C function)”Œc.xdr_stream_zero”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ_unsigned int xdr_stream_zero (struct xdr_stream *xdr, unsigned int offset, unsigned int length)”h]”j )�”}”(hŒ^unsigned int xdr_stream_zero(struct xdr_stream *xdr, unsigned int offset, unsigned int length)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“h²hh³j¥h´MËubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“h²hh³j¥h´MËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“h²hh³j¥h´MËubj3)�”}”(hŒxdr_stream_zero”h]”j9)�”}”(hŒxdr_stream_zero”h]”hŒxdr_stream_zero”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj“h²hh³j¥h´MËubj¡ )�”}”(hŒB(struct xdr_stream *xdr, unsigned int offset, unsigned int length)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÖsbŒc.xdr_stream_zero”†”asbuh1hhjìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìubj )�”}”(hj h]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjìubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjèubj§ )�”}”(hŒunsigned int offset”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubj9)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjèubj§ )�”}”(hŒunsigned int length”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯ubj9)�”}”(hŒlength”h]”hŒlength”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjèubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj“h²hh³j¥h´MËubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j¥h´MËubah}”(h]”jŠah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¥h´MËhjŒh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#zero out a portion of an xdr_stream”h]”hŒ#zero out a portion of an xdr_stream”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MËhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŒh²hh³j¥h´MËubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j-jŒj-j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ¹**Parameters** ``struct xdr_stream *xdr`` an xdr_stream to zero out ``unsigned int offset`` the starting point in the stream ``unsigned int length`` the number of bytes to zero”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj7h]”hŒ Parameters”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MÏhj1ubjß)�”}”(hhh]”(jä)�”}”(hŒ5``struct xdr_stream *xdr`` an xdr_stream to zero out ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjVh]”hŒstruct xdr_stream *xdr”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MÌhjPubj)�”}”(hhh]”jl)�”}”(hŒan xdr_stream to zero out”h]”hŒan xdr_stream to zero out”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jkh´MÌhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jkh´MÌhjMubjä)�”}”(hŒ9``unsigned int offset`` the starting point in the stream ”h]”(jê)�”}”(hŒ``unsigned int offset``”h]”jð)�”}”(hj�h]”hŒunsigned int offset”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MÍhj‰ubj)�”}”(hhh]”jl)�”}”(hŒ the starting point in the stream”h]”hŒ the starting point in the stream”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤h´MÍhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤h´MÍhjMubjä)�”}”(hŒ3``unsigned int length`` the number of bytes to zero”h]”(jê)�”}”(hŒ``unsigned int length``”h]”jð)�”}”(hjÈh]”hŒunsigned int length”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MÏhjÂubj)�”}”(hhh]”jl)�”}”(hŒthe number of bytes to zero”h]”hŒthe number of bytes to zero”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MÎhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝh´MÏhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxdr_buf_trim (C function)”Œc.xdr_buf_trim”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9void xdr_buf_trim (struct xdr_buf *buf, unsigned int len)”h]”j )�”}”(hŒ8void xdr_buf_trim(struct xdr_buf *buf, unsigned int len)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j0h´Mâubj3)�”}”(hŒ xdr_buf_trim”h]”j9)�”}”(hŒ xdr_buf_trim”h]”hŒ xdr_buf_trim”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³j0h´Mâubj¡ )�”}”(hŒ'(struct xdr_buf *buf, unsigned int len)”h]”(j§ )�”}”(hŒstruct xdr_buf *buf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[ubh)�”}”(hhh]”j9)�”}”(hŒxdr_buf”h]”hŒxdr_buf”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jEsbŒc.xdr_buf_trim”†”asbuh1hhj[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[ubj )�”}”(hj h]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[ubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³j0h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³j0h´Mâubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j0h´Mâhjh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,lop at most "len" bytes off the end of "buf"”h]”hŒ4lop at most “lenâ€� bytes off the end of “bufâ€�”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mâhj0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j0h´Mâubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jKjŒjKj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX…**Parameters** ``struct xdr_buf *buf`` buf to be trimmed ``unsigned int len`` number of bytes to reduce "buf" by **Description** Trim an xdr_buf by the given number of bytes by fixing up the lengths. Note that it's possible that we'll trim less than that amount if the xdr_buf is too small, or if (for instance) it's all in the head and the parser has already read too far into it.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjUh]”hŒ Parameters”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MæhjOubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct xdr_buf *buf`` buf to be trimmed ”h]”(jê)�”}”(hŒ``struct xdr_buf *buf``”h]”jð)�”}”(hjth]”hŒstruct xdr_buf *buf”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mãhjnubj)�”}”(hhh]”jl)�”}”(hŒbuf to be trimmed”h]”hŒbuf to be trimmed”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‰h´MãhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰h´Mãhjkubjä)�”}”(hŒ8``unsigned int len`` number of bytes to reduce "buf" by ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj­h]”hŒunsigned int len”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mähj§ubj)�”}”(hhh]”jl)�”}”(hŒ"number of bytes to reduce "buf" by”h]”hŒ&number of bytes to reduce “bufâ€� by”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂh´MähjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂh´Mähjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjOubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjèh]”hŒ Description”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MæhjOubjl)�”}”(hŒüTrim an xdr_buf by the given number of bytes by fixing up the lengths. Note that it's possible that we'll trim less than that amount if the xdr_buf is too small, or if (for instance) it's all in the head and the parser has already read too far into it.”h]”hXTrim an xdr_buf by the given number of bytes by fixing up the lengths. Note that it’s possible that we’ll trim less than that amount if the xdr_buf is too small, or if (for instance) it’s all in the head and the parser has already read too far into it.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MåhjOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)xdr_stream_decode_string_dup (C function)”Œc.xdr_stream_decode_string_dup”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒissize_t xdr_stream_decode_string_dup (struct xdr_stream *xdr, char **str, size_t maxlen, gfp_t gfp_flags)”h]”j )�”}”(hŒhssize_t xdr_stream_decode_string_dup(struct xdr_stream *xdr, char **str, size_t maxlen, gfp_t gfp_flags)”h]”(h)�”}”(hhh]”j9)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j2Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxdr_stream_decode_string_dup”sbŒc.xdr_stream_decode_string_dup”†”asbuh1hhj)h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M7 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)h²hh³jQh´M7 ubj3)�”}”(hŒxdr_stream_decode_string_dup”h]”j9)�”}”(hjNh]”hŒxdr_stream_decode_string_dup”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj)h²hh³jQh´M7 ubj¡ )�”}”(hŒD(struct xdr_stream *xdr, char **str, size_t maxlen, gfp_t gfp_flags)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{ubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŸŒmodname”NŒ classname”Njå jè )�”}”jë ]”jLŒc.xdr_stream_decode_string_dup”†”asbuh1hhj{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj{ubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwubj§ )�”}”(hŒ char **str”h]”(jM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëubj )�”}”(hj h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjëubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjëubj9)�”}”(hŒstr”h]”hŒstr”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwubj§ )�”}”(hŒ size_t maxlen”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jCŒmodname”NŒ classname”Njå jè )�”}”jë ]”jLŒc.xdr_stream_decode_string_dup”†”asbuh1hhj:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:ubj9)�”}”(hŒmaxlen”h]”hŒmaxlen”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwubj§ )�”}”(hŒgfp_t gfp_flags”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jLŒc.xdr_stream_decode_string_dup”†”asbuh1hhj‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚ubj9)�”}”(hŒ gfp_flags”h]”hŒ gfp_flags”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjwubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj)h²hh³jQh´M7 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj%h²hh³jQh´M7 ubah}”(h]”j ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQh´M7 hj"h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Decode and duplicate variable length string”h]”hŒ+Decode and duplicate variable length string”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M7 hjÜh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj"h²hh³jQh´M7 ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j÷jŒj÷j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXÒ**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream ``char **str`` location to store pointer to string ``size_t maxlen`` maximum acceptable string length ``gfp_t gfp_flags`` GFP mask to use **Description** Return values: On success, returns length of NUL-terminated string stored in ***ptr** ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the size of the string would exceed **maxlen** ``-ENOMEM`` on memory allocation failure”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M; hjûubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hj h]”hŒstruct xdr_stream *xdr”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M8 hjubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j5h´M8 hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j5h´M8 hjubjä)�”}”(hŒ3``char **str`` location to store pointer to string ”h]”(jê)�”}”(hŒ``char **str``”h]”jð)�”}”(hjYh]”hŒ char **str”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M9 hjSubj)�”}”(hhh]”jl)�”}”(hŒ#location to store pointer to string”h]”hŒ#location to store pointer to string”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jnh´M9 hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jnh´M9 hjubjä)�”}”(hŒ3``size_t maxlen`` maximum acceptable string length ”h]”(jê)�”}”(hŒ``size_t maxlen``”h]”jð)�”}”(hj’h]”hŒ size_t maxlen”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M: hjŒubj)�”}”(hhh]”jl)�”}”(hŒ maximum acceptable string length”h]”hŒ maximum acceptable string length”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§h´M: hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§h´M: hjubjä)�”}”(hŒ$``gfp_t gfp_flags`` GFP mask to use ”h]”(jê)�”}”(hŒ``gfp_t gfp_flags``”h]”jð)�”}”(hjËh]”hŒgfp_t gfp_flags”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M; hjÅubj)�”}”(hhh]”jl)�”}”(hŒGFP mask to use”h]”hŒGFP mask to use”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jàh´M; hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jàh´M; hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjûubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M= hjûubjß)�”}”(hhh]”jä)�”}”(hŒâReturn values: On success, returns length of NUL-terminated string stored in ***ptr** ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the size of the string would exceed **maxlen** ``-ENOMEM`` on memory allocation failure”h]”(jê)�”}”(hŒReturn values:”h]”hŒReturn values:”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M? hj ubj)�”}”(hhh]”jl)�”}”(hŒÓOn success, returns length of NUL-terminated string stored in ***ptr** ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the size of the string would exceed **maxlen** ``-ENOMEM`` on memory allocation failure”h]”(hŒ>On success, returns length of NUL-terminated string stored in ”…”�”}”(hj5 h²hh³Nh´Nubj›)�”}”(hŒ***ptr**”h]”hŒ*ptr”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj5 ubhŒ ”…”�”}”(hj5 h²hh³Nh´Nubjð)�”}”(hŒ ``-EBADMSG``”h]”hŒ-EBADMSG”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj5 ubhŒ on XDR buffer overflow ”…”�”}”(hj5 h²hh³Nh´Nubjð)�”}”(hŒ ``-EMSGSIZE``”h]”hŒ -EMSGSIZE”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj5 ubhŒ( if the size of the string would exceed ”…”�”}”(hj5 h²hh³Nh´Nubj›)�”}”(hŒ **maxlen**”h]”hŒmaxlen”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj5 ubhŒ ”…”�”}”hj5 sbjð)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj5 ubhŒ on memory allocation failure”…”�”}”(hj5 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M= hj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1 h´M? hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*xdr_stream_decode_opaque_auth (C function)”Œc.xdr_stream_decode_opaque_auth”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒpssize_t xdr_stream_decode_opaque_auth (struct xdr_stream *xdr, u32 *flavor, void **body, unsigned int *body_len)”h]”j )�”}”(hŒossize_t xdr_stream_decode_opaque_auth(struct xdr_stream *xdr, u32 *flavor, void **body, unsigned int *body_len)”h]”(h)�”}”(hhh]”j9)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÕ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxdr_stream_decode_opaque_auth”sbŒc.xdr_stream_decode_opaque_auth”†”asbuh1hhjÌ h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MX ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌ h²hh³jô h´MX ubj3)�”}”(hŒxdr_stream_decode_opaque_auth”h]”j9)�”}”(hjñ h]”hŒxdr_stream_decode_opaque_auth”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÌ h²hh³jô h´MX ubj¡ )�”}”(hŒJ(struct xdr_stream *xdr, u32 *flavor, void **body, unsigned int *body_len)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj= ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jB Œmodname”NŒ classname”Njå jè )�”}”jë ]”jï Œc.xdr_stream_decode_opaque_auth”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubj§ )�”}”(hŒ u32 *flavor”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j— Œmodname”NŒ classname”Njå jè )�”}”jë ]”jï Œc.xdr_stream_decode_opaque_auth”†”asbuh1hhjŽ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŽ ubj9)�”}”(hŒflavor”h]”hŒflavor”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubj§ )�”}”(hŒ void **body”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjã ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã ubj )�”}”(hj h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjã ubj )�”}”(hj h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjã ubj9)�”}”(hŒbody”h]”hŒbody”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubj§ )�”}”(hŒunsigned int *body_len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj2 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2 ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj2 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2 ubj )�”}”(hj h]”hŒ*”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj2 ubj9)�”}”(hŒbody_len”h]”hŒbody_len”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÌ h²hh³jô h´MX ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÈ h²hh³jô h´MX ubah}”(h]”jà ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jô h´MX hjÅ h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Decode struct opaque_auth (RFC5531 S8.2)”h]”hŒ(Decode struct opaque_auth (RFC5531 S8.2)”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MX hj¢ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÅ h²hh³jô h´MX ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j½ jŒj½ j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX¸**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream ``u32 *flavor`` location to store decoded flavor ``void **body`` location to store decode body ``unsigned int *body_len`` location to store length of decoded body **Description** Return values: On success, returns the number of buffer bytes consumed ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the decoded size of the body field exceeds 400 octets”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÇ h]”hŒ Parameters”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M\ hjÁ ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjæ h]”hŒstruct xdr_stream *xdr”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MY hjà ubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jû h´MY hjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jû h´MY hjÝ ubjä)�”}”(hŒ1``u32 *flavor`` location to store decoded flavor ”h]”(jê)�”}”(hŒ``u32 *flavor``”h]”jð)�”}”(hj h]”hŒ u32 *flavor”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´MZ hj ubj)�”}”(hhh]”jl)�”}”(hŒ location to store decoded flavor”h]”hŒ location to store decoded flavor”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4 h´MZ hj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4 h´MZ hjÝ ubjä)�”}”(hŒ.``void **body`` location to store decode body ”h]”(jê)�”}”(hŒ``void **body``”h]”jð)�”}”(hjX h]”hŒ void **body”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M[ hjR ubj)�”}”(hhh]”jl)�”}”(hŒlocation to store decode body”h]”hŒlocation to store decode body”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jm h´M[ hjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jm h´M[ hjÝ ubjä)�”}”(hŒD``unsigned int *body_len`` location to store length of decoded body ”h]”(jê)�”}”(hŒ``unsigned int *body_len``”h]”jð)�”}”(hj‘ h]”hŒunsigned int *body_len”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M\ hj‹ ubj)�”}”(hhh]”jl)�”}”(hŒ(location to store length of decoded body”h]”hŒ(location to store length of decoded body”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦ h´M\ hj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦ h´M\ hjÝ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÁ ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÌ h]”hŒ Description”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M^ hjÁ ubjß)�”}”(hhh]”jä)�”}”(hŒ±Return values: On success, returns the number of buffer bytes consumed ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the decoded size of the body field exceeds 400 octets”h]”(jê)�”}”(hŒReturn values:”h]”hŒReturn values:”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M_ hjå ubj)�”}”(hhh]”jl)�”}”(hŒ¢On success, returns the number of buffer bytes consumed ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the decoded size of the body field exceeds 400 octets”h]”(hŒ8On success, returns the number of buffer bytes consumed ”…”�”}”(hjû h²hh³Nh´Nubjð)�”}”(hŒ ``-EBADMSG``”h]”hŒ-EBADMSG”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjû ubhŒ on XDR buffer overflow ”…”�”}”(hjû h²hh³Nh´Nubjð)�”}”(hŒ ``-EMSGSIZE``”h]”hŒ -EMSGSIZE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjû ubhŒ9 if the decoded size of the body field exceeds 400 octets”…”�”}”(hjû h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M^ hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j÷ h´M_ hjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÁ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*xdr_stream_encode_opaque_auth (C function)”Œc.xdr_stream_encode_opaque_auth”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmssize_t xdr_stream_encode_opaque_auth (struct xdr_stream *xdr, u32 flavor, void *body, unsigned int body_len)”h]”j )�”}”(hŒlssize_t xdr_stream_encode_opaque_auth(struct xdr_stream *xdr, u32 flavor, void *body, unsigned int body_len)”h]”(h)�”}”(hhh]”j9)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj` ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”je Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxdr_stream_encode_opaque_auth”sbŒc.xdr_stream_encode_opaque_auth”†”asbuh1hhj\ h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mt ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\ h²hh³j„ h´Mt ubj3)�”}”(hŒxdr_stream_encode_opaque_auth”h]”j9)�”}”(hj� h]”hŒxdr_stream_encode_opaque_auth”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj\ h²hh³j„ h´Mt ubj¡ )�”}”(hŒG(struct xdr_stream *xdr, u32 flavor, void *body, unsigned int body_len)”h]”(j§ )�”}”(hŒstruct xdr_stream *xdr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj® ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj® ubh)�”}”(hhh]”j9)�”}”(hŒ xdr_stream”h]”hŒ xdr_stream”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÒ Œmodname”NŒ classname”Njå jè )�”}”jë ]”j Œc.xdr_stream_encode_opaque_auth”†”asbuh1hhj® ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj® ubj )�”}”(hj h]”hŒ*”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj® ubj9)�”}”(hŒxdr”h]”hŒxdr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj® ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª ubj§ )�”}”(hŒ u32 flavor”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j'Œmodname”NŒ classname”Njå jè )�”}”jë ]”j Œc.xdr_stream_encode_opaque_auth”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒflavor”h]”hŒflavor”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª ubj§ )�”}”(hŒ void *body”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfubj )�”}”(hj h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjfubj9)�”}”(hŒbody”h]”hŒbody”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª ubj§ )�”}”(hŒunsigned int body_len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨ubj9)�”}”(hŒbody_len”h]”hŒbody_len”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj\ h²hh³j„ h´Mt ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjX h²hh³j„ h´Mt ubah}”(h]”jS ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j„ h´Mt hjU h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Encode struct opaque_auth (RFC5531 S8.2)”h]”hŒ(Encode struct opaque_auth (RFC5531 S8.2)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mt hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjU h²hh³j„ h´Mt ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j&jŒj&j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct xdr_stream *xdr`` pointer to xdr_stream ``u32 flavor`` verifier flavor to encode ``void *body`` content of body to encode ``unsigned int body_len`` length of body to encode **Description** Return values: On success, returns length in bytes of XDR buffer consumed ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the size of **body** exceeds 400 octets”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj0h]”hŒ Parameters”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mx hj*ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct xdr_stream *xdr`` pointer to xdr_stream ”h]”(jê)�”}”(hŒ``struct xdr_stream *xdr``”h]”jð)�”}”(hjOh]”hŒstruct xdr_stream *xdr”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mu hjIubj)�”}”(hhh]”jl)�”}”(hŒpointer to xdr_stream”h]”hŒpointer to xdr_stream”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdh´Mu hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdh´Mu hjFubjä)�”}”(hŒ)``u32 flavor`` verifier flavor to encode ”h]”(jê)�”}”(hŒ``u32 flavor``”h]”jð)�”}”(hjˆh]”hŒ u32 flavor”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mv hj‚ubj)�”}”(hhh]”jl)�”}”(hŒverifier flavor to encode”h]”hŒverifier flavor to encode”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´Mv hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´Mv hjFubjä)�”}”(hŒ)``void *body`` content of body to encode ”h]”(jê)�”}”(hŒ``void *body``”h]”jð)�”}”(hjÁh]”hŒ void *body”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mw hj»ubj)�”}”(hhh]”jl)�”}”(hŒcontent of body to encode”h]”hŒcontent of body to encode”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖh´Mw hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖh´Mw hjFubjä)�”}”(hŒ3``unsigned int body_len`` length of body to encode ”h]”(jê)�”}”(hŒ``unsigned int body_len``”h]”jð)�”}”(hjúh]”hŒunsigned int body_len”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mx hjôubj)�”}”(hhh]”jl)�”}”(hŒlength of body to encode”h]”hŒlength of body to encode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mx hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mx hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj*ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj5h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mz hj*ubjß)�”}”(hhh]”jä)�”}”(hŒ¦Return values: On success, returns length in bytes of XDR buffer consumed ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the size of **body** exceeds 400 octets”h]”(jê)�”}”(hŒReturn values:”h]”hŒReturn values:”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´M{ hjNubj)�”}”(hhh]”jl)�”}”(hŒ—On success, returns length in bytes of XDR buffer consumed ``-EBADMSG`` on XDR buffer overflow ``-EMSGSIZE`` if the size of **body** exceeds 400 octets”h]”(hŒ;On success, returns length in bytes of XDR buffer consumed ”…”�”}”(hjdh²hh³Nh´Nubjð)�”}”(hŒ ``-EBADMSG``”h]”hŒ-EBADMSG”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdubhŒ on XDR buffer overflow ”…”�”}”(hjdh²hh³Nh´Nubjð)�”}”(hŒ ``-EMSGSIZE``”h]”hŒ -EMSGSIZE”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdubhŒ if the size of ”…”�”}”(hjdh²hh³Nh´Nubj›)�”}”(hŒ**body**”h]”hŒbody”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdubhŒ exceeds 400 octets”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒP/var/lib/git/docbuild/linux/Documentation/networking/kapi:59: ./net/sunrpc/xdr.c”h´Mz hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`h´M{ hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_reg_xprt_class (C function)”Œc.svc_reg_xprt_class”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int svc_reg_xprt_class (struct svc_xprt_class *xcl)”h]”j )�”}”(hŒ2int svc_reg_xprt_class(struct svc_xprt_class *xcl)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj×h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×h²hh³jéh´KPubj3)�”}”(hŒsvc_reg_xprt_class”h]”j9)�”}”(hŒsvc_reg_xprt_class”h]”hŒsvc_reg_xprt_class”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj×h²hh³jéh´KPubj¡ )�”}”(hŒ(struct svc_xprt_class *xcl)”h]”j§ )�”}”(hŒstruct svc_xprt_class *xcl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt_class”h]”hŒsvc_xprt_class”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j8Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jþsbŒc.svc_reg_xprt_class”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒxcl”h]”hŒxcl”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj×h²hh³jéh´KPubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÓh²hh³jéh´KPubah}”(h]”jÎah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jéh´KPhjÐh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*Register a server-side RPC transport class”• h]”hŒ*Register a server-side RPC transport class”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KPhj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÐh²hh³jéh´KPubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j³jŒj³j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ¨**Parameters** ``struct svc_xprt_class *xcl`` New transport class to be registered **Description** Returns zero on success; otherwise a negative errno is returned.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KThj·ubjß)�”}”(hhh]”jä)�”}”(hŒD``struct svc_xprt_class *xcl`` New transport class to be registered ”h]”(jê)�”}”(hŒ``struct svc_xprt_class *xcl``”h]”jð)�”}”(hjÜh]”hŒstruct svc_xprt_class *xcl”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KQhjÖubj)�”}”(hhh]”jl)�”}”(hŒ$New transport class to be registered”h]”hŒ$New transport class to be registered”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñh´KQhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñh´KQhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj·ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KShj·ubjl)�”}”(hŒ@Returns zero on success; otherwise a negative errno is returned.”h]”hŒ@Returns zero on success; otherwise a negative errno is returned.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KRhj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!svc_unreg_xprt_class (C function)”Œc.svc_unreg_xprt_class”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void svc_unreg_xprt_class (struct svc_xprt_class *xcl)”h]”j )�”}”(hŒ5void svc_unreg_xprt_class(struct svc_xprt_class *xcl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjXh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjXh²hh³jjh´Kjubj3)�”}”(hŒsvc_unreg_xprt_class”h]”j9)�”}”(hŒsvc_unreg_xprt_class”h]”hŒsvc_unreg_xprt_class”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjXh²hh³jjh´Kjubj¡ )�”}”(hŒ(struct svc_xprt_class *xcl)”h]”j§ )�”}”(hŒstruct svc_xprt_class *xcl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•ubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt_class”h]”hŒsvc_xprt_class”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.svc_unreg_xprt_class”†”asbuh1hhj•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•ubj )�”}”(hj h]”hŒ*”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•ubj9)�”}”(hŒxcl”h]”hŒxcl”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‘ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjXh²hh³jjh´Kjubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjTh²hh³jjh´Kjubah}”(h]”jOah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jjh´KjhjQh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Unregister a server-side RPC transport class”h]”hŒ,Unregister a server-side RPC transport class”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kjhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjQh²hh³jjh´Kjubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j4jŒj4j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒS**Parameters** ``struct svc_xprt_class *xcl`` Transport class to be unregistered”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj>h]”hŒ Parameters”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Knhj8ubjß)�”}”(hhh]”jä)�”}”(hŒA``struct svc_xprt_class *xcl`` Transport class to be unregistered”h]”(jê)�”}”(hŒ``struct svc_xprt_class *xcl``”h]”jð)�”}”(hj]h]”hŒstruct svc_xprt_class *xcl”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KphjWubj)�”}”(hhh]”jl)�”}”(hŒ"Transport class to be unregistered”h]”hŒ"Transport class to be unregistered”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kkhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrh´KphjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$svc_xprt_deferred_close (C function)”Œc.svc_xprt_deferred_close”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4void svc_xprt_deferred_close (struct svc_xprt *xprt)”h]”j )�”}”(hŒ3void svc_xprt_deferred_close(struct svc_xprt *xprt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj³h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³h²hh³jÅh´Kšubj3)�”}”(hŒsvc_xprt_deferred_close”h]”j9)�”}”(hŒsvc_xprt_deferred_close”h]”hŒsvc_xprt_deferred_close”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj³h²hh³jÅh´Kšubj¡ )�”}”(hŒ(struct svc_xprt *xprt)”h]”j§ )�”}”(hŒstruct svc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt”h]”hŒsvc_xprt”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÚsbŒc.svc_xprt_deferred_close”†”asbuh1hhjðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðubj )�”}”(hj h]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjðubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjìubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj³h²hh³jÅh´Kšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¯h²hh³jÅh´Kšubah}”(h]”jªah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÅh´Kšhj¬h²hubjg)�”}”(hhh]”jl)�”}”(hŒClose a transport”h]”hŒClose a transport”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kšhjth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¬h²hh³jÅh´Kšubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�jŒj�j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ¯**Parameters** ``struct svc_xprt *xprt`` transport instance **Description** Used in contexts that need to defer the work of shutting down the transport to an nfsd thread.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj™h]”hŒ Parameters”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kžhj“ubjß)�”}”(hhh]”jä)�”}”(hŒ-``struct svc_xprt *xprt`` transport instance ”h]”(jê)�”}”(hŒ``struct svc_xprt *xprt``”h]”jð)�”}”(hj¸h]”hŒstruct svc_xprt *xprt”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´K›hj²ubj)�”}”(hhh]”jl)�”}”(hŒtransport instance”h]”hŒtransport instance”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍh´K›hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍh´K›hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjóh]”hŒ Description”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´K�hj“ubjl)�”}”(hŒ^Used in contexts that need to defer the work of shutting down the transport to an nfsd thread.”h]”hŒ^Used in contexts that need to defer the work of shutting down the transport to an nfsd thread.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kœhj“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_xprt_received (C function)”Œc.svc_xprt_received”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void svc_xprt_received (struct svc_xprt *xprt)”h]”j )�”}”(hŒ-void svc_xprt_received(struct svc_xprt *xprt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4h²hh³jFh´KÙubj3)�”}”(hŒsvc_xprt_received”h]”j9)�”}”(hŒsvc_xprt_received”h]”hŒsvc_xprt_received”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj4h²hh³jFh´KÙubj¡ )�”}”(hŒ(struct svc_xprt *xprt)”h]”j§ )�”}”(hŒstruct svc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt”h]”hŒsvc_xprt”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j•Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j[sbŒc.svc_xprt_received”†”asbuh1hhjqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjqubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjmubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj4h²hh³jFh´KÙubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0h²hh³jFh´KÙubah}”(h]”j+ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jFh´KÙhj-h²hubjg)�”}”(hhh]”jl)�”}”(hŒstart next receiver thread”h]”hŒstart next receiver thread”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KÙhjõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj-h²hh³jFh´KÙubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXs**Parameters** ``struct svc_xprt *xprt`` controlling transport **Description** The caller must hold the XPT_BUSY bit and must not thereafter touch transport data. **Note** xpo_recvfrom decides when to clear XPT_DATA. A transport may leave the bit set until a read attempt finds no (or insufficient) data, or clear it as soon as it consumes the last queued receive.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KÝhjubjß)�”}”(hhh]”jä)�”}”(hŒ0``struct svc_xprt *xprt`` controlling transport ”h]”(jê)�”}”(hŒ``struct svc_xprt *xprt``”h]”jð)�”}”(hj9h]”hŒstruct svc_xprt *xprt”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KÚhj3ubj)�”}”(hhh]”jl)�”}”(hŒcontrolling transport”h]”hŒcontrolling transport”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNh´KÚhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNh´KÚhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjth]”hŒ Description”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KÜhjubjl)�”}”(hŒSThe caller must hold the XPT_BUSY bit and must not thereafter touch transport data.”h]”hŒSThe caller must hold the XPT_BUSY bit and must not thereafter touch transport data.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KÛhjubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hj›h]”hŒNote”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´KÞhjubjl)�”}”(hŒÀxpo_recvfrom decides when to clear XPT_DATA. A transport may leave the bit set until a read attempt finds no (or insufficient) data, or clear it as soon as it consumes the last queued receive.”h]”hŒÀxpo_recvfrom decides when to clear XPT_DATA. A transport may leave the bit set until a read attempt finds no (or insufficient) data, or clear it as soon as it consumes the last queued receive.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Kßhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$svc_xprt_create_from_sa (C function)”Œc.svc_xprt_create_from_sa”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ•int svc_xprt_create_from_sa (struct svc_serv *serv, const char *xprt_name, struct net *net, struct sockaddr *sap, int flags, const struct cred *cred)”h]”j )�”}”(hŒ”int svc_xprt_create_from_sa(struct svc_serv *serv, const char *xprt_name, struct net *net, struct sockaddr *sap, int flags, const struct cred *cred)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÜh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜh²hh³jîh´M1ubj3)�”}”(hŒsvc_xprt_create_from_sa”h]”j9)�”}”(hŒsvc_xprt_create_from_sa”h]”hŒsvc_xprt_create_from_sa”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÜh²hh³jîh´M1ubj¡ )�”}”(hŒy(struct svc_serv *serv, const char *xprt_name, struct net *net, struct sockaddr *sap, int flags, const struct cred *cred)”h]”(j§ )�”}”(hŒstruct svc_serv *serv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒsvc_serv”h]”hŒsvc_serv”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j=Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.svc_xprt_create_from_sa”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒserv”h]”hŒserv”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒconst char *xprt_name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‹ubj9)�”}”(hŒ xprt_name”h]”hŒ xprt_name”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jWŒc.svc_xprt_create_from_sa”†”asbuh1hhjèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèubj )�”}”(hj h]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjèubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒstruct sockaddr *sap”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjXubh)�”}”(hhh]”j9)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j|Œmodname”NŒ classname”Njå jè )�”}”jë ]”jWŒc.svc_xprt_create_from_sa”†”asbuh1hhjXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjXubj )�”}”(hj h]”hŒ*”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjXubj9)�”}”(hŒsap”h]”hŒsap”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÈubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒconst struct cred *cred”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjýubj)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjýubh)�”}”(hhh]”j9)�”}”(hŒcred”h]”hŒcred”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j<Œmodname”NŒ classname”Njå jè )�”}”jë ]”jWŒc.svc_xprt_create_from_sa”†”asbuh1hhjýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjýubj )�”}”(hj h]”hŒ*”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjýubj9)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÜh²hh³jîh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjØh²hh³jîh´M1ubah}”(h]”jÓah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jîh´M1hjÕh²hubjg)�”}”(hhh]”jl)�”}”(hŒ2Add a new listener to **serv** from socket address”h]”(hŒAdd a new listener to ”…”�”}”(hj�h²hh³Nh´Nubj›)�”}”(hŒ**serv**”h]”hŒserv”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ubhŒ from socket address”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M1hjšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÕh²hh³jîh´M1ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÇjŒjÇj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX‡**Parameters** ``struct svc_serv *serv`` target RPC service ``const char *xprt_name`` transport class name ``struct net *net`` network namespace ``struct sockaddr *sap`` socket address pointer ``int flags`` SVC_SOCK flags ``const struct cred *cred`` credential to bind to this transport **Description** Return local xprt port on success or ``-EPROTONOSUPPORT`` on failure”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÑh]”hŒ Parameters”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M5hjËubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct svc_serv *serv`` target RPC service ”h]”(jê)�”}”(hŒ``struct svc_serv *serv``”h]”jð)�”}”(hjðh]”hŒstruct svc_serv *serv”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M2hjêubj)�”}”(hhh]”jl)�”}”(hŒtarget RPC service”h]”hŒtarget RPC service”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M2hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M2hjçubjä)�”}”(hŒ/``const char *xprt_name`` transport class name ”h]”(jê)�”}”(hŒ``const char *xprt_name``”h]”jð)�”}”(hj)h]”hŒconst char *xprt_name”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M3hj#ubj)�”}”(hhh]”jl)�”}”(hŒtransport class name”h]”hŒtransport class name”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>h´M3hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>h´M3hjçubjä)�”}”(hŒ&``struct net *net`` network namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjbh]”hŒstruct net *net”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M4hj\ubj)�”}”(hhh]”jl)�”}”(hŒnetwork namespace”h]”hŒnetwork namespace”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwh´M4hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwh´M4hjçubjä)�”}”(hŒ0``struct sockaddr *sap`` socket address pointer ”h]”(jê)�”}”(hŒ``struct sockaddr *sap``”h]”jð)�”}”(hj›h]”hŒstruct sockaddr *sap”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M5hj•ubj)�”}”(hhh]”jl)�”}”(hŒsocket address pointer”h]”hŒsocket address pointer”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°h´M5hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°h´M5hjçubjä)�”}”(hŒ``int flags`` SVC_SOCK flags ”h]”(jê)�”}”(hŒ ``int flags``”h]”jð)�”}”(hjÔh]”hŒ int flags”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M6hjÎubj)�”}”(hhh]”jl)�”}”(hŒSVC_SOCK flags”h]”hŒSVC_SOCK flags”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jéh´M6hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéh´M6hjçubjä)�”}”(hŒA``const struct cred *cred`` credential to bind to this transport ”h]”(jê)�”}”(hŒ``const struct cred *cred``”h]”jð)�”}”(hj h]”hŒconst struct cred *cred”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M7hjubj)�”}”(hhh]”jl)�”}”(hŒ$credential to bind to this transport”h]”hŒ$credential to bind to this transport”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"h´M7hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j"h´M7hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjËubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjHh]”hŒ Description”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M9hjËubjl)�”}”(hŒDReturn local xprt port on success or ``-EPROTONOSUPPORT`` on failure”h]”(hŒ%Return local xprt port on success or ”…”�”}”(hj^h²hh³Nh´Nubjð)�”}”(hŒ``-EPROTONOSUPPORT``”h]”hŒ-EPROTONOSUPPORT”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^ubhŒ on failure”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M8hjËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_xprt_create (C function)”Œc.svc_xprt_create”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ¤int svc_xprt_create (struct svc_serv *serv, const char *xprt_name, struct net *net, const int family, const unsigned short port, int flags, const struct cred *cred)”h]”j )�”}”(hŒ£int svc_xprt_create(struct svc_serv *serv, const char *xprt_name, struct net *net, const int family, const unsigned short port, int flags, const struct cred *cred)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj›h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›h²hh³j­h´M[ubj3)�”}”(hŒsvc_xprt_create”h]”j9)�”}”(hŒsvc_xprt_create”h]”hŒsvc_xprt_create”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj›h²hh³j­h´M[ubj¡ )�”}”(hŒ�(struct svc_serv *serv, const char *xprt_name, struct net *net, const int family, const unsigned short port, int flags, const struct cred *cred)”h]”(j§ )�”}”(hŒstruct svc_serv *serv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØubh)�”}”(hhh]”j9)�”}”(hŒsvc_serv”h]”hŒsvc_serv”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jüŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÂsbŒc.svc_xprt_create”†”asbuh1hhjØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØubj )�”}”(hj h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjØubj9)�”}”(hŒserv”h]”hŒserv”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔubj§ )�”}”(hŒconst char *xprt_name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJubj )�”}”(hj h]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJubj9)�”}”(hŒ xprt_name”h]”hŒ xprt_name”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔubj§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§ubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jËŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŒc.svc_xprt_create”†”asbuh1hhj§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§ubj )�”}”(hj h]”hŒ*”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj§ubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔubj§ )�”}”(hŒconst int family”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒfamily”h]”hŒfamily”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔubj§ )�”}”(hŒconst unsigned short port”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgubjM )�”}”(hŒshort”h]”hŒshort”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgubj9)�”}”(hŒport”h]”hŒport”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÓubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔubj§ )�”}”(hŒconst struct cred *cred”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj)�”}”(hjh]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŒc.svc_xprt_create”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒcred”h]”hŒcred”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj›h²hh³j­h´M[ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj—h²hh³j­h´M[ubah}”(h]”j’ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j­h´M[hj”h²hubjg)�”}”(hhh]”jl)�”}”(hŒAdd a new listener to **serv**”h]”(hŒAdd a new listener to ”…”�”}”(hj¨h²hh³Nh´Nubj›)�”}”(hŒ**serv**”h]”hŒserv”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M[hj¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj”h²hh³j­h´M[ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÎjŒjÎj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX²**Parameters** ``struct svc_serv *serv`` target RPC service ``const char *xprt_name`` transport class name ``struct net *net`` network namespace ``const int family`` network address family ``const unsigned short port`` listener port ``int flags`` SVC_SOCK flags ``const struct cred *cred`` credential to bind to this transport **Description** Return local xprt port on success or ``-EPROTONOSUPPORT`` on failure”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjØh]”hŒ Parameters”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M_hjÒubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct svc_serv *serv`` target RPC service ”h]”(jê)�”}”(hŒ``struct svc_serv *serv``”h]”jð)�”}”(hj÷h]”hŒstruct svc_serv *serv”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M\hjñubj)�”}”(hhh]”jl)�”}”(hŒtarget RPC service”h]”hŒtarget RPC service”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M\hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M\hjîubjä)�”}”(hŒ/``const char *xprt_name`` transport class name ”h]”(jê)�”}”(hŒ``const char *xprt_name``”h]”jð)�”}”(hj0h]”hŒconst char *xprt_name”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M]hj*ubj)�”}”(hhh]”jl)�”}”(hŒtransport class name”h]”hŒtransport class name”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jEh´M]hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEh´M]hjîubjä)�”}”(hŒ&``struct net *net`` network namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjih]”hŒstruct net *net”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M^hjcubj)�”}”(hhh]”jl)�”}”(hŒnetwork namespace”h]”hŒnetwork namespace”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~h´M^hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~h´M^hjîubjä)�”}”(hŒ,``const int family`` network address family ”h]”(jê)�”}”(hŒ``const int family``”h]”jð)�”}”(hj¢h]”hŒconst int family”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M_hjœubj)�”}”(hhh]”jl)�”}”(hŒnetwork address family”h]”hŒnetwork address family”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j·h´M_hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·h´M_hjîubjä)�”}”(hŒ,``const unsigned short port`` listener port ”h]”(jê)�”}”(hŒ``const unsigned short port``”h]”jð)�”}”(hjÛh]”hŒconst unsigned short port”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M`hjÕubj)�”}”(hhh]”jl)�”}”(hŒ listener port”h]”hŒ listener port”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jðh´M`hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðh´M`hjîubjä)�”}”(hŒ``int flags`` SVC_SOCK flags ”h]”(jê)�”}”(hŒ ``int flags``”h]”jð)�”}”(hj h]”hŒ int flags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mahj ubj)�”}”(hhh]”jl)�”}”(hŒSVC_SOCK flags”h]”hŒSVC_SOCK flags”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j) h´Mahj* ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j) h´Mahjîubjä)�”}”(hŒA``const struct cred *cred`` credential to bind to this transport ”h]”(jê)�”}”(hŒ``const struct cred *cred``”h]”jð)�”}”(hjM h]”hŒconst struct cred *cred”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MbhjG ubj)�”}”(hhh]”jl)�”}”(hŒ$credential to bind to this transport”h]”hŒ$credential to bind to this transport”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jb h´Mbhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb h´Mbhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÒubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjˆ h]”hŒ Description”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MdhjÒubjl)�”}”(hŒDReturn local xprt port on success or ``-EPROTONOSUPPORT`` on failure”h]”(hŒ%Return local xprt port on success or ”…”�”}”(hjž h²hh³Nh´Nubjð)�”}”(hŒ``-EPROTONOSUPPORT``”h]”hŒ-EPROTONOSUPPORT”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž ubhŒ on failure”…”�”}”(hjž h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MchjÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_print_addr (C function)”Œc.svc_print_addr”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEchar * svc_print_addr (struct svc_rqst *rqstp, char *buf, size_t len)”h]”j )�”}”(hŒCchar *svc_print_addr(struct svc_rqst *rqstp, char *buf, size_t len)”h]”(jM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÛ h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mœubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛ h²hh³jí h´Mœubj )�”}”(hj h]”hŒ*”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÛ h²hh³jí h´Mœubj3)�”}”(hŒsvc_print_addr”h]”j9)�”}”(hŒsvc_print_addr”h]”hŒsvc_print_addr”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj !ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÛ h²hh³jí h´Mœubj¡ )�”}”(hŒ/(struct svc_rqst *rqstp, char *buf, size_t len)”h]”(j§ )�”}”(hŒstruct svc_rqst *rqstp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj)!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%!ubh)�”}”(hhh]”j9)�”}”(hŒsvc_rqst”h]”hŒsvc_rqst”…”�”}”(hjG!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjD!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jI!Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j!sbŒc.svc_print_addr”†”asbuh1hhj%!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%!ubj )�”}”(hj h]”hŒ*”…”�”}”(hju!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj%!ubj9)�”}”(hŒrqstp”h]”hŒrqstp”…”�”}”(hj‚!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!!ubj§ )�”}”(hŒ char *buf”h]”(jM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj›!h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj—!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—!ubj )�”}”(hj h]”hŒ*”…”�”}”(hj·!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—!ubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÄ!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!!ubj§ )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjà!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jâ!Œmodname”NŒ classname”Njå jè )�”}”jë ]”jc!Œc.svc_print_addr”†”asbuh1hhjÙ!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ!ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!!ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÛ h²hh³jí h´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj× h²hh³jí h´Mœubah}”(h]”jÒ ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jí h´MœhjÔ h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Format rq_addr field for printing”h]”hŒ!Format rq_addr field for printing”…”�”}”(hj6"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mœhj3"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÔ h²hh³jí h´Mœubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jN"jŒjN"j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ·**Parameters** ``struct svc_rqst *rqstp`` svc_rqst struct containing address to print ``char *buf`` target buffer for formatted address ``size_t len`` length of target buffer”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjX"h]”hŒ Parameters”…”�”}”(hjZ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjV"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M hjR"ubjß)�”}”(hhh]”(jä)�”}”(hŒG``struct svc_rqst *rqstp`` svc_rqst struct containing address to print ”h]”(jê)�”}”(hŒ``struct svc_rqst *rqstp``”h]”jð)�”}”(hjw"h]”hŒstruct svc_rqst *rqstp”…”�”}”(hjy"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhju"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M�hjq"ubj)�”}”(hhh]”jl)�”}”(hŒ+svc_rqst struct containing address to print”h]”hŒ+svc_rqst struct containing address to print”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒ"h´M�hj�"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒ"h´M�hjn"ubjä)�”}”(hŒ2``char *buf`` target buffer for formatted address ”h]”(jê)�”}”(hŒ ``char *buf``”h]”jð)�”}”(hj°"h]”hŒ char *buf”…”�”}”(hj²"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mžhjª"ubj)�”}”(hhh]”jl)�”}”(hŒ#target buffer for formatted address”h]”hŒ#target buffer for formatted address”…”�”}”(hjÉ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÅ"h´MžhjÆ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjª"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÅ"h´Mžhjn"ubjä)�”}”(hŒ&``size_t len`` length of target buffer”h]”(jê)�”}”(hŒ``size_t len``”h]”jð)�”}”(hjé"h]”hŒ size_t len”…”�”}”(hjë"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjç"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M hjã"ubj)�”}”(hhh]”jl)�”}”(hŒlength of target buffer”h]”hŒlength of target buffer”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MŸhjÿ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjã"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþ"h´M hjn"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjR"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_xprt_enqueue (C function)”Œc.svc_xprt_enqueue”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-void svc_xprt_enqueue (struct svc_xprt *xprt)”h]”j )�”}”(hŒ,void svc_xprt_enqueue(struct svc_xprt *xprt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjC#h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj?#h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Múubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?#h²hh³jQ#h´Múubj3)�”}”(hŒsvc_xprt_enqueue”h]”j9)�”}”(hŒsvc_xprt_enqueue”h]”hŒsvc_xprt_enqueue”…”�”}”(hjd#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`#ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj?#h²hh³jQ#h´Múubj¡ )�”}”(hŒ(struct svc_xprt *xprt)”h]”j§ )�”}”(hŒstruct svc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj€#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|#ubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt”h]”hŒsvc_xprt”…”�”}”(hjž#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j #Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jf#sbŒc.svc_xprt_enqueue”†”asbuh1hhj|#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|#ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌ#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj|#ubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjÙ#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjx#ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj?#h²hh³jQ#h´Múubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj;#h²hh³jQ#h´Múubah}”(h]”j6#ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQ#h´Múhj8#h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Queue a transport on an idle nfsd thread”h]”hŒ(Queue a transport on an idle nfsd thread”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Múhj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8#h²hh³jQ#h´Múubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j$jŒj$j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒG**Parameters** ``struct svc_xprt *xprt`` transport with data pending”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%$h]”hŒ Parameters”…”�”}”(hj'$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mþhj$ubjß)�”}”(hhh]”jä)�”}”(hŒ5``struct svc_xprt *xprt`` transport with data pending”h]”(jê)�”}”(hŒ``struct svc_xprt *xprt``”h]”jð)�”}”(hjD$h]”hŒstruct svc_xprt *xprt”…”�”}”(hjF$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mhj>$ubj)�”}”(hhh]”jl)�”}”(hŒtransport with data pending”h]”hŒtransport with data pending”…”�”}”(hj]$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MûhjZ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY$h´Mhj;$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_reserve (C function)”Œ c.svc_reserve”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4void svc_reserve (struct svc_rqst *rqstp, int space)”h]”j )�”}”(hŒ3void svc_reserve(struct svc_rqst *rqstp, int space)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjž$h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjš$h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjš$h²hh³j¬$h´M%ubj3)�”}”(hŒ svc_reserve”h]”j9)�”}”(hŒ svc_reserve”h]”hŒ svc_reserve”…”�”}”(hj¿$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»$ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjš$h²hh³j¬$h´M%ubj¡ )�”}”(hŒ#(struct svc_rqst *rqstp, int space)”h]”(j§ )�”}”(hŒstruct svc_rqst *rqstp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÛ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×$ubh)�”}”(hhh]”j9)�”}”(hŒsvc_rqst”h]”hŒsvc_rqst”…”�”}”(hjù$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjö$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jû$Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÁ$sbŒ c.svc_reserve”†”asbuh1hhj×$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×$ubj )�”}”(hj h]”hŒ*”…”�”}”(hj'%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj×$ubj9)�”}”(hŒrqstp”h]”hŒrqstp”…”�”}”(hj4%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÓ$ubj§ )�”}”(hŒ int space”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjM%h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjI%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjI%ubj9)�”}”(hŒspace”h]”hŒspace”…”�”}”(hji%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÓ$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjš$h²hh³j¬$h´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj–$h²hh³j¬$h´M%ubah}”(h]”j‘$ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¬$h´M%hj“$h²hubjg)�”}”(hhh]”jl)�”}”(hŒ5change the space reserved for the reply to a request.”h]”hŒ5change the space reserved for the reply to a request.”…”�”}”(hj“%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M%hj�%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj“$h²hh³j¬$h´M%ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j«%jŒj«%j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXÞ**Parameters** ``struct svc_rqst *rqstp`` The request in question ``int space`` new max space to reserve **Description** Each request reserves some space on the output queue of the transport to make sure the reply fits. This function reduces that reserved space to be the amount of space used already, plus **space**. The transport's reservation is tracked only on classes that set SVC_XPRT_FLAG_WSPACE_RESERVE. On the others, only **rqstp**'s reservation is updated.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjµ%h]”hŒ Parameters”…”�”}”(hj·%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M)hj¯%ubjß)�”}”(hhh]”(jä)�”}”(hŒ3``struct svc_rqst *rqstp`` The request in question ”h]”(jê)�”}”(hŒ``struct svc_rqst *rqstp``”h]”jð)�”}”(hjÔ%h]”hŒstruct svc_rqst *rqstp”…”�”}”(hjÖ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M&hjÎ%ubj)�”}”(hhh]”jl)�”}”(hŒThe request in question”h]”hŒThe request in question”…”�”}”(hjí%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jé%h´M&hjê%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jé%h´M&hjË%ubjä)�”}”(hŒ'``int space`` new max space to reserve ”h]”(jê)�”}”(hŒ ``int space``”h]”jð)�”}”(hj &h]”hŒ int space”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj &ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M'hj&ubj)�”}”(hhh]”jl)�”}”(hŒnew max space to reserve”h]”hŒnew max space to reserve”…”�”}”(hj&&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"&h´M'hj#&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j"&h´M'hjË%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯%ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjH&h]”hŒ Description”…”�”}”(hjJ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjF&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M)hj¯%ubjl)�”}”(hŒÅEach request reserves some space on the output queue of the transport to make sure the reply fits. This function reduces that reserved space to be the amount of space used already, plus **space**.”h]”(hŒ»Each request reserves some space on the output queue of the transport to make sure the reply fits. This function reduces that reserved space to be the amount of space used already, plus ”…”�”}”(hj^&h²hh³Nh´Nubj›)�”}”(hŒ **space**”h]”hŒspace”…”�”}”(hjf&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^&ubhŒ.”…”�”}”(hj^&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M(hj¯%ubjl)�”}”(hŒ–The transport's reservation is tracked only on classes that set SVC_XPRT_FLAG_WSPACE_RESERVE. On the others, only **rqstp**'s reservation is updated.”h]”(hŒuThe transport’s reservation is tracked only on classes that set SVC_XPRT_FLAG_WSPACE_RESERVE. On the others, only ”…”�”}”(hj&h²hh³Nh´Nubj›)�”}”(hŒ **rqstp**”h]”hŒrqstp”…”�”}”(hj‡&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&ubhŒ’s reservation is updated.”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M,hj¯%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_wake_up (C function)”Œ c.svc_wake_up”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ(void svc_wake_up (struct svc_serv *serv)”h]”j )�”}”(hŒ'void svc_wake_up(struct svc_serv *serv)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀ&h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼&h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼&h²hh³jÎ&h´Mlubj3)�”}”(hŒ svc_wake_up”h]”j9)�”}”(hŒ svc_wake_up”h]”hŒ svc_wake_up”…”�”}”(hjá&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ&ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¼&h²hh³jÎ&h´Mlubj¡ )�”}”(hŒ(struct svc_serv *serv)”h]”j§ )�”}”(hŒstruct svc_serv *serv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjý&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù&ubh)�”}”(hhh]”j9)�”}”(hŒsvc_serv”h]”hŒsvc_serv”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j'Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jã&sbŒ c.svc_wake_up”†”asbuh1hhjù&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù&ubj )�”}”(hj h]”hŒ*”…”�”}”(hjI'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjù&ubj9)�”}”(hŒserv”h]”hŒserv”…”�”}”(hjV'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõ&ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¼&h²hh³jÎ&h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¸&h²hh³jÎ&h´Mlubah}”(h]”j³&ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÎ&h´Mlhjµ&h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Wake up a service thread for non-transport work”h]”hŒ/Wake up a service thread for non-transport work”…”�”}”(hj€'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mlhj}'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjµ&h²hh³jÎ&h´Mlubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j˜'jŒj˜'j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX|**Parameters** ``struct svc_serv *serv`` RPC service **Description** Some svc_serv's will have occasional work to do, even when a xprt is not waiting to be serviced. This function is there to "kick" a task in one of those services so that it can wake up and do that work. Note that we only bother with pool 0 as we don't need to wake up more than one thread for this purpose.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¢'h]”hŒ Parameters”…”�”}”(hj¤'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mphjœ'ubjß)�”}”(hhh]”jä)�”}”(hŒ&``struct svc_serv *serv`` RPC service ”h]”(jê)�”}”(hŒ``struct svc_serv *serv``”h]”jð)�”}”(hjÁ'h]”hŒstruct svc_serv *serv”…”�”}”(hjÃ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mmhj»'ubj)�”}”(hhh]”jl)�”}”(hŒ RPC service”h]”hŒ RPC service”…”�”}”(hjÚ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖ'h´Mmhj×'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖ'h´Mmhj¸'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjœ'ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjü'h]”hŒ Description”…”�”}”(hjþ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjú'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mohjœ'ubjl)�”}”(hX2Some svc_serv's will have occasional work to do, even when a xprt is not waiting to be serviced. This function is there to "kick" a task in one of those services so that it can wake up and do that work. Note that we only bother with pool 0 as we don't need to wake up more than one thread for this purpose.”h]”hX:Some svc_serv’s will have occasional work to do, even when a xprt is not waiting to be serviced. This function is there to “kickâ€� a task in one of those services so that it can wake up and do that work. Note that we only bother with pool 0 as we don’t need to wake up more than one thread for this purpose.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mnhjœ'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_recv (C function)”Œ c.svc_recv”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1int svc_recv (struct svc_rqst *rqstp, long timeo)”h]”j )�”}”(hŒ0int svc_recv(struct svc_rqst *rqstp, long timeo)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjA(h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj=(h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=(h²hh³jO(h´M“ubj3)�”}”(hŒsvc_recv”h]”j9)�”}”(hŒsvc_recv”h]”hŒsvc_recv”…”�”}”(hjb(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^(ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj=(h²hh³jO(h´M“ubj¡ )�”}”(hŒ$(struct svc_rqst *rqstp, long timeo)”h]”(j§ )�”}”(hŒstruct svc_rqst *rqstp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj~(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjz(ubh)�”}”(hhh]”j9)�”}”(hŒsvc_rqst”h]”hŒsvc_rqst”…”�”•}”(hjœ(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jž(Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jd(sbŒ c.svc_recv”†”asbuh1hhjz(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjz(ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÊ(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjz(ubj9)�”}”(hŒrqstp”h]”hŒrqstp”…”�”}”(hj×(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjv(ubj§ )�”}”(hŒ long timeo”h]”(jM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjð(h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjì(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjì(ubj9)�”}”(hŒtimeo”h]”hŒtimeo”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjì(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjv(ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj=(h²hh³jO(h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj9(h²hh³jO(h´M“ubah}”(h]”j4(ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jO(h´M“hj6(h²hubjg)�”}”(hhh]”jl)�”}”(hŒ5Receive and process the next request on any transport”h]”hŒ5Receive and process the next request on any transport”…”�”}”(hj6)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M“hj3)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj6(h²hh³jO(h´M“ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jN)jŒjN)j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXå**Parameters** ``struct svc_rqst *rqstp`` an idle RPC service thread ``long timeo`` timeout (in jiffies) (0 means infinite timeout) **Description** This code is carefully organised not to touch any cachelines in the shared svc_serv structure, only cachelines in the local svc_pool. If the timeout is 0, then the sleep will never time out. Returns -ETIMEDOUT if idle for an extended period -EBUSY if there is more work to do than available threads 0 otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjX)h]”hŒ Parameters”…”�”}”(hjZ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjV)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M—hjR)ubjß)�”}”(hhh]”(jä)�”}”(hŒ6``struct svc_rqst *rqstp`` an idle RPC service thread ”h]”(jê)�”}”(hŒ``struct svc_rqst *rqstp``”h]”jð)�”}”(hjw)h]”hŒstruct svc_rqst *rqstp”…”�”}”(hjy)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhju)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M”hjq)ubj)�”}”(hhh]”jl)�”}”(hŒan idle RPC service thread”h]”hŒan idle RPC service thread”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒ)h´M”hj�)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒ)h´M”hjn)ubjä)�”}”(hŒ?``long timeo`` timeout (in jiffies) (0 means infinite timeout) ”h]”(jê)�”}”(hŒ``long timeo``”h]”jð)�”}”(hj°)h]”hŒ long timeo”…”�”}”(hj²)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M•hjª)ubj)�”}”(hhh]”jl)�”}”(hŒ/timeout (in jiffies) (0 means infinite timeout)”h]”hŒ/timeout (in jiffies) (0 means infinite timeout)”…”�”}”(hjÉ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÅ)h´M•hjÆ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjª)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÅ)h´M•hjn)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjR)ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjë)h]”hŒ Description”…”�”}”(hjí)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjé)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M—hjR)ubjl)�”}”(hŒ…This code is carefully organised not to touch any cachelines in the shared svc_serv structure, only cachelines in the local svc_pool.”h]”hŒ…This code is carefully organised not to touch any cachelines in the shared svc_serv structure, only cachelines in the local svc_pool.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M–hjR)ubjl)�”}”(hŒ8If the timeout is 0, then the sleep will never time out.”h]”hŒ8If the timeout is 0, then the sleep will never time out.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MšhjR)ubjß)�”}”(hhh]”jä)�”}”(hŒxReturns -ETIMEDOUT if idle for an extended period -EBUSY if there is more work to do than available threads 0 otherwise.”h]”(jê)�”}”(hŒ1Returns -ETIMEDOUT if idle for an extended period”h]”hŒ1Returns -ETIMEDOUT if idle for an extended period”…”�”}”(hj&*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M�hj"*ubj)�”}”(hhh]”jl)�”}”(hŒF-EBUSY if there is more work to do than available threads 0 otherwise.”h]”hŒF-EBUSY if there is more work to do than available threads 0 otherwise.”…”�”}”(hj8*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4*h´M�hj5*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4*h´M�hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjR)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_xprt_close (C function)”Œc.svc_xprt_close”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+void svc_xprt_close (struct svc_xprt *xprt)”h]”j )�”}”(hŒ*void svc_xprt_close(struct svc_xprt *xprt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjx*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjt*h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjt*h²hh³j†*h´M›ubj3)�”}”(hŒsvc_xprt_close”h]”j9)�”}”(hŒsvc_xprt_close”h]”hŒsvc_xprt_close”…”�”}”(hj™*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•*ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjt*h²hh³j†*h´M›ubj¡ )�”}”(hŒ(struct svc_xprt *xprt)”h]”j§ )�”}”(hŒstruct svc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjµ*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±*ubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt”h]”hŒsvc_xprt”…”�”}”(hjÓ*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÕ*Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j›*sbŒc.svc_xprt_close”†”asbuh1hhj±*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±*ubj )�”}”(hj h]”hŒ*”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj±*ubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj­*ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjt*h²hh³j†*h´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjp*h²hh³j†*h´M›ubah}”(h]”jk*ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j†*h´M›hjm*h²hubjg)�”}”(hhh]”jl)�”}”(hŒClose a client connection”h]”hŒClose a client connection”…”�”}”(hj8+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M›hj5+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjm*h²hh³j†*h´M›ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jP+jŒjP+j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒC**Parameters** ``struct svc_xprt *xprt`` transport to disconnect”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjZ+h]”hŒ Parameters”…”�”}”(hj\+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjX+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MŸhjT+ubjß)�”}”(hhh]”jä)�”}”(hŒ1``struct svc_xprt *xprt`` transport to disconnect”h]”(jê)�”}”(hŒ``struct svc_xprt *xprt``”h]”jð)�”}”(hjy+h]”hŒstruct svc_xprt *xprt”…”�”}”(hj{+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M¡hjs+ubj)�”}”(hhh]”jl)�”}”(hŒtransport to disconnect”h]”hŒtransport to disconnect”…”�”}”(hj’+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mœhj�+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ+h´M¡hjp+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjT+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!svc_xprt_destroy_all (C function)”Œc.svc_xprt_destroy_all”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSvoid svc_xprt_destroy_all (struct svc_serv *serv, struct net *net, bool unregister)”h]”j )�”}”(hŒRvoid svc_xprt_destroy_all(struct svc_serv *serv, struct net *net, bool unregister)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓ+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏ+h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ+h²hh³já+h´MÙubj3)�”}”(hŒsvc_xprt_destroy_all”h]”j9)�”}”(hŒsvc_xprt_destroy_all”h]”hŒsvc_xprt_destroy_all”…”�”}”(hjô+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð+ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÏ+h²hh³já+h´MÙubj¡ )�”}”(hŒ9(struct svc_serv *serv, struct net *net, bool unregister)”h]”(j§ )�”}”(hŒstruct svc_serv *serv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ,ubh)�”}”(hhh]”j9)�”}”(hŒsvc_serv”h]”hŒsvc_serv”…”�”}”(hj.,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0,Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jö+sbŒc.svc_xprt_destroy_all”†”asbuh1hhj ,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ,ubj )�”}”(hj h]”hŒ*”…”�”}”(hj\,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ,ubj9)�”}”(hŒserv”h]”hŒserv”…”�”}”(hji,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,ubj§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~,ubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢,Œmodname”NŒ classname”Njå jè )�”}”jë ]”jJ,Œc.svc_xprt_destroy_all”†”asbuh1hhj~,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~,ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌ,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj~,ubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjÙ,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,ubj§ )�”}”(hŒbool unregister”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjò,h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjî,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî,ubj9)�”}”(hŒ unregister”h]”hŒ unregister”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÏ+h²hh³já+h´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjË+h²hh³já+h´MÙubah}”(h]”jÆ+ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³já+h´MÙhjÈ+h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Destroy transports associated with **serv**”h]”(hŒ#Destroy transports associated with ”…”�”}”(hj7-h²hh³Nh´Nubj›)�”}”(hŒ**serv**”h]”hŒserv”…”�”}”(hj?-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÙhj4-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈ+h²hh³já+h´MÙubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j]-jŒj]-j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXî**Parameters** ``struct svc_serv *serv`` RPC service to be shut down ``struct net *net`` target network namespace ``bool unregister`` true if it is OK to unregister the destroyed xprts **Description** Server threads may still be running (especially in the case where the service is still running in other network namespaces). So we shut down sockets the same way we would on a running server, by setting XPT_CLOSE, enqueuing, and letting a thread pick it up to do the close. In the case there are no such other threads, threads running, svc_clean_up_xprts() does a simple version of a server's main event loop, and in the case where there are other threads, we may need to wait a little while and then check again to see if they're done.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjg-h]”hŒ Parameters”…”�”}”(hji-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhje-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÝhja-ubjß)�”}”(hhh]”(jä)�”}”(hŒ6``struct svc_serv *serv`` RPC service to be shut down ”h]”(jê)�”}”(hŒ``struct svc_serv *serv``”h]”jð)�”}”(hj†-h]”hŒstruct svc_serv *serv”…”�”}”(hjˆ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÚhj€-ubj)�”}”(hhh]”jl)�”}”(hŒRPC service to be shut down”h]”hŒRPC service to be shut down”…”�”}”(hjŸ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›-h´MÚhjœ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›-h´MÚhj}-ubjä)�”}”(hŒ-``struct net *net`` target network namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj¿-h]”hŒstruct net *net”…”�”}”(hjÁ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÛhj¹-ubj)�”}”(hhh]”jl)�”}”(hŒtarget network namespace”h]”hŒtarget network namespace”…”�”}”(hjØ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÔ-h´MÛhjÕ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔ-h´MÛhj}-ubjä)�”}”(hŒG``bool unregister`` true if it is OK to unregister the destroyed xprts ”h]”(jê)�”}”(hŒ``bool unregister``”h]”jð)�”}”(hjø-h]”hŒbool unregister”…”�”}”(hjú-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjö-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÜhjò-ubj)�”}”(hhh]”jl)�”}”(hŒ2true if it is OK to unregister the destroyed xprts”h]”hŒ2true if it is OK to unregister the destroyed xprts”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j .h´MÜhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j .h´MÜhj}-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhja-ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj3.h]”hŒ Description”…”�”}”(hj5.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÞhja-ubjl)�”}”(hŒ|Server threads may still be running (especially in the case where the service is still running in other network namespaces).”h]”hŒ|Server threads may still be running (especially in the case where the service is still running in other network namespaces).”…”�”}”(hjI.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÝhja-ubjl)�”}”(hXœSo we shut down sockets the same way we would on a running server, by setting XPT_CLOSE, enqueuing, and letting a thread pick it up to do the close. In the case there are no such other threads, threads running, svc_clean_up_xprts() does a simple version of a server's main event loop, and in the case where there are other threads, we may need to wait a little while and then check again to see if they're done.”h]”hX So we shut down sockets the same way we would on a running server, by setting XPT_CLOSE, enqueuing, and letting a thread pick it up to do the close. In the case there are no such other threads, threads running, svc_clean_up_xprts() does a simple version of a server’s main event loop, and in the case where there are other threads, we may need to wait a little while and then check again to see if they’re done.”…”�”}”(hjX.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Màhja-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_find_listener (C function)”Œc.svc_find_listener”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ}struct svc_xprt * svc_find_listener (struct svc_serv *serv, const char *xcl_name, struct net *net, const struct sockaddr *sa)”h]”j )�”}”(hŒ{struct svc_xprt *svc_find_listener(struct svc_serv *serv, const char *xcl_name, struct net *net, const struct sockaddr *sa)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‡.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ.h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mpubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ.h²hh³j”.h´Mpubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt”h]”hŒsvc_xprt”…”�”}”(hj¦.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¨.Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œsvc_find_listener”sbŒc.svc_find_listener”†”asbuh1hhjƒ.h²hh³j”.h´Mpubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ.h²hh³j”.h´Mpubj )�”}”(hj h]”hŒ*”…”�”}”(hjÕ.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒ.h²hh³j”.h´Mpubj3)�”}”(hŒsvc_find_listener”h]”j9)�”}”(hjÄ.h]”hŒsvc_find_listener”…”�”}”(hjæ.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ.ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjƒ.h²hh³j”.h´Mpubj¡ )�”}”(hŒY(struct svc_serv *serv, const char *xcl_name, struct net *net, const struct sockaddr *sa)”h]”(j§ )�”}”(hŒstruct svc_serv *serv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjý.ubh)�”}”(hhh]”j9)�”}”(hŒsvc_serv”h]”hŒsvc_serv”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j!/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÂ.Œc.svc_find_listener”†”asbuh1hhjý.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjý.ubj )�”}”(hj h]”hŒ*”…”�”}”(hjK/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjý.ubj9)�”}”(hŒserv”h]”hŒserv”…”�”}”(hjX/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjù.ubj§ )�”}”(hŒconst char *xcl_name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjq/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjm/ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjŒ/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjm/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjm/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¨/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjm/ubj9)�”}”(hŒxcl_name”h]”hŒxcl_name”…”�”}”(hjµ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjù.ubj§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÎ/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ/ubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjì/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jî/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÂ.Œc.svc_find_listener”†”asbuh1hhjÊ/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÊ/ubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj%0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjù.ubj§ )�”}”(hŒconst struct sockaddr *sa”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj>0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:0ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjY0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:0ubh)�”}”(hhh]”j9)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hjw0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jy0Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÂ.Œc.svc_find_listener”†”asbuh1hhj:0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:0ubj )�”}”(hj h]”hŒ*”…”�”}”(hj£0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj:0ubj9)�”}”(hŒsa”h]”hŒsa”…”�”}”(hj°0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjù.ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjƒ.h²hh³j”.h´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj.h²hh³j”.h´Mpubah}”(h]”jz.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j”.h´Mphj|.h²hubjg)�”}”(hhh]”jl)�”}”(hŒfind an RPC transport instance”h]”hŒfind an RPC transport instance”…”�”}”(hjÚ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mphj×0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj|.h²hh³j”.h´Mpubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jò0jŒjò0j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct svc_serv *serv`` pointer to svc_serv to search ``const char *xcl_name`` C string containing transport's class name ``struct net *net`` owner net pointer ``const struct sockaddr *sa`` sockaddr containing address **Description** Return the transport instance pointer for the endpoint accepting connections/peer traffic from the specified transport class, and matching sockaddr.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjü0h]”hŒ Parameters”…”�”}”(hjþ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjú0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mthjö0ubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct svc_serv *serv`` pointer to svc_serv to search ”h]”(jê)�”}”(hŒ``struct svc_serv *serv``”h]”jð)�”}”(hj1h]”hŒstruct svc_serv *serv”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mqhj1ubj)�”}”(hhh]”jl)�”}”(hŒpointer to svc_serv to search”h]”hŒpointer to svc_serv to search”…”�”}”(hj41h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j01h´Mqhj11ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j01h´Mqhj1ubjä)�”}”(hŒD``const char *xcl_name`` C string containing transport's class name ”h]”(jê)�”}”(hŒ``const char *xcl_name``”h]”jð)�”}”(hjT1h]”hŒconst char *xcl_name”…”�”}”(hjV1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MrhjN1ubj)�”}”(hhh]”jl)�”}”(hŒ*C string containing transport's class name”h]”hŒ,C string containing transport’s class name”…”�”}”(hjm1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ji1h´Mrhjj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji1h´Mrhj1ubjä)�”}”(hŒ&``struct net *net`` owner net pointer ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj�1h]”hŒstruct net *net”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mshj‡1ubj)�”}”(hhh]”jl)�”}”(hŒowner net pointer”h]”hŒowner net pointer”…”�”}”(hj¦1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¢1h´Mshj£1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢1h´Mshj1ubjä)�”}”(hŒ:``const struct sockaddr *sa`` sockaddr containing address ”h]”(jê)�”}”(hŒ``const struct sockaddr *sa``”h]”jð)�”}”(hjÆ1h]”hŒconst struct sockaddr *sa”…”�”}”(hjÈ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MthjÀ1ubj)�”}”(hhh]”jl)�”}”(hŒsockaddr containing address”h]”hŒsockaddr containing address”…”�”}”(hjß1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛ1h´MthjÜ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛ1h´Mthj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjö0ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj2h]”hŒ Description”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mvhjö0ubjl)�”}”(hŒ”Return the transport instance pointer for the endpoint accepting connections/peer traffic from the specified transport class, and matching sockaddr.”h]”hŒ”Return the transport instance pointer for the endpoint accepting connections/peer traffic from the specified transport class, and matching sockaddr.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Muhjö0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_find_xprt (C function)”Œc.svc_find_xprt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ�struct svc_xprt * svc_find_xprt (struct svc_serv *serv, const char *xcl_name, struct net *net, const sa_family_t af, const unsigned short port)”h]”j )�”}”(hŒ�struct svc_xprt *svc_find_xprt(struct svc_serv *serv, const char *xcl_name, struct net *net, const sa_family_t af, const unsigned short port)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjF2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB2h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjB2h²hh³jS2h´M’ubh)�”}”(hhh]”j9)�”}”(hŒsvc_xprt”h]”hŒsvc_xprt”…”�”}”(hje2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjb2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jg2Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ svc_find_xprt”sbŒc.svc_find_xprt”†”asbuh1hhjB2h²hh³jS2h´M’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjB2h²hh³jS2h´M’ubj )�”}”(hj h]”hŒ*”…”�”}”(hj”2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjB2h²hh³jS2h´M’ubj3)�”}”(hŒ svc_find_xprt”h]”j9)�”}”(hjƒ2h]”hŒ svc_find_xprt”…”�”}”(hj¥2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡2ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjB2h²hh³jS2h´M’ubj¡ )�”}”(hŒo(struct svc_serv *serv, const char *xcl_name, struct net *net, const sa_family_t af, const unsigned short port)”h]”(j§ )�”}”(hŒstruct svc_serv *serv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÀ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼2ubh)�”}”(hhh]”j9)�”}”(hŒsvc_serv”h]”hŒsvc_serv”…”�”}”(hjÞ2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jà2Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�2Œc.svc_find_xprt”†”asbuh1hhj¼2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼2ubj )�”}”(hj h]”hŒ*”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼2ubj9)�”}”(hŒserv”h]”hŒserv”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸2ubj§ )�”}”(hŒconst char *xcl_name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj03h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,3ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjK3h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj,3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,3ubj )�”}”(hj h]”hŒ*”…”�”}”(hjg3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj,3ubj9)�”}”(hŒxcl_name”h]”hŒxcl_name”…”�”}”(hjt3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸2ubj§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰3ubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj«3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­3Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�2Œc.svc_find_xprt”†”asbuh1hhj‰3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰3ubj )�”}”(hj h]”hŒ*”…”�”}”(hj×3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‰3ubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjä3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸2ubj§ )�”}”(hŒconst sa_family_t af”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjý3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù3ubh)�”}”(hhh]”j9)�”}”(hŒ sa_family_t”h]”hŒ sa_family_t”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j4Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�2Œc.svc_find_xprt”†”asbuh1hhjù3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj94h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù3ubj9)�”}”(hŒaf”h]”hŒaf”…”�”}”(hjG4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸2ubj§ )�”}”(hŒconst unsigned short port”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj`4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\4ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj{4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\4ubjM )�”}”(hŒshort”h]”hŒshort”…”�”}”(hj—4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\4ubj9)�”}”(hŒport”h]”hŒport”…”�”}”(hj³4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjB2h²hh³jS2h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj>2h²hh³jS2h´M’ubah}”(h]”j92ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jS2h´M’hj;2h²hubjg)�”}”(hhh]”jl)�”}”(hŒfind an RPC transport instance”h]”hŒfind an RPC transport instance”…”�”}”(hjÝ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M’hjÚ4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj;2h²hh³jS2h´M’ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jõ4jŒjõ4j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX•**Parameters** ``struct svc_serv *serv`` pointer to svc_serv to search ``const char *xcl_name`` C string containing transport's class name ``struct net *net`` owner net pointer ``const sa_family_t af`` Address family of transport's local address ``const unsigned short port`` transport's IP port number **Description** Return the transport instance pointer for the endpoint accepting connections/peer traffic from the specified transport class, address family and port. Specifying 0 for the address family or port is effectively a wild-card, and will result in matching the first transport in the service's list that has a matching class name.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÿ4h]”hŒ Parameters”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjý4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M–hjù4ubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct svc_serv *serv`` pointer to svc_serv to search ”h]”(jê)�”}”(hŒ``struct svc_serv *serv``”h]”jð)�”}”(hj5h]”hŒstruct svc_serv *serv”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M“hj5ubj)�”}”(hhh]”jl)�”}”(hŒpointer to svc_serv to search”h]”hŒpointer to svc_serv to search”…”�”}”(hj75h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j35h´M“hj45ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j35h´M“hj5ubjä)�”}”(hŒD``const char *xcl_name`` C string containing transport's class name ”h]”(jê)�”}”(hŒ``const char *xcl_name``”h]”jð)�”}”(hjW5h]”hŒconst char *xcl_name”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjU5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M”hjQ5ubj)�”}”(hhh]”jl)�”}”(hŒ*C string containing transport's class name”h]”hŒ,C string containing transport’s class name”…”�”}”(hjp5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jl5h´M”hjm5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jl5h´M”hj5ubjä)�”}”(hŒ&``struct net *net`` owner net pointer ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj�5h]”hŒstruct net *net”…”�”}”(hj’5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M•hjŠ5ubj)�”}”(hhh]”jl)�”}”(hŒowner net pointer”h]”hŒowner net pointer”…”�”}”(hj©5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¥5h´M•hj¦5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥5h´M•hj5ubjä)�”}”(hŒE``const sa_family_t af`` Address family of transport's local address ”h]”(jê)�”}”(hŒ``const sa_family_t af``”h]”jð)�”}”(hjÉ5h]”hŒconst sa_family_t af”…”�”}”(hjË5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÇ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M–hjÃ5ubj)�”}”(hhh]”jl)�”}”(hŒ+Address family of transport's local address”h]”hŒ-Address family of transport’s local address”…”�”}”(hjâ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÞ5h´M–hjß5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÞ5h´M–hj5ubjä)�”}”(hŒ9``const unsigned short port`` transport's IP port number ”h]”(jê)�”}”(hŒ``const unsigned short port``”h]”jð)�”}”(hj6h]”hŒconst unsigned short port”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M—hjü5ubj)�”}”(hhh]”jl)�”}”(hŒtransport's IP port number”h]”hŒtransport’s IP port number”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6h´M—hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6h´M—hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjù4ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj=6h]”hŒ Description”…”�”}”(hj?6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj;6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M™hjù4ubjl)�”}”(hŒ–Return the transport instance pointer for the endpoint accepting connections/peer traffic from the specified transport class, address family and port.”h]”hŒ–Return the transport instance pointer for the endpoint accepting connections/peer traffic from the specified transport class, address family and port.”…”�”}”(hjS6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´M˜hjù4ubjl)�”}”(hŒ­Specifying 0 for the address family or port is effectively a wild-card, and will result in matching the first transport in the service's list that has a matching class name.”h]”hŒ¯Specifying 0 for the address family or port is effectively a wild-card, and will result in matching the first transport in the service’s list that has a matching class name.”…”�”}”(hjb6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´Mœhjù4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsvc_xprt_names (C function)”Œc.svc_xprt_names”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒGint svc_xprt_names (struct svc_serv *serv, char *buf, const int buflen)”h]”j )�”}”(hŒFint svc_xprt_names(struct svc_serv *serv, char *buf, const int buflen)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‘6h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�6h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�6h²hh³jŸ6h´MÍubj3)�”}”(hŒsvc_xprt_names”h]”j9)�”}”(hŒsvc_xprt_names”h]”hŒsvc_xprt_names”…”�”}”(hj²6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®6ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�6h²hh³jŸ6h´MÍubj¡ )�”}”(hŒ4(struct svc_serv *serv, char *buf, const int buflen)”h]”(j§ )�”}”(hŒstruct svc_serv *serv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÎ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ6ubh)�”}”(hhh]”j9)�”}”(hŒsvc_serv”h]”hŒsvc_serv”…”�”}”(hjì6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jî6Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j´6sbŒc.svc_xprt_names”†”asbuh1hhjÊ6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ6ubj )�”}”(hj h]”hŒ*”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÊ6ubj9)�”}”(hŒserv”h]”hŒserv”…”�”}”(hj'7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÆ6ubj§ )�”}”(hŒ char *buf”h]”(jM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj@7h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj<7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<7ubj )�”}”(hj h]”hŒ*”…”�”}”(hj\7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj<7ubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hji7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÆ6ubj§ )�”}”(hŒconst int buflen”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj‚7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~7ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj~7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~7ubj9)�”}”(hŒbuflen”h]”hŒbuflen”…”�”}”(hj¹7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÆ6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�6h²hh³jŸ6h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‰6h²hh³jŸ6h´MÍubah}”(h]”j„6ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŸ6h´MÍhj†6h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.format a buffer with a list of transport names”h]”hŒ.format a buffer with a list of transport names”…”�”}”(hjã7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÍhjà7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj†6h²hh³jŸ6h´MÍubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jû7jŒjû7j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX¨**Parameters** ``struct svc_serv *serv`` pointer to an RPC service ``char *buf`` pointer to a buffer to be filled in ``const int buflen`` length of buffer to be filled in **Description** Fills in **buf** with a string containing a list of transport names, each name terminated with '\n'. Returns positive length of the filled-in string on success; otherwise a negative errno value is returned if an error occurs.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÑhjÿ7ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct svc_serv *serv`` pointer to an RPC service ”h]”(jê)�”}”(hŒ``struct svc_serv *serv``”h]”jð)�”}”(hj$8h]”hŒstruct svc_serv *serv”…”�”}”(hj&8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÎhj8ubj)�”}”(hhh]”jl)�”}”(hŒpointer to an RPC service”h]”hŒpointer to an RPC service”…”�”}”(hj=8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j98h´MÎhj:8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j98h´MÎhj8ubjä)�”}”(hŒ2``char *buf`` pointer to a buffer to be filled in ”h]”(jê)�”}”(hŒ ``char *buf``”h]”jð)�”}”(hj]8h]”hŒ char *buf”…”�”}”(hj_8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÏhjW8ubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to a buffer to be filled in”h]”hŒ#pointer to a buffer to be filled in”…”�”}”(hjv8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jr8h´MÏhjs8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jr8h´MÏhj8ubjä)�”}”(hŒ6``const int buflen`` length of buffer to be filled in ”h]”(jê)�”}”(hŒ``const int buflen``”h]”jð)�”}”(hj–8h]”hŒconst int buflen”…”�”}”(hj˜8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÐhj�8ubj)�”}”(hhh]”jl)�”}”(hŒ length of buffer to be filled in”h]”hŒ length of buffer to be filled in”…”�”}”(hj¯8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«8h´MÐhj¬8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«8h´MÐhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÿ7ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÑ8h]”hŒ Description”…”�”}”(hjÓ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÒhjÿ7ubjl)�”}”(hŒdFills in **buf** with a string containing a list of transport names, each name terminated with '\n'.”h]”(hŒ Fills in ”…”�”}”(hjç8h²hh³Nh´Nubj›)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjï8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjç8ubhŒX with a string containing a list of transport names, each name terminated with ‘n’.”…”�”}”(hjç8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÑhjÿ7ubjl)�”}”(hŒ|Returns positive length of the filled-in string on success; otherwise a negative errno value is returned if an error occurs.”h]”hŒ|Returns positive length of the filled-in string on success; otherwise a negative errno value is returned if an error occurs.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:62: ./net/sunrpc/svc_xprt.c”h´MÔhjÿ7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$xprt_register_transport (C function)”Œc.xprt_register_transport”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:int xprt_register_transport (struct xprt_class *transport)”h]”j )�”}”(hŒ9int xprt_register_transport(struct xprt_class *transport)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj79h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj39h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´K[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj39h²hh³jE9h´K[ubj3)�”}”(hŒxprt_register_transport”h]”j9)�”}”(hŒxprt_register_transport”h]”hŒxprt_register_transport”…”�”}”(hjX9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT9ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj39h²hh³jE9h´K[ubj¡ )�”}”(hŒ(struct xprt_class *transport)”h]”j§ )�”}”(hŒstruct xprt_class *transport”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjt9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjp9ubh)�”}”(hhh]”j9)�”}”(hŒ xprt_class”h]”hŒ xprt_class”…”�”}”(hj’9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j”9Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jZ9sbŒc.xprt_register_transport”†”asbuh1hhjp9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjp9ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÀ9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjp9ubj9)�”}”(hŒ transport”h]”hŒ transport”…”�”}”(hjÍ9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjl9ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj39h²hh³jE9h´K[ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj/9h²hh³jE9h´K[ubah}”(h]”j*9ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jE9h´K[hj,9h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#register a transport implementation”h]”hŒ#register a transport implementation”…”�”}”(hj÷9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´K[hjô9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj,9h²hh³jE9h´K[ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j:jŒj:j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXl**Parameters** ``struct xprt_class *transport`` transport to register **Description** If a transport implementation is loaded as a kernel module, it can call this interface to make itself known to the RPC client. **Return** 0: transport successfully registered -EEXIST: transport already registered -EINVAL: transport module being unloaded”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj:h]”hŒ Parameters”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´K_hj:ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct xprt_class *transport`` transport to register ”h]”(jê)�”}”(hŒ ``struct xprt_class *transport``”h]”jð)�”}”(hj8:h]”hŒstruct xprt_class *transport”…”�”}”(hj::h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj6:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´K\hj2:ubj)�”}”(hhh]”jl)�”}”(hŒtransport to register”h]”hŒtransport to register”…”�”}”(hjQ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jM:h´K\hjN:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jM:h´K\hj/:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj:ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjs:h]”hŒ Description”…”�”}”(hju:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´K^hj:ubjl)�”}”(hŒ~If a transport implementation is loaded as a kernel module, it can call this interface to make itself known to the RPC client.”h]”hŒ~If a transport implementation is loaded as a kernel module, it can call this interface to make itself known to the RPC client.”…”�”}”(hj‰:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´K]hj:ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjš:h]”hŒReturn”…”�”}”(hjœ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´K`hj:ubjl)�”}”(hŒ…0: transport successfully registered -EEXIST: transport already registered -EINVAL: transport module being unloaded”h]”hŒ…0: transport successfully registered -EEXIST: transport already registered -EINVAL: transport module being unloaded”…”�”}”(hj°:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Kahj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&xprt_unregister_transport (C function)”Œc.xprt_unregister_transport”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ 0: transport identifier -ENOENT: transport module not available”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj-=h]”hŒ Parameters”…”�”}”(hj/=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Kæhj'=ubjß)�”}”(hhh]”jä)�”}”(hŒ(``const char *netid`` transport to load ”h]”(jê)�”}”(hŒ``const char *netid``”h]”jð)�”}”(hjL=h]”hŒconst char *netid”…”�”}”(hjN=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´KãhjF=ubj)�”}”(hhh]”jl)�”}”(hŒtransport to load”h]”hŒtransport to load”…”�”}”(hje=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ja=h´Kãhjb=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ja=h´KãhjC=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'=ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj‡=h]”hŒReturn”…”�”}”(hj‰=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Kåhj'=ubjl)�”}”(hŒM> 0: transport identifier -ENOENT: transport module not available”h]”hŒM> 0: transport identifier -ENOENT: transport module not available”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Kåhj'=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_reserve_xprt (C function)”Œc.xprt_reserve_xprt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDint xprt_reserve_xprt (struct rpc_xprt *xprt, struct rpc_task *task)”h]”j )�”}”(hŒCint xprt_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÌ=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÈ=h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈ=h²hh³jÚ=h´Mubj3)�”}”(hŒxprt_reserve_xprt”h]”j9)�”}”(hŒxprt_reserve_xprt”h]”hŒxprt_reserve_xprt”…”�”}”(hjí=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé=ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÈ=h²hh³jÚ=h´Mubj¡ )�”}”(hŒ.(struct rpc_xprt *xprt, struct rpc_task *task)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj'>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)>Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jï=sbŒc.xprt_reserve_xprt”†”asbuh1hhj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubj )�”}”(hj h]”hŒ*”…”�”}”(hjU>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>ubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjb>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ubj§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj{>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw>ubj"•)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjw>ubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hj™>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›>Œmodname”NŒ classname”Njå jè )�”}”jë ]”jC>Œc.xprt_reserve_xprt”†”asbuh1hhjw>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjw>ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÅ>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjw>ubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjÒ>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjw>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÈ=h²hh³jÚ=h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÄ=h²hh³jÚ=h´Mubah}”(h]”j¿=ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÚ=h´MhjÁ=h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$serialize write access to transports”h]”hŒ$serialize write access to transports”…”�”}”(hjü>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhjù>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÁ=h²hh³jÚ=h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j?jŒj?j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXA**Parameters** ``struct rpc_xprt *xprt`` pointer to the target transport ``struct rpc_task *task`` task that is requesting access to the transport **Description** This prevents mixing the payload of separate requests, and prevents transport connects from colliding with writes. No congestion control is provided.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj?h]”hŒ Parameters”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhj?ubjß)�”}”(hhh]”(jä)�”}”(hŒ:``struct rpc_xprt *xprt`` pointer to the target transport ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hj=?h]”hŒstruct rpc_xprt *xprt”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhj7?ubj)�”}”(hhh]”jl)�”}”(hŒpointer to the target transport”h]”hŒpointer to the target transport”…”�”}”(hjV?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jR?h´MhjS?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jR?h´Mhj4?ubjä)�”}”(hŒJ``struct rpc_task *task`` task that is requesting access to the transport ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hjv?h]”hŒstruct rpc_task *task”…”�”}”(hjx?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhjp?ubj)�”}”(hhh]”jl)�”}”(hŒ/task that is requesting access to the transport”h]”hŒ/task that is requesting access to the transport”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹?h´MhjŒ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹?h´Mhj4?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj?ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj±?h]”hŒ Description”…”�”}”(hj³?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhj?ubjl)�”}”(hŒ–This prevents mixing the payload of separate requests, and prevents transport connects from colliding with writes. No congestion control is provided.”h]”hŒ–This prevents mixing the payload of separate requests, and prevents transport connects from colliding with writes. No congestion control is provided.”…”�”}”(hjÇ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhj?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_release_xprt (C function)”Œc.xprt_release_xprt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEvoid xprt_release_xprt (struct rpc_xprt *xprt, struct rpc_task *task)”h]”j )�”}”(hŒDvoid xprt_release_xprt(struct rpc_xprt *xprt, struct rpc_task *task)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjö?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjò?h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò?h²hh³j@h´M�ubj3)�”}”(hŒxprt_release_xprt”h]”j9)�”}”(hŒxprt_release_xprt”h]”hŒxprt_release_xprt”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjò?h²hh³j@h´M�ubj¡ )�”}”(hŒ.(struct rpc_xprt *xprt, struct rpc_task *task)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj3@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/@ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjQ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjN@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jS@Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j@sbŒc.xprt_release_xprt”†”asbuh1hhj/@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/@ubj )�”}”(hj h]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj/@ubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjŒ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj+@ubj§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¥@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡@ubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hjÃ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÅ@Œmodname”NŒ classname”Njå jè )�”}”jë ]”jm@Œc.xprt_release_xprt”†”asbuh1hhj¡@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡@ubj )�”}”(hj h]”hŒ*”…”�”}”(hjï@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¡@ubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjü@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj+@ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjò?h²hh³j@h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjî?h²hh³j@h´M�ubah}”(h]”jé?ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j@h´M�hjë?h²hubjg)�”}”(hhh]”jl)�”}”(hŒ'allow other requests to use a transport”h]”hŒ'allow other requests to use a transport”…”�”}”(hj&Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M�hj#Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjë?h²hh³j@h´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j>AjŒj>Aj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒú**Parameters** ``struct rpc_xprt *xprt`` transport with other tasks potentially waiting ``struct rpc_task *task`` task that is releasing access to the transport **Description** Note that "task" can be NULL. No congestion control is provided.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjHAh]”hŒ Parameters”…”�”}”(hjJAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjFAubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¡hjBAubjß)�”}”(hhh]”(jä)�”}”(hŒI``struct rpc_xprt *xprt`` transport with other tasks potentially waiting ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjgAh]”hŒstruct rpc_xprt *xprt”…”�”}”(hjiAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjeAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MžhjaAubj)�”}”(hhh]”jl)�”}”(hŒ.transport with other tasks potentially waiting”h]”hŒ.transport with other tasks potentially waiting”…”�”}”(hj€Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|Ah´Mžhj}Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|Ah´Mžhj^Aubjä)�”}”(hŒI``struct rpc_task *task`` task that is releasing access to the transport ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hj Ah]”hŒstruct rpc_task *task”…”�”}”(hj¢Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MŸhjšAubj)�”}”(hhh]”jl)�”}”(hŒ.task that is releasing access to the transport”h]”hŒ.task that is releasing access to the transport”…”�”}”(hj¹Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµAh´MŸhj¶Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµAh´MŸhj^Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjBAubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÛAh]”hŒ Description”…”�”}”(hjÝAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙAubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¡hjBAubjl)�”}”(hŒANote that "task" can be NULL. No congestion control is provided.”h]”hŒENote that “taskâ€� can be NULL. No congestion control is provided.”…”�”}”(hjñAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M hjBAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#xprt_release_xprt_cong (C function)”Œc.xprt_release_xprt_cong”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒJvoid xprt_release_xprt_cong (struct rpc_xprt *xprt, struct rpc_task *task)”h]”j )�”}”(hŒIvoid xprt_release_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjBh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBh²hh³j.Bh´M®ubj3)�”}”(hŒxprt_release_xprt_cong”h]”j9)�”}”(hŒxprt_release_xprt_cong”h]”hŒxprt_release_xprt_cong”…”�”}”(hjABh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=Bubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjBh²hh³j.Bh´M®ubj¡ )�”}”(hŒ.(struct rpc_xprt *xprt, struct rpc_task *task)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj]Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYBubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj{Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j}BŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jCBsbŒc.xprt_release_xprt_cong”†”asbuh1hhjYBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYBubj )�”}”(hj h]”hŒ*”…”�”}”(hj©Bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjYBubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hj¶Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjUBubj§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÏBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËBubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hjíBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jïBŒmodname”NŒ classname”Njå jè )�”}”jë ]”j—BŒc.xprt_release_xprt_cong”†”asbuh1hhjËBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËBubj )�”}”(hj h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËBubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj&Ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjUBubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjBh²hh³j.Bh´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjBh²hh³j.Bh´M®ubah}”(h]”jBah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j.Bh´M®hjBh²hubjg)�”}”(hhh]”jl)�”}”(hŒ'allow other requests to use a transport”h]”hŒ'allow other requests to use a transport”…”�”}”(hjPCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M®hjMCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjBh²hh³j.Bh´M®ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jhCjŒjhCj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX3**Parameters** ``struct rpc_xprt *xprt`` transport with other tasks potentially waiting ``struct rpc_task *task`` task that is releasing access to the transport **Description** Note that "task" can be NULL. Another task is awoken to use the transport if the transport's congestion window allows it.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjrCh]”hŒ Parameters”…”�”}”(hjtCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjpCubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M²hjlCubjß)�”}”(hhh]”(jä)�”}”(hŒI``struct rpc_xprt *xprt`` transport with other tasks potentially waiting ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hj‘Ch]”hŒstruct rpc_xprt *xprt”…”�”}”(hj“Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¯hj‹Cubj)�”}”(hhh]”jl)�”}”(hŒ.transport with other tasks potentially waiting”h]”hŒ.transport with other tasks potentially waiting”…”�”}”(hjªCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦Ch´M¯hj§Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦Ch´M¯hjˆCubjä)�”}”(hŒI``struct rpc_task *task`` task that is releasing access to the transport ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hjÊCh]”hŒstruct rpc_task *task”…”�”}”(hjÌCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈCubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M°hjÄCubj)�”}”(hhh]”jl)�”}”(hŒ.task that is releasing access to the transport”h]”hŒ.task that is releasing access to the transport”…”�”}”(hjãCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jßCh´M°hjàCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßCh´M°hjˆCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjlCubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjDh]”hŒ Description”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M²hjlCubjl)�”}”(hŒzNote that "task" can be NULL. Another task is awoken to use the transport if the transport's congestion window allows it.”h]”hŒ€Note that “taskâ€� can be NULL. Another task is awoken to use the transport if the transport’s congestion window allows it.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M±hjlCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"xprt_request_get_cong (C function)”Œc.xprt_request_get_cong”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHbool xprt_request_get_cong (struct rpc_xprt *xprt, struct rpc_rqst *req)”h]”j )�”}”(hŒGbool xprt_request_get_cong(struct rpc_xprt *xprt, struct rpc_rqst *req)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjJDh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjFDh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFDh²hh³jWDh´Mìubj3)�”}”(hŒxprt_request_get_cong”h]”j9)�”}”(hŒxprt_request_get_cong”h]”hŒxprt_request_get_cong”…”�”}”(hjjDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfDubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjFDh²hh³jWDh´Mìubj¡ )�”}”(hŒ-(struct rpc_xprt *xprt, struct rpc_rqst *req)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj†Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Dubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Dh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Dubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj¤Dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¦DŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jlDsbŒc.xprt_request_get_cong”†”asbuh1hhj‚Dubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Dubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‚Dubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjßDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~Dubj§ )�”}”(hŒstruct rpc_rqst *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjøDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôDubh)�”}”(hhh]”j9)�”}”(hŒrpc_rqst”h]”hŒrpc_rqst”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jEŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÀDŒc.xprt_request_get_cong”†”asbuh1hhjôDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôDubj )�”}”(hj h]”hŒ*”…”�”}”(hjBEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjôDubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjOEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~Dubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjFDh²hh³jWDh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjBDh²hh³jWDh´Mìubah}”(h]”j=Dah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jWDh´Mìhj?Dh²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Request congestion control credits”h]”hŒ"Request congestion control credits”…”�”}”(hjyEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MìhjvEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?Dh²hh³jWDh´Mìubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‘EjŒj‘Ej�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ¼**Parameters** ``struct rpc_xprt *xprt`` pointer to transport ``struct rpc_rqst *req`` pointer to RPC request **Description** Useful for transports that require congestion control.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj›Eh]”hŒ Parameters”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mðhj•Eubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct rpc_xprt *xprt`` pointer to transport ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjºEh]”hŒstruct rpc_xprt *xprt”…”�”}”(hj¼Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Míhj´Eubj)�”}”(hhh]”jl)�”}”(hŒpointer to transport”h]”hŒpointer to transport”…”�”}”(hjÓEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏEh´MíhjÐEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏEh´Míhj±Eubjä)�”}”(hŒ0``struct rpc_rqst *req`` pointer to RPC request ”h]”(jê)�”}”(hŒ``struct rpc_rqst *req``”h]”jð)�”}”(hjóEh]”hŒstruct rpc_rqst *req”…”�”}”(hjõEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MîhjíEubj)�”}”(hhh]”jl)�”}”(hŒpointer to RPC request”h]”hŒpointer to RPC request”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jFh´Mîhj Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jFh´Mîhj±Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj•Eubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj.Fh]”hŒ Description”…”�”}”(hj0Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mðhj•Eubjl)�”}”(hŒ6Useful for transports that require congestion control.”h]”hŒ6Useful for transports that require congestion control.”…”�”}”(hjDFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mïhj•Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#xprt_release_rqst_cong (C function)”Œc.xprt_release_rqst_cong”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void xprt_release_rqst_cong (struct rpc_task *task)”h]”j )�”}”(hŒ2void xprt_release_rqst_cong(struct rpc_task *task)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjsFh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjoFh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjoFh²hh³j�Fh´Mubj3)�”}”(hŒxprt_release_rqst_cong”h]”j9)�”}”(hŒxprt_release_rqst_cong”h]”hŒxprt_release_rqst_cong”…”�”}”(hj”Fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Fubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjoFh²hh³j�Fh´Mubj¡ )�”}”(hŒ(struct rpc_task *task)”h]”j§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj°Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬Fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬Fubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hjÎFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÐFŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j–FsbŒc.xprt_release_rqst_cong”†”asbuh1hhj¬Fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîFh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬Fubj )�”}”(hj h]”hŒ*”…”�”}”(hjüFh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¬Fubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨Fubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjoFh²hh³j�Fh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjkFh²hh³j�Fh´Mubah}”(h]”jfFah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�Fh´MhjhFh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%housekeeping when request is complete”h]”hŒ%housekeeping when request is complete”…”�”}”(hj3Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhj0Gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjhFh²hh³j�Fh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jKGjŒjKGj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ˜**Parameters** ``struct rpc_task *task`` RPC request that recently completed **Description** Useful for transports that require congestion control.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjUGh]”hŒ Parameters”…”�”}”(hjWGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjSGubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MhjOGubjß)�”}”(hhh]”jä)�”}”(hŒ>``struct rpc_task *task`` RPC request that recently completed ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hjtGh]”hŒstruct rpc_task *task”…”�”}”(hjvGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjrGubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MhjnGubj)�”}”(hhh]”jl)�”}”(hŒ#RPC request that recently completed”h]”hŒ#RPC request that recently completed”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‰Gh´MhjŠGubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰Gh´MhjkGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjOGubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¯Gh]”hŒ Description”…”�”}”(hj±Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj­Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MhjOGubjl)�”}”(hŒ6Useful for transports that require congestion control.”h]”hŒ6Useful for transports that require congestion control.”…”�”}”(hjÅGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MhjOGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_adjust_cwnd (C function)”Œc.xprt_adjust_cwnd”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPvoid xprt_adjust_cwnd (struct rpc_xprt *xprt, struct rpc_task *task, int result)”h]”j )�”}”(hŒOvoid xprt_adjust_cwnd(struct rpc_xprt *xprt, struct rpc_task *task, int result)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjôGh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjðGh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðGh²hh³jHh´M#ubj3)�”}”(hŒxprt_adjust_cwnd”h]”j9)�”}”(hŒxprt_adjust_cwnd”h]”hŒxprt_adjust_cwnd”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjðGh²hh³jHh´M#ubj¡ )�”}”(hŒ:(struct rpc_xprt *xprt, struct rpc_task *task, int result)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj1Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-Hubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-Hubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjOHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jQHŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jHsbŒc.xprt_adjust_cwnd”†”asbuh1hhj-Hubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoHh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-Hubj )�”}”(hj h]”hŒ*”…”�”}”(hj}Hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj-Hubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjŠHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)Hubj§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj£Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸHubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hjÁHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÃHŒmodname”NŒ classname”Njå jè )�”}”jë ]”jkHŒc.xprt_adjust_cwnd”†”asbuh1hhjŸHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßHh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸHubj )�”}”(hj h]”hŒ*”…”�”}”(hjíHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŸHubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjúHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)Hubj§ )�”}”(hŒ int result”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIubj9)�”}”(hŒresult”h]”hŒresult”…”�”}”(hj/Ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)Hubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjðGh²hh³jHh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjìGh²hh³jHh´M#ubah}”(h]”jçGah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jHh´M#hjéGh²hubjg)�”}”(hhh]”jl)�”}”(hŒ"adjust transport congestion window”h]”hŒ"adjust transport congestion window”…”�”}”(hjYIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M#hjVIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjéGh²hh³jHh´M#ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jqIjŒjqIj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX¿**Parameters** ``struct rpc_xprt *xprt`` pointer to xprt ``struct rpc_task *task`` recently completed RPC request used to adjust window ``int result`` result code of completed RPC request **Description** The transport code maintains an estimate on the maximum number of out- standing RPC requests, using a smoothed version of the congestion avoidance implemented in 44BSD. This is basically the Van Jacobson congestion algorithm: If a retransmit occurs, the congestion window is halved; otherwise, it is incremented by 1/cwnd when - a reply is received and - a full number of requests are outstanding and - the congestion window hasn't been updated recently.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj{Ih]”hŒ Parameters”…”�”}”(hj}Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjyIubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M'hjuIubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct rpc_xprt *xprt`` pointer to xprt ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjšIh]”hŒstruct rpc_xprt *xprt”…”�”}”(hjœIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M$hj”Iubj)�”}”(hhh]”jl)�”}”(hŒpointer to xprt”h]”hŒpointer to xprt”…”�”}”(hj³Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯Ih´M$hj°Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯Ih´M$hj‘Iubjä)�”}”(hŒO``struct rpc_task *task`` recently completed RPC request used to adjust window ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hjÓIh]”hŒstruct rpc_task *task”…”�”}”(hjÕIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑIubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M%hjÍIubj)�”}”(hhh]”jl)�”}”(hŒ4recently completed RPC request used to adjust window”h]”hŒ4recently completed RPC request used to adjust window”…”�”}”(hjìIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèIh´M%hjéIubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèIh´M%hj‘Iubjä)�”}”(hŒ4``int result`` result code of completed RPC request ”h]”(jê)�”}”(hŒ``int result``”h]”jð)�”}”(hj Jh]”hŒ int result”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M&hjJubj)�”}”(hhh]”jl)�”}”(hŒ$result code of completed RPC request”h]”hŒ$result code of completed RPC request”…”�”}”(hj%Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!Jh´M&hj"Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!Jh´M&hj‘Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjuIubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjGJh]”hŒ Description”…”�”}”(hjIJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjEJubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M(hjuIubjl)�”}”(hXFThe transport code maintains an estimate on the maximum number of out- standing RPC requests, using a smoothed version of the congestion avoidance implemented in 44BSD. This is basically the Van Jacobson congestion algorithm: If a retransmit occurs, the congestion window is halved; otherwise, it is incremented by 1/cwnd when”h]”hXFThe transport code maintains an estimate on the maximum number of out- standing RPC requests, using a smoothed version of the congestion avoidance implemented in 44BSD. This is basically the Van Jacobson congestion algorithm: If a retransmit occurs, the congestion window is halved; otherwise, it is incremented by 1/cwnd when”…”�”}”(hj]Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M'hjuIubjÒ)�”}”(hŒ‘- a reply is received and - a full number of requests are outstanding and - the congestion window hasn't been updated recently.”h]”jC[)�”}”(hhh]”(jH[)�”}”(hŒa reply is received and”h]”jl)�”}”(hjuJh]”hŒa reply is received and”…”�”}”(hjwJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M-hjsJubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjpJubjH[)�”}”(hŒ-a full number of requests are outstanding and”h]”jl)�”}”(hj�Jh]”hŒ-a full number of requests are outstanding and”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M.hj‹Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjpJubjH[)�”}”(hŒ3the congestion window hasn't been updated recently.”h]”jl)�”}”(hj¥Jh]”hŒ5the congestion window hasn’t been updated recently.”…”�”}”(hj§Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M/hj£Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjpJubeh}”(h]”h ]”h"]”h$]”h&]”j\Œ-”uh1jB[h³j„Jh´M-hjlJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j„Jh´M-hjuIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$xprt_wake_pending_tasks (C function)”Œc.xprt_wake_pending_tasks”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@void xprt_wake_pending_tasks (struct rpc_xprt *xprt, int status)”h]”j )�”}”(hŒ?void xprt_wake_pending_tasks(struct rpc_xprt *xprt, int status)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèJh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjäJh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäJh²hh³jöJh´MKubj3)�”}”(hŒxprt_wake_pending_tasks”h]”j9)�”}”(hŒxprt_wake_pending_tasks”h]”hŒxprt_wake_pending_tasks”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjäJh²hh³jöJh´MKubj¡ )�”}”(hŒ#(struct rpc_xprt *xprt, int status)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj%Kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!Kubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjCKh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jEKŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j KsbŒc.xprt_wake_pending_tasks”†”asbuh1hhj!Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!Kubj )�”}”(hj h]”hŒ*”…”�”}”(hjqKh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!Kubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hj~Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKubj§ )�”}”(hŒ int status”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj—Kh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“Kubj9)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hj³Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjäJh²hh³jöJh´MKubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjàJh²hh³jöJh´MKubah}”(h]”jÛJah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jöJh´MKhjÝJh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-wake all tasks on a transport's pending queue”h]”hŒ/wake all tasks on a transport’s pending queue”…”�”}”(hjÝKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MKhjÚKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÝJh²hh³jöJh´MKubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jõKjŒjõKj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct rpc_xprt *xprt`` transport with waiting tasks ``int status`` result code to plant in each task before waking it”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÿKh]”hŒ Parameters”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjýKubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MOhjùKubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct rpc_xprt *xprt`` transport with waiting tasks ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjLh]”hŒstruct rpc_xprt *xprt”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MLhjLubj)�”}”(hhh]”jl)�”}”(hŒtransport with waiting tasks”h]”hŒtransport with waiting tasks”…”�”}”(hj7Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j3Lh´MLhj4Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3Lh´MLhjLubjä)�”}”(hŒA``int status`` result code to plant in each task before waking it”h]”(jê)�”}”(hŒ``int status``”h]”jð)�”}”(hjWLh]”hŒ int status”…”�”}”(hjYLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjULubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MNhjQLubj)�”}”(hhh]”jl)�”}”(hŒ2result code to plant in each task before waking it”h]”hŒ2result code to plant in each task before waking it”…”�”}”(hjpLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MMhjmLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlLh´MNhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjùKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'xprt_wait_for_buffer_space (C function)”Œc.xprt_wait_for_buffer_space”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void xprt_wait_for_buffer_space (struct rpc_xprt *xprt)”h]”j )�”}”(hŒ6void xprt_wait_for_buffer_space(struct rpc_xprt *xprt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±Lh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj­Lh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­Lh²hh³j¿Lh´MZubj3)�”}”(hŒxprt_wait_for_buffer_space”h]”j9)�”}”(hŒxprt_wait_for_buffer_space”h]”hŒxprt_wait_for_buffer_space”…”�”}”(hjÒLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎLubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj­Lh²hh³j¿Lh´MZubj¡ )�”}”(hŒ(struct rpc_xprt *xprt)”h]”j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjîLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêLubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jMŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÔLsbŒc.xprt_wait_for_buffer_space”†”asbuh1hhjêLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêLubj )�”}”(hj h]”hŒ*”…”�”}”(hj:Mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjêLubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjGMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjæLubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj­Lh²hh³j¿Lh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj©Lh²hh³j¿Lh´MZubah}”(h]”j¤Lah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¿Lh´MZhj¦Lh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)wait for transport output buffer to clear”h]”hŒ)wait for transport output buffer to clear”…”�”}”(hjqMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MZhjnMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¦Lh²hh³j¿Lh´MZubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‰MjŒj‰Mj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒñ**Parameters** ``struct rpc_xprt *xprt`` transport **Description** Note that we only set the timer for the case of RPC_IS_SOFT(), since we don't in general want to force a socket disconnection due to an incomplete RPC call transmission.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj“Mh]”hŒ Parameters”…”�”}”(hj•Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M^hj�Mubjß)�”}”(hhh]”jä)�”}”(hŒ$``struct rpc_xprt *xprt`` transport ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hj²Mh]”hŒstruct rpc_xprt *xprt”…”�”}”(hj´Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M[hj¬Mubj)�”}”(hhh]”jl)�”}”(hŒ transport”h]”hŒ transport”…”�”}”(hjËMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇMh´M[hjÈMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇMh´M[hj©Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�Mubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjíMh]”hŒ Description”…”�”}”(hjïMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëMubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M]hj�Mubjl)�”}”(hŒ©Note that we only set the timer for the case of RPC_IS_SOFT(), since we don't in general want to force a socket disconnection due to an incomplete RPC call transmission.”h]”hŒ«Note that we only set the timer for the case of RPC_IS_SOFT(), since we don’t in general want to force a socket disconnection due to an incomplete RPC call transmission.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M\hj�Mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_write_space (C function)”Œc.xprt_write_space”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-bool xprt_write_space (struct rpc_xprt *xprt)”h]”j )�”}”(hŒ,bool xprt_write_space(struct rpc_xprt *xprt)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj2Nh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj.Nh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.Nh²hh³j?Nh´Mtubj3)�”}”(hŒxprt_write_space”h]”j9)�”}”(hŒxprt_write_space”h]”hŒxprt_write_space”…”�”}”(hjRNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNNubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj.Nh²hh³j?Nh´Mtubj¡ )�”}”(hŒ(struct rpc_xprt *xprt)”h]”j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjnNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjNubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjŒNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŽNŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jTNsbŒc.xprt_write_space”†”asbuh1hhjjNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjNubj )�”}”(hj h]”hŒ*”…”�”}”(hjºNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjjNubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjÇNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfNubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj.Nh²hh³j?Nh´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj*Nh²hh³j?Nh´Mtubah}”(h]”j%Nah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j?Nh´Mthj'Nh²hubjg)�”}”(hhh]”jl)�”}”(hŒ7wake the task waiting for transport output buffer space”h]”hŒ7wake the task waiting for transport output buffer space”…”�”}”(hjñNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MthjîNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj'Nh²hh³j?Nh´Mtubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j OjŒj Oj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ¡**Parameters** ``struct rpc_xprt *xprt`` transport with waiting tasks **Description** Can be called in a soft IRQ context, so xprt_write_space never sleeps.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjOh]”hŒ Parameters”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mxhj Oubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct rpc_xprt *xprt`` transport with waiting tasks ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hj2Oh]”hŒstruct rpc_xprt *xprt”…”�”}”(hj4Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Muhj,Oubj)�”}”(hhh]”jl)�”}”(hŒtransport with waiting tasks”h]”hŒtransport with waiting tasks”…”�”}”(hjKOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jGOh´MuhjHOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGOh´Muhj)Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Oubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjmOh]”hŒ Description”…”�”}”(hjoOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjkOubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mwhj Oubjl)�”}”(hŒFCan be called in a soft IRQ context, so xprt_write_space never sleeps.”h]”hŒFCan be called in a soft IRQ context, so xprt_write_space never sleeps.”…”�”}”(hjƒOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mvhj Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!xprt_disconnect_done (C function)”Œc.xprt_disconnect_done”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void xprt_disconnect_done (struct rpc_xprt *xprt)”h]”j )�”}”(hŒ0void xprt_disconnect_done(struct rpc_xprt *xprt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj²Oh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj®Oh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®Oh²hh³jÀOh´Mðubj3)�”}”(hŒxprt_disconnect_done”h]”j9)�”}”(hŒxprt_disconnect_done”h]”hŒxprt_disconnect_done”…”�”}”(hjÓOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏOubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj®Oh²hh³jÀOh´Mðubj¡ )�”}”(hŒ(struct rpc_xprt *xprt)”h]”j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjïOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëOubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jPŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÕOsbŒc.xprt_disconnect_done”†”asbuh1hhjëOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëOubj )�”}”(hj h]”hŒ*”…”�”}”(hj;Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjëOubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjHPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjçOubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj®Oh²hh³jÀOh´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjªOh²hh³jÀOh´Mðubah}”(h]”j¥Oah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÀOh´Mðhj§Oh²hubjg)�”}”(hhh]”jl)�”}”(hŒ mark a transport as disconnected”h]”hŒ mark a transport as disconnected”…”�”}”(hjrPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MðhjoPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj§Oh²hh³jÀOh´Mðubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŠPjŒjŠPj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒL**Parameters** ``struct rpc_xprt *xprt`` transport to flag for disconnect”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj”Ph]”hŒ Parameters”…”�”}”(hj–Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MôhjŽPubjß)�”}”(hhh]”jä)�”}”(hŒ:``struct rpc_xprt *xprt`` transport to flag for disconnect”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hj³Ph]”hŒstruct rpc_xprt *xprt”…”�”}”(hjµPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Möhj­Pubj)�”}”(hhh]”jl)�”}”(hŒ transport to flag for disconnect”h]”hŒ transport to flag for disconnect”…”�”}”(hjÌPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MñhjÉPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈPh´MöhjªPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŽPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"xprt_force_disconnect (C function)”Œc.xprt_force_disconnect”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2void xprt_force_disconnect (struct rpc_xprt *xprt)”h]”j )�”}”(hŒ1void xprt_force_disconnect(struct rpc_xprt *xprt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj Qh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Qh²hh³jQh´Mubj3)�”}”(hŒxprt_force_disconnect”h]”j9)�”}”(hŒxprt_force_disconnect”h]”hŒxprt_force_disconnect”…”�”}”(hj.Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*Qubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj Qh²hh³jQh´Mubj¡ )�”}”(hŒ(struct rpc_xprt *xprt)”h]”j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjJQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFQubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjhQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jjQŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j0QsbŒc.xprt_force_disconnect”†”asbuh1hhjFQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFQubj )�”}”(hj h]”hŒ*”…”�”}”(hj–Qh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjFQubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hj£Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjBQubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj Qh²hh³jQh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjQh²hh³jQh´Mubah}”(h]”jQah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQh´MhjQh²hubjg)�”}”(hhh]”jl)�”}”(hŒforce a transport to disconnect”h]”hŒforce a transport to disconnect”…”�”}”(hjÍQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MhjÊQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjQh²hh³jQh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jåQjŒjåQj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒC**Parameters** ``struct rpc_xprt *xprt`` transport to disconnect”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjïQh]”hŒ Parameters”…”�”}”(hjñQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjíQubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MhjéQubjß)�”}”(hhh]”jä)�”}”(hŒ1``struct rpc_xprt *xprt`` transport to disconnect”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjRh]”hŒstruct rpc_xprt *xprt”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MhjRubj)�”}”(hhh]”jl)�”}”(hŒtransport to disconnect”h]”hŒtransport to disconnect”…”�”}”(hj'Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mhj$Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Rh´MhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjéQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!xprt_reconnect_delay (C function)”Œc.xprt_reconnect_delay”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@unsigned long xprt_reconnect_delay (const struct rpc_xprt *xprt)”h]”j )�”}”(hŒ?unsigned long xprt_reconnect_delay(const struct rpc_xprt *xprt)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjhRh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjdRh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdRh²hh³jvRh´M¿ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj…Rh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjdRh²hh³jvRh´M¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdRh²hh³jvRh´M¿ubj3)�”}”(hŒxprt_reconnect_delay”h]”j9)�”}”(hŒxprt_reconnect_delay”h]”hŒxprt_reconnect_delay”…”�”}”(hj¥Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡Rubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjdRh²hh³jvRh´M¿ubj¡ )�”}”(hŒ(const struct rpc_xprt *xprt)”h]”j§ )�”}”(hŒconst struct rpc_xprt *xprt”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÁRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½Rubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÜRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½Rubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjúRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jüRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j§RsbŒc.xprt_reconnect_delay”†”asbuh1hhj½Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½Rubj )�”}”(hj h]”hŒ*”…”�”}”(hj(Sh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj½Rubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hj5Sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¹Rubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjdRh²hh³jvRh´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj`Rh²hh³jvRh´M¿ubah}”(h]”j[Rah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jvRh´M¿hj]Rh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,compute the wait before scheduling a connect”h]”hŒ,compute the wait before scheduling a connect”…”�”}”(hj_Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¿hj\Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj]Rh²hh³jvRh´M¿ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jwSjŒjwSj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒD**Parameters** ``const struct rpc_xprt *xprt`` transport instance”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�Sh]”hŒ Parameters”…”�”}”(hjƒSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÃhj{Subjß)�”}”(hhh]”jä)�”}”(hŒ2``const struct rpc_xprt *xprt`` transport instance”h]”(jê)�”}”(hŒ``const struct rpc_xprt *xprt``”h]”jð)�”}”(hj Sh]”hŒconst struct rpc_xprt *xprt”…”�”}”(hj¢Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÅhjšSubj)�”}”(hhh]”jl)�”}”(hŒtransport instance”h]”hŒtransport instance”…”�”}”(hj¹Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÀhj¶Subah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµSh´MÅhj—Subah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj{Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#xprt_reconnect_backoff (C function)”Œc.xprt_reconnect_backoff”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒJvoid xprt_reconnect_backoff (struct rpc_xprt *xprt, unsigned long init_to)”h]”j )�”}”(hŒIvoid xprt_reconnect_backoff(struct rpc_xprt *xprt, unsigned long init_to)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjúSh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjöSh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöSh²hh³jTh´MÏubj3)�”}”(hŒxprt_reconnect_backoff”h]”j9)�”}”(hŒxprt_reconnect_backoff”h]”hŒxprt_reconnect_backoff”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjöSh²hh³jTh´MÏubj¡ )�”}”(hŒ.(struct rpc_xprt *xprt, unsigned long init_to)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj7Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3Tubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjUTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jWTŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jTsbŒc.xprt_reconnect_backoff”†”asbuh1hhj3Tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3Tubj )�”}”(hj h]”hŒ*”…”�”}”(hjƒTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj3Tubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/Tubj§ )�”}”(hŒunsigned long init_to”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj©Th²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¥Tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥TubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÅTh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¥Tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥Tubj9)�”}”(hŒinit_to”•h]”hŒinit_to”…”�”}”(hjáTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/Tubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjöSh²hh³jTh´MÏubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjòSh²hh³jTh´MÏubah}”(h]”jíSah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jTh´MÏhjïSh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$compute the new re-establish timeout”h]”hŒ$compute the new re-establish timeout”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÏhjUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjïSh²hh³jTh´MÏubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j#UjŒj#Uj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒw**Parameters** ``struct rpc_xprt *xprt`` transport instance ``unsigned long init_to`` initial reestablish timeout”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj-Uh]”hŒ Parameters”…”�”}”(hj/Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÓhj'Uubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct rpc_xprt *xprt`` transport instance ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjLUh]”hŒstruct rpc_xprt *xprt”…”�”}”(hjNUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJUubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÐhjFUubj)�”}”(hhh]”jl)�”}”(hŒtransport instance”h]”hŒtransport instance”…”�”}”(hjeUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jaUh´MÐhjbUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jaUh´MÐhjCUubjä)�”}”(hŒ5``unsigned long init_to`` initial reestablish timeout”h]”(jê)�”}”(hŒ``unsigned long init_to``”h]”jð)�”}”(hj…Uh]”hŒunsigned long init_to”…”�”}”(hj‡Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒUubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÒhjUubj)�”}”(hhh]”jl)�”}”(hŒinitial reestablish timeout”h]”hŒinitial reestablish timeout”…”�”}”(hjžUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MÑhj›Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšUh´MÒhjCUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_lookup_rqst (C function)”Œc.xprt_lookup_rqst”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFstruct rpc_rqst * xprt_lookup_rqst (struct rpc_xprt *xprt, __be32 xid)”h]”j )�”}”(hŒDstruct rpc_rqst *xprt_lookup_rqst(struct rpc_xprt *xprt, __be32 xid)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjßUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛUh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛUh²hh³jìUh´M$ubh)�”}”(hhh]”j9)�”}”(hŒrpc_rqst”h]”hŒrpc_rqst”…”�”}”(hjþUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jVŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œxprt_lookup_rqst”sbŒc.xprt_lookup_rqst”†”asbuh1hhjÛUh²hh³jìUh´M$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛUh²hh³jìUh´M$ubj )�”}”(hj h]”hŒ*”…”�”}”(hj-Vh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÛUh²hh³jìUh´M$ubj3)�”}”(hŒxprt_lookup_rqst”h]”j9)�”}”(hjVh]”hŒxprt_lookup_rqst”…”�”}”(hj>Vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:Vubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÛUh²hh³jìUh´M$ubj¡ )�”}”(hŒ#(struct rpc_xprt *xprt, __be32 xid)”h]”(j§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjYVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUVubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUVubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjwVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyVŒmodname”NŒ classname”Njå jè )�”}”jë ]”jVŒc.xprt_lookup_rqst”†”asbuh1hhjUVubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Vh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUVubj )�”}”(hj h]”hŒ*”…”�”}”(hj£Vh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjUVubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hj°Vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjQVubj§ )�”}”(hŒ __be32 xid”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hjÌVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÎVŒmodname”NŒ classname”Njå jè )�”}”jë ]”jVŒc.xprt_lookup_rqst”†”asbuh1hhjÅVubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅVubj9)�”}”(hŒxid”h]”hŒxid”…”�”}”(hjøVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjQVubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÛUh²hh³jìUh´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj×Uh²hh³jìUh´M$ubah}”(h]”jÒUah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jìUh´M$hjÔUh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+find an RPC request corresponding to an XID”h]”hŒ+find an RPC request corresponding to an XID”…”�”}”(hj"Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M$hjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÔUh²hh³jìUh´M$ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j:WjŒj:Wj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒÀ**Parameters** ``struct rpc_xprt *xprt`` transport on which the original request was transmitted ``__be32 xid`` RPC XID of incoming reply **Description** Caller holds xprt->queue_lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjDWh]”hŒ Parameters”…”�”}”(hjFWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjBWubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M(hj>Wubjß)�”}”(hhh]”(jä)�”}”(hŒR``struct rpc_xprt *xprt`` transport on which the original request was transmitted ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjcWh]”hŒstruct rpc_xprt *xprt”…”�”}”(hjeWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaWubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M%hj]Wubj)�”}”(hhh]”jl)�”}”(hŒ7transport on which the original request was transmitted”h]”hŒ7transport on which the original request was transmitted”…”�”}”(hj|Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxWh´M%hjyWubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxWh´M%hjZWubjä)�”}”(hŒ)``__be32 xid`` RPC XID of incoming reply ”h]”(jê)�”}”(hŒ``__be32 xid``”h]”jð)�”}”(hjœWh]”hŒ __be32 xid”…”�”}”(hjžWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšWubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M&hj–Wubj)�”}”(hhh]”jl)�”}”(hŒRPC XID of incoming reply”h]”hŒRPC XID of incoming reply”…”�”}”(hjµWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±Wh´M&hj²Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±Wh´M&hjZWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj>Wubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj×Wh]”hŒ Description”…”�”}”(hjÙWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕWubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M(hj>Wubjl)�”}”(hŒCaller holds xprt->queue_lock.”h]”hŒCaller holds xprt->queue_lock.”…”�”}”(hjíWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M'hj>Wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_pin_rqst (C function)”Œc.xprt_pin_rqst”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)void xprt_pin_rqst (struct rpc_rqst *req)”h]”j )�”}”(hŒ(void xprt_pin_rqst(struct rpc_rqst *req)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjXh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjXh²hh³j*Xh´MDubj3)�”}”(hŒ xprt_pin_rqst”h]”j9)�”}”(hŒ xprt_pin_rqst”h]”hŒ xprt_pin_rqst”…”�”}”(hj=Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9Xubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjXh²hh³j*Xh´MDubj¡ )�”}”(hŒ(struct rpc_rqst *req)”h]”j§ )�”}”(hŒstruct rpc_rqst *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjYXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUXubh)�”}”(hhh]”j9)�”}”(hŒrpc_rqst”h]”hŒrpc_rqst”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyXŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j?XsbŒc.xprt_pin_rqst”†”asbuh1hhjUXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUXubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥Xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjUXubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj²Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjQXubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjXh²hh³j*Xh´MDubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjXh²hh³j*Xh´MDubah}”(h]”jXah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j*Xh´MDhjXh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Pin a request on the transport receive list”h]”hŒ+Pin a request on the transport receive list”…”�”}”(hjÜXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MDhjÙXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjXh²hh³j*Xh´MDubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jôXjŒjôXj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ¸**Parameters** ``struct rpc_rqst *req`` Request to pin **Description** Caller must ensure this is atomic with the call to xprt_lookup_rqst() so should be holding xprt->queue_lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjþXh]”hŒ Parameters”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjüXubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MHhjøXubjß)�”}”(hhh]”jä)�”}”(hŒ(``struct rpc_rqst *req`` Request to pin ”h]”(jê)�”}”(hŒ``struct rpc_rqst *req``”h]”jð)�”}”(hjYh]”hŒstruct rpc_rqst *req”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MEhjYubj)�”}”(hhh]”jl)�”}”(hŒRequest to pin”h]”hŒRequest to pin”…”�”}”(hj6Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2Yh´MEhj3Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2Yh´MEhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjøXubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjXYh]”hŒ Description”…”�”}”(hjZYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjVYubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MGhjøXubjl)�”}”(hŒlCaller must ensure this is atomic with the call to xprt_lookup_rqst() so should be holding xprt->queue_lock.”h]”hŒlCaller must ensure this is atomic with the call to xprt_lookup_rqst() so should be holding xprt->queue_lock.”…”�”}”(hjnYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MFhjøXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_unpin_rqst (C function)”Œc.xprt_unpin_rqst”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+void xprt_unpin_rqst (struct rpc_rqst *req)”h]”j )�”}”(hŒ*void xprt_unpin_rqst(struct rpc_rqst *req)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj™Yh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™Yh²hh³j«Yh´MQubj3)�”}”(hŒxprt_unpin_rqst”h]”j9)�”}”(hŒxprt_unpin_rqst”h]”hŒxprt_unpin_rqst”…”�”}”(hj¾Yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºYubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj™Yh²hh³j«Yh´MQubj¡ )�”}”(hŒ(struct rpc_rqst *req)”h]”j§ )�”}”(hŒstruct rpc_rqst *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÚYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖYubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÖYubh)�”}”(hhh]”j9)�”}”(hŒrpc_rqst”h]”hŒrpc_rqst”…”�”}”(hjøYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”júYŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÀYsbŒc.xprt_unpin_rqst”†”asbuh1hhjÖYubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÖYubj )�”}”(hj h]”hŒ*”…”�”}”(hj&Zh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÖYubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj3Zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÒYubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj™Yh²hh³j«Yh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj•Yh²hh³j«Yh´MQubah}”(h]”j�Yah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j«Yh´MQhj’Yh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-Unpin a request on the transport receive list”h]”hŒ-Unpin a request on the transport receive list”…”�”}”(hj]Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MQhjZZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj’Yh²hh³j«Yh´MQubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹juZjŒjuZj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒv**Parameters** ``struct rpc_rqst *req`` Request to pin **Description** Caller should be holding xprt->queue_lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjZh]”hŒ Parameters”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MUhjyZubjß)�”}”(hhh]”jä)�”}”(hŒ(``struct rpc_rqst *req`` Request to pin ”h]”(jê)�”}”(hŒ``struct rpc_rqst *req``”h]”jð)�”}”(hjžZh]”hŒstruct rpc_rqst *req”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MRhj˜Zubj)�”}”(hhh]”jl)�”}”(hŒRequest to pin”h]”hŒRequest to pin”…”�”}”(hj·Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³Zh´MRhj´Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³Zh´MRhj•Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjyZubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÙZh]”hŒ Description”…”�”}”(hjÛZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj×Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MThjyZubjl)�”}”(hŒ*Caller should be holding xprt->queue_lock.”h]”hŒ*Caller should be holding xprt->queue_lock.”…”�”}”(hjïZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´MShjyZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_update_rtt (C function)”Œc.xprt_update_rtt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,void xprt_update_rtt (struct rpc_task *task)”h]”j )�”}”(hŒ+void xprt_update_rtt(struct rpc_task *task)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[h²hh³j,[h´M¦ubj3)�”}”(hŒxprt_update_rtt”h]”j9)�”}”(hŒxprt_update_rtt”h]”hŒxprt_update_rtt”…”�”}”(hj?[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;[ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj[h²hh³j,[h´M¦ubj¡ )�”}”(hŒ(struct rpc_task *task)”h]”j§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj[[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW[ubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hjy[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j{[Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jA[sbŒc.xprt_update_rtt”†”asbuh1hhjW[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW[ubj )�”}”(hj h]”hŒ*”…”�”}”(hj§[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjW[ubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj´[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjW[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjS[ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj[h²hh³j,[h´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj[h²hh³j,[h´M¦ubah}”(h]”j[ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j,[h´M¦hj[h²hubjg)�”}”(hhh]”jl)�”}”(hŒUpdate RPC RTT statistics”h]”hŒUpdate RPC RTT statistics”…”�”}”(hjÞ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¦hjÛ[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj[h²hh³j,[h´M¦ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jö[jŒjö[j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ€**Parameters** ``struct rpc_task *task`` RPC request that recently completed **Description** Caller holds xprt->queue_lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj\h]”hŒ Parameters”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjþ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´Mªhjú[ubjß)�”}”(hhh]”jä)�”}”(hŒ>``struct rpc_task *task`` RPC request that recently completed ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hj\h]”hŒstruct rpc_task *task”…”�”}”(hj!\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M§hj\ubj)�”}”(hhh]”jl)�”}”(hŒ#RPC request that recently completed”h]”hŒ#RPC request that recently completed”…”�”}”(hj8\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4\h´M§hj5\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4\h´M§hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjú[ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjZ\h]”hŒ Description”…”�”}”(hj\\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjX\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M©hjú[ubjl)�”}”(hŒCaller holds xprt->queue_lock.”h]”hŒCaller holds xprt->queue_lock.”…”�”}”(hjp\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¨hjú[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒxprt_complete_rqst (C function)”Œc.xprt_complete_rqst”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;void xprt_complete_rqst (struct rpc_task *task, int copied)”h]”j )�”}”(hŒ:void xprt_complete_rqst(struct rpc_task *task, int copied)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸ\h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj›\h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›\h²hh³j­\h´M»ubj3)�”}”(hŒxprt_complete_rqst”h]”j9)�”}”(hŒxprt_complete_rqst”h]”hŒxprt_complete_rqst”…”�”}”(hjÀ\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼\ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj›\h²hh³j­\h´M»ubj¡ )�”}”(hŒ#(struct rpc_task *task, int copied)”h]”(j§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÜ\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ\ubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hjú\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jü\Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÂ\sbŒc.xprt_complete_rqst”†”asbuh1hhjØ\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ\ubj )�”}”(hj h]”hŒ*”…”�”}”(hj(]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjØ\ubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj5]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØ\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔ\ubj§ )�”}”(hŒ int copied”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjN]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjJ]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ]ubj9)�”}”(hŒcopied”h]”hŒcopied”…”�”}”(hjj]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÔ\ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj›\h²hh³j­\h´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj—\h²hh³j­\h´M»ubah}”(h]”j’\ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j­\h´M»hj”\h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(called when reply processing is complete”h]”hŒ(called when reply processing is complete”…”�”}”(hj”]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M»hj‘]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj”\h²hh³j­\h´M»ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬]jŒj¬]j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒÅ**Parameters** ``struct rpc_task *task`` RPC request that recently completed ``int copied`` actual number of bytes received from the transport **Description** Caller holds xprt->queue_lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶]h]”hŒ Parameters”…”�”}”(hj¸]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¿hj°]ubjß)�”}”(hhh]”(jä)�”}”(hŒ>``struct rpc_task *task`` RPC request that recently completed ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hjÕ]h]”hŒstruct rpc_task *task”…”�”}”(hj×]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¼hjÏ]ubj)�”}”(hhh]”jl)�”}”(hŒ#RPC request that recently completed”h]”hŒ#RPC request that recently completed”…”�”}”(hjî]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jê]h´M¼hjë]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jê]h´M¼hjÌ]ubjä)�”}”(hŒB``int copied`` actual number of bytes received from the transport ”h]”(jê)�”}”(hŒ``int copied``”h]”jð)�”}”(hj^h]”hŒ int copied”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M½hj^ubj)�”}”(hhh]”jl)�”}”(hŒ2actual number of bytes received from the transport”h]”hŒ2actual number of bytes received from the transport”…”�”}”(hj'^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#^h´M½hj$^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#^h´M½hjÌ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°]ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjI^h]”hŒ Description”…”�”}”(hjK^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjG^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¿hj°]ubjl)�”}”(hŒCaller holds xprt->queue_lock.”h]”hŒCaller holds xprt->queue_lock.”…”�”}”(hj_^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:65: ./net/sunrpc/xprt.c”h´M¾hj°]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ,xprt_wait_for_reply_request_def (C function)”Œ!c.xprt_wait_for_reply_request_def”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒlock”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�gh]”hŒ Parameters”…”�”}”(hj�gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹gubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´MÖhj‡gubjß)�”}”(hhh]”jä)�”}”(hŒP``struct rpc_wait_queue *queue`` rpc_wait_queue on which the tasks are sleeping ”h]”(jê)�”}”(hŒ ``struct rpc_wait_queue *queue``”h]”jð)�”}”(hj¬gh]”hŒstruct rpc_wait_queue *queue”…”�”}”(hj®gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjªgubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´MÓhj¦gubj)�”}”(hhh]”jl)�”}”(hŒ.rpc_wait_queue on which the tasks are sleeping”h]”hŒ.rpc_wait_queue on which the tasks are sleeping”…”�”}”(hjÅgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁgh´MÓhjÂgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁgh´MÓhj£gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‡gubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjçgh]”hŒ Description”…”�”}”(hjégh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjågubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´MÕhj‡gubjl)�”}”(hŒGrabs queue->lock”h]”hŒGrabs queue->lock”…”�”}”(hjýgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´MÔhj‡gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_wake_up_status (C function)”Œc.rpc_wake_up_status”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBvoid rpc_wake_up_status (struct rpc_wait_queue *queue, int status)”h]”j )�”}”(hŒAvoid rpc_wake_up_status(struct rpc_wait_queue *queue, int status)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,hh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(hh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´Mñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(hh²hh³j:hh´Mñubj3)�”}”(hŒrpc_wake_up_status”h]”j9)�”}”(hŒrpc_wake_up_status”h]”hŒrpc_wake_up_status”…”�”}”(hjMhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIhubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj(hh²hh³j:hh´Mñubj¡ )�”}”(hŒ*(struct rpc_wait_queue *queue, int status)”h]”(j§ )�”}”(hŒstruct rpc_wait_queue *queue”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjihh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjehubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjehubh)�”}”(hhh]”j9)�”}”(hŒrpc_wait_queue”h]”hŒrpc_wait_queue”…”�”}”(hj‡hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰hŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jOhsbŒc.rpc_wake_up_status”†”asbuh1hhjehubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjehubj )�”}”(hj h]”hŒ*”…”�”}”(hjµhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjehubj9)�”}”(hŒqueue”h]”hŒqueue”…”�”}”(hjÂhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjehubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjahubj§ )�”}”(hŒ int status”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÛhh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj×hubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×hubj9)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hj÷hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjahubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj(hh²hh³j:hh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj$hh²hh³j:hh´Mñubah}”(h]”jhah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j:hh´Mñhj!hh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1wake up all rpc_tasks and set their status value.”h]”hŒ1wake up all rpc_tasks and set their status value.”…”�”}”(hj!ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´Mñhjih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj!hh²hh³j:hh´Mñubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j9ijŒj9ij�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ«**Parameters** ``struct rpc_wait_queue *queue`` rpc_wait_queue on which the tasks are sleeping ``int status`` status value to set **Description** Grabs queue->lock”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjCih]”hŒ Parameters”…”�”}”(hjEih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjAiubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´Mõhj=iubjß)�”}”(hhh]”(jä)�”}”(hŒP``struct rpc_wait_queue *queue`` rpc_wait_queue on which the tasks are sleeping ”h]”(jê)�”}”(hŒ ``struct rpc_wait_queue *queue``”h]”jð)�”}”(hjbih]”hŒstruct rpc_wait_queue *queue”…”�”}”(hjdih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`iubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´Mòhj\iubj)�”}”(hhh]”jl)�”}”(hŒ.rpc_wait_queue on which the tasks are sleeping”h]”hŒ.rpc_wait_queue on which the tasks are sleeping”…”�”}”(hj{ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwih´Mòhjxiubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwih´MòhjYiubjä)�”}”(hŒ#``int status`` status value to set ”h]”(jê)�”}”(hŒ``int status``”h]”jð)�”}”(hj›ih]”hŒ int status”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™iubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´Móhj•iubj)�”}”(hhh]”jl)�”}”(hŒstatus value to set”h]”hŒstatus value to set”…”�”}”(hj´ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°ih´Móhj±iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°ih´MóhjYiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj=iubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÖih]”hŒ Description”…”�”}”(hjØih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÔiubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´Mõhj=iubjl)�”}”(hŒGrabs queue->lock”h]”hŒGrabs queue->lock”…”�”}”(hjìih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:68: ./net/sunrpc/sched.c”h´Môhj=iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_alloc_iostats (C function)”Œc.rpc_alloc_iostats”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>struct rpc_iostats * rpc_alloc_iostats (struct rpc_clnt *clnt)”h]”j )�”}”(hŒstat structure for OP that will accumulate stats from **task**”h]”(hŒ6stat structure for OP that will accumulate stats from ”…”�”}”(hjênh²hh³Nh´Nubj›)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjònh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjênubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´K˜hjçnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jænh´K™hj�nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjsnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_count_iostats (C function)”Œc.rpc_count_iostats”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOvoid rpc_count_iostats (const struct rpc_task *task, struct rpc_iostats *stats)”h]”j )�”}”(hŒNvoid rpc_count_iostats(const struct rpc_task *task, struct rpc_iostats *stats)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9oh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5oh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´KÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5oh²hh³jGoh´KÂubj3)�”}”(hŒrpc_count_iostats”h]”j9)�”}”(hŒrpc_count_iostats”h]”hŒrpc_count_iostats”…”�”}”(hjZoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVoubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj5oh²hh³jGoh´KÂubj¡ )�”}”(hŒ8(const struct rpc_task *task, struct rpc_iostats *stats)”h]”(j§ )�”}”(hŒconst struct rpc_task *task”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjvoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjroubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjroubj)�”}”(hjh]”hŒstruct”…”�”}”(hj‘oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjroubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjroubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hj¯oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j±oŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j\osbŒc.rpc_count_iostats”†”asbuh1hhjroubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjroubj )�”}”(hj h]”hŒ*”…”�”}”(hjÝoh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjroubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjêoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjroubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnoubj§ )�”}”(hŒstruct rpc_iostats *stats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿoubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿoubh)�”}”(hhh]”j9)�”}”(hŒ rpc_iostats”h]”hŒ rpc_iostats”…”�”}”(hj!ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j#pŒmodname”NŒ classname”Njå jè )�”}”jë ]”jËoŒc.rpc_count_iostats”†”asbuh1hhjÿoubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿoubj )�”}”(hj h]”hŒ*”…”�”}”(hjMph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÿoubj9)�”}”(hŒstats”h]”hŒstats”…”�”}”(hjZph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnoubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj5oh²hh³jGoh´KÂubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj1oh²hh³jGoh´KÂubah}”(h]”j,oah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jGoh´KÂhj.oh²hubjg)�”}”(hhh]”jl)�”}”(hŒtally up per-task stats”h]”hŒtally up per-task stats”…”�”}”(hj„ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´KÂhj�ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj.oh²hh³jGoh´KÂubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jœpjŒjœpj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ¯**Parameters** ``const struct rpc_task *task`` completed rpc_task ``struct rpc_iostats *stats`` array of stat structures **Description** Uses the statidx from **task**”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¦ph]”hŒ Parameters”…”�”}”(hj¨ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤pubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´KÆhj pubjß)�”}”(hhh]”(jä)�”}”(hŒ3``const struct rpc_task *task`` completed rpc_task ”h]”(jê)�”}”(hŒ``const struct rpc_task *task``”h]”jð)�”}”(hjÅph]”hŒconst struct rpc_task *task”…”�”}”(hjÇph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÃpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´KÃhj¿pubj)�”}”(hhh]”jl)�”}”(hŒcompleted rpc_task”h]”hŒcompleted rpc_task”…”�”}”(hjÞph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÚph´KÃhjÛpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÚph´KÃhj¼pubjä)�”}”(hŒ7``struct rpc_iostats *stats`` array of stat structures ”h]”(jê)�”}”(hŒ``struct rpc_iostats *stats``”h]”jð)�”}”(hjþph]”hŒstruct rpc_iostats *stats”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjüpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´KÄhjøpubj)�”}”(hhh]”jl)�”}”(hŒarray of stat structures”h]”hŒarray of stat structures”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqh´KÄhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjøpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jqh´KÄhj¼pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj pubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj9qh]”hŒ Description”…”�”}”(hj;qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´KÆhj pubjl)�”}”(hŒUses the statidx from **task**”h]”(hŒUses the statidx from ”…”�”}”(hjOqh²hh³Nh´Nubj›)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjWqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:74: ./net/sunrpc/stats.c”h´KÅhj pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_queue_upcall (C function)”Œc.rpc_queue_upcall”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFint rpc_queue_upcall (struct rpc_pipe *pipe, struct rpc_pipe_msg *msg)”h]”j )�”}”(hŒEint rpc_queue_upcall(struct rpc_pipe *pipe, struct rpc_pipe_msg *msg)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjŒqh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjˆqh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´K}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆqh²hh³jšqh´K}ubj3)�”}”(hŒrpc_queue_upcall”h]”j9)�”}”(hŒrpc_queue_upcall”h]”hŒrpc_queue_upcall”…”�”}”(hj­qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©qubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjˆqh²hh³jšqh´K}ubj¡ )�”}”(hŒ1(struct rpc_pipe *pipe, struct rpc_pipe_msg *msg)”h]”(j§ )�”}”(hŒstruct rpc_pipe *pipe”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÉqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅqubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe”h]”hŒrpc_pipe”…”�”}”(hjçqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jéqŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¯qsbŒc.rpc_queue_upcall”†”asbuh1hhjÅqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅqubj )�”}”(hj h]”hŒ*”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÅqubj9)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj"rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÁqubj§ )�”}”(hŒstruct rpc_pipe_msg *msg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj;rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7rubh)�”}”(hhh]”j9)�”}”(hŒ rpc_pipe_msg”h]”hŒ rpc_pipe_msg”…”�”}”(hjYrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j[rŒmodname”NŒ classname”Njå jè )�”}”jë ]”jrŒc.rpc_queue_upcall”†”asbuh1hhj7rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7rubj )�”}”(hj h]”hŒ*”…”�”}”(hj…rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj7rubj9)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hj’rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÁqubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjˆqh²hh³jšqh´K}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj„qh²hh³jšqh´K}ubah}”(h]”jqah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jšqh´K}hj�qh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$queue an upcall message to userspace”h]”hŒ$queue an upcall message to userspace”…”�”}”(hj¼rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´K}hj¹rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�qh²hh³jšqh´K}ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÔrjŒjÔrj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX«**Parameters** ``struct rpc_pipe *pipe`` upcall pipe on which to queue given message ``struct rpc_pipe_msg *msg`` message to queue **Description** Call with an **inode** created by rpc_mkpipe() to queue an upcall. A userspace process may then later read the upcall by performing a read on an open file for this inode. It is up to the caller to initialize the fields of **msg** (other than **msg->list**) appropriately.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÞrh]”hŒ Parameters”…”�”}”(hjàrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜrubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´K�hjØrubjß)�”}”(hhh]”(jä)�”}”(hŒF``struct rpc_pipe *pipe`` upcall pipe on which to queue given message ”h]”(jê)�”}”(hŒ``struct rpc_pipe *pipe``”h]”jð)�”}”(hjýrh]”hŒstruct rpc_pipe *pipe”…”�”}”(hjÿrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´K~hj÷rubj)�”}”(hhh]”jl)�”}”(hŒ+upcall pipe on which to queue given message”h]”hŒ+upcall pipe on which to queue given message”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsh´K~hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsh´K~hjôrubjä)�”}”(hŒ.``struct rpc_pipe_msg *msg`` message to queue ”h]”(jê)�”}”(hŒ``struct rpc_pipe_msg *msg``”h]”jð)�”}”(hj6sh]”hŒstruct rpc_pipe_msg *msg”…”�”}”(hj8sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4subah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Khj0subj)�”}”(hhh]”jl)�”}”(hŒmessage to queue”h]”hŒmessage to queue”…”�”}”(hjOsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKsh´KhjLsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0subeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKsh´Khjôrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjØrubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjqsh]”hŒ Description”…”�”}”(hjssh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjosubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´K�hjØrubjl)�”}”(hXCall with an **inode** created by rpc_mkpipe() to queue an upcall. A userspace process may then later read the upcall by performing a read on an open file for this inode. It is up to the caller to initialize the fields of **msg** (other than **msg->list**) appropriately.”h]”(hŒ Call with an ”…”�”}”(hj‡sh²hh³Nh´Nubj›)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡subhŒÉ created by rpc_mkpipe() to queue an upcall. A userspace process may then later read the upcall by performing a read on an open file for this inode. It is up to the caller to initialize the fields of ”…”�”}”(hj‡sh²hh³Nh´Nubj›)�”}”(hŒ**msg**”h]”hŒmsg”…”�”}”(hj¡sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡subhŒ (other than ”…”�”}”(hj‡sh²hh³Nh´Nubj›)�”}”(hŒ **msg->list**”h]”hŒ msg->list”…”�”}”(hj³sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡subhŒ) appropriately.”…”�”}”(hj‡sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´K€hjØrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_mkpipe_dentry (C function)”Œc.rpc_mkpipe_dentry”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒeint rpc_mkpipe_dentry (struct dentry *parent, const char *name, void *private, struct rpc_pipe *pipe)”h]”j )�”}”(hŒdint rpc_mkpipe_dentry(struct dentry *parent, const char *name, void *private, struct rpc_pipe *pipe)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjìsh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjèsh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Miubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûsh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèsh²hh³júsh´Miubj3)�”}”(hŒrpc_mkpipe_dentry”h]”j9)�”}”(hŒrpc_mkpipe_dentry”h]”hŒrpc_mkpipe_dentry”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj tubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjèsh²hh³júsh´Miubj¡ )�”}”(hŒO(struct dentry *parent, const char *name, void *private, struct rpc_pipe *pipe)”h]”(j§ )�”}”(hŒstruct dentry *parent”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj)th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%tubh)�”}”(hhh]”j9)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjGth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjDtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jItŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jtsbŒc.rpc_mkpipe_dentry”†”asbuh1hhj%tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%tubj )�”}”(hj h]”hŒ*”…”�”}”(hjuth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj%tubj9)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj‚th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!tubj§ )�”}”(hŒconst char *name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj›th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—tubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¶th²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj—tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—tubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—tubj9)�”}”(hŒname”h]”hŒname”…”�”}”(hjßth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!tubj§ )�”}”(hŒ void *private”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjøth²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjôtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôtubj )�”}”(hj h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjôtubj9)�”}”(hŒprivate”h]”hŒprivate”…”�”}”(hj!uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!tubj§ )�”}”(hŒstruct rpc_pipe *pipe”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj:uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6uubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe”h]”hŒrpc_pipe”…”�”}”(hjXuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZuŒmodname”NŒ classname”Njå jè )�”}”jë ]”jctŒc.rpc_mkpipe_dentry”†”asbuh1hhj6uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6uubj )�”}”(hj h]”hŒ*”…”�”}”(hj„uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6uubj9)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj‘uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!tubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjèsh²hh³júsh´Miubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjäsh²hh³júsh´Miubah}”(h]”jßsah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³júsh´Mihjásh²hubjg)�”}”(hhh]”jl)�”}”(hŒuserspace communication”h]”hŒuserspace communication”…”�”}”(hj»uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mihj¸uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjásh²hh³júsh´Miubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÓujŒjÓuj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct dentry *parent`` dentry of directory to create new "pipe" in ``const char *name`` name of pipe ``void *private`` private data to associate with the pipe, for the caller's use ``struct rpc_pipe *pipe`` :c:type:`rpc_pipe` containing input parameters **Description** Data is made available for userspace to read by calls to rpc_queue_upcall(). The actual reads will result in calls to **ops->upcall**, which will be called with the file pointer, message, and userspace buffer to copy to. Writes can come at any time, and do not necessarily have to be responses to upcalls. They will result in calls to **msg->downcall**. The **private** argument passed here will be available to all these methods from the file pointer, via RPC_I(file_inode(file))->private.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÝuh]”hŒ Parameters”…”�”}”(hjßuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛuubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mmhj×uubjß)�”}”(hhh]”(jä)�”}”(hŒF``struct dentry *parent`` dentry of directory to create new "pipe" in ”h]”(jê)�”}”(hŒ``struct dentry *parent``”h]”jð)�”}”(hjüuh]”hŒstruct dentry *parent”…”�”}”(hjþuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjúuubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mkhjöuubj)�”}”(hhh]”jl)�”}”(hŒ+dentry of directory to create new "pipe" in”h]”hŒ/dentry of directory to create new “pipeâ€� in”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvh´Mkhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvh´Mkhjóuubjä)�”}”(hŒ"``const char *name`` name of pipe ”h]”(jê)�”}”(hŒ``const char *name``”h]”jð)�”}”(hj5vh]”hŒconst char *name”…”�”}”(hj7vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mlhj/vubj)�”}”(hhh]”jl)�”}”(hŒ name of pipe”h]”hŒ name of pipe”…”�”}”(hjNvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jJvh´MlhjKvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJvh´Mlhjóuubjä)�”}”(hŒP``void *private`` private data to associate with the pipe, for the caller's use ”h]”(jê)�”}”(hŒ``void *private``”h]”jð)�”}”(hjnvh]”hŒ void *private”…”�”}”(hjpvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjlvubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mmhjhvubj)�”}”(hhh]”jl)�”}”(hŒ=private data to associate with the pipe, for the caller's use”h]”hŒ?private data to associate with the pipe, for the caller’s use”…”�”}”(hj‡vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒvh´Mmhj„vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒvh´Mmhjóuubjä)�”}”(hŒI``struct rpc_pipe *pipe`` :c:type:`rpc_pipe` containing input parameters ”h]”(jê)�”}”(hŒ``struct rpc_pipe *pipe``”h]”jð)�”}”(hj§vh]”hŒstruct rpc_pipe *pipe”…”�”}”(hj©vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mnhj¡vubj)�”}”(hhh]”jl)�”}”(hŒ.:c:type:`rpc_pipe` containing input parameters”h]”(h)�”}”(hŒ:c:type:`rpc_pipe`”h]”jð)�”}”(hjÆvh]”hŒrpc_pipe”…”�”}”(hjÈvh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÄvubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œrpc_pipe”uh1hh³j¼vh´MnhjÀvubhŒ containing input parameters”…”�”}”(hjÀvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼vh´Mnhj½vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼vh´Mnhjóuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj×uubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjwh]”hŒ Description”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mphj×uubjl)�”}”(hŒÝData is made available for userspace to read by calls to rpc_queue_upcall(). The actual reads will result in calls to **ops->upcall**, which will be called with the file pointer, message, and userspace buffer to copy to.”h]”(hŒwData is made available for userspace to read by calls to rpc_queue_upcall(). The actual reads will result in calls to ”…”�”}”(hjwh²hh³Nh´Nubj›)�”}”(hŒ**ops->upcall**”h]”hŒ ops->upcall”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjwubhŒW, which will be called with the file pointer, message, and userspace buffer to copy to.”…”�”}”(hjwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mohj×uubjl)�”}”(hŒ…Writes can come at any time, and do not necessarily have to be responses to upcalls. They will result in calls to **msg->downcall**.”h]”(hŒsWrites can come at any time, and do not necessarily have to be responses to upcalls. They will result in calls to ”…”�”}”(hj8wh²hh³Nh´Nubj›)�”}”(hŒ**msg->downcall**”h]”hŒ msg->downcall”…”�”}”(hj@wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj8wubhŒ.”…”�”}”(hj8wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mthj×uubjl)�”}”(hŒˆThe **private** argument passed here will be available to all these methods from the file pointer, via RPC_I(file_inode(file))->private.”h]”(hŒThe ”…”�”}”(hjYwh²hh³Nh´Nubj›)�”}”(hŒ **private**”h]”hŒprivate”…”�”}”(hjawh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjYwubhŒy argument passed here will be available to all these methods from the file pointer, via RPC_I(file_inode(file))->private.”…”�”}”(hjYwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mwhj×uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_unlink (C function)”Œ c.rpc_unlink”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ'void rpc_unlink (struct rpc_pipe *pipe)”h]”j )�”}”(hŒ&void rpc_unlink(struct rpc_pipe *pipe)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjšwh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–wh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–wh²hh³j¨wh´Mªubj3)�”}”(hŒ rpc_unlink”h]”j9)�”}”(hŒ rpc_unlink”h]”hŒ rpc_unlink”…”�”}”(hj»wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·wubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj–wh²hh³j¨wh´Mªubj¡ )�”}”(hŒ(struct rpc_pipe *pipe)”h]”j§ )�”}”(hŒstruct rpc_pipe *pipe”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj×wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓwubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe”h]”hŒrpc_pipe”…”�”}”(hjõwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j÷wŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j½wsbŒ c.rpc_unlink”†”asbuh1hhjÓwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓwubj )�”}”(hj h]”hŒ*”…”�”}”(hj#xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÓwubj9)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj0xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏwubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj–wh²hh³j¨wh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj’wh²hh³j¨wh´Mªubah}”(h]”j�wah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¨wh´Mªhj�wh²hubjg)�”}”(hhh]”jl)�”}”(hŒ remove a pipe”h]”hŒ remove a pipe”…”�”}”(hjZxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MªhjWxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�wh²hh³j¨wh´Mªubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jrxjŒjrxj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒå**Parameters** ``struct rpc_pipe *pipe`` the pipe to be removed **Description** After this call, lookups will no longer find the pipe, and any attempts to read or write using preexisting opens of the pipe will return -EPIPE.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj|xh]”hŒ Parameters”…”�”}”(hj~xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjzxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M®hjvxubjß)�”}”(hhh]”jä)�”}”(hŒ1``struct rpc_pipe *pipe`` the pipe to be removed ”h]”(jê)�”}”(hŒ``struct rpc_pipe *pipe``”h]”jð)�”}”(hj›xh]”hŒstruct rpc_pipe *pipe”…”�”}”(hj�xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™xubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M«hj•xubj)�”}”(hhh]”jl)�”}”(hŒthe pipe to be removed”h]”hŒthe pipe to be removed”…”�”}”(hj´xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°xh´M«hj±xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°xh´M«hj’xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjvxubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÖxh]”hŒ Description”…”�”}”(hjØxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÔxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M­hjvxubjl)�”}”(hŒ�After this call, lookups will no longer find the pipe, and any attempts to read or write using preexisting opens of the pipe will return -EPIPE.”h]”hŒ�After this call, lookups will no longer find the pipe, and any attempts to read or write using preexisting opens of the pipe will return -EPIPE.”…”�”}”(hjìxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M¬hjvxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#rpc_init_pipe_dir_head (C function)”Œc.rpc_init_pipe_dir_head”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;void rpc_init_pipe_dir_head (struct rpc_pipe_dir_head *pdh)”h]”j )�”}”(hŒ:void rpc_init_pipe_dir_head(struct rpc_pipe_dir_head *pdh)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjyh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjyh²hh³j)yh´M¼ubj3)�”}”(hŒrpc_init_pipe_dir_head”h]”j9)�”}”(hŒrpc_init_pipe_dir_head”h]”hŒrpc_init_pipe_dir_head”…”�”}”(hjysbŒc.rpc_init_pipe_dir_head”†”asbuh1hhjTyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTyubj )�”}”(hj h]”hŒ*”…”�”}”(hj¤yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjTyubj9)�”}”(hŒpdh”h]”hŒpdh”…”�”}”(hj±yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPyubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjyh²hh³j)yh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjyh²hh³j)yh´M¼ubah}”(h]”jyah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j)yh´M¼hjyh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%initialise a struct rpc_pipe_dir_head”h]”hŒ%initialise a struct rpc_pipe_dir_head”…”�”}”(hjÛyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M¼hjØyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjyh²hh³j)yh´M¼ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jóyjŒjóyj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒW**Parameters** ``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjýyh]”hŒ Parameters”…”�”}”(hjÿyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjûyubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MÀhj÷yubjß)�”}”(hhh]”jä)�”}”(hŒE``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head”h]”(jê)�”}”(hŒ!``struct rpc_pipe_dir_head *pdh``”h]”jð)�”}”(hjzh]”hŒstruct rpc_pipe_dir_head *pdh”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MÂhjzubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to struct rpc_pipe_dir_head”h]”hŒ#pointer to struct rpc_pipe_dir_head”…”�”}”(hj5zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M½hj2zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1zh´MÂhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%rpc_init_pipe_dir_object (C function)”Œc.rpc_init_pipe_dir_object”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ~void rpc_init_pipe_dir_object (struct rpc_pipe_dir_object *pdo, const struct rpc_pipe_dir_object_ops *pdo_ops, void *pdo_data)”h]”j )�”}”(hŒ}void rpc_init_pipe_dir_object(struct rpc_pipe_dir_object *pdo, const struct rpc_pipe_dir_object_ops *pdo_ops, void *pdo_data)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvzh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjrzh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrzh²hh³j„zh´MÇubj3)�”}”(hŒrpc_init_pipe_dir_object”h]”j9)�”}”(hŒrpc_init_pipe_dir_object”h]”hŒrpc_init_pipe_dir_object”…”�”}”(hj—zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“zubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjrzh²hh³j„zh´MÇubj¡ )�”}”(hŒ`(struct rpc_pipe_dir_object *pdo, const struct rpc_pipe_dir_object_ops *pdo_ops, void *pdo_data)”h]”(j§ )�”}”(hŒstruct rpc_pipe_dir_object *pdo”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj³zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯zubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_object”h]”hŒrpc_pipe_dir_object”…”�”}”(hjÑzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÓzŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j™zsbŒc.rpc_init_pipe_dir_object”†”asbuh1hhj¯zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯zubj )�”}”(hj h]”hŒ*”…”�”}”(hjÿzh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¯zubj9)�”}”(hŒpdo”h]”hŒpdo”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj«zubj§ )�”}”(hŒ-const struct rpc_pipe_dir_object_ops *pdo_ops”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj%{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!{ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj@{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!{ubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_object_ops”h]”hŒrpc_pipe_dir_object_ops”…”�”}”(hj^{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j`{Œmodname”NŒ classname”Njå jè )�”}”jë ]”jízŒc.rpc_init_pipe_dir_object”†”asbuh1hhj!{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!{ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŠ{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!{ubj9)�”}”(hŒpdo_ops”h]”hŒpdo_ops”…”�”}”(hj—{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj«zubj§ )�”}”(hŒvoid *pdo_data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¬{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬{ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌ{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¬{ubj9)�”}”(hŒpdo_data”h]”hŒpdo_data”…”�”}”(hjÙ{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj«zubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjrzh²hh³j„zh´MÇubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjnzh²hh³j„zh´MÇubah}”(h]”jizah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j„zh´MÇhjkzh²hubjg)�”}”(hhh]”jl)�”}”(hŒ'initialise a struct rpc_pipe_dir_object”h]”hŒ'initialise a struct rpc_pipe_dir_object”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MÇhj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjkzh²hh³j„zh´MÇubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j|jŒj|j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒõ**Parameters** ``struct rpc_pipe_dir_object *pdo`` pointer to struct rpc_pipe_dir_object ``const struct rpc_pipe_dir_object_ops *pdo_ops`` pointer to const struct rpc_pipe_dir_object_ops ``void *pdo_data`` pointer to caller-defined data”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%|h]”hŒ Parameters”…”�”}”(hj'|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MËhj|ubjß)�”}”(hhh]”(jä)�”}”(hŒJ``struct rpc_pipe_dir_object *pdo`` pointer to struct rpc_pipe_dir_object ”h]”(jê)�”}”(hŒ#``struct rpc_pipe_dir_object *pdo``”h]”jð)�”}”(hjD|h]”hŒstruct rpc_pipe_dir_object *pdo”…”�”}”(hjF|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MÈhj>|ubj)�”}”(hhh]”jl)�”}”(hŒ%pointer to struct rpc_pipe_dir_object”h]”hŒ%pointer to struct rpc_pipe_dir_object”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY|h´MÈhjZ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY|h´MÈhj;|ubjä)�”}”(hŒb``const struct rpc_pipe_dir_object_ops *pdo_ops`` pointer to const struct rpc_pipe_dir_object_ops ”h]”(jê)�”}”(hŒ1``const struct rpc_pipe_dir_object_ops *pdo_ops``”h]”jð)�”}”(hj}|h]”hŒ-const struct rpc_pipe_dir_object_ops *pdo_ops”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MÉhjw|ubj)�”}”(hhh]”jl)�”}”(hŒ/pointer to const struct rpc_pipe_dir_object_ops”h]”hŒ/pointer to const struct rpc_pipe_dir_object_ops”…”�”}”(hj–|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’|h´MÉhj“|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’|h´MÉhj;|ubjä)�”}”(hŒ1``void *pdo_data`` pointer to caller-defined data”h]”(jê)�”}”(hŒ``void *pdo_data``”h]”jð)�”}”(hj¶|h]”hŒvoid *pdo_data”…”�”}”(hj¸|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MËhj°|ubj)�”}”(hhh]”jl)�”}”(hŒpointer to caller-defined data”h]”hŒpointer to caller-defined data”…”�”}”(hjÏ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MÊhjÌ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jË|h´MËhj;|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$rpc_add_pipe_dir_object (C function)”Œc.rpc_add_pipe_dir_object”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmint rpc_add_pipe_dir_object (struct net *net, struct rpc_pipe_dir_head *pdh, struct rpc_pipe_dir_object *pdo)”h]”j )�”}”(hŒlint rpc_add_pipe_dir_object(struct net *net, struct rpc_pipe_dir_head *pdh, struct rpc_pipe_dir_object *pdo)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj }h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj }h²hh³j}h´Mïubj3)�”}”(hŒrpc_add_pipe_dir_object”h]”j9)�”}”(hŒrpc_add_pipe_dir_object”h]”hŒrpc_add_pipe_dir_object”…”�”}”(hj1}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-}ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj }h²hh³j}h´Mïubj¡ )�”}”(hŒQ(struct net *net, struct rpc_pipe_dir_head *pdh, struct rpc_pipe_dir_object *pdo)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjM}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjI}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjI}ubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjk}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jm}Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j3}sbŒc.rpc_add_pipe_dir_object”†”asbuh1hhjI}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjI}ubj )�”}”(hj h]”hŒ*”…”�”}”(hj™}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjI}ubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj¦}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE}ubj§ )�”}”(hŒstruct rpc_pipe_dir_head *pdh”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¿}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»}ubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_head”h]”hŒrpc_pipe_dir_head”…”�”}”(hjÝ}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚ}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jß}Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‡}Œc.rpc_add_pipe_dir_object”†”asbuh1hhj»}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»}ubj )�”}”(hj h]”hŒ*”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj»}ubj9)�”}”(hŒpdh”h]”hŒpdh”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE}ubj§ )�”}”(hŒstruct rpc_pipe_dir_object *pdo”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj/~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+~ubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_object”h]”hŒrpc_pipe_dir_object”…”�”}”(hjM~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jO~Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‡}Œc.rpc_add_pipe_dir_object”†”asbuh1hhj+~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+~ubj )�”}”(hj h]”hŒ*”…”�”}”(hjy~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj+~ubj9)�”}”(hŒpdo”h]”hŒpdo”…”�”}”(hj†~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj }h²hh³j}h´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj}h²hh³j}h´Mïubah}”(h]”j}ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j}h´Mïhj}h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.associate a rpc_pipe_dir_object to a directory”h]”hŒ.associate a rpc_pipe_dir_object to a directory”…”�”}”(hj°~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mïhj­~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj}h²hh³j}h´Mïubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÈ~jŒjÈ~j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒÑ**Parameters** ``struct net *net`` pointer to struct net ``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head ``struct rpc_pipe_dir_object *pdo`` pointer to struct rpc_pipe_dir_object”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÒ~h]”hŒ Parameters”…”�”}”(hjÔ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MóhjÌ~ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net *net`` pointer to struct net ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjñ~h]”hŒstruct net *net”…”�”}”(hjó~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjï~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mðhjë~ubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct net”h]”hŒpointer to struct net”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mðhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mðhjè~ubjä)�”}”(hŒF``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head ”h]”(jê)�”}”(hŒ!``struct rpc_pipe_dir_head *pdh``”h]”jð)�”}”(hj*h]”hŒstruct rpc_pipe_dir_head *pdh”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mñhj$ubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to struct rpc_pipe_dir_head”h]”hŒ#pointer to struct rpc_pipe_dir_head”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?h´Mñhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?h´Mñhjè~ubjä)�”}”(hŒI``struct rpc_pipe_dir_object *pdo`` pointer to struct rpc_pipe_dir_object”h]”(jê)�”}”(hŒ#``struct rpc_pipe_dir_object *pdo``”h]”jð)�”}”(hjch]”hŒstruct rpc_pipe_dir_object *pdo”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Móhj]ubj)�”}”(hhh]”jl)�”}”(hŒ%pointer to struct rpc_pipe_dir_object”h]”hŒ%pointer to struct rpc_pipe_dir_object”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mòhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxh´Móhjè~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌ~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'rpc_remove_pipe_dir_object (C function)”Œc.rpc_remove_pipe_dir_object”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒqvoid rpc_remove_pipe_dir_object (struct net *net, struct rpc_pipe_dir_head *pdh, struct rpc_pipe_dir_object *pdo)”h]”j )�”}”(hŒpvoid rpc_remove_pipe_dir_object(struct net *net, struct rpc_pipe_dir_head *pdh, struct rpc_pipe_dir_object *pdo)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹h²hh³jËh´Mubj3)�”}”(hŒrpc_remove_pipe_dir_object”h]”j9)�”}”(hŒrpc_remove_pipe_dir_object”h]”hŒrpc_remove_pipe_dir_object”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¹h²hh³jËh´Mubj¡ )�”}”(hŒQ(struct net *net, struct rpc_pipe_dir_head *pdh, struct rpc_pipe_dir_object *pdo)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j€Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jàsbŒc.rpc_remove_pipe_dir_object”†”asbuh1hhjöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöubj )�”}”(hj h]”hŒ*”…”�”}”(hjF€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjöubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjS€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjòubj§ )�”}”(hŒstruct rpc_pipe_dir_head *pdh”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjl€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh€ubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_head”h]”hŒrpc_pipe_dir_head”…”�”}”(hjŠ€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒ€Œmodname”NŒ classname”Njå jè )�”}”jë ]”j4€Œc.rpc_remove_pipe_dir_object”†”asbuh1hhjh€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh€ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjh€ubj9)�”}”(hŒpdh”h]”hŒpdh”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjòubj§ )�”}”(hŒstruct rpc_pipe_dir_object *pdo”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÜ€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ€ubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_object”h]”hŒrpc_pipe_dir_object”…”�”}”(hjú€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jü€Œmodname”NŒ classname”Njå jè )�”}”jë ]”j4€Œc.rpc_remove_pipe_dir_object”†”asbuh1hhjØ€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ€ubj )�”}”(hj h]”hŒ*”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjØ€ubj9)�”}”(hŒpdo”h]”hŒpdo”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØ€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjòubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¹h²hh³jËh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjµh²hh³jËh´Mubah}”(h]”j°ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jËh´Mhj²h²hubjg)�”}”(hhh]”jl)�”}”(hŒ-remove a rpc_pipe_dir_object from a directory”h]”hŒ-remove a rpc_pipe_dir_object from a directory”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´MhjZ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj²h²hh³jËh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ju�jŒju�j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒÑ**Parameters** ``struct net *net`` pointer to struct net ``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head ``struct rpc_pipe_dir_object *pdo`` pointer to struct rpc_pipe_dir_object”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M hjy�ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net *net`` pointer to struct net ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjž�h]”hŒstruct net *net”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M hj˜�ubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct net”h]”hŒpointer to struct net”…”�”}”(hj·�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³�h´M hj´�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³�h´M hj•�ubjä)�”}”(hŒF``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head ”h]”(jê)�”}”(hŒ!``struct rpc_pipe_dir_head *pdh``”h]”jð)�”}”(hj×�h]”hŒstruct rpc_pipe_dir_head *pdh”…”�”}”(hjÙ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M hjÑ�ubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to struct rpc_pipe_dir_head”h]”hŒ#pointer to struct rpc_pipe_dir_head”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì�h´M hjí�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì�h´M hj•�ubjä)�”}”(hŒI``struct rpc_pipe_dir_object *pdo`` pointer to struct rpc_pipe_dir_object”h]”(jê)�”}”(hŒ#``struct rpc_pipe_dir_object *pdo``”h]”jð)�”}”(hj‚h]”hŒstruct rpc_pipe_dir_object *pdo”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M hj ‚ubj)�”}”(hhh]”jl)�”}”(hŒ%pointer to struct rpc_pipe_dir_object”h]”hŒ%pointer to struct rpc_pipe_dir_object”…”�”}”(hj)‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M hj&‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ‚ubeh}”(h]”h ]”h"•]”h$]”h&]”uh1jãh³j%‚h´M hj•�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjy�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ.rpc_find_or_alloc_pipe_dir_object (C function)”Œ#c.rpc_find_or_alloc_pipe_dir_object”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒÝstruct rpc_pipe_dir_object * rpc_find_or_alloc_pipe_dir_object (struct net *net, struct rpc_pipe_dir_head *pdh, int (*match)(struct rpc_pipe_dir_object *, void *), struct rpc_pipe_dir_object *(*alloc)(void *), void *data)”h]”j )�”}”(hŒØstruct rpc_pipe_dir_object *rpc_find_or_alloc_pipe_dir_object(struct net *net, struct rpc_pipe_dir_head *pdh, int (*match)(struct rpc_pipe_dir_object*, void*), struct rpc_pipe_dir_object *(*alloc)(void*), void *data)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf‚h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjf‚h²hh³jw‚h´Mubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_object”h]”hŒrpc_pipe_dir_object”…”�”}”(hj‰‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹‚Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ!rpc_find_or_alloc_pipe_dir_object”sbŒ#c.rpc_find_or_alloc_pipe_dir_object”†”asbuh1hhjf‚h²hh³jw‚h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjf‚h²hh³jw‚h´Mubj )�”}”(hj h]”hŒ*”…”�”}”(hj¸‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjf‚h²hh³jw‚h´Mubj3)�”}”(hŒ!rpc_find_or_alloc_pipe_dir_object”h]”j9)�”}”(hj§‚h]”hŒ!rpc_find_or_alloc_pipe_dir_object”…”�”}”(hjÉ‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ‚ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjf‚h²hh³jw‚h´Mubj¡ )�”}”(hŒ›(struct net *net, struct rpc_pipe_dir_head *pdh, int (*match)(struct rpc_pipe_dir_object*, void*), struct rpc_pipe_dir_object *(*alloc)(void*), void *data)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjä‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjà‚ubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿ‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¥‚Œ#c.rpc_find_or_alloc_pipe_dir_object”†”asbuh1hhjà‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjà‚ubj )�”}”(hj h]”hŒ*”…”�”}”(hj.ƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjà‚ubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj;ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÜ‚ubj§ )�”}”(hŒstruct rpc_pipe_dir_head *pdh”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjTƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPƒubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_head”h]”hŒrpc_pipe_dir_head”…”�”}”(hjrƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jtƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¥‚Œ#c.rpc_find_or_alloc_pipe_dir_object”†”asbuh1hhjPƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPƒubj )�”}”(hj h]”hŒ*”…”�”}”(hjžƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjPƒubj9)�”}”(hŒpdh”h]”hŒpdh”…”�”}”(hj«ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÜ‚ubj§ )�”}”(hŒ0int (*match)(struct rpc_pipe_dir_object*, void*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjăh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÀƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀƒubj )�”}”(hjh]”hŒ(”…”�”}”(hjàƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubj )�”}”(hj h]”hŒ*”…”�”}”(hjíƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubj9)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjúƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀƒubj )�”}”(hjEh]”hŒ)”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubj )�”}”(hjh]”hŒ(”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubj)�”}”(hjh]”hŒstruct”…”�”}”(hj"„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀƒubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_object”h]”hŒrpc_pipe_dir_object”…”�”}”(hj@„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jB„Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¥‚Œ#c.rpc_find_or_alloc_pipe_dir_object”†”asbuh1hhjÀƒubj )�”}”(hj h]”hŒ*”…”�”}”(hj^„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubj )�”}”(hŒ,”h]”hŒ,”…”�”}”(hjk„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀƒubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡„h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÀƒubj )�”}”(hj h]”hŒ*”…”�”}”(hj•„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubj )�”}”(hjEh]”hŒ)”…”�”}”(hj¢„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÜ‚ubj§ )�”}”(hŒ+struct rpc_pipe_dir_object *(*alloc)(void*)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjº„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶„ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶„ubh)�”}”(hhh]”j9)�”}”(hŒrpc_pipe_dir_object”h]”hŒrpc_pipe_dir_object”…”�”}”(hjØ„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÚ„Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¥‚Œ#c.rpc_find_or_alloc_pipe_dir_object”†”asbuh1hhj¶„ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶„ubj )�”}”(hj h]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶„ubj )�”}”(hjh]”hŒ(”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶„ubj )�”}”(hj h]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶„ubj9)�”}”(hŒalloc”h]”hŒalloc”…”�”}”(hj+…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶„ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj9…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶„ubj )�”}”(hjh]”hŒ(”…”�”}”(hjF…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶„ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjS…h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶„ubj )�”}”(hj h]”hŒ*”…”�”}”(hja…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶„ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjn…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÜ‚ubj§ )�”}”(hŒ void *data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†…h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚…ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¢…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‚…ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¯…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÜ‚ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjf‚h²hh³jw‚h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjb‚h²hh³jw‚h´Mubah}”(h]”j]‚ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jw‚h´Mhj_‚h²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jfhj_‚h²hh³jw‚h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jâ…jŒjâ…j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct net *net`` pointer to struct net ``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head ``int (*match)(struct rpc_pipe_dir_object *, void *)`` match struct rpc_pipe_dir_object to data ``struct rpc_pipe_dir_object *(*alloc)(void *)`` allocate a new struct rpc_pipe_dir_object ``void *data`` user defined data for match() and alloc()”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjì…h]”hŒ Parameters”…”�”}”(hjî…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M"hjæ…ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net *net`` pointer to struct net ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj †h]”hŒstruct net *net”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj †ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´Mhj†ubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct net”h]”hŒpointer to struct net”…”�”}”(hj$†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j †h´Mhj!†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j †h´Mhj†ubjä)�”}”(hŒF``struct rpc_pipe_dir_head *pdh`` pointer to struct rpc_pipe_dir_head ”h]”(jê)�”}”(hŒ!``struct rpc_pipe_dir_head *pdh``”h]”jð)�”}”(hjD†h]”hŒstruct rpc_pipe_dir_head *pdh”…”�”}”(hjF†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M hj>†ubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to struct rpc_pipe_dir_head”h]”hŒ#pointer to struct rpc_pipe_dir_head”…”�”}”(hj]†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY†h´M hjZ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY†h´M hj†ubjä)�”}”(hŒ```int (*match)(struct rpc_pipe_dir_object *, void *)`` match struct rpc_pipe_dir_object to data ”h]”(jê)�”}”(hŒ6``int (*match)(struct rpc_pipe_dir_object *, void *)``”h]”jð)�”}”(hj}†h]”hŒ2int (*match)(struct rpc_pipe_dir_object *, void *)”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M!hjw†ubj)�”}”(hhh]”jl)�”}”(hŒ(match struct rpc_pipe_dir_object to data”h]”hŒ(match struct rpc_pipe_dir_object to data”…”�”}”(hj–†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’†h´M!hj“†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’†h´M!hj†ubjä)�”}”(hŒ[``struct rpc_pipe_dir_object *(*alloc)(void *)`` allocate a new struct rpc_pipe_dir_object ”h]”(jê)�”}”(hŒ0``struct rpc_pipe_dir_object *(*alloc)(void *)``”h]”jð)�”}”(hj¶†h]”hŒ,struct rpc_pipe_dir_object *(*alloc)(void *)”…”�”}”(hj¸†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M"hj°†ubj)�”}”(hhh]”jl)�”}”(hŒ)allocate a new struct rpc_pipe_dir_object”h]”hŒ)allocate a new struct rpc_pipe_dir_object”…”�”}”(hjφh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆh´M"hj̆ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆh´M"hj†ubjä)�”}”(hŒ8``void *data`` user defined data for match() and alloc()”h]”(jê)�”}”(hŒ``void *data``”h]”jð)�”}”(hjï†h]”hŒ void *data”…”�”}”(hjñ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjí†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M$hjé†ubj)�”}”(hhh]”jl)�”}”(hŒ)user defined data for match() and alloc()”h]”hŒ)user defined data for match() and alloc()”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒU/var/lib/git/docbuild/linux/Documentation/networking/kapi:77: ./net/sunrpc/rpc_pipe.c”h´M#hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡h´M$hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjæ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpcb_getport_async (C function)”Œc.rpcb_getport_async”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void rpcb_getport_async (struct rpc_task *task)”h]”j )�”}”(hŒ.void rpcb_getport_async(struct rpc_task *task)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjI‡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjE‡h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:80: ./net/sunrpc/rpcb_clnt.c”h´M·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE‡h²hh³jW‡h´M·ubj3)�”}”(hŒrpcb_getport_async”h]”j9)�”}”(hŒrpcb_getport_async”h]”hŒrpcb_getport_async”…”�”}”(hjj‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjf‡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjE‡h²hh³jW‡h´M·ubj¡ )�”}”(hŒ(struct rpc_task *task)”h]”j§ )�”}”(hŒstruct rpc_task *task”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj†‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚‡ubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hj¤‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¦‡Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jl‡sbŒc.rpcb_getport_async”†”asbuh1hhj‚‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjćh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚‡ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒ‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‚‡ubj9)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj߇h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~‡ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjE‡h²hh³jW‡h´M·ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjA‡h²hh³jW‡h´M·ubah}”(h]”j<‡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jW‡h´M·hj>‡h²hubjg)�”}”(hhh]”jl)�”}”(hŒ7obtain the port for a given RPC service on a given host”h]”hŒ7obtain the port for a given RPC service on a given host”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:80: ./net/sunrpc/rpcb_clnt.c”h´M·hjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj>‡h²hh³jW‡h´M·ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j!ˆjŒj!ˆj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒÊ**Parameters** ``struct rpc_task *task`` task that is waiting for portmapper request **Description** This one can be called for an ongoing RPC request, and can be used in an async (rpciod) context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj+ˆh]”hŒ Parameters”…”�”}”(hj-ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:80: ./net/sunrpc/rpcb_clnt.c”h´M»hj%ˆubjß)�”}”(hhh]”jä)�”}”(hŒF``struct rpc_task *task`` task that is waiting for portmapper request ”h]”(jê)�”}”(hŒ``struct rpc_task *task``”h]”jð)�”}”(hjJˆh]”hŒstruct rpc_task *task”…”�”}”(hjLˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjHˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:80: ./net/sunrpc/rpcb_clnt.c”h´M¸hjDˆubj)�”}”(hhh]”jl)�”}”(hŒ+task that is waiting for portmapper request”h]”hŒ+task that is waiting for portmapper request”…”�”}”(hjcˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_ˆh´M¸hj`ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_ˆh´M¸hjAˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj%ˆubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj…ˆh]”hŒ Description”…”�”}”(hj‡ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:80: ./net/sunrpc/rpcb_clnt.c”h´Mºhj%ˆubjl)�”}”(hŒ`This one can be called for an ongoing RPC request, and can be used in an async (rpciod) context.”h]”hŒ`This one can be called for an ongoing RPC request, and can be used in an async (rpciod) context.”…”�”}”(hj›ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:80: ./net/sunrpc/rpcb_clnt.c”h´M¹hj%ˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_create (C function)”Œ c.rpc_create”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;struct rpc_clnt * rpc_create (struct rpc_create_args *args)”h]”j )�”}”(hŒ9struct rpc_clnt *rpc_create(struct rpc_create_args *args)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjʈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƈh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj؈h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƈh²hh³j׈h´M ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjéˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j눌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ rpc_create”sbŒ c.rpc_create”†”asbuh1hhjƈh²hh³j׈h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƈh²hh³j׈h´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƈh²hh³j׈h´M ubj3)�”}”(hŒ rpc_create”h]”j9)�”}”(hj‰h]”hŒ rpc_create”…”�”}”(hj)‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%‰ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjƈh²hh³j׈h´M ubj¡ )�”}”(hŒ(struct rpc_create_args *args)”h]”j§ )�”}”(hŒstruct rpc_create_args *args”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjD‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@‰ubh)�”}”(hhh]”j9)�”}”(hŒrpc_create_args”h]”hŒrpc_create_args”…”�”}”(hjb‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jd‰Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‰Œ c.rpc_create”†”asbuh1hhj@‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@‰ubj )�”}”(hj h]”hŒ*”…”�”}”(hjމh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@‰ubj9)�”}”(hŒargs”h]”hŒargs”…”�”}”(hj›‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<‰ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjƈh²hh³j׈h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjˆh²hh³j׈h´M ubah}”(h]”j½ˆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j׈h´M hj¿ˆh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0create an RPC client and transport with one call”h]”hŒ0create an RPC client and transport with one call”…”�”}”(hjʼnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hj‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¿ˆh²hh³j׈h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j݉jŒj݉j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXp**Parameters** ``struct rpc_create_args *args`` rpc_clnt create argument structure **Description** Creates and initializes an RPC transport and an RPC client. It can ping the server in order to determine if it is up, and to see if it supports this program and version. RPC_CLNT_CREATE_NOPING disables this behavior so asynchronous tasks can also use rpc_create.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjç‰h]”hŒ Parameters”…”�”}”(hjé‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjå‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhjá‰ubjß)�”}”(hhh]”jä)�”}”(hŒD``struct rpc_create_args *args`` rpc_clnt create argument structure ”h]”(jê)�”}”(hŒ ``struct rpc_create_args *args``”h]”jð)�”}”(hjŠh]”hŒstruct rpc_create_args *args”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hjŠubj)�”}”(hhh]”jl)�”}”(hŒ"rpc_clnt create argument structure”h]”hŒ"rpc_clnt create argument structure”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠh´M hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠh´M hjý‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjá‰ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjAŠh]”hŒ Description”…”�”}”(hjCŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhjá‰ubjl)�”}”(hŒ;Creates and initializes an RPC transport and an RPC client.”h]”hŒ;Creates and initializes an RPC transport and an RPC client.”…”�”}”(hjWŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hjá‰ubjl)�”}”(hŒËIt can ping the server in order to determine if it is up, and to see if it supports this program and version. RPC_CLNT_CREATE_NOPING disables this behavior so asynchronous tasks can also use rpc_create.”h]”hŒËIt can ping the server in order to determine if it is up, and to see if it supports this program and version. RPC_CLNT_CREATE_NOPING disables this behavior so asynchronous tasks can also use rpc_create.”…”�”}”(hjfŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhjá‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_clone_client (C function)”Œc.rpc_clone_client”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:struct rpc_clnt * rpc_clone_client (struct rpc_clnt *clnt)”h]”j )�”}”(hŒ8struct rpc_clnt *rpc_clone_client(struct rpc_clnt *clnt)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj•Šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘Šh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘Šh²hh³j¢Šh´M§ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj´Šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±Šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¶ŠŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œrpc_clone_client”sbŒc.rpc_clone_client”†”asbuh1hhj‘Šh²hh³j¢Šh´M§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘Šh²hh³j¢Šh´M§ubj )�”}”(hj h]”hŒ*”…”�”}”(hjãŠh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‘Šh²hh³j¢Šh´M§ubj3)�”}”(hŒrpc_clone_client”h]”j9)�”}”(hjÒŠh]”hŒrpc_clone_client”…”�”}”(hjôŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðŠubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‘Šh²hh³j¢Šh´M§ubj¡ )�”}”(hŒ(struct rpc_clnt *clnt)”h]”j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ‹ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj-‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j/‹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jЊŒc.rpc_clone_client”†”asbuh1hhj ‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ‹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjY‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ‹ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hjf‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‘Šh²hh³j¢Šh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�Šh²hh³j¢Šh´M§ubah}”(h]”jˆŠah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢Šh´M§hjŠŠh²hubjg)�”}”(hhh]”jl)�”}”(hŒClone an RPC client structure”h]”hŒClone an RPC client structure”…”�”}”(hj�‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M§hj�‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŠŠh²hh³j¢Šh´M§ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¨‹jŒj¨‹j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒŽ**Parameters** ``struct rpc_clnt *clnt`` RPC client whose parameters are copied **Description** Returns a fresh RPC client or an ERR_PTR.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj²‹h]”hŒ Parameters”…”�”}”(hj´‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M«hj¬‹ubjß)�”}”(hhh]”jä)�”}”(hŒA``struct rpc_clnt *clnt`` RPC client whose parameters are copied ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjÑ‹h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjÓ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M©hjË‹ubj)�”}”(hhh]”jl)�”}”(hŒ&RPC client whose parameters are copied”h]”hŒ&RPC client whose parameters are copied”…”�”}”(hjê‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæ‹h´M©hjç‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæ‹h´M©hjÈ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¬‹ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj Œh]”hŒ Description”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M«hj¬‹ubjl)�”}”(hŒ)Returns a fresh RPC client or an ERR_PTR.”h]”hŒ)Returns a fresh RPC client or an ERR_PTR.”…”�”}”(hj"Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mªhj¬‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&rpc_clone_client_set_auth (C function)”Œc.rpc_clone_client_set_auth”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\struct rpc_clnt * rpc_clone_client_set_auth (struct rpc_clnt *clnt, rpc_authflavor_t flavor)”h]”j )�”}”(hŒZstruct rpc_clnt *rpc_clone_client_set_auth(struct rpc_clnt *clnt, rpc_authflavor_t flavor)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjQŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMŒh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMŒh²hh³j^Œh´M¼ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjpŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jrŒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œrpc_clone_client_set_auth”sbŒc.rpc_clone_client_set_auth”†”asbuh1hhjMŒh²hh³j^Œh´M¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMŒh²hh³j^Œh´M¼ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjMŒh²hh³j^Œh´M¼ubj3)�”}”(hŒrpc_clone_client_set_auth”h]”j9)�”}”(hjŽŒh]”hŒrpc_clone_client_set_auth”…”�”}”(hj°Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬Œubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjMŒh²hh³j^Œh´M¼ubj¡ )�”}”(hŒ0(struct rpc_clnt *clnt, rpc_authflavor_t flavor)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjËŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇŒubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjéŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j댌modname”NŒ classname”Njå jè )�”}”jë ]”jŒŒŒc.rpc_clone_client_set_auth”†”asbuh1hhjÇŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇŒubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÇŒubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃŒubj§ )�”}”(hŒrpc_authflavor_t flavor”h]”(h)�”}”(hhh]”j9)�”}”(hŒrpc_authflavor_t”h]”hŒrpc_authflavor_t”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jŒŒŒc.rpc_clone_client_set_auth”†”asbuh1hhj7�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7�ubj9)�”}”(hŒflavor”h]”hŒflavor”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjMŒh²hh³j^Œh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjIŒh²hh³j^Œh´M¼ubah}”(h]”jDŒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j^Œh´M¼hjFŒh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Clone an RPC client structure and set its auth”h]”hŒ.Clone an RPC client structure and set its auth”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¼hj‘�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjFŒh²hh³j^Œh´M¼ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬�jŒj¬�j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒÌ**Parameters** ``struct rpc_clnt *clnt`` RPC client whose parameters are copied ``rpc_authflavor_t flavor`` security flavor for new client **Description** Returns a fresh RPC client or an ERR_PTR.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶�h]”hŒ Parameters”…”�”}”(hj¸�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÀhj°�ubjß)�”}”(hhh]”(jä)�”}”(hŒA``struct rpc_clnt *clnt`` RPC client whose parameters are copied ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjÕ�h]”hŒstruct rpc_clnt *clnt”…”�”}”(hj×�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¾hjÏ�ubj)�”}”(hhh]”jl)�”}”(hŒ&RPC client whose parameters are copied”h]”hŒ&RPC client whose parameters are copied”…”�”}”(hjî�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jê�h´M¾hjë�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jê�h´M¾hjÌ�ubjä)�”}”(hŒ;``rpc_authflavor_t flavor`` security flavor for new client ”h]”(jê)�”}”(hŒ``rpc_authflavor_t flavor``”h]”jð)�”}”(hjŽh]”hŒrpc_authflavor_t flavor”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¿hjŽubj)�”}”(hhh]”jl)�”}”(hŒsecurity flavor for new client”h]”hŒsecurity flavor for new client”…”�”}”(hj'Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#Žh´M¿hj$Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Žh´M¿hjÌ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjIŽh]”hŒ Description”…”�”}”(hjKŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjGŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÁhj°�ubjl)�”}”(hŒ)Returns a fresh RPC client or an ERR_PTR.”h]”hŒ)Returns a fresh RPC client or an ERR_PTR.”…”�”}”(hj_Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÀhj°�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(rpc_switch_client_transport (C function)”Œc.rpc_switch_client_transport”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒtint rpc_switch_client_transport (struct rpc_clnt *clnt, struct xprt_create *args, const struct rpc_timeout *timeout)”h]”j )�”}”(hŒsint rpc_switch_client_transport(struct rpc_clnt *clnt, struct xprt_create *args, const struct rpc_timeout *timeout)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjŽŽh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŠŽh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÓubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠŽh²hh³jœŽh´MÓubj3)�”}”(hŒrpc_switch_client_transport”h]”j9)�”}”(hŒrpc_switch_client_transport”h]”hŒrpc_switch_client_transport”…”�”}”(hj¯Žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«Žubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŠŽh²hh³jœŽh´MÓubj¡ )�”}”(hŒT(struct rpc_clnt *clnt, struct xprt_create *args, const struct rpc_timeout *timeout)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjËŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇŽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØŽh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇŽubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjéŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j뎌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j±ŽsbŒc.rpc_switch_client_transport”†”asbuh1hhjÇŽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇŽubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÇŽubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃŽubj§ )�”}”(hŒstruct xprt_create *args”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj=�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9�ubh)�”}”(hhh]”j9)�”}”(hŒ xprt_create”h]”hŒ xprt_create”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]�Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�Œc.rpc_switch_client_transport”†”asbuh1hhj9�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‡�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9�ubj9)�”}”(hŒargs”h]”hŒargs”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃŽubj§ )�”}”(hŒ!const struct rpc_timeout *timeout”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj­�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©�ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©�ubh)�”}”(hhh]”j9)�”}”(hŒ rpc_timeout”h]”hŒ rpc_timeout”…”�”}”(hjæ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jè�Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�Œc.rpc_switch_client_transport”†”asbuh1hhj©�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj©�ubj9)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃŽubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŠŽh²hh³jœŽh´MÓubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj†Žh²hh³jœŽh´MÓubah}”(h]”j�Žah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jœŽh´MÓhjƒŽh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#switch the RPC transport on the fly”h]”hŒ#switch the RPC transport on the fly”…”�”}”(hjI�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÓhjF�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjƒŽh²hh³jœŽh´MÓubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ja�jŒja�j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX}**Parameters** ``struct rpc_clnt *clnt`` pointer to a struct rpc_clnt ``struct xprt_create *args`` pointer to the new transport arguments ``const struct rpc_timeout *timeout`` pointer to the new timeout parameters **Description** This function allows the caller to switch the RPC transport for the rpc_clnt structure 'clnt' to allow it to connect to a mirrored NFS server, for instance. It assumes that the caller has ensured that there are no active RPC tasks by using some form of locking. Returns zero if "clnt" is now using the new xprt. Otherwise a negative errno is returned, and "clnt" continues to use the old xprt.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjk�h]”hŒ Parameters”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhji�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M×hje�ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct rpc_clnt *clnt`` pointer to a struct rpc_clnt ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjŠ�h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÔhj„�ubj)�”}”(hhh]”jl)�”}”(hŒpointer to a struct rpc_clnt”h]”hŒpointer to a struct rpc_clnt”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸ�h´MÔhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸ�h´MÔhj��ubjä)�”}”(hŒD``struct xprt_create *args`` pointer to the new transport arguments ”h]”(jê)�”}”(hŒ``struct xprt_create *args``”h]”jð)�”}”(hjÃ�h]”hŒstruct xprt_create *args”…”�”}”(hjÅ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÕhj½�ubj)�”}”(hhh]”jl)�”}”(hŒ&pointer to the new transport arguments”h]”hŒ&pointer to the new transport arguments”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØ�h´MÕhjÙ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØ�h´MÕhj��ubjä)�”}”(hŒL``const struct rpc_timeout *timeout`` pointer to the new timeout parameters ”h]”(jê)�”}”(hŒ%``const struct rpc_timeout *timeout``”h]”jð)�”}”(hjü�h]”hŒ!const struct rpc_timeout *timeout”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjú�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÖhjö�ubj)�”}”(hhh]”jl)�”}”(hŒ%pointer to the new timeout parameters”h]”hŒ%pointer to the new timeout parameters”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘h´MÖhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘h´MÖhj��ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhje�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj7‘h]”hŒ Description”…”�”}”(hj9‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj5‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MØhje�ubjl)�”}”(hXThis function allows the caller to switch the RPC transport for the rpc_clnt structure 'clnt' to allow it to connect to a mirrored NFS server, for instance. It assumes that the caller has ensured that there are no active RPC tasks by using some form of locking.”h]”hX This function allows the caller to switch the RPC transport for the rpc_clnt structure ‘clnt’ to allow it to connect to a mirrored NFS server, for instance. It assumes that the caller has ensured that there are no active RPC tasks by using some form of locking.”…”�”}”(hjM‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M×hje�ubjl)�”}”(hŒ„Returns zero if "clnt" is now using the new xprt. Otherwise a negative errno is returned, and "clnt" continues to use the old xprt.”h]”hŒŒReturns zero if “clntâ€� is now using the new xprt. Otherwise a negative errno is returned, and “clntâ€� continues to use the old xprt.”…”�”}”(hj\‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MÜhje�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ+rpc_clnt_iterate_for_each_xprt (C function)”Œ c.rpc_clnt_iterate_for_each_xprt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒint rpc_clnt_iterate_for_each_xprt (struct rpc_clnt *clnt, int (*fn)(struct rpc_clnt *, struct rpc_xprt *, void *), void *data)”h]”j )�”}”(hŒ{int rpc_clnt_iterate_for_each_xprt(struct rpc_clnt *clnt, int (*fn)(struct rpc_clnt*, struct rpc_xprt*, void*), void *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‹‘h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‡‘h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡‘h²hh³j™‘h´MNubj3)�”}”(hŒrpc_clnt_iterate_for_each_xprt”h]”j9)�”}”(hŒrpc_clnt_iterate_for_each_xprt”h]”hŒrpc_clnt_iterate_for_each_xprt”…”�”}”(hj¬‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨‘ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‡‘h²hh³j™‘h´MNubj¡ )�”}”(hŒY(struct rpc_clnt *clnt, int (*fn)(struct rpc_clnt*, struct rpc_xprt*, void*), void *data)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÈ‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄ‘ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjæ‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j葌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j®‘sbŒ c.rpc_clnt_iterate_for_each_xprt”†”asbuh1hhjÄ‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄ‘ubj )�”}”(hj h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÄ‘ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj!’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀ‘ubj§ )�”}”(hŒ4int (*fn)(struct rpc_clnt*, struct rpc_xprt*, void*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj:’h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj6’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6’ubj )�”}”(hjh]”hŒ(”…”�”}”(hjV’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj )�”}”(hj h]”hŒ*”…”�”}”(hjc’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj9)�”}”(hŒfn”h]”hŒfn”…”�”}”(hjp’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6’ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj~’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj )�”}”(hjh]”hŒ(”…”�”}”(hj‹’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj˜’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6’ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj¶’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸’Œmodname”NŒ classname”Njå jè )�”}”jë ]”j’Œ c.rpc_clnt_iterate_for_each_xprt”†”asbuh1hhj6’ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÔ’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjá’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6’ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjü’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6’ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j“Œmodname”NŒ classname”Njå jè )�”}”jë ]”j’Œ c.rpc_clnt_iterate_for_each_xprt”†”asbuh1hhj6’ubj )�”}”(hj h]”hŒ*”…”�”}”(hj8“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjE“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6’ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj6’ubj )�”}”(hj h]”hŒ*”…”�”}”(hjn“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj{“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀ‘ubj§ )�”}”(hŒ void *data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj““h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�“ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¯“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�“ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¼“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀ‘ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‡‘h²hh³j™‘h´MNubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjƒ‘h²hh³j™‘h´MNubah}”(h]”j~‘ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j™‘h´MNhj€‘h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Apply a function to all transports”h]”hŒ"Apply a function to all transports”…”�”}”(hjæ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MNhjã“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj€‘h²hh³j™‘h´MNubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jþ“jŒjþ“j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX–**Parameters** ``struct rpc_clnt *clnt`` pointer to client ``int (*fn)(struct rpc_clnt *, struct rpc_xprt *, void *)`` function to apply ``void *data`` void pointer to function data **Description** Iterates through the list of RPC transports currently attached to the client and applies the function fn(clnt, xprt, data). On error, the iteration stops, and the function returns the error value.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj”h]”hŒ Parameters”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MRhj”ubjß)�”}”(hhh]”(jä)�”}”(hŒ,``struct rpc_clnt *clnt`` pointer to client ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hj'”h]”hŒstruct rpc_clnt *clnt”…”�”}”(hj)”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MOhj!”ubj)�”}”(hhh]”jl)�”}”(hŒpointer to client”h]”hŒpointer to client”…”�”}”(hj@”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j<”h´MOhj=”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j<”h´MOhj”ubjä)�”}”(hŒN``int (*fn)(struct rpc_clnt *, struct rpc_xprt *, void *)`` function to apply ”h]”(jê)�”}”(hŒ;``int (*fn)(struct rpc_clnt *, struct rpc_xprt *, void *)``”h]”jð)�”}”(hj`”h]”hŒ7int (*fn)(struct rpc_clnt *, struct rpc_xprt *, void *)”…”�”}”(hjb”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MPhjZ”ubj)�”}”(hhh]”jl)�”}”(hŒfunction to apply”h]”hŒfunction to apply”…”�”}”(hjy”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ju”h´MPhjv”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ju”h´MPhj”ubjä)�”}”(hŒ-``void *data`` void pointer to function data ”h]”(jê)�”}”(hŒ``void *data``”h]”jð)�”}”(hj™”h]”hŒ void *data”…”�”}”(hj›”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MQhj“”ubj)�”}”(hhh]”jl)�”}”(hŒvoid pointer to function data”h]”hŒvoid pointer to function data”…”�”}”(hj²”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j®”h´MQhj¯”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j®”h´MQhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj”ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÔ”h]”hŒ Description”…”�”}”(hjÖ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MShj”ubjl)�”}”(hŒ{Iterates through the list of RPC transports currently attached to the client and applies the function fn(clnt, xprt, data).”h]”hŒ{Iterates through the list of RPC transports currently attached to the client and applies the function fn(clnt, xprt, data).”…”�”}”(hjê”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MRhj”ubjl)�”}”(hŒHOn error, the iteration stops, and the function returns the error value.”h]”hŒHOn error, the iteration stops, and the function returns the error value.”…”�”}”(hjù”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MUhj”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_cancel_tasks (C function)”Œc.rpc_cancel_tasks”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ‹unsigned long rpc_cancel_tasks (struct rpc_clnt *clnt, int error, bool (*fnmatch)(const struct rpc_task *, const void *), const void *data)”h]”j )�”}”(hŒˆunsigned long rpc_cancel_tasks(struct rpc_clnt *clnt, int error, bool (*fnmatch)(const struct rpc_task*, const void*), const void *data)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj(•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$•h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$•h²hh³j6•h´M‰ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjE•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$•h²hh³j6•h´M‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$•h²hh³j6•h´M‰ubj3)�”}”(hŒrpc_cancel_tasks”h]”j9)�”}”(hŒrpc_cancel_tasks”h]”hŒrpc_cancel_tasks”…”�”}”(hje•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja•ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj$•h²hh³j6•h´M‰ubj¡ )�”}”(hŒj(struct rpc_clnt *clnt, int error, bool (*fnmatch)(const struct rpc_task*, const void*), const void *data)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}•ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjŸ•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¡•Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jg•sbŒc.rpc_cancel_tasks”†”asbuh1hhj}•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}•ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÍ•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}•ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hjÚ•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjy•ubj§ )�”}”(hŒ int error”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjó•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjï•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjï•ubj9)�”}”(hŒerror”h]”hŒerror”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjy•ubj§ )�”}”(hŒ4bool (*fnmatch)(const struct rpc_task*, const void*)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj(–h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$–ubj )�”}”(hjh]”hŒ(”…”�”}”(hjC–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubj )�”}”(hj h]”hŒ*”…”�”}”(hjP–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubj9)�”}”(hŒfnmatch”h]”hŒfnmatch”…”�”}”(hj]–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$–ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjk–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubj )�”}”(hjh]”hŒ(”…”�”}”(hjx–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubj)�”}”(hj® h]”hŒconst”…”�”}”(hj…–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$–ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$–ubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hj¾–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÀ–Œmodname”NŒ classname”Njå jè )�”}”jë ]”j»•Œc.rpc_cancel_tasks”†”asbuh1hhj$–ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜ–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjé–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$–ubj)�”}”(hj® h]”hŒconst”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$–ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$–ubj )�”}”(hj h]”hŒ*”…”�”}”(hj-—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj:—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjy•ubj§ )�”}”(hŒconst void *data”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjR—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjN—ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjm—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjN—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjN—ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjN—ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj–—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjN—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjy•ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj$•h²hh³j6•h´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj •h²hh³j6•h´M‰ubah}”(h]”j•ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j6•h´M‰hj•h²hubjg)�”}”(hhh]”jl)�”}”(hŒ try to cancel a set of RPC tasks”h]”hŒ try to cancel a set of RPC tasks”…”�”}”(hjÀ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M‰hj½—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj•h²hh³j6•h´M‰ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jØ—jŒjØ—j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX|**Parameters** ``struct rpc_clnt *clnt`` Pointer to RPC client ``int error`` RPC task error value to set ``bool (*fnmatch)(const struct rpc_task *, const void *)`` Pointer to selector function ``const void *data`` User data **Description** Uses **fnmatch** to define a set of RPC tasks that are to be cancelled. The argument **error** must be a negative error value.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjâ—h]”hŒ Parameters”…”�”}”(hjä—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjà—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M�hjÜ—ubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct rpc_clnt *clnt`` Pointer to RPC client ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hj˜h]”hŒstruct rpc_clnt *clnt”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MŠhjû—ubj)�”}”(hhh]”jl)�”}”(hŒPointer to RPC client”h]”hŒPointer to RPC client”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜h´MŠhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjû—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜h´MŠhjø—ubjä)�”}”(hŒ*``int error`` RPC task error value to set ”h]”(jê)�”}”(hŒ ``int error``”h]”jð)�”}”(hj:˜h]”hŒ int error”…”�”}”(hj<˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M‹hj4˜ubj)�”}”(hhh]”jl)�”}”(hŒRPC task error value to set”h]”hŒRPC task error value to set”…”�”}”(hjS˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jO˜h´M‹hjP˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jO˜h´M‹hjø—ubjä)�”}”(hŒX``bool (*fnmatch)(const struct rpc_task *, const void *)`` Pointer to selector function ”h]”(jê)�”}”(hŒ:``bool (*fnmatch)(const struct rpc_task *, const void *)``”h]”jð)�”}”(hjs˜h]”hŒ6bool (*fnmatch)(const struct rpc_task *, const void *)”…”�”}”(hju˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjq˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MŒhjm˜ubj)�”}”(hhh]”jl)�”}”(hŒPointer to selector function”h]”hŒPointer to selector function”…”�”}”(hjŒ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆ˜h´MŒhj‰˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjm˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆ˜h´MŒhjø—ubjä)�”}”(hŒ``const void *data`` User data ”h]”(jê)�”}”(hŒ``const void *data``”h]”jð)�”}”(hj¬˜h]”hŒconst void *data”…”�”}”(hj®˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M�hj¦˜ubj)�”}”(hhh]”jl)�”}”(hŒ User data”h]”hŒ User data”…”�”}”(hjŘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ˜h´M�hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ˜h´M�hjø—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÜ—ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjç˜h]”hŒ Description”…”�”}”(hjé˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjå˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M�hjÜ—ubjl)�”}”(hŒ~Uses **fnmatch** to define a set of RPC tasks that are to be cancelled. The argument **error** must be a negative error value.”h]”(hŒUses ”…”�”}”(hjý˜h²hh³Nh´Nubj›)�”}”(hŒ **fnmatch**”h]”hŒfnmatch”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjý˜ubhŒE to define a set of RPC tasks that are to be cancelled. The argument ”…”�”}”(hjý˜h²hh³Nh´Nubj›)�”}”(hŒ **error**”h]”hŒerror”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjý˜ubhŒ must be a negative error value.”…”�”}”(hjý˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MŽhjÜ—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(•h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_release_client (C function)”Œc.rpc_release_client”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void rpc_release_client (struct rpc_clnt *clnt)”h]”j )�”}”(hŒ.void rpc_release_client(struct rpc_clnt *clnt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjP™h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjL™h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL™h²hh³j^™h´Mubj3)�”}”(hŒrpc_release_client”h]”j9)�”}”(hŒrpc_release_client”h]”hŒrpc_release_client”…”�”}”(hjq™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm™ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjL™h²hh³j^™h´Mubj¡ )�”}”(hŒ(struct rpc_clnt *clnt)”h]”j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰™ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj«™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­™Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já js™sbŒc.rpc_release_client”†”asbuh1hhj‰™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰™ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÙ™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‰™ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hjæ™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…™ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjL™h²hh³j^™h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjH™h²hh³j^™h´Mubah}”(h]”jC™ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j^™h´MhjE™h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"release a reference on an rpc_clnt”h]”hŒ"release a reference on an rpc_clnt”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjE™h²hh³j^™h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j(šjŒj(šj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒº**Parameters** ``struct rpc_clnt *clnt`` rpc_clnt to release **Description** Pairs with rpc_hold_client(). The rpc_clnt's resources are freed once its reference count drops to zero.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj2šh]”hŒ Parameters”…”�”}”(hj4šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M!hj,šubjß)�”}”(hhh]”jä)�”}”(hŒ.``struct rpc_clnt *clnt`` rpc_clnt to release ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjQšh]”hŒstruct rpc_clnt *clnt”…”�”}”(hjSšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjOšubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MhjKšubj)�”}”(hhh]”jl)�”}”(hŒrpc_clnt to release”h]”hŒrpc_clnt to release”…”�”}”(hjjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jfšh´Mhjgšubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jfšh´MhjHšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj,šubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŒšh]”hŒ Description”…”�”}”(hjŽšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hj,šubjl)�”}”(hŒhPairs with rpc_hold_client(). The rpc_clnt's resources are freed once its reference count drops to zero.”h]”hŒjPairs with rpc_hold_client(). The rpc_clnt’s resources are freed once its reference count drops to zero.”…”�”}”(hj¢šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj,šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!rpc_bind_new_program (C function)”Œc.rpc_bind_new_program”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒjstruct rpc_clnt * rpc_bind_new_program (struct rpc_clnt *old, const struct rpc_program *program, u32 vers)”h]”j )�”}”(hŒhstruct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *old, const struct rpc_program *program, u32 vers)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍšh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßšh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍšh²hh³jÞšh´M1ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjðšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jòšŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œrpc_bind_new_program”sbŒc.rpc_bind_new_program”†”asbuh1hhjÍšh²hh³jÞšh´M1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍšh²hh³jÞšh´M1ubj )�”}”(hj h]”hŒ*”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍšh²hh³jÞšh´M1ubj3)�”}”(hŒrpc_bind_new_program”h]”j9)�”}”(hj›h]”hŒrpc_bind_new_program”…”�”}”(hj0›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,›ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÍšh²hh³jÞšh´M1ubj¡ )�”}”(hŒC(struct rpc_clnt *old, const struct rpc_program *program, u32 vers)”h]”(j§ )�”}”(hŒstruct rpc_clnt *old”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjK›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjG›ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hji›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjf›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jk›Œmodname”NŒ classname”Njå jè )�”}”jë ]”j ›Œc.rpc_bind_new_program”†”asbuh1hhjG›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjG›ubj )�”}”(hj h]”hŒ*”…”�”}”(hj•›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjG›ubj9)�”}”(hŒold”h]”hŒold”…”�”}”(hj¢›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjG›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjC›ubj§ )�”}”(hŒ!const struct rpc_program *program”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj»›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·›ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÖ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·›ubh)�”}”(hhh]”j9)�”}”(hŒ rpc_program”h]”hŒ rpc_program”…”�”}”(hjô›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jö›Œmodname”NŒ classname”Njå jè )�”}”jë ]”j ›Œc.rpc_bind_new_program”†”asbuh1hhj·›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·›ubj )�”}”(hj h]”hŒ*”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj·›ubj9)�”}”(hŒprogram”h]”hŒprogram”…”�”}”(hj-œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjC›ubj§ )�”}”(hŒu32 vers”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjIœh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKœŒmodname”NŒ classname”Njå jè )�”}”jë ]”j ›Œc.rpc_bind_new_program”†”asbuh1hhjBœubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBœubj9)�”}”(hŒvers”h]”hŒvers”…”�”}”(hjuœh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjC›ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÍšh²hh³jÞšh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÉšh²hh³jÞšh´M1ubah}”(h]”jÄšah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÞšh´M1hjÆšh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,bind a new RPC program to an existing client”h]”hŒ,bind a new RPC program to an existing client”…”�”}”(hjŸœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M1hjœœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÆšh²hh³jÞšh´M1ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j·œjŒj·œj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXb**Parameters** ``struct rpc_clnt *old`` old rpc_client ``const struct rpc_program *program`` rpc program to set ``u32 vers`` rpc program version **Description** Clones the rpc client and sets up a new RPC program. This is mainly of use for enabling different RPC programs to share the same transport. The Sun NFSv2/v3 ACL protocol can do this.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÁœh]”hŒ Parameters”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¿œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M5hj»œubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct rpc_clnt *old`` old rpc_client ”h]”(jê)�”}”(hŒ``struct rpc_clnt *old``”h]”jð)�”}”(hjàœh]”hŒstruct rpc_clnt *old”…”�”}”(hjâœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M2hjÚœubj)�”}”(hhh]”jl)�”}”(hŒold rpc_client”h]”hŒold rpc_client”…”�”}”(hjùœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõœh´M2hjöœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõœh´M2hjלubjä)�”}”(hŒ9``const struct rpc_program *program`` rpc program to set ”h]”(jê)�”}”(hŒ%``const struct rpc_program *program``”h]”jð)�”}”(hj�h]”hŒ!const struct rpc_program *program”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M3hj�ubj)�”}”(hhh]”jl)�”}”(hŒrpc program to set”h]”hŒrpc program to set”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.�h´M3hj/�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.�h´M3hjלubjä)�”}”(hŒ!``u32 vers`` rpc program version ”h]”(jê)�”}”(hŒ ``u32 vers``”h]”jð)�”}”(hjR�h]”hŒu32 vers”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjP�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M4hjL�ubj)�”}”(hhh]”jl)�”}”(hŒrpc program version”h]”hŒrpc program version”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jg�h´M4hjh�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jg�h´M4hjלubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj»œubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj��h]”hŒ Description”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M6hj»œubjl)�”}”(hŒ¶Clones the rpc client and sets up a new RPC program. This is mainly of use for enabling different RPC programs to share the same transport. The Sun NFSv2/v3 ACL protocol can do this.”h]”hŒ¶Clones the rpc client and sets up a new RPC program. This is mainly of use for enabling different RPC programs to share the same transport. The Sun NFSv2/v3 ACL protocol can do this.”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M5hj»œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_run_task (C function)”Œc.rpc_run_task”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMstruct rpc_task * rpc_run_task (const struct rpc_task_setup *task_setup_data)”h]”j )�”}”(hŒKstruct rpc_task *rpc_run_task(const struct rpc_task_setup *task_setup_data)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ�h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Màubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎ�h²hh³jß�h´Màubh)�”}”(hhh]”j9)�”}”(hŒrpc_task”h]”hŒrpc_task”…”�”}”(hjñ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jó�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ rpc_run_task”sbŒc.rpc_run_task”†”asbuh1hhjÎ�h²hh³jß�h´Màubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎ�h²hh³jß�h´Màubj )�”}”(hj h]”hŒ*”…”�”}”(hj žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÎ�h²hh³jß�h´Màubj3)�”}”(hŒ rpc_run_task”h]”j9)�”}”(hjžh]”hŒ rpc_run_task”…”�”}”(hj1žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-žubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÎ�h²hh³jß�h´Màubj¡ )�”}”(hŒ.(const struct rpc_task_setup *task_setup_data)”h]”j§ )�”}”(hŒ,const struct rpc_task_setup *task_setup_data”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjLžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjHžubj)�”}”(hjh]”hŒstruct”…”�”}”(hjgžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjHžubh)�”}”(hhh]”j9)�”}”(hŒrpc_task_setup”h]”hŒrpc_task_setup”…”�”}”(hj…žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‡žŒmodname”NŒ classname”Njå jè )�”}”jë ]”j žŒc.rpc_run_task”†”asbuh1hhjHžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjHžubj )�”}”(hj h]”hŒ*”…”�”}”(hj±žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjHžubj9)�”}”(hŒtask_setup_data”h]”hŒtask_setup_data”…”�”}”(hj¾žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjDžubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÎ�h²hh³jß�h´Màubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÊ�h²hh³jß�h´Màubah}”(h]”jÅ�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jß�h´MàhjÇ�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ8Allocate a new RPC task, then run rpc_execute against it”h]”hŒ8Allocate a new RPC task, then run rpc_execute against it”…”�”}”(hjèžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Màhjåžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÇ�h²hh³jß�h´Màubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŸjŒjŸj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒf**Parameters** ``const struct rpc_task_setup *task_setup_data`` pointer to task initialisation data”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj Ÿh]”hŒ Parameters”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MähjŸubjß)�”}”(hhh]”jä)�”}”(hŒT``const struct rpc_task_setup *task_setup_data`` pointer to task initialisation data”h]”(jê)�”}”(hŒ0``const struct rpc_task_setup *task_setup_data``”h]”jð)�”}”(hj)Ÿh]”hŒ,const struct rpc_task_setup *task_setup_data”…”�”}”(hj+Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mæhj#Ÿubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to task initialisation data”h]”hŒ#pointer to task initialisation data”…”�”}”(hjBŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Máhj?Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>Ÿh´Mæhj Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_call_sync (C function)”Œc.rpc_call_sync”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSint rpc_call_sync (struct rpc_clnt *clnt, const struct rpc_message *msg, int flags)”h]”j )�”}”(hŒRint rpc_call_sync(struct rpc_clnt *clnt, const struct rpc_message *msg, int flags)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjƒŸh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŸh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸh²hh³j‘Ÿh´Mûubj3)�”}”(hŒ rpc_call_sync”h]”j9)�”}”(hŒ rpc_call_sync”h]”hŒ rpc_call_sync”…”�”}”(hj¤Ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Ÿubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŸh²hh³j‘Ÿh´Mûubj¡ )�”}”(hŒA(struct rpc_clnt *clnt, const struct rpc_message *msg, int flags)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÀŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼Ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Ÿubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjÞŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jàŸŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¦ŸsbŒc.rpc_call_sync”†”asbuh1hhj¼Ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Ÿubj )�”}”(hj h]”hŒ*”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Ÿubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸Ÿubj§ )�”}”(hŒconst struct rpc_message *msg”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj. ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj. ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj. ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj. ubh)�”}”(hhh]”j9)�”}”(hŒ rpc_message”h]”hŒ rpc_message”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jm Œmodname”NŒ classname”Njå jè )�”}”jë ]”júŸŒc.rpc_call_sync”†”asbuh1hhj. ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj. ubj )�”}”(hj h]”hŒ*”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj. ubj9)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj. ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸Ÿubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹ ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸Ÿubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŸh²hh³j‘Ÿh´Mûubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj{Ÿh²hh³j‘Ÿh´Mûubah}”(h]”jvŸah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‘Ÿh´MûhjxŸh²hubjg)�”}”(hhh]”jl)�”}”(hŒPerform a synchronous RPC call”h]”hŒPerform a synchronous RPC call”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mûhj¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjxŸh²hh³j‘Ÿh´Mûubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¡jŒj¡j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒš**Parameters** ``struct rpc_clnt *clnt`` pointer to RPC client ``const struct rpc_message *msg`` RPC call parameters ``int flags`` RPC call flags”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%¡h]”hŒ Parameters”…”�”}”(hj'¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mÿhj¡ubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct rpc_clnt *clnt`` pointer to RPC client ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjD¡h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjF¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mühj>¡ubj)�”}”(hhh]”jl)�”}”(hŒpointer to RPC client”h]”hŒpointer to RPC client”…”�”}”(hj]¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY¡h´MühjZ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY¡h´Mühj;¡ubjä)�”}”(hŒ6``const struct rpc_message *msg`` RPC call parameters ”h]”(jê)�”}”(hŒ!``const struct rpc_message *msg``”h]”jð)�”}”(hj}¡h]”hŒconst struct rpc_message *msg”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mýhjw¡ubj)�”}”(hhh]”jl)�”}”(hŒRPC call parameters”h]”hŒRPC call parameters”…”�”}”(hj–¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’¡h´Mýhj“¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’¡h´Mýhj;¡ubjä)�”}”(hŒ``int flags`` RPC call flags”h]”(jê)�”}”(hŒ ``int flags``”h]”jð)�”}”(hj¶¡h]”hŒ int flags”…”�”}”(hj¸¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mÿhj°¡ubj)�”}”(hhh]”jl)�”}”(hŒRPC call flags”h]”hŒRPC call flags”…”�”}”(hjÏ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MþhjÌ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jË¡h´Mÿhj;¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_call_async (C function)”Œc.rpc_call_async”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒƒint rpc_call_async (struct rpc_clnt *clnt, const struct rpc_message *msg, int flags, const struct rpc_call_ops *tk_ops, void *data)”h]”j )�”}”(hŒ‚int rpc_call_async(struct rpc_clnt *clnt, const struct rpc_message *msg, int flags, const struct rpc_call_ops *tk_ops, void *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ¢h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¢h²hh³j¢h´Mubj3)�”}”(hŒrpc_call_async”h]”j9)�”}”(hŒrpc_call_async”h]”hŒrpc_call_async”…”�”}”(hj1¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-¢ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj ¢h²hh³j¢h´Mubj¡ )�”}”(hŒp(struct rpc_clnt *clnt, const struct rpc_message *msg, int flags, const struct rpc_call_ops *tk_ops, void *data)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjM¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjI¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjI¢ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjk¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jm¢Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j3¢sbŒc.rpc_call_async”†”asbuh1hhjI¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjI¢ubj )�”}”(hj h]”hŒ*”…”�”}”(hj™¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjI¢ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj¦¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE¢ubj§ )�”}”(hŒconst struct rpc_message *msg”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¿¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»¢ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÚ¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»¢ubh)�”}”(hhh]”j9)�”}”(hŒ rpc_message”h]”hŒ rpc_message”…”�”}”(hjø¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jú¢Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‡¢Œc.rpc_call_async”†”asbuh1hhj»¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»¢ubj )�”}”(hj h]”hŒ*”…”�”}”(hj$£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj»¢ubj9)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hj1£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE¢ubj§ )�”}”(hŒ int flags”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjJ£h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjF£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF£ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjf£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjF£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE¢ubj§ )�”}”(hŒ!const struct rpc_call_ops *tk_ops”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{£ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjš£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{£ubh)�”}”(hhh]”j9)�”}”(hŒ rpc_call_ops”h]”hŒ rpc_call_ops”…”�”}”(hj¸£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµ£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jº£Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‡¢Œc.rpc_call_async”†”asbuh1hhj{£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{£ubj )�”}”(hj h]”hŒ*”…”�”}”(hjä£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj{£ubj9)�”}”(hŒtk_ops”h]”hŒtk_ops”…”�”}”(hjñ£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE¢ubj§ )�”}”(hŒ void *data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤ubj )�”}”(hj h]”hŒ*”…”�”}”(hj&¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¤ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj3¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjE¢ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj ¢h²hh³j¢h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¢h²hh³j¢h´Mubah}”(h]”j¢ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢h´Mhj¢h²hubjg)�”}”(hhh]”jl)�”}”(hŒ Perform an asynchronous RPC call”h]”hŒ Perform an asynchronous RPC call”…”�”}”(hj]¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MhjZ¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢h²hh³j¢h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ju¤jŒju¤j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒñ**Parameters** ``struct rpc_clnt *clnt`` pointer to RPC client ``const struct rpc_message *msg`` RPC call parameters ``int flags`` RPC call flags ``const struct rpc_call_ops *tk_ops`` RPC call ops ``void *data`` user call data”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¤h]”hŒ Parameters”…”�”}”(hj�¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hjy¤ubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct rpc_clnt *clnt`` pointer to RPC client ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjž¤h]”hŒstruct rpc_clnt *clnt”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj˜¤ubj)�”}”(hhh]”jl)�”}”(hŒpointer to RPC client”h]”hŒpointer to RPC client”…”�”}”(hj·¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³¤h´Mhj´¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³¤h´Mhj•¤ubjä)�”}”(hŒ6``const struct rpc_message *msg`` RPC call parameters ”h]”(jê)�”}”(hŒ!``const struct rpc_message *msg``”h]”jð)�”}”(hjפh]”hŒconst struct rpc_message *msg”…”�”}”(hjÙ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MhjѤubj)�”}”(hhh]”jl)�”}”(hŒRPC call parameters”h]”hŒRPC call parameters”…”�”}”(hjð¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì¤h´Mhjí¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjѤubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì¤h´Mhj•¤ubjä)�”}”(hŒ``int flags`` RPC call flags ”h]”(jê)�”}”(hŒ ``int flags``”h]”jð)�”}”(hj¥h]”hŒ int flags”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj ¥ubj)�”}”(hhh]”jl)�”}”(hŒRPC call flags”h]”hŒRPC call flags”…”�”}”(hj)¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%¥h´Mhj&¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%¥h´Mhj•¤ubjä)�”}”(hŒ3``const struct rpc_call_ops *tk_ops`` RPC call ops ”h]”(jê)�”}”(hŒ%``const struct rpc_call_ops *tk_ops``”h]”jð)�”}”(hjI¥h]”hŒ!const struct rpc_call_ops *tk_ops”…”�”}”(hjK¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjG¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hjC¥ubj)�”}”(hhh]”jl)�”}”(hŒ RPC call ops”h]”hŒ RPC call ops”…”�”}”(hjb¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^¥h´M hj_¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^¥h´M hj•¤ubjä)�”}”(hŒ``void *data`` user call data”h]”(jê)�”}”(hŒ``void *data``”h]”jð)�”}”(hj‚¥h]”hŒ void *data”…”�”}”(hj„¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M"hj|¥ubj)�”}”(hhh]”jl)�”}”(hŒuser call data”h]”hŒuser call data”…”�”}”(hj›¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M!hj˜¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—¥h´M"hj•¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjy¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$rpc_prepare_reply_pages (C function)”Œc.rpc_prepare_reply_pages”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒƒvoid rpc_prepare_reply_pages (struct rpc_rqst *req, struct page **pages, unsigned int base, unsigned int len, unsigned int hdrsize)”h]”j )�”}”(hŒ‚void rpc_prepare_reply_pages(struct rpc_rqst *req, struct page **pages, unsigned int base, unsigned int len, unsigned int hdrsize)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜ¥h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjØ¥h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ¥h²hh³jê¥h´Mbubj3)�”}”(hŒrpc_prepare_reply_pages”h]”j9)�”}”(hŒrpc_prepare_reply_pages”h]”hŒrpc_prepare_reply_pages”…”�”}”(hjý¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù¥ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjØ¥h²hh³jê¥h´Mbubj¡ )�”}”(hŒf(struct rpc_rqst *req, struct page **pages, unsigned int base, unsigned int len, unsigned int hdrsize)”h]”(j§ )�”}”(hŒstruct rpc_rqst *req”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦ubh)�”}”(hhh]”j9)�”}”(hŒrpc_rqst”h]”hŒrpc_rqst”…”�”}”(hj7¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j9¦Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÿ¥sbŒc.rpc_prepare_reply_pages”†”asbuh1hhj¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hje¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦ubj9)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjr¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦ubj§ )�”}”(hŒstruct page **pages”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‹¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡¦ubh)�”}”(hhh]”j9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj©¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«¦Œmodname”NŒ classname”Njå jè )�”}”jë ]”jS¦Œc.rpc_prepare_reply_pages”†”asbuh1hhj‡¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjǦh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÕ¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‡¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hjâ¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‡¦ubj9)�”}”(hŒpages”h]”hŒpages”…”�”}”(hjï¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦ubj§ )�”}”(hŒunsigned int base”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj$§h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§ubj9)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj@§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦ubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjY§h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjU§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU§ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hju§h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjU§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU§ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj‘§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦ubj§ )�”}”(hŒunsigned int hdrsize”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjª§h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¦§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦§ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjƧh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¦§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦§ubj9)�”}”(hŒhdrsize”h]”hŒhdrsize”…”�”}”(hjâ§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjØ¥h²hh³jê¥h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÔ¥h²hh³jê¥h´Mbubah}”(h]”jÏ¥ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jê¥h´MbhjÑ¥h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2Prepare to receive a reply data payload into pages”h]”hŒ2Prepare to receive a reply data payload into pages”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mbhj ¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÑ¥h²hh³jê¥h´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j$¨jŒj$¨j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXr**Parameters** ``struct rpc_rqst *req`` RPC request to prepare ``struct page **pages`` vector of struct page pointers ``unsigned int base`` offset in first page where receive should start, in bytes ``unsigned int len`` expected size of the upper layer data payload, in bytes ``unsigned int hdrsize`` expected size of upper layer reply header, in XDR words”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj.¨h]”hŒ Parameters”…”�”}”(hj0¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mfhj(¨ubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct rpc_rqst *req`` RPC request to prepare ”h]”(jê)�”}”(hŒ``struct rpc_rqst *req``”h]”jð)�”}”(hjM¨h]”hŒstruct rpc_rqst *req”…”�”}”(hjO¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjK¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MchjG¨ubj)�”}”(hhh]”jl)�”}”(hŒRPC request to prepare”h]”hŒRPC request to prepare”…”�”}”(hjf¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jb¨h´Mchjc¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb¨h´MchjD¨ubjä)�”}”(hŒ7``struct page **pages`` vector of struct page pointers ”h]”(jê)�”}”(hŒ``struct page **pages``”h]”jð)�”}”(hj†¨h]”hŒstruct page **pages”…”�”}”(hjˆ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mdhj€¨ubj)�”}”(hhh]”jl)�”}”(hŒvector of struct page pointers”h]”hŒvector of struct page pointers”…”�”}”(hjŸ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›¨h´Mdhjœ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›¨h´MdhjD¨ubjä)�”}”(hŒP``unsigned int base`` offset in first page where receive should start, in bytes ”h]”(jê)�”}”(hŒ``unsigned int base``”h]”jð)�”}”(hj¿¨h]”hŒunsigned int base”…”�”}”(hjÁ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mehj¹¨ubj)�”}”(hhh]”jl)�”}”(hŒ9offset in first page where receive should start, in bytes”h]”hŒ9offset in first page where receive should start, in bytes”…”�”}”(hjبh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÔ¨h´MehjÕ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔ¨h´MehjD¨ubjä)�”}”(hŒM``unsigned int len`` expected size of the upper layer data payload, in bytes ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hjø¨h]”hŒunsigned int len”…”�”}”(hjú¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjö¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mfhjò¨ubj)�”}”(hhh]”jl)�”}”(hŒ7expected size of the upper layer data payload, in bytes”h]”hŒ7expected size of the upper layer data payload, in bytes”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ©h´Mfhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ©h´MfhjD¨ubjä)�”}”(hŒP``unsigned int hdrsize`` expected size of upper layer reply header, in XDR words”h]”(jê)�”}”(hŒ``unsigned int hdrsize``”h]”jð)�”}”(hj1©h]”hŒunsigned int hdrsize”…”�”}”(hj3©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhhj+©ubj)�”}”(hhh]”jl)�”}”(hŒ7expected size of upper layer reply header, in XDR words”h]”hŒ7expected size of upper layer reply header, in XDR words”…”�”}”(hjJ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MghjG©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jF©h´MhhjD¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj(¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_peeraddr (C function)”Œc.rpc_peeraddr”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQsize_t rpc_peeraddr (struct rpc_clnt *clnt, struct sockaddr *buf, size_t bufsize)”h]”j )�”}”(hŒPsize_t rpc_peeraddr(struct rpc_clnt *clnt, struct sockaddr *buf, size_t bufsize)”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjŽ©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�©Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ rpc_peeraddr”sbŒc.rpc_peeraddr”†”asbuh1hhj‡©h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡©h²hh³j¯©h´M}ubj3)�”}”(hŒ rpc_peeraddr”h]”j9)�”}”(hj¬©h]”hŒ rpc_peeraddr”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾©ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‡©h²hh³j¯©h´M}ubj¡ )�”}”(hŒ=(struct rpc_clnt *clnt, struct sockaddr *buf, size_t bufsize)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÝ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ©ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjû©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jý©Œmodname”NŒ classname”Njå jè )�”}”jë ]”jª©Œc.rpc_peeraddr”†”asbuh1hhjÙ©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ©ubj )�”}”(hj h]”hŒ*”…”�”}”(hj'ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÙ©ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj4ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÕ©ubj§ )�”}”(hŒstruct sockaddr *buf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjMªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIªubh)�”}”(hhh]”j9)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hjkªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jmªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jª©Œc.rpc_peeraddr”†”asbuh1hhjIªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIªubj )�”}”(hj h]”hŒ*”…”�”}”(hj—ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjIªubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj¤ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÕ©ubj§ )�”}”(hŒsize_t bufsize”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÀªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jª©Œc.rpc_peeraddr”†”asbuh1hhj¹ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹ªubj9)�”}”(hŒbufsize”h]”hŒbufsize”…”�”}”(hjìªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÕ©ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‡©h²hh³j¯©h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjƒ©h²hh³j¯©h´M}ubah}”(h]”j~©ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¯©h´M}hj€©h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,extract remote peer address from clnt's xprt”h]”hŒ.extract remote peer address from clnt’s xprt”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M}hj«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj€©h²hh³j¯©h´M}ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j.«jŒj.«j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒï**Parameters** ``struct rpc_clnt *clnt`` RPC client structure ``struct sockaddr *buf`` target buffer ``size_t bufsize`` length of target buffer **Description** Returns the number of bytes that are actually in the stored address.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8«h]”hŒ Parameters”…”�”}”(hj:«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M�hj2«ubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct rpc_clnt *clnt`` RPC client structure ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjW«h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjY«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjU«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M~hjQ«ubj)�”}”(hhh]”jl)�”}”(hŒRPC client structure”h]”hŒRPC client structure”…”�”}”(hjp«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jl«h´M~hjm«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jl«h´M~hjN«ubjä)�”}”(hŒ'``struct sockaddr *buf`` target buffer ”h]”(jê)�”}”(hŒ``struct sockaddr *buf``”h]”jð)�”}”(hj�«h]”hŒstruct sockaddr *buf”…”�”}”(hj’«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MhjŠ«ubj)�”}”(hhh]”jl)�”}”(hŒ target buffer”h]”hŒ target buffer”…”�”}”(hj©«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¥«h´Mhj¦«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥«h´MhjN«ubjä)�”}”(hŒ+``size_t bufsize`` length of target buffer ”h]”(jê)�”}”(hŒ``size_t bufsize``”h]”jð)�”}”(hjÉ«h]”hŒsize_t bufsize”…”�”}”(hjË«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÇ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M€hjëubj)�”}”(hhh]”jl)�”}”(hŒlength of target buffer”h]”hŒlength of target buffer”…”�”}”(hjâ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÞ«h´M€hjß«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÞ«h´M€hjN«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2«ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¬h]”hŒ Description”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M‚hj2«ubjl)�”}”(hŒDReturns the number of bytes that are actually in the stored address.”h]”hŒDReturns the number of bytes that are actually in the stored address.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M�hj2«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_peeraddr2str (C function)”Œc.rpc_peeraddr2str”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWconst char * rpc_peeraddr2str (struct rpc_clnt *clnt, enum rpc_display_format_t format)”h]”j )�”}”(hŒUconst char *rpc_peeraddr2str(struct rpc_clnt *clnt, enum rpc_display_format_t format)”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjI¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE¬h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE¬h²hh³jV¬h´M—ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hje¬h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjE¬h²hh³jV¬h´M—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE¬h²hh³jV¬h´M—ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjE¬h²hh³jV¬h´M—ubj3)�”}”(hŒrpc_peeraddr2str”h]”j9)�”}”(hŒrpc_peeraddr2str”h]”hŒrpc_peeraddr2str”…”�”}”(hj’¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjެubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjE¬h²hh³jV¬h´M—ubj¡ )�”}”(hŒ9(struct rpc_clnt *clnt, enum rpc_display_format_t format)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj®¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjª¬ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj̬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjɬubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jάŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j”¬sbŒc.rpc_peeraddr2str”†”asbuh1hhjª¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjª¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hjú¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjª¬ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjª¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦¬ubj§ )�”}”(hŒ enum rpc_display_format_t format”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­ubh)�”}”(hhh]”j9)�”}”(hŒrpc_display_format_t”h]”hŒrpc_display_format_t”…”�”}”(hj>­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@­Œmodname”NŒ classname”Njå jè )�”}”jë ]”j謌c.rpc_peeraddr2str”†”asbuh1hhj­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­ubj9)�”}”(hŒformat”h]”hŒformat”…”�”}”(hjj­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦¬ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjE¬h²hh³jV¬h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjA¬h²hh³jV¬h´M—ubah}”(h]”j<¬ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jV¬h´M—hj>¬h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.return remote peer address in printable format”h]”hŒ.return remote peer address in printable format”…”�”}”(hj”­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M—hj‘­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj>¬h²hh³jV¬h´M—ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬­jŒj¬­j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX9**Parameters** ``struct rpc_clnt *clnt`` RPC client structure ``enum rpc_display_format_t format`` address format **Description** NB: the lifetime of the memory referenced by the returned pointer is the same as the rpc_xprt itself. As long as the caller uses this pointer, it must hold the RCU read lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶­h]”hŒ Parameters”…”�”}”(hj¸­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M›hj°­ubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct rpc_clnt *clnt`` RPC client structure ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjÕ­h]”hŒstruct rpc_clnt *clnt”…”�”}”(hj×­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M˜hjÏ­ubj)�”}”(hhh]”jl)�”}”(hŒRPC client structure”h]”hŒRPC client structure”…”�”}”(hjî­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jê­h´M˜hjë­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jê­h´M˜hjÌ­ubjä)�”}”(hŒ4``enum rpc_display_format_t format`` address format ”h]”(jê)�”}”(hŒ$``enum rpc_display_format_t format``”h]”jð)�”}”(hj®h]”hŒ enum rpc_display_format_t format”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M™hj®ubj)�”}”(hhh]”jl)�”}”(hŒaddress format”h]”hŒaddress format”…”�”}”(hj'®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#®h´M™hj$®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#®h´M™hjÌ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°­ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjI®h]”hŒ Description”…”�”}”(hjK®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjG®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M›hj°­ubjl)�”}”(hŒ¯NB: the lifetime of the memory referenced by the returned pointer is the same as the rpc_xprt itself. As long as the caller uses this pointer, it must hold the RCU read lock.”h]”hŒ¯NB: the lifetime of the memory referenced by the returned pointer is the same as the rpc_xprt itself. As long as the caller uses this pointer, it must hold the RCU read lock.”…”�”}”(hj_®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mšhj°­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_localaddr (C function)”Œc.rpc_localaddr”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint rpc_localaddr (struct rpc_clnt *clnt, struct sockaddr *buf, size_t buflen)”h]”j )�”}”(hŒMint rpc_localaddr(struct rpc_clnt *clnt, struct sockaddr *buf, size_t buflen)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjŽ®h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŠ®h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠ®h²hh³jœ®h´Mubj3)�”}”(hŒ rpc_localaddr”h]”j9)�”}”(hŒ rpc_localaddr”h]”hŒ rpc_localaddr”…”�”}”(hj¯®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«®ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŠ®h²hh³jœ®h´Mubj¡ )�”}”(hŒ<(struct rpc_clnt *clnt, struct sockaddr *buf, size_t buflen)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjË®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇ®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ®ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjé®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j뮌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j±®sbŒc.rpc_localaddr”†”asbuh1hhjÇ®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ®ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÇ®ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj$¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîubj§ )�”}”(hŒstruct sockaddr *buf”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj=¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9¯ubh)�”}”(hhh]”j9)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hj[¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]¯Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¯Œc.rpc_localaddr”†”asbuh1hhj9¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9¯ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‡¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9¯ubj9)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj”¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîubj§ )�”}”(hŒ size_t buflen”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj°¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j²¯Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¯Œc.rpc_localaddr”†”asbuh1hhj©¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjίh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©¯ubj9)�”}”(hŒbuflen”h]”hŒbuflen”…”�”}”(hjܯh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŠ®h²hh³jœ®h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj†®h²hh³jœ®h´Mubah}”(h]”j�®ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jœ®h´Mhjƒ®h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1discover local endpoint address for an RPC client”h]”hŒ1discover local endpoint address for an RPC client”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjƒ®h²hh³jœ®h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j°jŒj°j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXM**Parameters** ``struct rpc_clnt *clnt`` RPC client structure ``struct sockaddr *buf`` target buffer ``size_t buflen`` size of target buffer, in bytes **Description** Returns zero and fills in "buf" and "buflen" if successful; otherwise, a negative errno is returned. This works even if the underlying transport is not currently connected, or if the upper layer never previously provided a source address. The result of this function call is transient: multiple calls in succession may give different results, depending on how local networking configuration changes over time.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj(°h]”hŒ Parameters”…”�”}”(hj*°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj"°ubjß)�”}”(hhh]”(jä)�”}”(hŒ/``struct rpc_clnt *clnt`` RPC client structure ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjG°h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjI°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MhjA°ubj)�”}”(hhh]”jl)�”}”(hŒRPC client structure”h]”hŒRPC client structure”…”�”}”(hj`°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\°h´Mhj]°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\°h´Mhj>°ubjä)�”}”(hŒ'``struct sockaddr *buf`` target buffer ”h]”(jê)�”}”(hŒ``struct sockaddr *buf``”h]”jð)�”}”(hj€°h]”hŒstruct sockaddr *buf”…”�”}”(hj‚°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhjz°ubj)�”}”(hhh]”jl)�”}”(hŒ target buffer”h]”hŒ target buffer”…”�”}”(hj™°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•°h´Mhj–°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•°h´Mhj>°ubjä)�”}”(hŒ2``size_t buflen`` size of target buffer, in bytes ”h]”(jê)�”}”(hŒ``size_t buflen``”h]”jð)�”}”(hj¹°h]”hŒ size_t buflen”…”�”}”(hj»°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj³°ubj)�”}”(hhh]”jl)�”}”(hŒsize of target buffer, in bytes”h]”hŒsize of target buffer, in bytes”…”�”}”(hjÒ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jΰh´Mhjϰubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³°ubeh}”(h]”h •]”h"]”h$]”h&]”uh1jãh³jΰh´Mhj>°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"°ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjô°h]”hŒ Description”…”�”}”(hjö°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjò°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj"°ubjl)�”}”(hŒdReturns zero and fills in "buf" and "buflen" if successful; otherwise, a negative errno is returned.”h]”hŒlReturns zero and fills in “bufâ€� and “buflenâ€� if successful; otherwise, a negative errno is returned.”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mhj"°ubjl)�”}”(hŒ‰This works even if the underlying transport is not currently connected, or if the upper layer never previously provided a source address.”h]”hŒ‰This works even if the underlying transport is not currently connected, or if the upper layer never previously provided a source address.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M!hj"°ubjl)�”}”(hŒªThe result of this function call is transient: multiple calls in succession may give different results, depending on how local networking configuration changes over time.”h]”hŒªThe result of this function call is transient: multiple calls in succession may give different results, depending on how local networking configuration changes over time.”…”�”}”(hj(±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M$hj"°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_net_ns (C function)”Œ c.rpc_net_ns”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/struct net * rpc_net_ns (struct rpc_clnt *clnt)”h]”j )�”}”(hŒ-struct net *rpc_net_ns(struct rpc_clnt *clnt)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjW±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjS±h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjS±h²hh³jd±h´MQubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjv±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jx±Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ rpc_net_ns”sbŒ c.rpc_net_ns”†”asbuh1hhjS±h²hh³jd±h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjS±h²hh³jd±h´MQubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjS±h²hh³jd±h´MQubj3)�”}”(hŒ rpc_net_ns”h]”j9)�”}”(hj”±h]”hŒ rpc_net_ns”…”�”}”(hj¶±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²±ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjS±h²hh³jd±h´MQubj¡ )�”}”(hŒ(struct rpc_clnt *clnt)”h]”j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjѱh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjͱubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjͱubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjï±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjì±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñ±Œmodname”NŒ classname”Njå jè )�”}”jë ]”j’±Œ c.rpc_net_ns”†”asbuh1hhjͱubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjͱubj )�”}”(hj h]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjͱubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj(²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjͱubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjɱubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjS±h²hh³jd±h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjO±h²hh³jd±h´MQubah}”(h]”jJ±ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jd±h´MQhjL±h²hubjg)�”}”(hhh]”jl)�”}”(hŒ-Get the network namespace for this RPC client”h]”hŒ-Get the network namespace for this RPC client”…”�”}”(hjR²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MQhjO²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjL±h²hh³jd±h´MQubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jj²jŒjj²j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ?**Parameters** ``struct rpc_clnt *clnt`` RPC client to query”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjt²h]”hŒ Parameters”…”�”}”(hjv²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjr²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MUhjn²ubjß)�”}”(hhh]”jä)�”}”(hŒ-``struct rpc_clnt *clnt`` RPC client to query”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hj“²h]”hŒstruct rpc_clnt *clnt”…”�”}”(hj•²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MWhj�²ubj)�”}”(hhh]”jl)�”}”(hŒRPC client to query”h]”hŒRPC client to query”…”�”}”(hj¬²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MRhj©²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨²h´MWhjвubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjn²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_max_payload (C function)”Œc.rpc_max_payload”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.size_t rpc_max_payload (struct rpc_clnt *clnt)”h]”j )�”}”(hŒ-size_t rpc_max_payload(struct rpc_clnt *clnt)”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjð²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjí²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jò²Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œrpc_max_payload”sbŒc.rpc_max_payload”†”asbuh1hhjé²h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Maubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé²h²hh³j³h´Maubj3)�”}”(hŒrpc_max_payload”h]”j9)�”}”(hj³h]”hŒrpc_max_payload”…”�”}”(hj$³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ³ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjé²h²hh³j³h´Maubj¡ )�”}”(hŒ(struct rpc_clnt *clnt)”h]”j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj?³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;³ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj]³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZ³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j_³Œmodname”NŒ classname”Njå jè )�”}”jë ]”j ³Œc.rpc_max_payload”†”asbuh1hhj;³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;³ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj;³ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj–³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj7³ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjé²h²hh³j³h´Maubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjå²h²hh³j³h´Maubah}”(h]”jà²ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j³h´Mahjâ²h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2Get maximum payload size for a transport, in bytes”h]”hŒ2Get maximum payload size for a transport, in bytes”…”�”}”(hjÀ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mahj½³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjâ²h²hh³j³h´Maubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jسjŒjسj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX+**Parameters** ``struct rpc_clnt *clnt`` RPC client to query **Description** For stream transports, this is one RPC record fragment (see RFC 1831), as we don't support multi-record requests yet. For datagram transports, this is the size of an IP packet minus the IP, UDP, and RPC header sizes.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjâ³h]”hŒ Parameters”…”�”}”(hjä³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjà³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mehjܳubjß)�”}”(hhh]”jä)�”}”(hŒ.``struct rpc_clnt *clnt`` RPC client to query ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hj´h]”hŒstruct rpc_clnt *clnt”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mbhjû³ubj)�”}”(hhh]”jl)�”}”(hŒRPC client to query”h]”hŒRPC client to query”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´h´Mbhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjû³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´h´Mbhjø³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjܳubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj<´h]”hŒ Description”…”�”}”(hj>´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mdhjܳubjl)�”}”(hŒÙFor stream transports, this is one RPC record fragment (see RFC 1831), as we don't support multi-record requests yet. For datagram transports, this is the size of an IP packet minus the IP, UDP, and RPC header sizes.”h]”hŒÛFor stream transports, this is one RPC record fragment (see RFC 1831), as we don’t support multi-record requests yet. For datagram transports, this is the size of an IP packet minus the IP, UDP, and RPC header sizes.”…”�”}”(hjR´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mchjܳubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_max_bc_payload (C function)”Œc.rpc_max_bc_payload”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1size_t rpc_max_bc_payload (struct rpc_clnt *clnt)”h]”j )�”}”(hŒ0size_t rpc_max_bc_payload(struct rpc_clnt *clnt)”h]”(h)�”}”(hhh]”j9)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj„´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j†´Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œrpc_max_bc_payload”sbŒc.rpc_max_bc_payload”†”asbuh1hhj}´h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Muubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}´h²hh³j¥´h´Muubj3)�”}”(hŒrpc_max_bc_payload”h]”j9)�”}”(hj¢´h]”hŒrpc_max_bc_payload”…”�”}”(hj¸´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´´ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj}´h²hh³j¥´h´Muubj¡ )�”}”(hŒ(struct rpc_clnt *clnt)”h]”j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÓ´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ´ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjñ´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jó´Œmodname”NŒ classname”Njå jè )�”}”jë ]”j ´Œc.rpc_max_bc_payload”†”asbuh1hhjÏ´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ´ubj )�”}”(hj h]”hŒ*”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÏ´ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj*µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjË´ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj}´h²hh³j¥´h´Muubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjy´h²hh³j¥´h´Muubah}”(h]”jt´ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¥´h´Muhjv´h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Get maximum backchannel payload size, in bytes”h]”hŒ.Get maximum backchannel payload size, in bytes”…”�”}”(hjTµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´MuhjQµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjv´h²hh³j¥´h´Muubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jlµjŒjlµj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ?**Parameters** ``struct rpc_clnt *clnt`` RPC client to query”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvµh]”hŒ Parameters”…”�”}”(hjxµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtµubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Myhjpµubjß)�”}”(hhh]”jä)�”}”(hŒ-``struct rpc_clnt *clnt`` RPC client to query”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hj•µh]”hŒstruct rpc_clnt *clnt”…”�”}”(hj—µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“µubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M{hj�µubj)�”}”(hhh]”jl)�”}”(hŒRPC client to query”h]”hŒRPC client to query”…”�”}”(hj®µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mvhj«µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªµh´M{hjŒµubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_force_rebind (C function)”Œc.rpc_force_rebind”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-void rpc_force_rebind (struct rpc_clnt *clnt)”h]”j )�”}”(hŒ,void rpc_force_rebind(struct rpc_clnt *clnt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjïµh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjëµh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþµh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëµh²hh³jýµh´M“ubj3)�”}”(hŒrpc_force_rebind”h]”j9)�”}”(hŒrpc_force_rebind”h]”hŒrpc_force_rebind”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¶ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjëµh²hh³jýµh´M“ubj¡ )�”}”(hŒ(struct rpc_clnt *clnt)”h]”j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj,¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(¶ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjJ¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjG¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jL¶Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¶sbŒc.rpc_force_rebind”†”asbuh1hhj(¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(¶ubj )�”}”(hj h]”hŒ*”…”�”}”(hjx¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj(¶ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj…¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj$¶ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjëµh²hh³jýµh´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjçµh²hh³jýµh´M“ubah}”(h]”jâµah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jýµh´M“hjäµh²hubjg)�”}”(hhh]”jl)�”}”(hŒ6force transport to check that remote port is unchanged”h]”hŒ6force transport to check that remote port is unchanged”…”�”}”(hj¯¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M“hj¬¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjäµh²hh³jýµh´M“ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jǶjŒjǶj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hŒ<**Parameters** ``struct rpc_clnt *clnt`` client to rebind”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjѶh]”hŒ Parameters”…”�”}”(hjÓ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj϶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M—hj˶ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct rpc_clnt *clnt`` client to rebind”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjð¶h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjò¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjî¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M™hjê¶ubj)�”}”(hhh]”jl)�”}”(hŒclient to rebind”h]”hŒclient to rebind”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M”hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjê¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·h´M™hjç¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj˶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'rpc_clnt_test_and_add_xprt (C function)”Œc.rpc_clnt_test_and_add_xprt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ€int rpc_clnt_test_and_add_xprt (struct rpc_clnt *clnt, struct rpc_xprt_switch *xps, struct rpc_xprt *xprt, void *in_max_connect)”h]”j )�”}”(hŒint rpc_clnt_test_and_add_xprt(struct rpc_clnt *clnt, struct rpc_xprt_switch *xps, struct rpc_xprt *xprt, void *in_max_connect)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjJ·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjF·h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¥ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF·h²hh³jX·h´M¥ ubj3)�”}”(hŒrpc_clnt_test_and_add_xprt”h]”j9)�”}”(hŒrpc_clnt_test_and_add_xprt”h]”hŒrpc_clnt_test_and_add_xprt”…”�”}”(hjk·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjg·ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjF·h²hh³jX·h´M¥ ubj¡ )�”}”(hŒa(struct rpc_clnt *clnt, struct rpc_xprt_switch *xps, struct rpc_xprt *xprt, void *in_max_connect)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‡·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ·ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj¥·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§·Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jm·sbŒc.rpc_clnt_test_and_add_xprt”†”asbuh1hhjƒ·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ·ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓ·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒ·ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hjà·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubj§ )�”}”(hŒstruct rpc_xprt_switch *xps”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjù·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõ·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ·ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt_switch”h]”hŒrpc_xprt_switch”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÁ·Œc.rpc_clnt_test_and_add_xprt”†”asbuh1hhjõ·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ·ubj )�”}”(hj h]”hŒ*”…”�”}”(hjC¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõ·ubj9)�”}”(hŒxps”h]”hŒxps”…”�”}”(hjP¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubj§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hji¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje¸ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj‡¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰¸Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÁ·Œc.rpc_clnt_test_and_add_xprt”†”asbuh1hhje¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje¸ubj )�”}”(hj h]”hŒ*”…”�”}”(hj³¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hje¸ubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjÀ¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubj§ )�”}”(hŒvoid *in_max_connect”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÙ¸h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÕ¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕ¸ubj )�”}”(hj h]”hŒ*”…”�”}”(hjõ¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÕ¸ubj9)�”}”(hŒin_max_connect”h]”hŒin_max_connect”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjF·h²hh³jX·h´M¥ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjB·h²hh³jX·h´M¥ ubah}”(h]”j=·ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jX·h´M¥ hj?·h²hubjg)�”}”(hhh]”jl)�”}”(hŒ*Test and add a new transport to a rpc_clnt”h]”hŒ*Test and add a new transport to a rpc_clnt”…”�”}”(hj,¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¥ hj)¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?·h²hh³jX·h´M¥ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jD¹jŒjD¹j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct rpc_clnt *clnt`` pointer to struct rpc_clnt ``struct rpc_xprt_switch *xps`` pointer to struct rpc_xprt_switch, ``struct rpc_xprt *xprt`` pointer struct rpc_xprt ``void *in_max_connect`` pointer to the max_connect value for the passed in xprt transport”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjN¹h]”hŒ Parameters”…”�”}”(hjP¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjL¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M© hjH¹ubjß)�”}”(hhh]”(jä)�”}”(hŒ5``struct rpc_clnt *clnt`` pointer to struct rpc_clnt ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hjm¹h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjo¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjk¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¦ hjg¹ubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct rpc_clnt”h]”hŒpointer to struct rpc_clnt”…”�”}”(hj†¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚¹h´M¦ hjƒ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚¹h´M¦ hjd¹ubjä)�”}”(hŒC``struct rpc_xprt_switch *xps`` pointer to struct rpc_xprt_switch, ”h]”(jê)�”}”(hŒ``struct rpc_xprt_switch *xps``”h]”jð)�”}”(hj¦¹h]”hŒstruct rpc_xprt_switch *xps”…”�”}”(hj¨¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M§ hj ¹ubj)�”}”(hhh]”jl)�”}”(hŒ"pointer to struct rpc_xprt_switch,”h]”hŒ"pointer to struct rpc_xprt_switch,”…”�”}”(hj¿¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»¹h´M§ hj¼¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»¹h´M§ hjd¹ubjä)�”}”(hŒ2``struct rpc_xprt *xprt`` pointer struct rpc_xprt ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjß¹h]”hŒstruct rpc_xprt *xprt”…”�”}”(hjá¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjݹubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M¨ hjÙ¹ubj)�”}”(hhh]”jl)�”}”(hŒpointer struct rpc_xprt”h]”hŒpointer struct rpc_xprt”…”�”}”(hjø¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jô¹h´M¨ hjõ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jô¹h´M¨ hjd¹ubjä)�”}”(hŒZ``void *in_max_connect`` pointer to the max_connect value for the passed in xprt transport”h]”(jê)�”}”(hŒ``void *in_max_connect``”h]”jð)�”}”(hjºh]”hŒvoid *in_max_connect”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mª hjºubj)�”}”(hhh]”jl)�”}”(hŒApointer to the max_connect value for the passed in xprt transport”h]”hŒApointer to the max_connect value for the passed in xprt transport”…”�”}”(hj1ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M© hj.ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-ºh´Mª hjd¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjH¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ-rpc_clnt_setup_test_and_add_xprt (C function)”Œ"c.rpc_clnt_setup_test_and_add_xprt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ|int rpc_clnt_setup_test_and_add_xprt (struct rpc_clnt *clnt, struct rpc_xprt_switch *xps, struct rpc_xprt *xprt, void *data)”h]”j )�”}”(hŒ{int rpc_clnt_setup_test_and_add_xprt(struct rpc_clnt *clnt, struct rpc_xprt_switch *xps, struct rpc_xprt *xprt, void *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjrºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjnºh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mí ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnºh²hh³j€ºh´Mí ubj3)�”}”(hŒ rpc_clnt_setup_test_and_add_xprt”h]”j9)�”}”(hŒ rpc_clnt_setup_test_and_add_xprt”h]”hŒ rpc_clnt_setup_test_and_add_xprt”…”�”}”(hj“ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ºubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjnºh²hh³j€ºh´Mí ubj¡ )�”}”(hŒW(struct rpc_clnt *clnt, struct rpc_xprt_switch *xps, struct rpc_xprt *xprt, void *data)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¯ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj«ºubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjͺh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjʺubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jϺŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j•ºsbŒ"c.rpc_clnt_setup_test_and_add_xprt”†”asbuh1hhj«ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj«ºubj )�”}”(hj h]”hŒ*”…”�”}”(hjûºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj«ºubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj§ºubj§ )�”}”(hŒstruct rpc_xprt_switch *xps”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj!»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt_switch”h]”hŒrpc_xprt_switch”…”�”}”(hj?»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jA»Œmodname”NŒ classname”Njå jè )�”}”jë ]”j麌"c.rpc_clnt_setup_test_and_add_xprt”†”asbuh1hhj»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»ubj )�”}”(hj h]”hŒ*”…”�”}”(hjk»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj»ubj9)�”}”(hŒxps”h]”hŒxps”…”�”}”(hjx»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj§ºubj§ )�”}”(hŒstruct rpc_xprt *xprt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‘»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�»ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hj¯»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j±»Œmodname”NŒ classname”Njå jè )�”}”jë ]”j麌"c.rpc_clnt_setup_test_and_add_xprt”†”asbuh1hhj�»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�»ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÛ»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�»ubj9)�”}”(hŒxprt”h]”hŒxprt”…”�”}”(hjè»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj§ºubj§ )�”}”(hŒ void *data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjý»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjý»ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjý»ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj*¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj§ºubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjnºh²hh³j€ºh´Mí ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjjºh²hh³j€ºh´Mí ubah}”(h]”jeºah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j€ºh´Mí hjgºh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jfhjgºh²hh³j€ºh´Mí ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j]¼jŒj]¼j�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hX¶**Parameters** ``struct rpc_clnt *clnt`` struct rpc_clnt to get the new transport ``struct rpc_xprt_switch *xps`` the rpc_xprt_switch to hold the new transport ``struct rpc_xprt *xprt`` the rpc_xprt to test ``void *data`` a struct rpc_add_xprt_test pointer that holds the test function and test function call data **Description** This is an rpc_clnt_add_xprt setup() function which returns 1 so: 1) caller of the test function must dereference the rpc_xprt_switch and the rpc_xprt. 2) test function must call rpc_xprt_switch_add_xprt, usually in the rpc_call_done routine. Upon success (return of 1), the test function adds the new transport to the rpc_clnt xprt switch”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjg¼h]”hŒ Parameters”…”�”}”(hji¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhje¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mñ hja¼ubjß)�”}”(hhh]”(jä)�”}”(hŒC``struct rpc_clnt *clnt`` struct rpc_clnt to get the new transport ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hj†¼h]”hŒstruct rpc_clnt *clnt”…”�”}”(hjˆ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mø hj€¼ubj)�”}”(hhh]”jl)�”}”(hŒ(struct rpc_clnt to get the new transport”h]”hŒ(struct rpc_clnt to get the new transport”…”�”}”(hjŸ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›¼h´Mø hjœ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›¼h´Mø hj}¼ubjä)�”}”(hŒN``struct rpc_xprt_switch *xps`` the rpc_xprt_switch to hold the new transport ”h]”(jê)�”}”(hŒ``struct rpc_xprt_switch *xps``”h]”jð)�”}”(hj¿¼h]”hŒstruct rpc_xprt_switch *xps”…”�”}”(hjÁ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mù hj¹¼ubj)�”}”(hhh]”jl)�”}”(hŒ-the rpc_xprt_switch to hold the new transport”h]”hŒ-the rpc_xprt_switch to hold the new transport”…”�”}”(hjؼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÔ¼h´Mù hjÕ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔ¼h´Mù hj}¼ubjä)�”}”(hŒ/``struct rpc_xprt *xprt`` the rpc_xprt to test ”h]”(jê)�”}”(hŒ``struct rpc_xprt *xprt``”h]”jð)�”}”(hjø¼h]”hŒstruct rpc_xprt *xprt”…”�”}”(hjú¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjö¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mú hjò¼ubj)�”}”(hhh]”jl)�”}”(hŒthe rpc_xprt to test”h]”hŒthe rpc_xprt to test”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ½h´Mú hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ½h´Mú hj}¼ubjä)�”}”(hŒk``void *data`` a struct rpc_add_xprt_test pointer that holds the test function and test function call data ”h]”(jê)�”}”(hŒ``void *data``”h]”jð)�”}”(hj1½h]”hŒ void *data”…”�”}”(hj3½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mü hj+½ubj)�”}”(hhh]”jl)�”}”(hŒ[a struct rpc_add_xprt_test pointer that holds the test function and test function call data”h]”hŒ[a struct rpc_add_xprt_test pointer that holds the test function and test function call data”…”�”}”(hjJ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mû hjG½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jF½h´Mü hj}¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhja¼ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjm½h]”hŒ Description”…”�”}”(hjo½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjk½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mþ hja¼ubjß)�”}”(hhh]”jä)�”}”(hŒóThis is an rpc_clnt_add_xprt setup() function which returns 1 so: 1) caller of the test function must dereference the rpc_xprt_switch and the rpc_xprt. 2) test function must call rpc_xprt_switch_add_xprt, usually in the rpc_call_done routine. ”h]”(jê)�”}”(hŒAThis is an rpc_clnt_add_xprt setup() function which returns 1 so:”h]”hŒAThis is an rpc_clnt_add_xprt setup() function which returns 1 so:”…”�”}”(hjнh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mò hj†½ubj)�”}”(hhh]”jl)�”}”(hŒ°1) caller of the test function must dereference the rpc_xprt_switch and the rpc_xprt. 2) test function must call rpc_xprt_switch_add_xprt, usually in the rpc_call_done routine.”h]”hŒ°1) caller of the test function must dereference the rpc_xprt_switch and the rpc_xprt. 2) test function must call rpc_xprt_switch_add_xprt, usually in the rpc_call_done routine.”…”�”}”(hjœ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mï hj™½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜½h´Mò hjƒ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhja¼ubjl)�”}”(hŒ`Upon success (return of 1), the test function adds the new transport to the rpc_clnt xprt switch”h]”hŒ`Upon success (return of 1), the test function adds the new transport to the rpc_clnt xprt switch”…”�”}”(hj½½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´Mô hja¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrpc_clnt_add_xprt (C function)”Œc.rpc_clnt_add_xprt”hNt”auh1híhj2²h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ­int rpc_clnt_add_xprt (struct rpc_clnt *clnt, struct xprt_create *xprtargs, int (*setup)(struct rpc_clnt *, struct rpc_xprt_switch *, struct rpc_xprt *, void *), void *data)”h]”j )�”}”(hŒ¨int rpc_clnt_add_xprt(struct rpc_clnt *clnt, struct xprt_create *xprtargs, int (*setup)(struct rpc_clnt*, struct rpc_xprt_switch*, struct rpc_xprt*, void*), void *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjì½h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjè½h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjè½h²hh³jú½h´M ubj3)�”}”(hŒrpc_clnt_add_xprt”h]”j9)�”}”(hŒrpc_clnt_add_xprt”h]”hŒrpc_clnt_add_xprt”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¾ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjè½h²hh³jú½h´M ubj¡ )�”}”(hŒ“(struct rpc_clnt *clnt, struct xprt_create *xprtargs, int (*setup)(struct rpc_clnt*, struct rpc_xprt_switch*, struct rpc_xprt*, void*), void *data)”h]”(j§ )�”}”(hŒstruct rpc_clnt *clnt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj)¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%¾ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hjG¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjD¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jI¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¾sbŒc.rpc_clnt_add_xprt”†”asbuh1hhj%¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hju¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj%¾ubj9)�”}”(hŒclnt”h]”hŒclnt”…”�”}”(hj‚¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!¾ubj§ )�”}”(hŒstruct xprt_create *xprtargs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj›¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—¾ubh)�”}”(hhh]”j9)�”}”(hŒ xprt_create”h]”hŒ xprt_create”…”�”}”(hj¹¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”jc¾Œc.rpc_clnt_add_xprt”†”asbuh1hhj—¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hjå¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—¾ubj9)�”}”(hŒxprtargs”h]”hŒxprtargs”…”�”}”(hjò¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!¾ubj§ )�”}”(hŒPint (*setup)(struct rpc_clnt*, struct rpc_xprt_switch*, struct rpc_xprt*, void*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ubj )�”}”(hjh]”hŒ(”…”�”}”(hj'¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj )�”}”(hj h]”hŒ*”…”�”}”(hj4¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj9)�”}”(hŒsetup”h]”hŒsetup”…”�”}”(hjA¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjO¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj )�”}”(hjh]”hŒ(”…”�”}”(hj\¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj)�”}”(hjh]”hŒstruct”…”�”}”(hji¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ubh)�”}”(hhh]”j9)�”}”(hŒrpc_clnt”h]”hŒrpc_clnt”…”�”}”(hj‡¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰¿Œmodname”NŒ classname”Njå jè )�”}”jë ]”jc¾Œc.rpc_clnt_add_xprt”†”asbuh1hhj¿ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hj²¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÍ¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt_switch”h]”hŒrpc_xprt_switch”…”�”}”(hjë¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjè¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jí¿Œmodname”NŒ classname”Njå jè )�”}”jë ]”jc¾Œc.rpc_clnt_add_xprt”†”asbuh1hhj¿ubj )�”}”(hj h]”hŒ*”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj1Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ubh)�”}”(hhh]”j9)�”}”(hŒrpc_xprt”h]”hŒrpc_xprt”…”�”}”(hjOÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jQÀŒmodname”NŒ classname”Njå jè )�”}”jë ]”jc¾Œc.rpc_clnt_add_xprt”†”asbuh1hhj¿ubj )�”}”(hj h]”hŒ*”…”�”}”(hjmÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjzÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj•Àh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¿ubj )�”}”(hj h]”hŒ*”…”�”}”(hj£Àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj°Àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!¾ubj§ )�”}”(hŒ void *data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÈÀh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÄÀubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄÀubj )�”}”(hj h]”hŒ*”…”�”}”(hjäÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÄÀubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjñÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!¾ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjè½h²hh³jú½h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjä½h²hh³jú½h´M ubah}”(h]”jß½ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jú½h´M hjá½h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Add a new transport to a rpc_clnt”h]”hŒ!Add a new transport to a rpc_clnt”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hjÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjá½h²hh³jú½h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j3ÁjŒj3Áj�‰jމj�‰uh1hþh²hhj2²h³Nh´Nubj‘)�”}”(hXù**Parameters** ``struct rpc_clnt *clnt`` pointer to struct rpc_clnt ``struct xprt_create *xprtargs`` pointer to struct xprt_create ``int (*setup)(struct rpc_clnt *, struct rpc_xprt_switch *, struct rpc_xprt *, void *)`` callback to test and/or set up the connection ``void *data`` pointer to setup function data **Description** Creates a new transport using the parameters set in args and adds it to clnt. If ping is set, then test that connectivity succeeds before adding the new transport.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj=Áh]”hŒ Parameters”…”�”}”(hj?Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj;Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M! hj7Áubjß)�”}”(hhh]”(jä)�”}”(hŒ5``struct rpc_clnt *clnt`` pointer to struct rpc_clnt ”h]”(jê)�”}”(hŒ``struct rpc_clnt *clnt``”h]”jð)�”}”(hj\Áh]”hŒstruct rpc_clnt *clnt”…”�”}”(hj^Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hjVÁubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct rpc_clnt”h]”hŒpointer to struct rpc_clnt”…”�”}”(hjuÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqÁh´M hjrÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jqÁh´M hjSÁubjä)�”}”(hŒ?``struct xprt_create *xprtargs`` pointer to struct xprt_create ”h]”(jê)�”}”(hŒ ``struct xprt_create *xprtargs``”h]”jð)�”}”(hj•Áh]”hŒstruct xprt_create *xprtargs”…”�”}”(hj—Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hj�Áubj)�”}”(hhh]”jl)�”}”(hŒpointer to struct xprt_create”h]”hŒpointer to struct xprt_create”…”�”}”(hj®Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªÁh´M hj«Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªÁh´M hjSÁubjä)�”}”(hŒ‡``int (*setup)(struct rpc_clnt *, struct rpc_xprt_switch *, struct rpc_xprt *, void *)`` callback to test and/or set up the connection ”h]”(jê)�”}”(hŒX``int (*setup)(struct rpc_clnt *, struct rpc_xprt_switch *, struct rpc_xprt *, void *)``”h]”jð)�”}”(hjÎÁh]”hŒTint (*setup)(struct rpc_clnt *, struct rpc_xprt_switch *, struct rpc_xprt *, void *)”…”�”}”(hjÐÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M hjÈÁubj)�”}”(hhh]”jl)�”}”(hŒ-callback to test and/or set up the connection”h]”hŒ-callback to test and/or set up the connection”…”�”}”(hjçÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jãÁh´M hjäÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãÁh´M hjSÁubjä)�”}”(hŒ.``void *data`` pointer to setup function data ”h]”(jê)�”}”(hŒ``void *data``”h]”jð)�”}”(hjÂh]”hŒ void *data”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M! hjÂubj)�”}”(hhh]”jl)�”}”(hŒpointer to setup function data”h]”hŒpointer to setup function data”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂh´M! hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂh´M! hjSÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj7Áubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjBÂh]”hŒ Description”…”�”}”(hjDÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj@Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M# hj7Áubjl)�”}”(hŒ£Creates a new transport using the parameters set in args and adds it to clnt. If ping is set, then test that connectivity succeeds before adding the new transport.”h]”hŒ£Creates a new transport using the parameters set in args and adds it to clnt. If ping is set, then test that connectivity succeeds before adding the new transport.”…”�”}”(hjXÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒQ/var/lib/git/docbuild/linux/Documentation/networking/kapi:83: ./net/sunrpc/clnt.c”h´M" hj7Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj2²h²hh³Nh´Nubeh}”(h]”Œsun-rpc-subsystem”ah ]”h"]”Œsun rpc subsystem”ah$]”h&]”uh1hµhhËh²hh³hÊh´K9ubeh}”(h]”Œlinux-networking”ah ]”h"]”Œlinux networking”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒNetwork device support”h]”hŒNetwork device support”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj~Âh²hh³hÊh´KWubh¶)�”}”(hhh]”(h»)�”}”(hŒDriver Support”h]”hŒDriver Support”…”�”}”(hj’Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj�Âh²hh³hÊh´KZubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_add_pack (C function)”Œc.dev_add_pack”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*void dev_add_pack (struct packet_type *pt)”h]”j )�”}”(hŒ)void dev_add_pack(struct packet_type *pt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¹Âh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjµÂh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MŠubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµÂh²hh³jÇÂh´MŠubj3)�”}”(hŒ dev_add_pack”h]”j9)�”}”(hŒ dev_add_pack”h]”hŒ dev_add_pack”…”�”}”(hjÚÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖÂubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjµÂh²hh³jÇÂh´MŠubj¡ )�”}”(hŒ(struct packet_type *pt)”h]”j§ )�”}”(hŒstruct packet_type *pt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjöÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjòÂubh)�”}”(hhh]”j9)�”}”(hŒ packet_type”h]”hŒ packet_type”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÃŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÜÂsbŒc.dev_add_pack”†”asbuh1hhjòÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Ãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjòÂubj )�”}”(hj h]”hŒ*”…”�”}”(hjBÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjòÂubj9)�”}”(hŒpt”h]”hŒpt”…”�”}”(hjOÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîÂubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjµÂh²hh³jÇÂh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj±Âh²hh³jÇÂh´MŠubah}”(h]”j¬Âah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÇÂh´MŠhj®Âh²hubjg)�”}”(hhh]”jl)�”}”(hŒadd packet handler”h]”hŒadd packet handler”…”�”}”(hjyÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MŠhjvÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®Âh²hh³jÇÂh´MŠubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‘ÃjŒj‘Ãj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXÑ**Parameters** ``struct packet_type *pt`` packet type declaration **Description** Add a protocol handler to the networking stack. The passed :c:type:`packet_type` is linked into kernel lists and may not be freed until it has been removed from the kernel lists. This call does not sleep therefore it can not guarantee all CPU's that are in middle of receiving packets will see the new packet type (until the next received packet).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj›Ãh]”hŒ Parameters”…”�”}”(hj�Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MŽhj•Ãubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct packet_type *pt`` packet type declaration ”h]”(jê)�”}”(hŒ``struct packet_type *pt``”h]”jð)�”}”(hjºÃh]”hŒstruct packet_type *pt”…”�”}”(hj¼Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M‹hj´Ãubj)�”}”(hhh]”jl)�”}”(hŒpacket type declaration”h]”hŒpacket type declaration”…”�”}”(hjÓÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏÃh´M‹hjÐÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏÃh´M‹hj±Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj•Ãubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjõÃh]”hŒ Description”…”�”}”(hj÷Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M�hj•ÃubjÒ)�”}”(hX\Add a protocol handler to the networking stack. The passed :c:type:`packet_type` is linked into kernel lists and may not be freed until it has been removed from the kernel lists. This call does not sleep therefore it can not guarantee all CPU's that are in middle of receiving packets will see the new packet type (until the next received packet).”h]”(jl)�”}”(hŒ²Add a protocol handler to the networking stack. The passed :c:type:`packet_type` is linked into kernel lists and may not be freed until it has been removed from the kernel lists.”h]”(hŒ;Add a protocol handler to the networking stack. The passed ”…”�”}”(hjÄh²hh³Nh´Nubh)�”}”(hŒ:c:type:`packet_type`”h]”jð)�”}”(hjÄh]”hŒ packet_type”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÄubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œ packet_type”uh1hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MŒhjÄubhŒb is linked into kernel lists and may not be freed until it has been removed from the kernel lists.”…”�”}”(hjÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6Äh´MŒhj Äubjl)�”}”(hŒ¨This call does not sleep therefore it can not guarantee all CPU's that are in middle of receiving packets will see the new packet type (until the next received packet).”h]”hŒªThis call does not sleep therefore it can not guarantee all CPU’s that are in middle of receiving packets will see the new packet type (until the next received packet).”…”�”}”(hjAÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M�hj Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j6Äh´MŒhj•Ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_remove_pack (C function)”Œc.__dev_remove_pack”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void __dev_remove_pack (struct packet_type *pt)”h]”j )�”}”(hŒ.void __dev_remove_pack(struct packet_type *pt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvÄh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjrÄh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrÄh²hh³j„Äh´M¤ubj3)�”}”(hŒ__dev_remove_pack”h]”j9)�”}”(hŒ__dev_remove_pack”h]”hŒ__dev_remove_pack”…”�”}”(hj—Äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“Äubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjrÄh²hh³j„Äh´M¤ubj¡ )�”}”(hŒ(struct packet_type *pt)”h]”j§ )�”}”(hŒstruct packet_type *pt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj³Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯Äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯Äubh)�”}”(hhh]”j9)�”}”(hŒ packet_type”h]”hŒ packet_type”…”�”}”(hjÑÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÓÄŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j™ÄsbŒc.__dev_remove_pack”†”asbuh1hhj¯Äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯Äubj )�”}”(hj h]”hŒ*”…”�”}”(hjÿÄh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¯Äubj9)�”}”(hŒpt”h]”hŒpt”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj«Äubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjrÄh²hh³j„Äh´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjnÄh²hh³j„Äh´M¤ubah}”(h]”jiÄah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j„Äh´M¤hjkÄh²hubjg)�”}”(hhh]”jl)�”}”(hŒremove packet handler”h]”hŒremove packet handler”…”�”}”(hj6Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¤hj3Åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjkÄh²hh³j„Äh´M¤ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jNÅjŒjNÅj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXâ**Parameters** ``struct packet_type *pt`` packet type declaration **Description** Remove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed :c:type:`packet_type` is removed from the kernel lists and can be freed or reused once this function returns. The packet type might still be in use by receivers and must not be freed until after all the CPU's have gone through a quiescent state.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjXÅh]”hŒ Parameters”…”�”}”(hjZÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjVÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¨hjRÅubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct packet_type *pt`` packet type declaration ”h]”(jê)�”}”(hŒ``struct packet_type *pt``”h]”jð)�”}”(hjwÅh]”hŒstruct packet_type *pt”…”�”}”(hjyÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¥hjqÅubj)�”}”(hhh]”jl)�”}”(hŒpacket type declaration”h]”hŒpacket type declaration”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒÅh´M¥hj�Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒÅh´M¥hjnÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjRÅubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj²Åh]”hŒ Description”…”�”}”(hj´Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M§hjRÅubjÒ)�”}”(hXhRemove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed :c:type:`packet_type` is removed from the kernel lists and can be freed or reused once this function returns. The packet type might still be in use by receivers and must not be freed until after all the CPU's have gone through a quiescent state.”h]”(jl)�”}”(hŒßRemove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed :c:type:`packet_type` is removed from the kernel lists and can be freed or reused once this function returns.”h]”(hŒrRemove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed ”…”�”}”(hjÌÅh²hh³Nh´Nubh)�”}”(hŒ:c:type:`packet_type`”h]”jð)�”}”(hjÖÅh]”hŒ packet_type”…”�”}”(hjØÅh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÔÅubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œ packet_type”uh1hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¦hjÌÅubhŒX is removed from the kernel lists and can be freed or reused once this function returns.”…”�”}”(hjÌÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóÅh´M¦hjÈÅubjl)�”}”(hŒ‡The packet type might still be in use by receivers and must not be freed until after all the CPU's have gone through a quiescent state.”h]”hŒ‰The packet type might still be in use by receivers and must not be freed until after all the CPU’s have gone through a quiescent state.”…”�”}”(hjþÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M«hjÈÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jóÅh´M¦hjRÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_remove_pack (C function)”Œc.dev_remove_pack”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-void dev_remove_pack (struct packet_type *pt)”h]”j )�”}”(hŒ,void dev_remove_pack(struct packet_type *pt)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj3Æh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj/Æh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÈubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/Æh²hh³jAÆh´MÈubj3)�”}”(hŒdev_remove_pack”h]”j9)�”}”(hŒdev_remove_pack”h]”hŒdev_remove_pack”…”�”}”(hjTÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPÆubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj/Æh²hh³jAÆh´MÈubj¡ )�”}”(hŒ(struct packet_type *pt)”h]”j§ )�”}”(hŒstruct packet_type *pt”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjpÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlÆubh)�”}”(hhh]”j9)�”}”(hŒ packet_type”h]”hŒ packet_type”…”�”}”(hjŽÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�ÆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jVÆsbŒc.dev_remove_pack”†”asbuh1hhjlÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Æh²hh³Nh´Nuba• h}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlÆubj )�”}”(hj h]”hŒ*”…”�”}”(hj¼Æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjlÆubj9)�”}”(hŒpt”h]”hŒpt”…”�”}”(hjÉÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjhÆubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj/Æh²hh³jAÆh´MÈubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj+Æh²hh³jAÆh´MÈubah}”(h]”j&Æah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jAÆh´MÈhj(Æh²hubjg)�”}”(hhh]”jl)�”}”(hŒremove packet handler”h]”hŒremove packet handler”…”�”}”(hjóÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÈhjðÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj(Æh²hh³jAÆh´MÈubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j ÇjŒj Çj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX«**Parameters** ``struct packet_type *pt`` packet type declaration **Description** Remove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed :c:type:`packet_type` is removed from the kernel lists and can be freed or reused once this function returns. This call sleeps to guarantee that no CPU is looking at the packet type after return.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÇh]”hŒ Parameters”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÌhjÇubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct packet_type *pt`` packet type declaration ”h]”(jê)�”}”(hŒ``struct packet_type *pt``”h]”jð)�”}”(hj4Çh]”hŒstruct packet_type *pt”…”�”}”(hj6Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÉhj.Çubj)�”}”(hhh]”jl)�”}”(hŒpacket type declaration”h]”hŒpacket type declaration”…”�”}”(hjMÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jIÇh´MÉhjJÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jIÇh´MÉhj+Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjoÇh]”hŒ Description”…”�”}”(hjqÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjmÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MËhjÇubjÒ)�”}”(hX6Remove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed :c:type:`packet_type` is removed from the kernel lists and can be freed or reused once this function returns. This call sleeps to guarantee that no CPU is looking at the packet type after return.”h]”(jl)�”}”(hŒßRemove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed :c:type:`packet_type` is removed from the kernel lists and can be freed or reused once this function returns.”h]”(hŒrRemove a protocol handler that was previously added to the kernel protocol handlers by dev_add_pack(). The passed ”…”�”}”(hj‰Çh²hh³Nh´Nubh)�”}”(hŒ:c:type:`packet_type`”h]”jð)�”}”(hj“Çh]”hŒ packet_type”…”�”}”(hj•Çh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj‘Çubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œ packet_type”uh1hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÊhj‰ÇubhŒX is removed from the kernel lists and can be freed or reused once this function returns.”…”�”}”(hj‰Çh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°Çh´MÊhj…Çubjl)�”}”(hŒUThis call sleeps to guarantee that no CPU is looking at the packet type after return.”h]”hŒUThis call sleeps to guarantee that no CPU is looking at the packet type after return.”…”�”}”(hj»Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÏhj…Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j°Çh´MÊhjÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_get_iflink (C function)”Œc.dev_get_iflink”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1int dev_get_iflink (const struct net_device *dev)”h]”j )�”}”(hŒ0int dev_get_iflink(const struct net_device *dev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjðÇh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìÇh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìÇh²hh³jþÇh´Mãubj3)�”}”(hŒdev_get_iflink”h]”j9)�”}”(hŒdev_get_iflink”h]”hŒdev_get_iflink”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Èubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjìÇh²hh³jþÇh´Mãubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj-Èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)Èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)Èubj)�”}”(hjh]”hŒstruct”…”�”}”(hjHÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)Èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)Èubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjfÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjcÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jhÈŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÈsbŒc.dev_get_iflink”†”asbuh1hhj)Èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)Èubj )�”}”(hj h]”hŒ*”…”�”}”(hj”Èh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj)Èubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¡Èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)Èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%Èubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjìÇh²hh³jþÇh´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjèÇh²hh³jþÇh´Mãubah}”(h]”jãÇah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jþÇh´MãhjåÇh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!get 'iflink' value of a interface”h]”hŒ%get ‘iflink’ value of a interface”…”�”}”(hjËÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MãhjÈÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjåÇh²hh³jþÇh´Mãubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jãÈjŒjãÈj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÔ**Parameters** ``const struct net_device *dev`` targeted interface **Description** Indicates the ifindex the interface is linked to. Physical interfaces have the same 'ifindex' and 'iflink' values.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjíÈh]”hŒ Parameters”…”�”}”(hjïÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MçhjçÈubjß)�”}”(hhh]”jä)�”}”(hŒ4``const struct net_device *dev`` targeted interface ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hj Éh]”hŒconst struct net_device *dev”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MähjÉubj)�”}”(hhh]”jl)�”}”(hŒtargeted interface”h]”hŒtargeted interface”…”�”}”(hj%Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!Éh´Mähj"Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!Éh´MähjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjçÈubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjGÉh]”hŒ Description”…”�”}”(hjIÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjEÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MæhjçÈubjÒ)�”}”(hŒrIndicates the ifindex the interface is linked to. Physical interfaces have the same 'ifindex' and 'iflink' values.”h]”jl)�”}”(hŒrIndicates the ifindex the interface is linked to. Physical interfaces have the same 'ifindex' and 'iflink' values.”h]”hŒzIndicates the ifindex the interface is linked to. Physical interfaces have the same ‘ifindex’ and ‘iflink’ values.”…”�”}”(hjaÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Måhj]Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³joÉh´MåhjçÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"dev_fill_metadata_dst (C function)”Œc.dev_fill_metadata_dst”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒGint dev_fill_metadata_dst (struct net_device *dev, struct sk_buff *skb)”h]”j )�”}”(hŒFint dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj–Éh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj’Éh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Môubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’Éh²hh³j¤Éh´Môubj3)�”}”(hŒdev_fill_metadata_dst”h]”j9)�”}”(hŒdev_fill_metadata_dst”h]”hŒdev_fill_metadata_dst”…”�”}”(hj·Éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³Éubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj’Éh²hh³j¤Éh´Môubj¡ )�”}”(hŒ-(struct net_device *dev, struct sk_buff *skb)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÓÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏÉubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjñÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jóÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¹ÉsbŒc.dev_fill_metadata_dst”†”asbuh1hhjÏÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏÉubj )�”}”(hj h]”hŒ*”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÏÉubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj,Êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjËÉubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjEÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRÊh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAÊubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjcÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`Êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jeÊŒmodname”NŒ classname”Njå jè )�”}”jë ]”j ÊŒc.dev_fill_metadata_dst”†”asbuh1hhjAÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAÊubj )�”}”(hj h]”hŒ*”…”�”}”(hj�Êh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjAÊubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjœÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjAÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjËÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj’Éh²hh³j¤Éh´Môubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŽÉh²hh³j¤Éh´Môubah}”(h]”j‰Éah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¤Éh´Môhj‹Éh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Retrieve tunnel egress information.”h]”hŒ#Retrieve tunnel egress information.”…”�”}”(hjÆÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MôhjÃÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‹Éh²hh³j¤Éh´Môubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÞÊjŒjÞÊj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` targeted interface ``struct sk_buff *skb`` The packet. **Description** For better visibility of tunnel traffic OVS needs to retrieve egress tunnel information for a packet. Following API allows user to get this info.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjèÊh]”hŒ Parameters”…”�”}”(hjêÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MøhjâÊubjß)�”}”(hhh]”(jä)�”}”(hŒ.``struct net_device *dev`` targeted interface ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjËh]”hŒstruct net_device *dev”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MõhjËubj)�”}”(hhh]”jl)�”}”(hŒtargeted interface”h]”hŒtargeted interface”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËh´MõhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËh´MõhjþÊubjä)�”}”(hŒ$``struct sk_buff *skb`` The packet. ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj@Ëh]”hŒstruct sk_buff *skb”…”�”}”(hjBËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Möhj:Ëubj)�”}”(hhh]”jl)�”}”(hŒ The packet.”h]”hŒ The packet.”…”�”}”(hjYËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jUËh´MöhjVËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jUËh´MöhjþÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjâÊubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj{Ëh]”hŒ Description”…”�”}”(hj}Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjyËubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MøhjâÊubjÒ)�”}”(hŒ‘For better visibility of tunnel traffic OVS needs to retrieve egress tunnel information for a packet. Following API allows user to get this info.”h]”jl)�”}”(hŒ‘For better visibility of tunnel traffic OVS needs to retrieve egress tunnel information for a packet. Following API allows user to get this info.”h]”hŒ‘For better visibility of tunnel traffic OVS needs to retrieve egress tunnel information for a packet. Following API allows user to get this info.”…”�”}”(hj•Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M÷hj‘Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j£Ëh´M÷hjâÊubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_get_by_name (C function)”Œc.__dev_get_by_name”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒIstruct net_device * __dev_get_by_name (struct net *net, const char *name)”h]”j )�”}”(hŒGstruct net_device *__dev_get_by_name(struct net *net, const char *name)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÊËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆËh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØËh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆËh²hh³j×Ëh´M ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjéËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jëËŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ__dev_get_by_name”sbŒc.__dev_get_by_name”†”asbuh1hhjÆËh²hh³j×Ëh´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆËh²hh³j×Ëh´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÆËh²hh³j×Ëh´M ubj3)�”}”(hŒ__dev_get_by_name”h]”j9)�”}”(hjÌh]”hŒ__dev_get_by_name”…”�”}”(hj)Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%Ìubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÆËh²hh³j×Ëh´M ubj¡ )�”}”(hŒ#(struct net *net, const char *name)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjDÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Ìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Ìubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjbÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_Ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdÌŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÌŒc.__dev_get_by_name”†”asbuh1hhj@Ìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Ìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Ìubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽÌh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@Ìubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj›Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<Ìubj§ )�”}”(hŒconst char *name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj´Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°Ìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°ÌubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÏÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj°Ìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°Ìubj )�”}”(hj h]”hŒ*”…”�”}”(hjëÌh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj°Ìubj9)�”}”(hŒname”h]”hŒname”…”�”}”(hjøÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<Ìubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÆËh²hh³j×Ëh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÂËh²hh³j×Ëh´M ubah}”(h]”j½Ëah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j×Ëh´M hj¿Ëh²hubjg)�”}”(hhh]”jl)�”}”(hŒfind a device by its name”h]”hŒfind a device by its name”…”�”}”(hj"Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hjÍh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¿Ëh²hh³j×Ëh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j:ÍjŒj:Íj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX•**Parameters** ``struct net *net`` the applicable net namespace ``const char *name`` name to find **Description** Find an interface by name. Must be called under RTNL semaphore. If the name is found a pointer to the device is returned. If the name is not found then ``NULL`` is returned. The reference counters are not incremented so the caller must be careful with locks.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjDÍh]”hŒ Parameters”…”�”}”(hjFÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjBÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¤hj>Íubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjcÍh]”hŒstruct net *net”…”�”}”(hjeÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¡hj]Íubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hj|Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxÍh´M¡hjyÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxÍh´M¡hjZÍubjä)�”}”(hŒ"``const char *name`` name to find ”h]”(jê)�”}”(hŒ``const char *name``”h]”jð)�”}”(hjœÍh]”hŒconst char *name”…”�”}”(hjžÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¢hj–Íubj)�”}”(hhh]”jl)�”}”(hŒ name to find”h]”hŒ name to find”…”�”}”(hjµÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±Íh´M¢hj²Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±Íh´M¢hjZÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj>Íubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj×Íh]”hŒ Description”…”�”}”(hjÙÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¤hj>ÍubjÒ)�”}”(hXFind an interface by name. Must be called under RTNL semaphore. If the name is found a pointer to the device is returned. If the name is not found then ``NULL`` is returned. The reference counters are not incremented so the caller must be careful with locks.”h]”jl)�”}”(hXFind an interface by name. Must be called under RTNL semaphore. If the name is found a pointer to the device is returned. If the name is not found then ``NULL`` is returned. The reference counters are not incremented so the caller must be careful with locks.”h]”(hŒ˜Find an interface by name. Must be called under RTNL semaphore. If the name is found a pointer to the device is returned. If the name is not found then ”…”�”}”(hjñÍh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjùÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñÍubhŒb is returned. The reference counters are not incremented so the caller must be careful with locks.”…”�”}”(hjñÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M£hjíÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÎh´M£hj>Íubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ dev_get_by_name_rcu (C function)”Œc.dev_get_by_name_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKstruct net_device * dev_get_by_name_rcu (struct net *net, const char *name)”h]”j )�”}”(hŒIstruct net_device *dev_get_by_name_rcu(struct net *net, const char *name)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj8Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Îh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÎh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Îh²hh³jEÎh´Mµubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjWÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jYÎŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œdev_get_by_name_rcu”sbŒc.dev_get_by_name_rcu”†”asbuh1hhj4Îh²hh³jEÎh´Mµubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxÎh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Îh²hh³jEÎh´Mµubj )�”}”(hj h]”hŒ*”…”�”}”(hj†Îh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj4Îh²hh³jEÎh´Mµubj3)�”}”(hŒdev_get_by_name_rcu”h]”j9)�”}”(hjuÎh]”hŒdev_get_by_name_rcu”…”�”}”(hj—Îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“Îubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj4Îh²hh³jEÎh´Mµubj¡ )�”}”(hŒ#(struct net *net, const char *name)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj²Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®Îubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®Îubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjÐÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÒÎŒmodname”NŒ classname”Njå jè )�”}”jë ]”jsÎŒc.dev_get_by_name_rcu”†”asbuh1hhj®Îubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÎh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®Îubj )�”}”(hj h]”hŒ*”…”�”}”(hjüÎh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj®Îubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®Îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjªÎubj§ )�”}”(hŒconst char *name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj"Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Ïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj=Ïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏubj )�”}”(hj h]”hŒ*”…”�”}”(hjYÏh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÏubj9)�”}”(hŒname”h]”hŒname”…”�”}”(hjfÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjªÎubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj4Îh²hh³jEÎh´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0Îh²hh³jEÎh´Mµubah}”(h]”j+Îah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jEÎh´Mµhj-Îh²hubjg)�”}”(hhh]”jl)�”}”(hŒfind a device by its name”h]”hŒfind a device by its name”…”�”}”(hj�Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mµhj�Ïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj-Îh²hh³jEÎh´Mµubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¨ÏjŒj¨Ïj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXv**Parameters** ``struct net *net`` the applicable net namespace ``const char *name`` name to find **Description** Find an interface by name. If the name is found a pointer to the device is returned. If the name is not found then ``NULL`` is returned. The reference counters are not incremented so the caller must be careful with locks. The caller must hold RCU lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj²Ïh]”hŒ Parameters”…”�”}”(hj´Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¹hj¬Ïubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjÑÏh]”hŒstruct net *net”…”�”}”(hjÓÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¶hjËÏubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hjêÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæÏh´M¶hjçÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæÏh´M¶hjÈÏubjä)�”}”(hŒ"``const char *name`` name to find ”h]”(jê)�”}”(hŒ``const char *name``”h]”jð)�”}”(hj Ðh]”hŒconst char *name”…”�”}”(hj Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M·hjÐubj)�”}”(hhh]”jl)�”}”(hŒ name to find”h]”hŒ name to find”…”�”}”(hj#Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐh´M·hj Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐh´M·hjÈÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¬Ïubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjEÐh]”hŒ Description”…”�”}”(hjGÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjCÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¹hj¬Ïubjl)�”}”(hŒüFind an interface by name. If the name is found a pointer to the device is returned. If the name is not found then ``NULL`` is returned. The reference counters are not incremented so the caller must be careful with locks. The caller must hold RCU lock.”h]”(hŒsFind an interface by name. If the name is found a pointer to the device is returned. If the name is not found then ”…”�”}”(hj[Ðh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjcÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ÐubhŒ� is returned. The reference counters are not incremented so the caller must be careful with locks. The caller must hold RCU lock.”…”�”}”(hj[Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¸hj¬Ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetdev_get_by_name (C function)”Œc.netdev_get_by_name”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒqstruct net_device * netdev_get_by_name (struct net *net, const char *name, netdevice_tracker *tracker, gfp_t gfp)”h]”j )�”}”(hŒostruct net_device *netdev_get_by_name(struct net *net, const char *name, netdevice_tracker *tracker, gfp_t gfp)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjœÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜Ðh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜Ðh²hh³j©Ðh´M×ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj»Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸Ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j½ÐŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_get_by_name”sbŒc.netdev_get_by_name”†”asbuh1hhj˜Ðh²hh³j©Ðh´M×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜Ðh²hh³j©Ðh´M×ubj )�”}”(hj h]”hŒ*”…”�”}”(hjêÐh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj˜Ðh²hh³j©Ðh´M×ubj3)�”}”(hŒnetdev_get_by_name”h]”j9)�”}”(hjÙÐh]”hŒnetdev_get_by_name”…”�”}”(hjûÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷Ðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj˜Ðh²hh³j©Ðh´M×ubj¡ )�”}”(hŒJ(struct net *net, const char *name, netdevice_tracker *tracker, gfp_t gfp)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj4Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1Ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j6ÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”j×ÐŒc.netdev_get_by_name”†”asbuh1hhjÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑubj )�”}”(hj h]”hŒ*”…”�”}”(hj`Ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÑubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjmÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑubj§ )�”}”(hŒconst char *name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj†Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚ÑubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¡Ñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚Ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Ñubj )�”}”(hj h]”hŒ*”…”�”}”(hj½Ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‚Ñubj9)�”}”(hŒname”h]”hŒname”…”�”}”(hjÊÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚Ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑubj§ )�”}”(hŒnetdevice_tracker *tracker”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdevice_tracker”h]”hŒnetdevice_tracker”…”�”}”(hjæÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjãÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jèÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”j×ÐŒc.netdev_get_by_name”†”asbuh1hhjßÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjßÑubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjßÑubj9)�”}”(hŒtracker”h]”hŒtracker”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑubj§ )�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj;Òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j=ÒŒmodname”NŒ classname”Njå jè )�”}”jë ]”j×ÐŒc.netdev_get_by_name”†”asbuh1hhj4Òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Òubj9)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjgÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj˜Ðh²hh³j©Ðh´M×ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj”Ðh²hh³j©Ðh´M×ubah}”(h]”j�Ðah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j©Ðh´M×hj‘Ðh²hubjg)�”}”(hhh]”jl)�”}”(hŒfind a device by its name”h]”hŒfind a device by its name”…”�”}”(hj‘Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M×hjŽÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‘Ðh²hh³j©Ðh´M×ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©ÒjŒj©Òj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX#**Parameters** ``struct net *net`` the applicable net namespace ``const char *name`` name to find ``netdevice_tracker *tracker`` tracking object for the acquired reference ``gfp_t gfp`` allocation flags for the tracker **Description** Find an interface by name. This can be called from any context and does its own locking. The returned handle has the usage count incremented and the caller must use netdev_put() to release it when it is no longer needed. ``NULL`` is returned if no matching device is found.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³Òh]”hŒ Parameters”…”�”}”(hjµÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÛhj­Òubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjÒÒh]”hŒstruct net *net”…”�”}”(hjÔÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MØhjÌÒubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hjëÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçÒh´MØhjèÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçÒh´MØhjÉÒubjä)�”}”(hŒ"``const char *name`` name to find ”h]”(jê)�”}”(hŒ``const char *name``”h]”jð)�”}”(hj Óh]”hŒconst char *name”…”�”}”(hj Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÙhjÓubj)�”}”(hhh]”jl)�”}”(hŒ name to find”h]”hŒ name to find”…”�”}”(hj$Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Óh´MÙhj!Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Óh´MÙhjÉÒubjä)�”}”(hŒJ``netdevice_tracker *tracker`` tracking object for the acquired reference ”h]”(jê)�”}”(hŒ``netdevice_tracker *tracker``”h]”jð)�”}”(hjDÓh]”hŒnetdevice_tracker *tracker”…”�”}”(hjFÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÚhj>Óubj)�”}”(hhh]”jl)�”}”(hŒ*tracking object for the acquired reference”h]”hŒ*tracking object for the acquired reference”…”�”}”(hj]Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jYÓh´MÚhjZÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYÓh´MÚhjÉÒubjä)�”}”(hŒ/``gfp_t gfp`` allocation flags for the tracker ”h]”(jê)�”}”(hŒ ``gfp_t gfp``”h]”jð)�”}”(hj}Óh]”hŒ gfp_t gfp”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÛhjwÓubj)�”}”(hhh]”jl)�”}”(hŒ allocation flags for the tracker”h]”hŒ allocation flags for the tracker”…”�”}”(hj–Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’Óh´MÛhj“Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’Óh´MÛhjÉÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­Òubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¸Óh]”hŒ Description”…”�”}”(hjºÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÝhj­ÒubjÒ)�”}”(hXFind an interface by name. This can be called from any context and does its own locking. The returned handle has the usage count incremented and the caller must use netdev_put() to release it when it is no longer needed. ``NULL`` is returned if no matching device is found.”h]”jl)�”}”(hXFind an interface by name. This can be called from any context and does its own locking. The returned handle has the usage count incremented and the caller must use netdev_put() to release it when it is no longer needed. ``NULL`` is returned if no matching device is found.”h]”(hŒÝFind an interface by name. This can be called from any context and does its own locking. The returned handle has the usage count incremented and the caller must use netdev_put() to release it when it is no longer needed. ”…”�”}”(hjÒÓh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÚÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒÓubhŒ, is returned if no matching device is found.”…”�”}”(hjÒÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÜhjÎÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jòÓh´MÜhj­Òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_get_by_index (C function)”Œc.__dev_get_by_index”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEstruct net_device * __dev_get_by_index (struct net *net, int ifindex)”h]”j )�”}”(hŒCstruct net_device *__dev_get_by_index(struct net *net, int ifindex)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔh²hh³j&Ôh´Mðubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj8Ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:ÔŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ__dev_get_by_index”sbŒc.__dev_get_by_index”†”asbuh1hhjÔh²hh³j&Ôh´Mðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔh²hh³j&Ôh´Mðubj )�”}”(hj h]”hŒ*”…”�”}”(hjgÔh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÔh²hh³j&Ôh´Mðubj3)�”}”(hŒ__dev_get_by_index”h]”j9)�”}”(hjVÔh]”hŒ__dev_get_by_index”…”�”}”(hjxÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtÔubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÔh²hh³j&Ôh´Mðubj¡ )�”}”(hŒ(struct net *net, int ifindex)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj“Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Ôubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj±Ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³ÔŒmodname”NŒ classname”Njå jè )�”}”jë ]”jTÔŒc.__dev_get_by_index”†”asbuh1hhj�Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Ôubj )�”}”(hj h]”hŒ*”…”�”}”(hjÝÔh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�Ôubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjêÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹Ôubj§ )�”}”(hŒ int ifindex”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÿÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿÔubj9)�”}”(hŒifindex”h]”hŒifindex”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹Ôubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÔh²hh³j&Ôh´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÔh²hh³j&Ôh´Mðubah}”(h]”j Ôah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j&Ôh´MðhjÔh²hubjg)�”}”(hhh]”jl)�”}”(hŒfind a device by its ifindex”h]”hŒfind a device by its ifindex”…”�”}”(hjIÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MðhjFÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÔh²hh³j&Ôh´Mðubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jaÕjŒjaÕj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX‚**Parameters** ``struct net *net`` the applicable net namespace ``int ifindex`` index of device **Description** Search for an interface by index. Returns ``NULL`` if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold the RTNL semaphore.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjkÕh]”hŒ Parameters”…”�”}”(hjmÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjiÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MôhjeÕubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjŠÕh]”hŒstruct net *net”…”�”}”(hjŒÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mñhj„Õubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hj£Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸÕh´Mñhj Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸÕh´Mñhj�Õubjä)�”}”(hŒ ``int ifindex`` index of device ”h]”(jê)�”}”(hŒ``int ifindex``”h]”jð)�”}”(hjÃÕh]”hŒ int ifindex”…”�”}”(hjÅÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mòhj½Õubj)�”}”(hhh]”jl)�”}”(hŒindex of device”h]”hŒindex of device”…”�”}”(hjÜÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØÕh´MòhjÙÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØÕh´Mòhj�Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjeÕubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjþÕh]”hŒ Description”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjüÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MôhjeÕubjÒ)�”}”(hŒöSearch for an interface by index. Returns ``NULL`` if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold the RTNL semaphore.”h]”jl)�”}”(hŒöSearch for an interface by index. Returns ``NULL`` if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold the RTNL semaphore.”h]”(hŒ*Search for an interface by index. Returns ”…”�”}”(hjÖh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖubhŒÄ if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold the RTNL semaphore.”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MóhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j8Öh´MóhjeÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!dev_get_by_index_rcu (C function)”Œc.dev_get_by_index_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒGstruct net_device * dev_get_by_index_rcu (struct net *net, int ifindex)”h]”j )�”}”(hŒEstruct net_device *dev_get_by_index_rcu(struct net *net, int ifindex)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj_Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[Öh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[Öh²hh³jlÖh´Mubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj~Öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{Öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j€ÖŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œdev_get_by_index_rcu”sbŒc.dev_get_by_index_rcu”†”asbuh1hhj[Öh²hh³jlÖh´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[Öh²hh³jlÖh´Mubj )�”}”(hj h]”hŒ*”…”�”}”(hj­Öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[Öh²hh³jlÖh´Mubj3)�”}”(hŒdev_get_by_index_rcu”h]”j9)�”}”(hjœÖh]”hŒdev_get_by_index_rcu”…”�”}”(hj¾Öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºÖubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj[Öh²hh³jlÖh´Mubj¡ )�”}”(hŒ(struct net *net, int ifindex)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÙÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕÖubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj÷Öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jùÖŒmodname”NŒ classname”Njå jè )�”}”jë ]”jšÖŒc.dev_get_by_index_rcu”†”asbuh1hhjÕÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕÖubj )�”}”(hj h]”hŒ*”…”�”}”(hj#×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÕÖubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj0×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑÖubj§ )�”}”(hŒ int ifindex”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjI×h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjE×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE×ubj9)�”}”(hŒifindex”h]”hŒifindex”…”�”}”(hje×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑÖubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj[Öh²hh³jlÖh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjWÖh²hh³jlÖh´Mubah}”(h]”jRÖah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jlÖh´MhjTÖh²hubjg)�”}”(hhh]”jl)�”}”(hŒfind a device by its ifindex”h]”hŒfind a device by its ifindex”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjŒ×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjTÖh²hh³jlÖh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j§×jŒj§×j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXx**Parameters** ``struct net *net`` the applicable net namespace ``int ifindex`` index of device **Description** Search for an interface by index. Returns ``NULL`` if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold RCU lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj±×h]”hŒ Parameters”…”�”}”(hj³×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj«×ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjÐ×h]”hŒstruct net *net”…”�”}”(hjÒ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hjÊ×ubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hjé×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jå×h´M hjæ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊ×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jå×h´M hjÇ×ubjä)�”}”(hŒ ``int ifindex`` index of device ”h]”(jê)�”}”(hŒ``int ifindex``”h]”jð)�”}”(hj Øh]”hŒ int ifindex”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hjØubj)�”}”(hhh]”jl)�”}”(hŒindex of device”h]”hŒindex of device”…”�”}”(hj"Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØh´M hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØh´M hjÇ×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj«×ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjDØh]”hŒ Description”…”�”}”(hjFØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjBØubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj«×ubjÒ)�”}”(hŒìSearch for an interface by index. Returns ``NULL`` if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold RCU lock.”h]”jl)�”}”(hŒìSearch for an interface by index. Returns ``NULL`` if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold RCU lock.”h]”(hŒ*Search for an interface by index. Returns ”…”�”}”(hj^Øh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjfØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^ØubhŒº if the device is not found or a pointer to the device. The device has not had its reference counter increased so the caller must be careful about locking. The caller must hold RCU lock.”…”�”}”(hj^Øh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hjZØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j~Øh´M hj«×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netdev_get_by_index (C function)”Œc.netdev_get_by_index”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmstruct net_device * netdev_get_by_index (struct net *net, int ifindex, netdevice_tracker *tracker, gfp_t gfp)”h]”j )�”}”(hŒkstruct net_device *netdev_get_by_index(struct net *net, int ifindex, netdevice_tracker *tracker, gfp_t gfp)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¥Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Øh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡Øh²hh³j²Øh´M-ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÄØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆØŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_get_by_index”sbŒc.netdev_get_by_index”†”asbuh1hhj¡Øh²hh³j²Øh´M-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡Øh²hh³j²Øh´M-ubj )�”}”(hj h]”hŒ*”…”�”}”(hjóØh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¡Øh²hh³j²Øh´M-ubj3)�”}”(hŒnetdev_get_by_index”h]”j9)�”}”(hjâØh]”hŒnetdev_get_by_index”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡Øh²hh³j²Øh´M-ubj¡ )�”}”(hŒE(struct net *net, int ifindex, netdevice_tracker *tracker, gfp_t gfp)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj=Ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:Ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j?ÙŒmodname”NŒ classname”Njå jè )�”}”jë ]”jàØŒc.netdev_get_by_index”†”asbuh1hhjÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙubj )�”}”(hj h]”hŒ*”…”�”}”(hjiÙh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÙubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjvÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙubj§ )�”}”(hŒ int ifindex”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‹Ùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹Ùubj9)�”}”(hŒifindex”h]”hŒifindex”…”�”}”(hj«Ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙubj§ )�”}”(hŒnetdevice_tracker *tracker”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdevice_tracker”h]”hŒnetdevice_tracker”…”�”}”(hjÇÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÉÙŒmodname”NŒ classname”Njå jè )�”}”jë ]”jàØŒc.netdev_get_by_index”†”asbuh1hhjÀÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåÙh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀÙubj )�”}”(hj h]”hŒ*”…”�”}”(hjóÙh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀÙubj9)�”}”(hŒtracker”h]”hŒtracker”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙubj§ )�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j9)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÚŒmodname”NŒ classname”Njå jè )�”}”jë ]”jàØŒc.netdev_get_by_index”†”asbuh1hhjÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚubj9)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjHÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡Øh²hh³j²Øh´M-ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�Øh²hh³j²Øh´M-ubah}”(h]”j˜Øah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j²Øh´M-hjšØh²hubjg)�”}”(hhh]”jl)�”}”(hŒfind a device by its ifindex”h]”hŒfind a device by its ifindex”…”�”}”(hjrÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M-hjoÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšØh²hh³j²Øh´M-ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŠÚjŒjŠÚj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net *net`` the applicable net namespace ``int ifindex`` index of device ``netdevice_tracker *tracker`` tracking object for the acquired reference ``gfp_t gfp`` allocation flags for the tracker **Description** Search for an interface by index. Returns NULL if the device is not found or a pointer to the device. The device returned has had a reference added and the pointer is safe until the user calls netdev_put() to indicate they have finished with it.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj”Úh]”hŒ Parameters”…”�”}”(hj–Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjŽÚubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj³Úh]”hŒstruct net *net”…”�”}”(hjµÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hj­Úubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hjÌÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÈÚh´M.hjÉÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈÚh´M.hjªÚubjä)�”}”(hŒ ``int ifindex`` index of device ”h]”(jê)�”}”(hŒ``int ifindex``”h]”jð)�”}”(hjìÚh]”hŒ int ifindex”…”�”}”(hjîÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M/hjæÚubj)�”}”(hhh]”jl)�”}”(hŒindex of device”h]”hŒindex of device”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛh´M/hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛh´M/hjªÚubjä)�”}”(hŒJ``netdevice_tracker *tracker`` tracking object for the acquired reference ”h]”(jê)�”}”(hŒ``netdevice_tracker *tracker``”h]”jð)�”}”(hj%Ûh]”hŒnetdevice_tracker *tracker”…”�”}”(hj'Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hjÛubj)�”}”(hhh]”jl)�”}”(hŒ*tracking object for the acquired reference”h]”hŒ*tracking object for the acquired reference”…”�”}”(hj>Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:Ûh´M0hj;Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:Ûh´M0hjªÚubjä)�”}”(hŒ/``gfp_t gfp`` allocation flags for the tracker ”h]”(jê)�”}”(hŒ ``gfp_t gfp``”h]”jð)�”}”(hj^Ûh]”hŒ gfp_t gfp”…”�”}”(hj`Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjXÛubj)�”}”(hhh]”jl)�”}”(hŒ allocation flags for the tracker”h]”hŒ allocation flags for the tracker”…”�”}”(hjwÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsÛh´M1hjtÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsÛh´M1hjªÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŽÚubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj™Ûh]”hŒ Description”…”�”}”(hj›Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M3hjŽÚubjÒ)�”}”(hŒõSearch for an interface by index. Returns NULL if the device is not found or a pointer to the device. The device returned has had a reference added and the pointer is safe until the user calls netdev_put() to indicate they have finished with it.”h]”jl)�”}”(hŒõSearch for an interface by index. Returns NULL if the device is not found or a pointer to the device. The device returned has had a reference added and the pointer is safe until the user calls netdev_put() to indicate they have finished with it.”h]”hŒõSearch for an interface by index. Returns NULL if the device is not found or a pointer to the device. The device returned has had a reference added and the pointer is safe until the user calls netdev_put() to indicate they have finished with it.”…”�”}”(hj³Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M2hj¯Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÁÛh´M2hjŽÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ dev_getbyhwaddr_rcu (C function)”Œc.dev_getbyhwaddr_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ^struct net_device * dev_getbyhwaddr_rcu (struct net *net, unsigned short type, const char *ha)”h]”j )�”}”(hŒ\struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type, const char *ha)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjèÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäÛh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäÛh²hh³jõÛh´Mubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ÜŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œdev_getbyhwaddr_rcu”sbŒc.dev_getbyhwaddr_rcu”†”asbuh1hhjäÛh²hh³jõÛh´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Üh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäÛh²hh³jõÛh´Mubj )�”}”(hj h]”hŒ*”…”�”}”(hj6Üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjäÛh²hh³jõÛh´Mubj3)�”}”(hŒdev_getbyhwaddr_rcu”h]”j9)�”}”(hj%Üh]”hŒdev_getbyhwaddr_rcu”…”�”•}”(hjGÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCÜubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjäÛh²hh³jõÛh´Mubj¡ )�”}”(hŒ6(struct net *net, unsigned short type, const char *ha)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjbÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^Üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^Üubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj€Üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‚ÜŒmodname”NŒ classname”Njå jè )�”}”jë ]”j#ÜŒc.dev_getbyhwaddr_rcu”†”asbuh1hhj^Üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^Üubj )�”}”(hj h]”hŒ*”…”�”}”(hj¬Üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^Üubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj¹Üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZÜubj§ )�”}”(hŒunsigned short type”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÒÜh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÎÜubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎÜubjM )�”}”(hŒshort”h]”hŒshort”…”�”}”(hjîÜh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÎÜubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎÜubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZÜubj§ )�”}”(hŒconst char *ha”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj#Ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj>Ýh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝubj )�”}”(hj h]”hŒ*”…”�”}”(hjZÝh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝubj9)�”}”(hŒha”h]”hŒha”…”�”}”(hjgÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZÜubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjäÛh²hh³jõÛh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjàÛh²hh³jõÛh´Mubah}”(h]”jÛÛah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jõÛh´MhjÝÛh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%find a device by its hardware address”h]”hŒ%find a device by its hardware address”…”�”}”(hj‘Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjŽÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÝÛh²hh³jõÛh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©ÝjŒj©Ýj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX¹**Parameters** ``struct net *net`` the applicable net namespace ``unsigned short type`` media type of device ``const char *ha`` hardware address **Description** Search for an interface by MAC address. Returns NULL if the device is not found or a pointer to the device. The caller must hold RCU. The returned device has not had its ref count increased and the caller must therefore be careful about locking”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³Ýh]”hŒ Parameters”…”�”}”(hjµÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj­Ýubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hjÒÝh]”hŒstruct net *net”…”�”}”(hjÔÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjÌÝubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hjëÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçÝh´MhjèÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçÝh´MhjÉÝubjä)�”}”(hŒ-``unsigned short type`` media type of device ”h]”(jê)�”}”(hŒ``unsigned short type``”h]”jð)�”}”(hj Þh]”hŒunsigned short type”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjÞubj)�”}”(hhh]”jl)�”}”(hŒmedia type of device”h]”hŒmedia type of device”…”�”}”(hj$Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Þh´Mhj!Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Þh´MhjÉÝubjä)�”}”(hŒ$``const char *ha`` hardware address ”h]”(jê)�”}”(hŒ``const char *ha``”h]”jð)�”}”(hjDÞh]”hŒconst char *ha”…”�”}”(hjFÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj>Þubj)�”}”(hhh]”jl)�”}”(hŒhardware address”h]”hŒhardware address”…”�”}”(hj]Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jYÞh´MhjZÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYÞh´MhjÉÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­Ýubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÞh]”hŒ Description”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj­ÝubjÒ)�”}”(hŒôSearch for an interface by MAC address. Returns NULL if the device is not found or a pointer to the device. The caller must hold RCU. The returned device has not had its ref count increased and the caller must therefore be careful about locking”h]”jl)�”}”(hŒôSearch for an interface by MAC address. Returns NULL if the device is not found or a pointer to the device. The caller must hold RCU. The returned device has not had its ref count increased and the caller must therefore be careful about locking”h]”hŒôSearch for an interface by MAC address. Returns NULL if the device is not found or a pointer to the device. The caller must hold RCU. The returned device has not had its ref count increased and the caller must therefore be careful about locking”…”�”}”(hj™Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj•Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j§Þh´Mhj­Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_getbyhwaddr (C function)”Œc.dev_getbyhwaddr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZstruct net_device * dev_getbyhwaddr (struct net *net, unsigned short type, const char *ha)”h]”j )�”}”(hŒXstruct net_device *dev_getbyhwaddr(struct net *net, unsigned short type, const char *ha)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÎÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊÞh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊÞh²hh³jÛÞh´Mubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjíÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jïÞŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œdev_getbyhwaddr”sbŒc.dev_getbyhwaddr”†”asbuh1hhjÊÞh²hh³jÛÞh´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊÞh²hh³jÛÞh´Mubj )�”}”(hj h]”hŒ*”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÊÞh²hh³jÛÞh´Mubj3)�”}”(hŒdev_getbyhwaddr”h]”j9)�”}”(hj ßh]”hŒdev_getbyhwaddr”…”�”}”(hj-ßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)ßubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÊÞh²hh³jÛÞh´Mubj¡ )�”}”(hŒ6(struct net *net, unsigned short type, const char *ha)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjHßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjDßubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjfßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjcßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jhߌmodname”NŒ classname”Njå jè )�”}”jë ]”j ߌc.dev_getbyhwaddr”†”asbuh1hhjDßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjDßubj )�”}”(hj h]”hŒ*”…”�”}”(hj’ßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjDßubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjŸßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjDßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@ßubj§ )�”}”(hŒunsigned short type”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¸ßh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj´ßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ßubjM )�”}”(hŒshort”h]”hŒshort”…”�”}”(hjÔßh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj´ßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ßubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjðßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@ßubj§ )�”}”(hŒconst char *ha”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj$àh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàubj )�”}”(hj h]”hŒ*”…”�”}”(hj@àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjàubj9)�”}”(hŒha”h]”hŒha”…”�”}”(hjMàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@ßubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÊÞh²hh³jÛÞh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÆÞh²hh³jÛÞh´Mubah}”(h]”jÁÞah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÛÞh´MhjÃÞh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%find a device by its hardware address”h]”hŒ%find a device by its hardware address”…”�”}”(hjwàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhjtàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÃÞh²hh³jÛÞh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�àjŒj�àj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXY**Parameters** ``struct net *net`` the applicable net namespace ``unsigned short type`` media type of device ``const char *ha`` hardware address **Description** Similar to dev_getbyhwaddr_rcu(), but the owner needs to hold rtnl_lock. **Context** rtnl_lock() must be held. **Return** pointer to the net_device, or NULL if not found”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj™àh]”hŒ Parameters”…”�”}”(hj›àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—àubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M!hj“àubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net *net`` the applicable net namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj¸àh]”hŒstruct net *net”…”�”}”(hjºàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj²àubj)�”}”(hhh]”jl)�”}”(hŒthe applicable net namespace”h]”hŒthe applicable net namespace”…”�”}”(hjÑàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍàh´MhjÎàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍàh´Mhj¯àubjä)�”}”(hŒ-``unsigned short type`` media type of device ”h]”(jê)�”}”(hŒ``unsigned short type``”h]”jð)�”}”(hjñàh]”hŒunsigned short type”…”�”}”(hjóàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïàubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhjëàubj)�”}”(hhh]”jl)�”}”(hŒmedia type of device”h]”hŒmedia type of device”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jáh´Mhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáh´Mhj¯àubjä)�”}”(hŒ$``const char *ha`` hardware address ”h]”(jê)�”}”(hŒ``const char *ha``”h]”jð)�”}”(hj*áh]”hŒconst char *ha”…”�”}”(hj,áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(áubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj$áubj)�”}”(hhh]”jl)�”}”(hŒhardware address”h]”hŒhardware address”…”�”}”(hjCáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?áh´M hj@áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?áh´M hj¯àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“àubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjeáh]”hŒ Description”…”�”}”(hjgáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjcáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M"hj“àubjl)�”}”(hŒHSimilar to dev_getbyhwaddr_rcu(), but the owner needs to hold rtnl_lock.”h]”hŒHSimilar to dev_getbyhwaddr_rcu(), but the owner needs to hold rtnl_lock.”…”�”}”(hj{áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M!hj“àubjl)�”}”(hŒ **Context**”h]”j›)�”}”(hjŒáh]”hŒContext”…”�”}”(hjŽáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M$hj“àubjl)�”}”(hŒrtnl_lock() must be held.”h]”hŒrtnl_lock() must be held.”…”�”}”(hj¢áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M%hj“àubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj³áh]”hŒReturn”…”�”}”(hjµáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±áubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M'hj“àubjl)�”}”(hŒ/pointer to the net_device, or NULL if not found”h]”hŒ/pointer to the net_device, or NULL if not found”…”�”}”(hjÉáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M&hj“àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_valid_name (C function)”Œc.dev_valid_name”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&bool dev_valid_name (const char *name)”h]”j )�”}”(hŒ%bool dev_valid_name(const char *name)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjøáh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjôáh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôáh²hh³jâh´Mbubj3)�”}”(hŒdev_valid_name”h]”j9)�”}”(hŒdev_valid_name”h]”hŒdev_valid_name”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjôáh²hh³jâh´Mbubj¡ )�”}”(hŒ(const char *name)”h]”j§ )�”}”(hŒconst char *name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj4âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0âubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjOâh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj0âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0âubj )�”}”(hj h]”hŒ*”…”�”}”(hjkâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj0âubj9)�”}”(hŒname”h]”hŒname”…”�”}”(hjxâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,âubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjôáh²hh³jâh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjðáh²hh³jâh´Mbubah}”(h]”jëáah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jâh´Mbhjíáh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(check if name is okay for network device”h]”hŒ(check if name is okay for network device”…”�”}”(hj¢âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MbhjŸâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjíáh²hh³jâh´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jºâjŒjºâj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÆ**Parameters** ``const char *name`` name string **Description** Network device names need to be valid file names to allow sysfs to work. We also disallow any kind of whitespace.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÄâh]”hŒ Parameters”…”�”}”(hjÆâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂâubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mfhj¾âubjß)�”}”(hhh]”jä)�”}”(hŒ!``const char *name`` name string ”h]”(jê)�”}”(hŒ``const char *name``”h]”jð)�”}”(hjãâh]”hŒconst char *name”…”�”}”(hjåâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjáâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MchjÝâubj)�”}”(hhh]”jl)�”}”(hŒ name string”h]”hŒ name string”…”�”}”(hjüâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jøâh´Mchjùâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jøâh´MchjÚâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¾âubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjãh]”hŒ Description”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mehj¾âubjÒ)�”}”(hŒrNetwork device names need to be valid file names to allow sysfs to work. We also disallow any kind of whitespace.”h]”jl)�”}”(hŒrNetwork device names need to be valid file names to allow sysfs to work. We also disallow any kind of whitespace.”h]”hŒrNetwork device names need to be valid file names to allow sysfs to work. We also disallow any kind of whitespace.”…”�”}”(hj8ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mdhj4ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jFãh´Mdhj¾âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_alloc_name (C function)”Œc.dev_alloc_name”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=int dev_alloc_name (struct net_device *dev, const char *name)”h]”j )�”}”(hŒëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mæhj:ëubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct notifier_block *nb`` notifier ”h]”(jê)�”}”(hŒ``struct notifier_block *nb``”h]”jð)�”}”(hj_ëh]”hŒstruct notifier_block *nb”…”�”}”(hjaëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj]ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MãhjYëubj)�”}”(hhh]”jl)�”}”(hŒnotifier”h]”hŒnotifier”…”�”}”(hjxëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jtëh´Mãhjuëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jtëh´MãhjVëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj:ëubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjšëh]”hŒ Description”…”�”}”(hjœëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Måhj:ëubjl)�”}”(hŒâRegister a notifier to be called when network device events occur. The notifier passed is linked into the kernel structures and must not be reused until it has been unregistered. A negative errno code is returned on a failure.”h]”hŒâRegister a notifier to be called when network device events occur. The notifier passed is linked into the kernel structures and must not be reused until it has been unregistered. A negative errno code is returned on a failure.”…”�”}”(hj°ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mähj:ëubjl)�”}”(hŒ”When registered all registration and up events are replayed to the new notifier to allow device to have a race free view of the network device list.”h]”hŒ”When registered all registration and up events are replayed to the new notifier to allow device to have a race free view of the network device list.”…”�”}”(hj¿ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Méhj:ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*unregister_netdevice_notifier (C function)”Œc.unregister_netdevice_notifier”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=int unregister_netdevice_notifier (struct notifier_block *nb)”h]”j )�”}”(hŒïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=ïh´Mfhjæîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊîubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjcïh]”hŒ Description”…”�”}”(hjeïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjaïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhhjÊîubjl)�”}”(hŒâRegister a notifier to be called when network device events occur. The notifier passed is linked into the kernel structures and must not be reused until it has been unregistered. A negative errno code is returned on a failure.”h]”hŒâRegister a notifier to be called when network device events occur. The notifier passed is linked into the kernel structures and must not be reused until it has been unregistered. A negative errno code is returned on a failure.”…”�”}”(hjyïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MghjÊîubjl)�”}”(hŒ”When registered all registration and up events are replayed to the new notifier to allow device to have a race free view of the network device list.”h]”hŒ”When registered all registration and up events are replayed to the new notifier to allow device to have a race free view of the network device list.”…”�”}”(hjˆïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MlhjÊîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ.unregister_netdevice_notifier_net (C function)”Œ#c.unregister_netdevice_notifier_net”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRint unregister_netdevice_notifier_net (struct net *net, struct notifier_block *nb)”h]”j )�”}”(hŒQint unregister_netdevice_notifier_net(struct net *net, struct notifier_block *nb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj·ïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj³ïh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³ïh²hh³jÅïh´Mubj3)�”}”(hŒ!unregister_netdevice_notifier_net”h]”j9)�”}”(hŒ!unregister_netdevice_notifier_net”h]”hŒ!unregister_netdevice_notifier_net”…”�”}”(hjØïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔïubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj³ïh²hh³jÅïh´Mubj¡ )�”}”(hŒ,(struct net *net, struct notifier_block *nb)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjôïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðïubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÚïsbŒ#c.unregister_netdevice_notifier_net”†”asbuh1hhjðïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðïubj )�”}”(hj h]”hŒ*”…”�”}”(hj@ðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjðïubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjMðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjìïubj§ )�”}”(hŒstruct notifier_block *nb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjfðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjbðubh)�”}”(hhh]”j9)�”}”(hŒnotifier_block”h]”hŒnotifier_block”…”�”}”(hj„ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j†ðŒmodname”NŒ classname”Njå jè )�”}”jë ]”j.ðŒ#c.unregister_netdevice_notifier_net”†”asbuh1hhjbðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjbðubj )�”}”(hj h]”hŒ*”…”�”}”(hj°ðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjbðubj9)�”}”(hŒnb”h]”hŒnb”…”�”}”(hj½ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjìïubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj³ïh²hh³jÅïh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¯ïh²hh³jÅïh´Mubah}”(h]”jªïah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÅïh´Mhj¬ïh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-unregister a per-netns network notifier block”h]”hŒ-unregister a per-netns network notifier block”…”�”}”(hjçðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhjäðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¬ïh²hh³jÅïh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÿðjŒjÿðj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXõ**Parameters** ``struct net *net`` network namespace ``struct notifier_block *nb`` notifier **Description** Unregister a notifier previously registered by register_netdevice_notifier_net(). The notifier is unlinked from the kernel structures and may then be reused. A negative errno code is returned on a failure. After unregistering unregister and down device events are synthesized for all devices on the device list to the removed notifier to remove the need for special case cleanup code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj ñh]”hŒ Parameters”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mƒhjñubjß)�”}”(hhh]”(jä)�”}”(hŒ&``struct net *net`` network namespace ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj(ñh]”hŒstruct net *net”…”�”}”(hj*ñh²hh³Nh´Nubah}”(h]”h ]”h"•]”h$]”h&]”uh1jïhj&ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M�hj"ñubj)�”}”(hhh]”jl)�”}”(hŒnetwork namespace”h]”hŒnetwork namespace”…”�”}”(hjAñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=ñh´M�hj>ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=ñh´M�hjñubjä)�”}”(hŒ'``struct notifier_block *nb`` notifier ”h]”(jê)�”}”(hŒ``struct notifier_block *nb``”h]”jð)�”}”(hjañh]”hŒstruct notifier_block *nb”…”�”}”(hjcñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M‚hj[ñubj)�”}”(hhh]”jl)�”}”(hŒnotifier”h]”hŒnotifier”…”�”}”(hjzñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvñh´M‚hjwñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvñh´M‚hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjñubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjœñh]”hŒ Description”…”�”}”(hjžñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M„hjñubjl)�”}”(hŒÍUnregister a notifier previously registered by register_netdevice_notifier_net(). The notifier is unlinked from the kernel structures and may then be reused. A negative errno code is returned on a failure.”h]”hŒÍUnregister a notifier previously registered by register_netdevice_notifier_net(). The notifier is unlinked from the kernel structures and may then be reused. A negative errno code is returned on a failure.”…”�”}”(hj²ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mƒhjñubjl)�”}”(hŒ²After unregistering unregister and down device events are synthesized for all devices on the device list to the removed notifier to remove the need for special case cleanup code.”h]”hŒ²After unregistering unregister and down device events are synthesized for all devices on the device list to the removed notifier to remove the need for special case cleanup code.”…”�”}”(hjÁñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mˆhjñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%call_netdevice_notifiers (C function)”Œc.call_netdevice_notifiers”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHint call_netdevice_notifiers (unsigned long val, struct net_device *dev)”h]”j )�”}”(hŒGint call_netdevice_notifiers(unsigned long val, struct net_device *dev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjðñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìñh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M3 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìñh²hh³jþñh´M3 ubj3)�”}”(hŒcall_netdevice_notifiers”h]”j9)�”}”(hŒcall_netdevice_notifiers”h]”hŒcall_netdevice_notifiers”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj òubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjìñh²hh³jþñh´M3 ubj¡ )�”}”(hŒ+(unsigned long val, struct net_device *dev)”h]”(j§ )�”}”(hŒunsigned long val”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj-òh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)òubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjIòh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)òubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjeòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%òubj§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj~òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzòubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjœòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jžòŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jòsbŒc.call_netdevice_notifiers”†”asbuh1hhjzòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzòubj )�”}”(hj h]”hŒ*”…”�”}”(hjÊòh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjzòubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj×òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%òubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjìñh²hh³jþñh´M3 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjèñh²hh³jþñh´M3 ubah}”(h]”jãñah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jþñh´M3 hjåñh²hubjg)�”}”(hhh]”jl)�”}”(hŒ call all network notifier blocks”h]”hŒ call all network notifier blocks”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M3 hjþòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjåñh²hh³jþñh´M3 ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jójŒjój�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX-**Parameters** ``unsigned long val`` value passed unmodified to notifier function ``struct net_device *dev`` net_device pointer passed unmodified to notifier function **Description** Call all network notifier blocks. Parameters and return value are as for raw_notifier_call_chain().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj#óh]”hŒ Parameters”…”�”}”(hj%óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M7 hjóubjß)�”}”(hhh]”(jä)�”}”(hŒC``unsigned long val`` value passed unmodified to notifier function ”h]”(jê)�”}”(hŒ``unsigned long val``”h]”jð)�”}”(hjBóh]”hŒunsigned long val”…”�”}”(hjDóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M4 hj<óubj)�”}”(hhh]”jl)�”}”(hŒ,value passed unmodified to notifier function”h]”hŒ,value passed unmodified to notifier function”…”�”}”(hj[óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jWóh´M4 hjXóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jWóh´M4 hj9óubjä)�”}”(hŒU``struct net_device *dev`` net_device pointer passed unmodified to notifier function ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj{óh]”hŒstruct net_device *dev”…”�”}”(hj}óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyóubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M5 hjuóubj)�”}”(hhh]”jl)�”}”(hŒ9net_device pointer passed unmodified to notifier function”h]”hŒ9net_device pointer passed unmodified to notifier function”…”�”}”(hj”óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�óh´M5 hj‘óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�óh´M5 hj9óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjóubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¶óh]”hŒ Description”…”�”}”(hj¸óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M7 hjóubjÒ)�”}”(hŒdCall all network notifier blocks. Parameters and return value are as for raw_notifier_call_chain().”h]”jl)�”}”(hŒdCall all network notifier blocks. Parameters and return value are as for raw_notifier_call_chain().”h]”hŒdCall all network notifier blocks. Parameters and return value are as for raw_notifier_call_chain().”…”�”}”(hjÐóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M6 hjÌóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÞóh´M6 hjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_forward_skb (C function)”Œc.dev_forward_skb”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAint dev_forward_skb (struct net_device *dev, struct sk_buff *skb)”h]”j )�”}”(hŒ@int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjôh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Má ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôh²hh³jôh´Má ubj3)�”}”(hŒdev_forward_skb”h]”j9)�”}”(hŒdev_forward_skb”h]”hŒdev_forward_skb”…”�”}”(hj&ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"ôubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjôh²hh³jôh´Má ubj¡ )�”}”(hŒ-(struct net_device *dev, struct sk_buff *skb)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjBôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ôubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj`ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jbôŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j(ôsbŒc.dev_forward_skb”†”asbuh1hhj>ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ôubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>ôubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj›ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj:ôubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj´ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°ôubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÒôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔôŒmodname”NŒ classname”Njå jè )�”}”jë ]”j|ôŒc.dev_forward_skb”†”asbuh1hhj°ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°ôubj )�”}”(hj h]”hŒ*”…”�”}”(hjþôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj°ôubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj:ôubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjôh²hh³jôh´Má ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjýóh²hh³jôh´Má ubah}”(h]”jøóah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jôh´Má hjúóh²hubjg)�”}”(hhh]”jl)�”}”(hŒ loopback an skb to another netif”h]”hŒ loopback an skb to another netif”…”�”}”(hj5õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Má hj2õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjúóh²hh³jôh´Má ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jMõjŒjMõj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXÿ**Parameters** ``struct net_device *dev`` destination network device ``struct sk_buff *skb`` buffer to forward **Description** return values: NET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped, but freed) dev_forward_skb can be used for injecting an skb from the start_xmit function of one device into the receive queue of another device. The receiving device may be in another namespace, so we have to clear all information in the skb that could impact namespace isolation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjWõh]”hŒ Parameters”…”�”}”(hjYõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjUõubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Må hjQõubjß)�”}”(hhh]”(jä)�”}”(hŒ6``struct net_device *dev`` destination network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjvõh]”hŒstruct net_device *dev”…”�”}”(hjxõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjtõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mã hjpõubj)�”}”(hhh]”jl)�”}”(hŒdestination network device”h]”hŒdestination network device”…”�”}”(hj�õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹õh´Mã hjŒõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹õh´Mã hjmõubjä)�”}”(hŒ*``struct sk_buff *skb`` buffer to forward ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj¯õh]”hŒstruct sk_buff *skb”…”�”}”(hj±õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mä hj©õubj)�”}”(hhh]”jl)�”}”(hŒbuffer to forward”h]”hŒbuffer to forward”…”�”}”(hjÈõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄõh´Mä hjÅõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄõh´Mä hjmõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQõubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjêõh]”hŒ Description”…”�”}”(hjìõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjèõubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mæ hjQõubjß)�”}”(hhh]”jä)�”}”(hŒ_return values: NET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped, but freed) ”h]”(jê)�”}”(hŒreturn values:”h]”hŒreturn values:”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mç hjöubj)�”}”(hhh]”jl)�”}”(hŒONET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped, but freed)”h]”hŒONET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped, but freed)”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mæ hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöh´Mç hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQõubjl)�”}”(hŒ…dev_forward_skb can be used for injecting an skb from the start_xmit function of one device into the receive queue of another device.”h]”hŒ…dev_forward_skb can be used for injecting an skb from the start_xmit function of one device into the receive queue of another device.”…”�”}”(hj:öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mé hjQõubjl)�”}”(hŒ‡The receiving device may be in another namespace, so we have to clear all information in the skb that could impact namespace isolation.”h]”hŒ‡The receiving device may be in another namespace, so we have to clear all information in the skb that could impact namespace isolation.”…”�”}”(hjIöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mí hjQõubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_nit_active_rcu (C function)”Œc.dev_nit_active_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6bool dev_nit_active_rcu (const struct net_device *dev)”h]”j )�”}”(hŒ5bool dev_nit_active_rcu(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjxöh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjtöh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M' ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtöh²hh³j…öh´M' ubj3)�”}”(hŒdev_nit_active_rcu”h]”j9)�”}”(hŒdev_nit_active_rcu”h]”hŒdev_nit_active_rcu”…”�”}”(hj˜öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”öubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjtöh²hh³j…öh´M' ubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj´öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°öubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÏöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°öubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjíöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jïöŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jšösbŒc.dev_nit_active_rcu”†”asbuh1hhj°öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°öubj )�”}”(hj h]”hŒ*”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj°öubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj(÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬öubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjtöh²hh³j…öh´M' ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjpöh²hh³j…öh´M' ubah}”(h]”jköah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j…öh´M' hjmöh²hubjg)�”}”(hhh]”jl)�”}”(hŒ4return true if any network interface taps are in use”h]”hŒ4return true if any network interface taps are in use”…”�”}”(hjR÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M' hjO÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjmöh²hh³j…öh´M' ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jj÷jŒjj÷j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ—**Parameters** ``const struct net_device *dev`` network device to check for the presence of taps **Description** The caller must hold the RCU lock”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjt÷h]”hŒ Parameters”…”�”}”(hjv÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjr÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M+ hjn÷ubjß)�”}”(hhh]”jä)�”}”(hŒR``const struct net_device *dev`` network device to check for the presence of taps ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hj“÷h]”hŒconst struct net_device *dev”…”�”}”(hj•÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M+ hj�÷ubj)�”}”(hhh]”jl)�”}”(hŒ0network device to check for the presence of taps”h]”hŒ0network device to check for the presence of taps”…”�”}”(hj¬÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨÷h´M+ hj©÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨÷h´M+ hjŠ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjn÷ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÎ÷h]”hŒ Description”…”�”}”(hjÐ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M- hjn÷ubjl)�”}”(hŒ!The caller must hold the RCU lock”h]”hŒ!The caller must hold the RCU lock”…”�”}”(hjä÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M( hjn÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)netif_set_real_num_rx_queues (C function)”Œc.netif_set_real_num_rx_queues”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKint netif_set_real_num_rx_queues (struct net_device *dev, unsigned int rxq)”h]”j )�”}”(hŒJint netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjøh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mþ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjøh²hh³j!øh´Mþ ubj3)�”}”(hŒnetif_set_real_num_rx_queues”h]”j9)�”}”(hŒnetif_set_real_num_rx_queues”h]”hŒnetif_set_real_num_rx_queues”…”�”}”(hj4øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0øubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjøh²hh³j!øh´Mþ ubj¡ )�”}”(hŒ*(struct net_device *dev, unsigned int rxq)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjPøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLøubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjnøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jpøŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j6øsbŒc.netif_set_real_num_rx_queues”†”asbuh1hhjLøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLøubj )�”}”(hj h]”hŒ*”…”�”}”(hjœøh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjLøubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj©øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjHøubj§ )�”}”(hŒunsigned int rxq”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÂøh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¾øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾øubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÞøh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¾øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾øubj9)�”}”(hŒrxq”h]”hŒrxq”…”�”}”(hjúøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjHøubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjøh²hh³j!øh´Mþ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj øh²hh³j!øh´Mþ ubah}”(h]”jøah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j!øh´Mþ hjøh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#set actual number of RX queues used”h]”hŒ#set actual number of RX queues used”…”�”}”(hj$ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mþ hj!ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjøh²hh³j!øh´Mþ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j<ùjŒj<ùj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXV**Parameters** ``struct net_device *dev`` Network device ``unsigned int rxq`` Actual number of RX queues **Description** This must be called either with the rtnl_lock held or before registration of the net device. Returns 0 on success, or a negative error code. If called before registration, it always succeeds.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjFùh]”hŒ Parameters”…”�”}”(hjHùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj@ùubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` Network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjeùh]”hŒstruct net_device *dev”…”�”}”(hjgùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjcùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mÿ hj_ùubj)�”}”(hhh]”jl)�”}”(hŒNetwork device”h]”hŒNetwork device”…”�”}”(hj~ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jzùh´Mÿ hj{ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jzùh´Mÿ hj\ùubjä)�”}”(hŒ0``unsigned int rxq`` Actual number of RX queues ”h]”(jê)�”}”(hŒ``unsigned int rxq``”h]”jð)�”}”(hjžùh]”hŒunsigned int rxq”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj˜ùubj)�”}”(hhh]”jl)�”}”(hŒActual number of RX queues”h]”hŒActual number of RX queues”…”�”}”(hj·ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³ùh´M hj´ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³ùh´M hj\ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj@ùubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÙùh]”hŒ Description”…”�”}”(hjÛùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj×ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj@ùubjÒ)�”}”(hŒÁThis must be called either with the rtnl_lock held or before registration of the net device. Returns 0 on success, or a negative error code. If called before registration, it always succeeds.”h]”jl)�”}”(hŒÁThis must be called either with the rtnl_lock held or before registration of the net device. Returns 0 on success, or a negative error code. If called before registration, it always succeeds.”h]”hŒÁThis must be called either with the rtnl_lock held or before registration of the net device. Returns 0 on success, or a negative error code. If called before registration, it always succeeds.”…”�”}”(hjóùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hjïùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³júh´M hj@ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&netif_set_real_num_queues (C function)”Œc.netif_set_real_num_queues”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZint netif_set_real_num_queues (struct net_device *dev, unsigned int txq, unsigned int rxq)”h]”j )�”}”(hŒYint netif_set_real_num_queues(struct net_device *dev, unsigned int txq, unsigned int rxq)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj(úh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$úh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$úh²hh³j6úh´M ubj3)�”}”(hŒnetif_set_real_num_queues”h]”j9)�”}”(hŒnetif_set_real_num_queues”h]”hŒnetif_set_real_num_queues”…”�”}”(hjIúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEúubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj$úh²hh³j6úh´M ubj¡ )�”}”(hŒ<(struct net_device *dev, unsigned int txq, unsigned int rxq)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjeúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaúubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaúubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjƒúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j…úŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jKúsbŒc.netif_set_real_num_queues”†”asbuh1hhjaúubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaúubj )�”}”(hj h]”hŒ*”…”�”}”(hj±úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjaúubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¾úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]úubj§ )�”}”(hŒunsigned int txq”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj×úh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÓúubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓúubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjóúh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÓúubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓúubj9)�”}”(hŒtxq”h]”hŒtxq”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]úubj§ )�”}”(hŒunsigned int rxq”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj(ûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$ûubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjDûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$ûubj9)�”}”(hŒrxq”h]”hŒrxq”…”�”}”(hj`ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]úubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj$úh²hh³j6úh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj úh²hh³j6úh´M ubah}”(h]”júah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j6úh´M hjúh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*set actual number of RX and TX queues used”h]”hŒ*set actual number of RX and TX queues used”…”�”}”(hjŠûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj‡ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjúh²hh³j6úh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¢ûjŒj¢ûj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX$**Parameters** ``struct net_device *dev`` Network device ``unsigned int txq`` Actual number of TX queues ``unsigned int rxq`` Actual number of RX queues **Description** Set the real number of both TX and RX queues. Does nothing if the number of queues is already correct.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¬ûh]”hŒ Parameters”…”�”}”(hj®ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjªûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M! hj¦ûubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` Network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjËûh]”hŒstruct net_device *dev”…”�”}”(hjÍûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hjÅûubj)�”}”(hhh]”jl)�”}”(hŒNetwork device”h]”hŒNetwork device”…”�”}”(hjäûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jàûh´M hjáûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jàûh´M hjÂûubjä)�”}”(hŒ0``unsigned int txq`` Actual number of TX queues ”h]”(jê)�”}”(hŒ``unsigned int txq``”h]”jð)�”}”(hjüh]”hŒunsigned int txq”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hjþûubj)�”}”(hhh]”jl)�”}”(hŒActual number of TX queues”h]”hŒActual number of TX queues”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüh´M hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jüh´M hjÂûubjä)�”}”(hŒ0``unsigned int rxq`` Actual number of RX queues ”h]”(jê)�”}”(hŒ``unsigned int rxq``”h]”jð)�”}”(hj=üh]”hŒunsigned int rxq”…”�”}”(hj?üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj7üubj)�”}”(hhh]”jl)�”}”(hŒActual number of RX queues”h]”hŒActual number of RX queues”…”�”}”(hjVüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jRüh´M hjSüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jRüh´M hjÂûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¦ûubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjxüh]”hŒ Description”…”�”}”(hjzüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjvüubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M" hj¦ûubjÒ)�”}”(hŒfSet the real number of both TX and RX queues. Does nothing if the number of queues is already correct.”h]”jl)�”}”(hŒfSet the real number of both TX and RX queues. Does nothing if the number of queues is already correct.”h]”hŒfSet the real number of both TX and RX queues. Does nothing if the number of queues is already correct.”…”�”}”(hj’üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M! hjŽüubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j üh´M! hj¦ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netif_set_tso_max_size (C function)”Œc.netif_set_tso_max_size”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒGvoid netif_set_tso_max_size (struct net_device *dev, unsigned int size)”h]”j )�”}”(hŒFvoid netif_set_tso_max_size(struct net_device *dev, unsigned int size)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇüh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÃüh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MI ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖüh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃüh²hh³jÕüh´MI ubj3)�”}”(hŒnetif_set_tso_max_size”h]”j9)�”}”(hŒnetif_set_tso_max_size”h]”hŒnetif_set_tso_max_size”…”�”}”(hjèüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäüubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÃüh²hh³jÕüh´MI ubj¡ )�”}”(hŒ+(struct net_device *dev, unsigned int size)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjýubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj"ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j$ýŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jêüsbŒc.netif_set_tso_max_size”†”asbuh1hhjýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjýubj )�”}”(hj h]”hŒ*”…”�”}”(hjPýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjýubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj]ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjüüubj§ )�”}”(hŒunsigned int size”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjvýh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjrýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrýubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj’ýh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjrýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrýubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj®ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjrýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjüüubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÃüh²hh³jÕüh´MI ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¿üh²hh³jÕüh´MI ubah}”(h]”jºüah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÕüh´MI hj¼üh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(set the max size of TSO frames supported”h]”hŒ(set the max size of TSO frames supported”…”�”}”(hjØýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MI hjÕýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¼üh²hh³jÕüh´MI ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jðýjŒjðýj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` netdev to update ``unsigned int size`` max skb->len of a TSO frame **Description** Set the limit on the size of TSO super-frames the device can handle. Unless explicitly set the stack will assume the value of ``GSO_LEGACY_MAX_SIZE``.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjúýh]”hŒ Parameters”…”�”}”(hjüýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjøýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MM hjôýubjß)�”}”(hhh]”(jä)�”}”(hŒ,``struct net_device *dev`` netdev to update ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjþh]”hŒstruct net_device *dev”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MJ hjþubj)�”}”(hhh]”jl)�”}”(hŒnetdev to update”h]”hŒnetdev to update”…”�”}”(hj2þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.þh´MJ hj/þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.þh´MJ hjþubjä)�”}”(hŒ2``unsigned int size`` max skb->len of a TSO frame ”h]”(jê)�”}”(hŒ``unsigned int size``”h]”jð)�”}”(hjRþh]”hŒunsigned int size”…”�”}”(hjTþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjPþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MK hjLþubj)�”}”(hhh]”jl)�”}”(hŒmax skb->len of a TSO frame”h]”hŒmax skb->len of a TSO frame”…”�”}”(hjkþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jgþh´MK hjhþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgþh´MK hjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjôýubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�þh]”hŒ Description”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MM hjôýubjl)�”}”(hŒ–Set the limit on the size of TSO super-frames the device can handle. Unless explicitly set the stack will assume the value of ``GSO_LEGACY_MAX_SIZE``.”h]”(hŒ~Set the limit on the size of TSO super-frames the device can handle. Unless explicitly set the stack will assume the value of ”…”�”}”(hj£þh²hh³Nh´Nubjð)�”}”(hŒ``GSO_LEGACY_MAX_SIZE``”h]”hŒGSO_LEGACY_MAX_SIZE”…”�”}”(hj«þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£þubhŒ.”…”�”}”(hj£þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´ML hjôýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netif_set_tso_max_segs (C function)”Œc.netif_set_tso_max_segs”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒGvoid netif_set_tso_max_segs (struct net_device *dev, unsigned int segs)”h]”j )�”}”(hŒFvoid netif_set_tso_max_segs(struct net_device *dev, unsigned int segs)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäþh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàþh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M\ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàþh²hh³jòþh´M\ ubj3)�”}”(hŒnetif_set_tso_max_segs”h]”j9)�”}”(hŒnetif_set_tso_max_segs”h]”hŒnetif_set_tso_max_segs”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjàþh²hh³jòþh´M\ ubj¡ )�”}”(hŒ+(struct net_device *dev, unsigned int segs)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj!ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj?ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jAÿŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÿsbŒc.netif_set_tso_max_segs”†”asbuh1hhjÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿubj )�”}”(hj h]”hŒ*”…”�”}”(hjmÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÿubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjzÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÿubj§ )�”}”(hŒunsigned int segs”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj“ÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ÿubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¯ÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ÿubj9)�”}”(hŒsegs”h]”hŒsegs”…”�”}”(hjËÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÿubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjàþh²hh³jòþh´M\ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÜþh²hh³jòþh´M\ ubah}”(h]”j×þah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jòþh´M\ hjÙþh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,set the max number of segs supported for TSO”h]”hŒ,set the max number of segs supported for TSO”…”�”}”(hjõÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M\ hjòÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÙþh²hh³jòþh´M\ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX1**Parameters** ``struct net_device *dev`` netdev to update ``unsigned int segs`` max number of TCP segments **Description** Set the limit on the number of TCP segments the device can generate from a single TSO super-frame. Unless explicitly set the stack will assume the value of ``GSO_MAX_SEGS``.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M` hjubjß)�”}”(hhh]”(jä)�”}”(hŒ,``struct net_device *dev`` netdev to update ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj6h]”hŒstruct net_device *dev”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M] hj0ubj)�”}”(hhh]”jl)�”}”(hŒnetdev to update”h]”hŒnetdev to update”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKh´M] hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKh´M] hj-ubjä)�”}”(hŒ1``unsigned int segs`` max number of TCP segments ”h]”(jê)�”}”(hŒ``unsigned int segs``”h]”jð)�”}”(hjoh]”hŒunsigned int segs”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M^ hjiubj)�”}”(hhh]”jl)�”}”(hŒmax number of TCP segments”h]”hŒmax number of TCP segments”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„h´M^ hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„h´M^ hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjªh]”hŒ Description”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M` hjubjl)�”}”(hŒ­Set the limit on the number of TCP segments the device can generate from a single TSO super-frame. Unless explicitly set the stack will assume the value of ``GSO_MAX_SEGS``.”h]”(hŒœSet the limit on the number of TCP segments the device can generate from a single TSO super-frame. Unless explicitly set the stack will assume the value of ”…”�”}”(hjÀh²hh³Nh´Nubjð)�”}”(hŒ``GSO_MAX_SEGS``”h]”hŒ GSO_MAX_SEGS”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀubhŒ.”…”�”}”(hjÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M_ hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"netif_inherit_tso_max (C function)”Œc.netif_inherit_tso_max”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQvoid netif_inherit_tso_max (struct net_device *to, const struct net_device *from)”h]”j )�”}”(hŒPvoid netif_inherit_tso_max(struct net_device *to, const struct net_device *from)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjýh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mm ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjýh²hh³jh´Mm ubj3)�”}”(hŒnetif_inherit_tso_max”h]”j9)�”}”(hŒnetif_inherit_tso_max”h]”hŒnetif_inherit_tso_max”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjýh²hh³jh´Mm ubj¡ )�”}”(hŒ6(struct net_device *to, const struct net_device *from)”h]”(j§ )�”}”(hŒstruct net_device *to”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j^Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j$sbŒc.netif_inherit_tso_max”†”asbuh1hhj:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj:ubj9)�”}”(hŒto”h]”hŒto”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6ubj§ )�”}”(hŒconst struct net_device *from”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jëŒmodname”NŒ classname”Njå jè )�”}”jë ]”jxŒc.netif_inherit_tso_max”†”asbuh1hhj¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¬ubj9)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjýh²hh³jh´Mm ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjùh²hh³jh´Mm ubah}”(h]”jôah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´Mm hjöh²hubjg)�”}”(hhh]”jl)�”}”(hŒ3copy all TSO limits from a lower device to an upper”h]”hŒ3copy all TSO limits from a lower device to an upper”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mm hjIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjöh²hh³jh´Mm ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jdjŒjdj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ†**Parameters** ``struct net_device *to`` netdev to update ``const struct net_device *from`` netdev from which to copy the limits”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjnh]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mq hjhubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct net_device *to`` netdev to update ”h]”(jê)�”}”(hŒ``struct net_device *to``”h]”jð)�”}”(hj�h]”hŒstruct net_device *to”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mn hj‡ubj)�”}”(hhh]”jl)�”}”(hŒnetdev to update”h]”hŒnetdev to update”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¢h´Mn hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢h´Mn hj„ubjä)�”}”(hŒF``const struct net_device *from`` netdev from which to copy the limits”h]”(jê)�”}”(hŒ!``const struct net_device *from``”h]”jð)�”}”(hjÆh]”hŒconst struct net_device *from”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mp hjÀubj)�”}”(hhh]”jl)�”}”(hŒ$netdev from which to copy the limits”h]”hŒ$netdev from which to copy the limits”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mo hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛh´Mp hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ-netif_get_num_default_rss_queues (C function)”Œ"c.netif_get_num_default_rss_queues”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+int netif_get_num_default_rss_queues (void)”h]”j )�”}”(hŒ*int netif_get_num_default_rss_queues(void)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´My ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j.h´My ubj3)�”}”(hŒ netif_get_num_default_rss_queues”h]”j9)�”}”(hŒ netif_get_num_default_rss_queues”h]”hŒ netif_get_num_default_rss_queues”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³j.h´My ubj¡ )�”}”(hŒ(void)”h]”j§ )�”}”(hŒvoid”h]”jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjYubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjUubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³j.h´My ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³j.h´My ubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j.h´My hjh²hubjg)�”}”(hhh]”jl)�”}”(hŒdefault number of RSS queues”h]”hŒdefault number of RSS queues”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´My hj„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j.h´My ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŸjŒjŸj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¤**Parameters** ``void`` no arguments **Description** Default value is the number of physical cores if there are only 1 or 2, or divided by 2 if there are more.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj©h]”hŒ Parameters”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M} hj£ubjß)�”}”(hhh]”jä)�”}”(hŒ``void`` no arguments ”h]”(jê)�”}”(hŒ``void``”h]”jð)�”}”(hjÈh]”hŒvoid”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´KhjÂubj)�”}”(hhh]”jl)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝh´KhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝh´Khj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj£ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Khj£ubjl)�”}”(hŒjDefault value is the number of physical cores if there are only 1 or 2, or divided by 2 if there are more.”h]”hŒjDefault value is the number of physical cores if there are only 1 or 2, or divided by 2 if there are more.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mz hj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_device_detach (C function)”Œc.netif_device_detach”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void netif_device_detach (struct net_device *dev)”h]”j )�”}”(hŒ0void netif_device_detach(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjDh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mó ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjDh²hh³jVh´Mó ubj3)�”}”(hŒnetif_device_detach”h]”j9)�”}”(hŒnetif_device_detach”h]”hŒnetif_device_detach”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjDh²hh³jVh´Mó ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jksbŒc.netif_device_detach”†”asbuh1hhj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj}ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjDh²hh³jVh´Mó ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj@h²hh³jVh´Mó ubah}”(h]”j;ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jVh´Mó hj=h²hubjg)�”}”(hhh]”jl)�”}”(hŒmark device as removed”h]”hŒmark device as removed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mó hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj=h²hh³jVh´Mó ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ“**Parameters** ``struct net_device *dev`` network device **Description** Mark device as removed from system and therefore no longer available.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj*h]”hŒ Parameters”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M÷ hj$ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjIh]”hŒstruct net_device *dev”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mô hjCubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^h´Mô hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^h´Mô hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj$ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj„h]”hŒ Description”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mö hj$ubjl)�”}”(hŒEMark device as removed from system and therefore no longer available.”h]”hŒEMark device as removed from system and therefore no longer available.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mõ hj$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_device_attach (C function)”Œc.netif_device_attach”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void netif_device_attach (struct net_device *dev)”h]”j )�”}”(hŒ0void netif_device_attach(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÅh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅh²hh³j×h´Mubj3)�”}”(hŒnetif_device_attach”h]”j9)�”}”(hŒnetif_device_attach”h]”hŒnetif_device_attach”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÅh²hh³j×h´Mubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j&Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jìsbŒc.netif_device_attach”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjþubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÅh²hh³j×h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÁh²hh³j×h´Mubah}”(h]”j¼ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j×h´Mhj¾h²hubjg)�”}”(hhh]”jl)�”}”(hŒmark device as attached”h]”hŒmark device as attached”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¾h²hh³j×h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¡jŒj¡j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒˆ**Parameters** ``struct net_device *dev`` network device **Description** Mark device as attached from system and restart if needed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj«h]”hŒ Parameters”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj¥ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÊh]”hŒstruct net_device *dev”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjÄubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jßh´Mhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßh´MhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¥ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj¥ubjl)�”}”(hŒ:Mark device as attached from system and restart if needed.”h]”hŒ:Mark device as attached from system and restart if needed.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_loopback_xmit (C function)”Œc.dev_loopback_xmit”•hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint dev_loopback_xmit (struct net *net, struct sock *sk, struct sk_buff *skb)”h]”j )�”}”(hŒLint dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjFh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFh²hh³jXh´M¯ubj3)�”}”(hŒdev_loopback_xmit”h]”j9)�”}”(hŒdev_loopback_xmit”h]”hŒdev_loopback_xmit”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjFh²hh³jXh´M¯ubj¡ )�”}”(hŒ7(struct net *net, struct sock *sk, struct sk_buff *skb)”h]”(j§ )�”}”(hŒstruct net *net”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒubh)�”}”(hhh]”j9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jmsbŒc.dev_loopback_xmit”†”asbuh1hhjƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒubj9)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÁŒc.dev_loopback_xmit”†”asbuh1hhjõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõubj )�”}”(hj h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÁŒc.dev_loopback_xmit”†”asbuh1hhjeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeubj )�”}”(hj h]”hŒ*”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjeubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjFh²hh³jXh´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjBh²hh³jXh´M¯ubah}”(h]”j=ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jXh´M¯hj?h²hubjg)�”}”(hhh]”jl)�”}”(hŒloop back **skb**”h]”(hŒ loop back ”…”�”}”(hjêh²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¯hjçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?h²hh³jXh´M¯ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ»**Parameters** ``struct net *net`` network namespace this loopback is happening in ``struct sock *sk`` sk needed to be a netfilter okfn ``struct sk_buff *skb`` buffer to transmit”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M³hj ubjß)�”}”(hhh]”(jä)�”}”(hŒD``struct net *net`` network namespace this loopback is happening in ”h]”(jê)�”}”(hŒ``struct net *net``”h]”jð)�”}”(hj9 h]”hŒstruct net *net”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M°hj3 ubj)�”}”(hhh]”jl)�”}”(hŒ/network namespace this loopback is happening in”h]”hŒ/network namespace this loopback is happening in”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jN h´M°hjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jN h´M°hj0 ubjä)�”}”(hŒ5``struct sock *sk`` sk needed to be a netfilter okfn ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hjr h]”hŒstruct sock *sk”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M±hjl ubj)�”}”(hhh]”jl)�”}”(hŒ sk needed to be a netfilter okfn”h]”hŒ sk needed to be a netfilter okfn”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡ h´M±hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡ h´M±hj0 ubjä)�”}”(hŒ*``struct sk_buff *skb`` buffer to transmit”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj« h]”hŒstruct sk_buff *skb”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M³hj¥ ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to transmit”h]”hŒbuffer to transmit”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M²hjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀ h´M³hj0 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_queue_xmit (C function)”Œc.__dev_queue_xmit”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEint __dev_queue_xmit (struct sk_buff *skb, struct net_device *sb_dev)”h]”j )�”}”(hŒDint __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj h²hh³j h´M[ubj3)�”}”(hŒ__dev_queue_xmit”h]”j9)�”}”(hŒ__dev_queue_xmit”h]”hŒ__dev_queue_xmit”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj" ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj h²hh³j h´M[ubj¡ )�”}”(hŒ0(struct sk_buff *skb, struct net_device *sb_dev)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj> ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj> ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj] ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jb Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j( sbŒc.__dev_queue_xmit”†”asbuh1hhj> ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj> ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj> ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj> ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj: ubj§ )�”}”(hŒstruct net_device *sb_dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj° ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj° ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔ Œmodname”NŒ classname”Njå jè )�”}”jë ]”j| Œc.__dev_queue_xmit”†”asbuh1hhj° ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj° ubj )�”}”(hj h]”hŒ*”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj° ubj9)�”}”(hŒsb_dev”h]”hŒsb_dev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj° ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj: ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj h²hh³j h´M[ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjý h²hh³j h´M[ubah}”(h]”jø ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j h´M[hjú h²hubjg)�”}”(hhh]”jl)�”}”(hŒtransmit a buffer”h]”hŒtransmit a buffer”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M[hj2 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjú h²hh³j h´M[ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jM jŒjM j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXs**Parameters** ``struct sk_buff *skb`` buffer to transmit ``struct net_device *sb_dev`` suboordinate device used for L2 forwarding offload **Description** Queue a buffer for transmission to a network device. The caller must have set the device and priority and built the buffer before calling this function. The function can be called from an interrupt. When calling this method, interrupts MUST be enabled. This is because the BH enable code must have IRQs enabled so that it will not deadlock. Regardless of the return value, the skb is consumed, so it is currently difficult to retry a send to this method. (You can bump the ref count before sending to hold a reference for retry if you are careful.) **Return** * 0 - buffer successfully transmitted * positive qdisc return code - NET_XMIT_DROP etc. * negative errno - other errors”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjW h]”hŒ Parameters”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M_hjQ ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct sk_buff *skb`` buffer to transmit ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjv h]”hŒstruct sk_buff *skb”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M\hjp ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to transmit”h]”hŒbuffer to transmit”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹ h´M\hjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹ h´M\hjm ubjä)�”}”(hŒQ``struct net_device *sb_dev`` suboordinate device used for L2 forwarding offload ”h]”(jê)�”}”(hŒ``struct net_device *sb_dev``”h]”jð)�”}”(hj¯ h]”hŒstruct net_device *sb_dev”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M]hj© ubj)�”}”(hhh]”jl)�”}”(hŒ2suboordinate device used for L2 forwarding offload”h]”hŒ2suboordinate device used for L2 forwarding offload”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄ h´M]hjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj© ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄ h´M]hjm ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQ ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjê h]”hŒ Description”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjè ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M_hjQ ubjl)�”}”(hŒÆQueue a buffer for transmission to a network device. The caller must have set the device and priority and built the buffer before calling this function. The function can be called from an interrupt.”h]”hŒÆQueue a buffer for transmission to a network device. The caller must have set the device and priority and built the buffer before calling this function. The function can be called from an interrupt.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M^hjQ ubjl)�”}”(hŒ�When calling this method, interrupts MUST be enabled. This is because the BH enable code must have IRQs enabled so that it will not deadlock.”h]”hŒ�When calling this method, interrupts MUST be enabled. This is because the BH enable code must have IRQs enabled so that it will not deadlock.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MbhjQ ubjl)�”}”(hŒÏRegardless of the return value, the skb is consumed, so it is currently difficult to retry a send to this method. (You can bump the ref count before sending to hold a reference for retry if you are careful.)”h]”hŒÏRegardless of the return value, the skb is consumed, so it is currently difficult to retry a send to this method. (You can bump the ref count before sending to hold a reference for retry if you are careful.)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MehjQ ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj/ h]”hŒReturn”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MihjQ ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ<0 - buffer successfully transmitted”h]”jl)�”}”(hjJ h]”hŒ<0 - buffer successfully transmitted”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MjhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjE ubjH[)�”}”(hŒ/positive qdisc return code - NET_XMIT_DROP etc.”h]”jl)�”}”(hjb h]”hŒ/positive qdisc return code - NET_XMIT_DROP etc.”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mkhj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjE ubjH[)�”}”(hŒ)negative errno - other errors”h]”jl)�”}”(hjz h]”hŒ)negative errno - other errors”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mlhjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjE ubeh}”(h]”h ]”h"]”h$]”h&]”j\j uh1jB[h³jY h´MjhjQ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ rps_may_expire_flow (C function)”Œc.rps_may_expire_flow”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\bool rps_may_expire_flow (struct net_device *dev, u16 rxq_index, u32 flow_id, u16 filter_id)”h]”j )�”}”(hŒ[bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id, u16 filter_id)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj² h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj² h²hh³jà h´M5ubj3)�”}”(hŒrps_may_expire_flow”h]”j9)�”}”(hŒrps_may_expire_flow”h]”hŒrps_may_expire_flow”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒ ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj² h²hh³jà h´M5ubj¡ )�”}”(hŒC(struct net_device *dev, u16 rxq_index, u32 flow_id, u16 filter_id)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jØ sbŒc.rps_may_expire_flow”†”asbuh1hhjî ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî ubj )�”}”(hj h]”hŒ*”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjî ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjê ubj§ )�”}”(hŒ u16 rxq_index”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjd ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ji Œmodname”NŒ classname”Njå jè )�”}”jë ]”j, Œc.rps_may_expire_flow”†”asbuh1hhj` ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj` ubj9)�”}”(hŒ rxq_index”h]”hŒ rxq_index”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj` ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjê ubj§ )�”}”(hŒ u32 flow_id”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j± Œmodname”NŒ classname”Njå jè )�”}”jë ]”j, Œc.rps_may_expire_flow”†”asbuh1hhj¨ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨ ubj9)�”}”(hŒflow_id”h]”hŒflow_id”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjê ubj§ )�”}”(hŒ u16 filter_id”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjô ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jù Œmodname”NŒ classname”Njå jè )�”}”jë ]”j, Œc.rps_may_expire_flow”†”asbuh1hhjð ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjð ubj9)�”}”(hŒ filter_id”h]”hŒ filter_id”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjê ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj² h²hh³jà h´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj® h²hh³jà h´M5ubah}”(h]”j© ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jà h´M5hj« h²hubjg)�”}”(hhh]”jl)�”}”(hŒ3check whether an RFS hardware filter may be removed”h]”hŒ3check whether an RFS hardware filter may be removed”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M5hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj« h²hh³jà h´M5ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jejŒjej�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXŸ**Parameters** ``struct net_device *dev`` Device on which the filter was set ``u16 rxq_index`` RX queue index ``u32 flow_id`` Flow ID passed to ndo_rx_flow_steer() ``u16 filter_id`` Filter ID returned by ndo_rx_flow_steer() **Description** Drivers that implement ndo_rx_flow_steer() should periodically call this function for each installed filter and remove the filters for which it returns ``true``.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjoh]”hŒ Parameters”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M9hjiubjß)�”}”(hhh]”(jä)�”}”(hŒ>``struct net_device *dev`` Device on which the filter was set ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjŽh]”hŒstruct net_device *dev”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M6hjˆubj)�”}”(hhh]”jl)�”}”(hŒ"Device on which the filter was set”h]”hŒ"Device on which the filter was set”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£h´M6hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£h´M6hj…ubjä)�”}”(hŒ!``u16 rxq_index`` RX queue index ”h]”(jê)�”}”(hŒ``u16 rxq_index``”h]”jð)�”}”(hjÇh]”hŒ u16 rxq_index”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M7hjÁubj)�”}”(hhh]”jl)�”}”(hŒRX queue index”h]”hŒRX queue index”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜh´M7hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜh´M7hj…ubjä)�”}”(hŒ6``u32 flow_id`` Flow ID passed to ndo_rx_flow_steer() ”h]”(jê)�”}”(hŒ``u32 flow_id``”h]”jð)�”}”(hjh]”hŒ u32 flow_id”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M8hjúubj)�”}”(hhh]”jl)�”}”(hŒ%Flow ID passed to ndo_rx_flow_steer()”h]”hŒ%Flow ID passed to ndo_rx_flow_steer()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M8hj…ubjä)�”}”(hŒ<``u16 filter_id`` Filter ID returned by ndo_rx_flow_steer() ”h]”(jê)�”}”(hŒ``u16 filter_id``”h]”jð)�”}”(hj9h]”hŒ u16 filter_id”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M9hj3ubj)�”}”(hhh]”jl)�”}”(hŒ)Filter ID returned by ndo_rx_flow_steer()”h]”hŒ)Filter ID returned by ndo_rx_flow_steer()”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNh´M9hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNh´M9hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjiubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjth]”hŒ Description”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M;hjiubjl)�”}”(hŒ¡Drivers that implement ndo_rx_flow_steer() should periodically call this function for each installed filter and remove the filters for which it returns ``true``.”h]”(hŒ˜Drivers that implement ndo_rx_flow_steer() should periodically call this function for each installed filter and remove the filters for which it returns ”…”�”}”(hjŠh²hh³Nh´Nubjð)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠubhŒ.”…”�”}”(hjŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M:hjiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__netif_rx (C function)”Œ c.__netif_rx”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ$int __netif_rx (struct sk_buff *skb)”h]”j )�”}”(hŒ#int __netif_rx(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÇh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇh²hh³jÙh´M<ubj3)�”}”(hŒ __netif_rx”h]”j9)�”}”(hŒ __netif_rx”h]”hŒ __netif_rx”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÇh²hh³jÙh´M<ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j(Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jîsbŒ c.__netif_rx”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÇh²hh³jÙh´M<ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÃh²hh³jÙh´M<ubah}”(h]”j¾ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÙh´M<hjÀh²hubjg)�”}”(hhh]”jl)�”}”(hŒ&Slightly optimized version of netif_rx”h]”hŒ&Slightly optimized version of netif_rx”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M<hjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÀh²hh³jÙh´M<ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j£jŒj£j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX **Parameters** ``struct sk_buff *skb`` buffer to post **Description** This behaves as netif_rx except that it does not disable bottom halves. As a result this function may only be invoked from the interrupt context (either hard or soft interrupt).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj­h]”hŒ Parameters”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M@hj§ubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct sk_buff *skb`` buffer to post ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÌh]”hŒstruct sk_buff *skb”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M=hjÆubj)�”}”(hhh]”jl)�”}”(hŒbuffer to post”h]”hŒbuffer to post”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jáh´M=hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáh´M=hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj§ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M?hj§ubjÒ)�”}”(hŒ±This behaves as netif_rx except that it does not disable bottom halves. As a result this function may only be invoked from the interrupt context (either hard or soft interrupt).”h]”jl)�”}”(hŒ±This behaves as netif_rx except that it does not disable bottom halves. As a result this function may only be invoked from the interrupt context (either hard or soft interrupt).”h]”hŒ±This behaves as netif_rx except that it does not disable bottom halves. As a result this function may only be invoked from the interrupt context (either hard or soft interrupt).”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M>hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j/h´M>hj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_rx (C function)”Œ c.netif_rx”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ"int netif_rx (struct sk_buff *skb)”h]”j )�”}”(hŒ!int netif_rx(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjRh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRh²hh³jdh´MQubj3)�”}”(hŒnetif_rx”h]”j9)�”}”(hŒnetif_rx”h]”hŒnetif_rx”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjRh²hh³jdh´MQubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jysbŒ c.netif_rx”†”asbuh1hhj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjRh²hh³jdh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjNh²hh³jdh´MQubah}”(h]”jIah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jdh´MQhjKh²hubjg)�”}”(hhh]”jl)�”}”(hŒpost buffer to the network code”h]”hŒpost buffer to the network code”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MQhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjKh²hh³jdh´MQubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j.jŒj.j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXØ**Parameters** ``struct sk_buff *skb`` buffer to post **Description** This function receives a packet from a device driver and queues it for the upper (protocol) levels to process via the backlog NAPI device. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers. The network buffer is passed via the backlog NAPI device. Modern NIC driver should use NAPI and GRO. This function can used from interrupt and from process context. The caller from process context must not disable interrupts before invoking this function. return values: NET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MUhj2ubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct sk_buff *skb`` buffer to post ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjWh]”hŒstruct sk_buff *skb”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MRhjQubj)�”}”(hhh]”jl)�”}”(hŒbuffer to post”h]”hŒbuffer to post”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jlh´MRhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlh´MRhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj’h]”hŒ Description”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MThj2ubjÒ)�”}”(hXQThis function receives a packet from a device driver and queues it for the upper (protocol) levels to process via the backlog NAPI device. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers. The network buffer is passed via the backlog NAPI device. Modern NIC driver should use NAPI and GRO. This function can used from interrupt and from process context. The caller from process context must not disable interrupts before invoking this function. return values: NET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped)”h]”(jl)�”}”(hXüThis function receives a packet from a device driver and queues it for the upper (protocol) levels to process via the backlog NAPI device. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers. The network buffer is passed via the backlog NAPI device. Modern NIC driver should use NAPI and GRO. This function can used from interrupt and from process context. The caller from process context must not disable interrupts before invoking this function.”h]”hXüThis function receives a packet from a device driver and queues it for the upper (protocol) levels to process via the backlog NAPI device. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers. The network buffer is passed via the backlog NAPI device. Modern NIC driver should use NAPI and GRO. This function can used from interrupt and from process context. The caller from process context must not disable interrupts before invoking this function.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MShj¨ubjl)�”}”(hŒSreturn values: NET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped)”h]”hŒSreturn values: NET_RX_SUCCESS (no congestion) NET_RX_DROP (packet was dropped)”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M]hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jºh´MShj2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&netdev_is_rx_handler_busy (C function)”Œc.netdev_is_rx_handler_busy”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool netdev_is_rx_handler_busy (struct net_device *dev)”h]”j )�”}”(hŒ6bool netdev_is_rx_handler_busy(struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìh²hh³jýh´MÉubj3)�”}”(hŒnetdev_is_rx_handler_busy”h]”j9)�”}”(hŒnetdev_is_rx_handler_busy”h]”hŒnetdev_is_rx_handler_busy”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjìh²hh³jýh´MÉubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jLŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.netdev_is_rx_handler_busy”†”asbuh1hhj(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ubj )�”}”(hj h]”hŒ*”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj(ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj$ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjìh²hh³jýh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjèh²hh³jýh´MÉubah}”(h]”jãah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jýh´MÉhjåh²hubjg)�”}”(hhh]”jl)�”}”(hŒ&check if receive handler is registered”h]”hŒ&check if receive handler is registered”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÉhj¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjåh²hh³jýh´MÉubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÇjŒjÇj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒâ**Parameters** ``struct net_device *dev`` device to check **Description** Check if a receive handler is already registered for a given device. Return true if there one. The caller must hold the rtnl_mutex.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÑh]”hŒ Parameters”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÍhjËubjß)�”}”(hhh]”jä)�”}”(hŒ+``struct net_device *dev`` device to check ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjðh]”hŒstruct net_device *dev”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÊhjêubj)�”}”(hhh]”jl)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MÊhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MÊhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjËubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj+h]”hŒ Description”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÌhjËubjÒ)�”}”(hŒ„Check if a receive handler is already registered for a given device. Return true if there one. The caller must hold the rtnl_mutex.”h]”(jl)�”}”(hŒ^Check if a receive handler is already registered for a given device. Return true if there one.”h]”hŒ^Check if a receive handler is already registered for a given device. Return true if there one.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MËhjAubjl)�”}”(hŒ$The caller must hold the rtnl_mutex.”h]”hŒ$The caller must hold the rtnl_mutex.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÎhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jSh´MËhjËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'netdev_rx_handler_register (C function)”Œc.netdev_rx_handler_register”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmint netdev_rx_handler_register (struct net_device *dev, rx_handler_func_t *rx_handler, void *rx_handler_data)”h]”j )�”}”(hŒlint netdev_rx_handler_register(struct net_device *dev, rx_handler_func_t *rx_handler, void *rx_handler_data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj…h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…h²hh³j—h´MÙubj3)�”}”(hŒnetdev_rx_handler_register”h]”j9)�”}”(hŒnetdev_rx_handler_register”h]”hŒnetdev_rx_handler_register”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj…h²hh³j—h´MÙubj¡ )�”}”(hŒN(struct net_device *dev, rx_handler_func_t *rx_handler, void *rx_handler_data)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÂubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jæŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¬sbŒc.netdev_rx_handler_register”†”asbuh1hhjÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÂubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÂubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¾ubj§ )�”}”(hŒrx_handler_func_t *rx_handler”h]”(h)�”}”(hhh]”j9)�”}”(hŒrx_handler_func_t”h]”hŒrx_handler_func_t”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j=Œmodname”NŒ classname”Njå jè )�”}”jë ]”jŒc.netdev_rx_handler_register”†”asbuh1hhj4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4ubj )�”}”(hj h]”hŒ*”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj4ubj9)�”}”(hŒ rx_handler”h]”hŒ rx_handler”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¾ubj§ )�”}”(hŒvoid *rx_handler_data”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰ubj )�”}”(hj h]”hŒ*”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‰ubj9)�”}”(hŒrx_handler_data”h]”hŒrx_handler_data”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj…h²hh³j—h´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j—h´MÙubah}”(h]”j|ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j—h´MÙhj~h²hubjg)�”}”(hhh]”jl)�”}”(hŒregister receive handler”h]”hŒregister receive handler”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÙhjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj~h²hh³j—h´MÙubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jøjŒjøj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXþ**Parameters** ``struct net_device *dev`` device to register a handler for ``rx_handler_func_t *rx_handler`` receive handler to register ``void *rx_handler_data`` data pointer that is used by rx handler **Description** Register a receive handler for a device. This handler will then be called from __netif_receive_skb. A negative errno code is returned on a failure. The caller must hold the rtnl_mutex. For a general description of rx_handler, see enum rx_handler_result.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÝhjüubjß)�”}”(hhh]”(jä)�”}”(hŒ<``struct net_device *dev`` device to register a handler for ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj!h]”hŒstruct net_device *dev”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÚhjubj)�”}”(hhh]”jl)�”}”(hŒ device to register a handler for”h]”hŒ device to register a handler for”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6h´MÚhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6h´MÚhjubjä)�”}”(hŒ>``rx_handler_func_t *rx_handler`` receive handler to register ”h]”(jê)�”}”(hŒ!``rx_handler_func_t *rx_handler``”h]”jð)�”}”(hjZh]”hŒrx_handler_func_t *rx_handler”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÛhjTubj)�”}”(hhh]”jl)�”}”(hŒreceive handler to register”h]”hŒreceive handler to register”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³joh´MÛhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³joh´MÛhjubjä)�”}”(hŒB``void *rx_handler_data`` data pointer that is used by rx handler ”h]”(jê)�”}”(hŒ``void *rx_handler_data``”h]”jð)�”}”(hj“h]”hŒvoid *rx_handler_data”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÜhj�ubj)�”}”(hhh]”jl)�”}”(hŒ'data pointer that is used by rx handler”h]”hŒ'data pointer that is used by rx handler”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨h´MÜhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨h´MÜhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjüubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÎh]”hŒ Description”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÞhjüubjÒ)�”}”(hŒÿRegister a receive handler for a device. This handler will then be called from __netif_receive_skb. A negative errno code is returned on a failure. The caller must hold the rtnl_mutex. For a general description of rx_handler, see enum rx_handler_result.”h]”(jl)�”}”(hŒ“Register a receive handler for a device. This handler will then be called from __netif_receive_skb. A negative errno code is returned on a failure.”h]”hŒ“Register a receive handler for a device. This handler will then be called from __netif_receive_skb. A negative errno code is returned on a failure.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÝhjäubjl)�”}”(hŒ$The caller must hold the rtnl_mutex.”h]”hŒ$The caller must hold the rtnl_mutex.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Máhjäubjl)�”}”(hŒDFor a general description of rx_handler, see enum rx_handler_result.”h]”hŒDFor a general description of rx_handler, see enum rx_handler_result.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mãhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jöh´MÝhjüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)netdev_rx_handler_unregister (C function)”Œc.netdev_rx_handler_unregister”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:void netdev_rx_handler_unregister (struct net_device *dev)”h]”j )�”}”(hŒ9void netdev_rx_handler_unregister(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj7h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7h²hh³jIh´Mùubj3)�”}”(hŒnetdev_rx_handler_unregister”h]”j9)�”}”(hŒnetdev_rx_handler_unregister”h]”hŒnetdev_rx_handler_unregister”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjXubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj7h²hh³jIh´Mùubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j˜Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j^sbŒc.netdev_rx_handler_unregister”†”asbuh1hhjtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtubj )�”}”(hj h]”hŒ*”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjtubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjpubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj7h²hh³jIh´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj3h²hh³jIh´Mùubah}”(h]”j.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jIh´Mùhj0h²hubjg)�”}”(hhh]”jl)�”}”(hŒunregister receive handler”h]”hŒunregister receive handler”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mùhjøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj0h²hh³jIh´Mùubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¾**Parameters** ``struct net_device *dev`` device to unregister a handler from **Description** Unregister a receive handler from a device. The caller must hold the rtnl_mutex.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mýhjubjß)�”}”(hhh]”jä)�”}”(hŒ?``struct net_device *dev`` device to unregister a handler from ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj<h]”hŒstruct net_device *dev”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Múhj6ubj)�”}”(hhh]”jl)�”}”(hŒ#device to unregister a handler from”h]”hŒ#device to unregister a handler from”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQh´MúhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQh´Múhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjwh]”hŒ Description”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MühjubjÒ)�”}”(hŒQUnregister a receive handler from a device. The caller must hold the rtnl_mutex.”h]”(jl)�”}”(hŒ+Unregister a receive handler from a device.”h]”hŒ+Unregister a receive handler from a device.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mûhj�ubjl)�”}”(hŒ$The caller must hold the rtnl_mutex.”h]”hŒ$The caller must hold the rtnl_mutex.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mýhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jŸh´Mûhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netif_receive_skb_core (C function)”Œc.netif_receive_skb_core”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0int netif_receive_skb_core (struct sk_buff *skb)”h]”j )�”}”(hŒ/int netif_receive_skb_core(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÑh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑh²hh³jãh´M'ubj3)�”}”(hŒnetif_receive_skb_core”h]”j9)�”}”(hŒnetif_receive_skb_core”h]”hŒnetif_receive_skb_core”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÑh²hh³jãh´M'ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j2Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jøsbŒc.netif_receive_skb_core”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÑh²hh³jãh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÍh²hh³jãh´M'ubah}”(h]”jÈah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jãh´M'hjÊh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,special purpose version of netif_receive_skb”h]”hŒ,special purpose version of netif_receive_skb”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M'hj’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÊh²hh³jãh´M'ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j­jŒj­j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX÷**Parameters** ``struct sk_buff *skb`` buffer to process **Description** More direct receive version of netif_receive_skb(). It should only be used by callers that have a need to skip RPS and Generic XDP. Caller must also take care of handling if ``(page_is_)pfmemalloc``. This function may only be called from softirq context and interrupts should be enabled. Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj·h]”hŒ Parameters”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M+hj±ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct sk_buff *skb`` buffer to process ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjÖh]”hŒstruct sk_buff *skb”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M(hjÐubj)�”}”(hhh]”jl)�”}”(hŒbuffer to process”h]”hŒbuffer to process”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jëh´M(hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jëh´M(hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M*hj±ubjÒ)�”}”(hX�More direct receive version of netif_receive_skb(). It should only be used by callers that have a need to skip RPS and Generic XDP. Caller must also take care of handling if ``(page_is_)pfmemalloc``. This function may only be called from softirq context and interrupts should be enabled. Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”h]”(jl)�”}”(hŒÈMore direct receive version of netif_receive_skb(). It should only be used by callers that have a need to skip RPS and Generic XDP. Caller must also take care of handling if ``(page_is_)pfmemalloc``.”h]”(hŒ¯More direct receive version of netif_receive_skb(). It should only be used by callers that have a need to skip RPS and Generic XDP. Caller must also take care of handling if ”…”�”}”(hj+h²hh³Nh´Nubjð)�”}”(hŒ``(page_is_)pfmemalloc``”h]”hŒ(page_is_)pfmemalloc”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+ubhŒ.”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M)hj'ubjl)�”}”(hŒWThis function may only be called from softirq context and interrupts should be enabled.”h]”hŒWThis function may only be called from softirq context and interrupts should be enabled.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M-hj'ubjl)�”}”(hŒ^Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”h]”hŒ^Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jKh´M)hj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_receive_skb (C function)”Œc.netif_receive_skb”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+int netif_receive_skb (struct sk_buff *skb)”h]”j )�”}”(hŒ*int netif_receive_skb(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŒh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒh²hh³jžh´Mubj3)�”}”(hŒnetif_receive_skb”h]”j9)�”}”(hŒnetif_receive_skb”h]”hŒnetif_receive_skb”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŒh²hh³jžh´Mubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jíŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j³sbŒc.netif_receive_skb”†”asbuh1hhjÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÉubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÅubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŒh²hh³jžh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjˆh²hh³jžh´Mubah}”(h]”jƒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jžh´Mhj…h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#process receive buffer from network”h]”hŒ#process receive buffer from network”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj…h²hh³jžh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jhjŒjhj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXâ**Parameters** ``struct sk_buff *skb`` buffer to process **Description** netif_receive_skb() is the main receive data processing function. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers. This function may only be called from softirq context and interrupts should be enabled. Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjrh]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhjlubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct sk_buff *skb`` buffer to process ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj‘h]”hŒstruct sk_buff *skb”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj‹ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to process”h]”hŒbuffer to process”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦•h´Mhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦h´Mhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjlubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÌh]”hŒ Description”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjlubjÒ)�”}”(hXlnetif_receive_skb() is the main receive data processing function. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers. This function may only be called from softirq context and interrupts should be enabled. Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”h]”(jl)�”}”(hŒ³netif_receive_skb() is the main receive data processing function. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers.”h]”hŒ³netif_receive_skb() is the main receive data processing function. It always succeeds. The buffer may be dropped during processing for congestion control or by the protocol layers.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhjâubjl)�”}”(hŒWThis function may only be called from softirq context and interrupts should be enabled.”h]”hŒWThis function may only be called from softirq context and interrupts should be enabled.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhjâubjl)�”}”(hŒ^Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”h]”hŒ^Return values (usually ignored): NET_RX_SUCCESS: no congestion NET_RX_DROP: packet was dropped”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jôh´Mhjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netif_receive_skb_list (C function)”Œc.netif_receive_skb_list”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4void netif_receive_skb_list (struct list_head *head)”h]”j )�”}”(hŒ3void netif_receive_skb_list(struct list_head *head)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5h²hh³jGh´M+ubj3)�”}”(hŒnetif_receive_skb_list”h]”j9)�”}”(hŒnetif_receive_skb_list”h]”hŒnetif_receive_skb_list”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj5h²hh³jGh´M+ubj¡ )�”}”(hŒ(struct list_head *head)”h]”j§ )�”}”(hŒstruct list_head *head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrubh)�”}”(hhh]”j9)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j\sbŒc.netif_receive_skb_list”†”asbuh1hhjrubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrubj )�”}”(hj h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjrubj9)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj5h²hh³jGh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj1h²hh³jGh´M+ubah}”(h]”j,ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jGh´M+hj.h²hubjg)�”}”(hhh]”jl)�”}”(hŒ)process many receive buffers from network”h]”hŒ)process many receive buffers from network”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M+hjöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj.h²hh³jGh´M+ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXF**Parameters** ``struct list_head *head`` list of skbs to process. **Description** Since return value of netif_receive_skb() is normally ignored, and wouldn't be meaningful for a list, this function returns void. This function may only be called from softirq context and interrupts should be enabled.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M/hjubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct list_head *head`` list of skbs to process. ”h]”(jê)�”}”(hŒ``struct list_head *head``”h]”jð)�”}”(hj:h]”hŒstruct list_head *head”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M,hj4ubj)�”}”(hhh]”jl)�”}”(hŒlist of skbs to process.”h]”hŒlist of skbs to process.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jOh´M,hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOh´M,hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjuh]”hŒ Description”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hjubjÒ)�”}”(hŒÚSince return value of netif_receive_skb() is normally ignored, and wouldn't be meaningful for a list, this function returns void. This function may only be called from softirq context and interrupts should be enabled.”h]”(jl)�”}”(hŒ�Since return value of netif_receive_skb() is normally ignored, and wouldn't be meaningful for a list, this function returns void.”h]”hŒƒSince return value of netif_receive_skb() is normally ignored, and wouldn’t be meaningful for a list, this function returns void.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M-hj‹ubjl)�”}”(hŒWThis function may only be called from softirq context and interrupts should be enabled.”h]”hŒWThis function may only be called from softirq context and interrupts should be enabled.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j�h´M-hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__napi_schedule (C function)”Œc.__napi_schedule”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,void __napi_schedule (struct napi_struct *n)”h]”j )�”}”(hŒ+void __napi_schedule(struct napi_struct *n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏh²hh³jáh´Mubj3)�”}”(hŒ__napi_schedule”h]”j9)�”}”(hŒ__napi_schedule”h]”hŒ__napi_schedule”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÏh²hh³jáh´Mubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jösbŒc.__napi_schedule”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hjDh]”hŒn”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÏh²hh³jáh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjËh²hh³jáh´Mubah}”(h]”jÆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jáh´MhjÈh²hubjg)�”}”(hhh]”jl)�”}”(hŒschedule for receive”h]”hŒschedule for receive”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈh²hh³jáh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jªjŒjªj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÇ**Parameters** ``struct napi_struct *n`` entry to schedule **Description** The entry's receive function will be scheduled to run. Consider using __napi_schedule_irqoff() if hard irqs are masked.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj´h]”hŒ Parameters”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj®ubjß)�”}”(hhh]”jä)�”}”(hŒ,``struct napi_struct *n`` entry to schedule ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjÓh]”hŒstruct napi_struct *n”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MhjÍubj)�”}”(hhh]”jl)�”}”(hŒentry to schedule”h]”hŒentry to schedule”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèh´Mhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèh´MhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj®ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj®ubjl)�”}”(hŒwThe entry's receive function will be scheduled to run. Consider using __napi_schedule_irqoff() if hard irqs are masked.”h]”hŒyThe entry’s receive function will be scheduled to run. Consider using __napi_schedule_irqoff() if hard irqs are masked.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mhj®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_schedule_prep (C function)”Œc.napi_schedule_prep”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/bool napi_schedule_prep (struct napi_struct *n)”h]”j )�”}”(hŒ.bool napi_schedule_prep(struct napi_struct *n)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjOh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOh²hh³j`h´M(ubj3)�”}”(hŒnapi_schedule_prep”h]”j9)�”}”(hŒnapi_schedule_prep”h]”hŒnapi_schedule_prep”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjOh²hh³j`h´M(ubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¯Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jusbŒc.napi_schedule_prep”†”asbuh1hhj‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‹ubj9)�”}”(hjDh]”hŒn”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‡ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjOh²hh³j`h´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjKh²hh³j`h´M(ubah}”(h]”jFah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j`h´M(hjHh²hubjg)�”}”(hhh]”jl)�”}”(hŒcheck if napi can be scheduled”h]”hŒcheck if napi can be scheduled”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M(hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjHh²hh³j`h´M(ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j) jŒj) j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct napi_struct *n`` napi context **Description** Test if NAPI routine is already running, and if not mark it as running. This is used as a condition variable to insure only one NAPI poll instance runs. We also make sure there is no pending NAPI disable.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj3 h]”hŒ Parameters”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M,hj- ubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct napi_struct *n`` napi context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjR h]”hŒstruct napi_struct *n”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M)hjL ubj)�”}”(hhh]”jl)�”}”(hŒ napi context”h]”hŒ napi context”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jg h´M)hjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jg h´M)hjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj- ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj� h]”hŒ Description”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M+hj- ubjl)�”}”(hŒÎTest if NAPI routine is already running, and if not mark it as running. This is used as a condition variable to insure only one NAPI poll instance runs. We also make sure there is no pending NAPI disable.”h]”hŒÎTest if NAPI routine is already running, and if not mark it as running. This is used as a condition variable to insure only one NAPI poll instance runs. We also make sure there is no pending NAPI disable.”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M*hj- ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#__napi_schedule_irqoff (C function)”Œc.__napi_schedule_irqoff”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void __napi_schedule_irqoff (struct napi_struct *n)”h]”j )�”}”(hŒ2void __napi_schedule_irqoff(struct napi_struct *n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÎ h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎ h²hh³jà h´MHubj3)�”}”(hŒ__napi_schedule_irqoff”h]”j9)�”}”(hŒ__napi_schedule_irqoff”h]”hŒ__napi_schedule_irqoff”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÎ h²hh³jà h´MHubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj !ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj !ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj-!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j/!Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jõ sbŒc.__napi_schedule_irqoff”†”asbuh1hhj !ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj !ubj )�”}”(hj h]”hŒ*”…”�”}”(hj[!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj !ubj9)�”}”(hjDh]”hŒn”…”�”}”(hjh!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj !ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj!ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÎ h²hh³jà h´MHubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÊ h²hh³jà h´MHubah}”(h]”jÅ ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jà h´MHhjÇ h²hubjg)�”}”(hhh]”jl)�”}”(hŒschedule for receive”h]”hŒschedule for receive”…”�”}”(hj‘!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MHhjŽ!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÇ h²hh³jà h´MHubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©!jŒj©!j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXA**Parameters** ``struct napi_struct *n`` entry to schedule **Description** Variant of __napi_schedule() assuming hard irqs are masked. On PREEMPT_RT enabled kernels this maps to __napi_schedule() because the interrupt disabled assumption might not be true due to force-threaded interrupts and spinlock substitution.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³!h]”hŒ Parameters”…”�”}”(hjµ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MLhj­!ubjß)�”}”(hhh]”jä)�”}”(hŒ,``struct napi_struct *n`` entry to schedule ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjÒ!h]”hŒstruct napi_struct *n”…”�”}”(hjÔ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MIhjÌ!ubj)�”}”(hhh]”jl)�”}”(hŒentry to schedule”h]”hŒentry to schedule”…”�”}”(hjë!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jç!h´MIhjè!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jç!h´MIhjÉ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­!ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj "h]”hŒ Description”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MKhj­!ubjl)�”}”(hŒ;Variant of __napi_schedule() assuming hard irqs are masked.”h]”hŒ;Variant of __napi_schedule() assuming hard irqs are masked.”…”�”}”(hj#"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MJhj­!ubjl)�”}”(hŒ´On PREEMPT_RT enabled kernels this maps to __napi_schedule() because the interrupt disabled assumption might not be true due to force-threaded interrupts and spinlock substitution.”h]”hŒ´On PREEMPT_RT enabled kernels this maps to __napi_schedule() because the interrupt disabled assumption might not be true due to force-threaded interrupts and spinlock substitution.”…”�”}”(hj2"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MLhj­!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"netif_threaded_enable (C function)”Œc.netif_threaded_enable”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void netif_threaded_enable (struct net_device *dev)”h]”j )�”}”(hŒ2void netif_threaded_enable(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hja"h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj]"h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]"h²hh³jo"h´MNubj3)�”}”(hŒnetif_threaded_enable”h]”j9)�”}”(hŒnetif_threaded_enable”h]”hŒnetif_threaded_enable”…”�”}”(hj‚"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~"ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj]"h²hh³jo"h´MNubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjž"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjš"ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¼"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¾"Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j„"sbŒc.netif_threaded_enable”†”asbuh1hhjš"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjš"ubj )�”}”(hj h]”hŒ*”…”�”}”(hjê"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjš"ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj÷"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjš"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–"ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj]"h²hh³jo"h´MNubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjY"h²hh³jo"h´MNubah}”(h]”jT"ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jo"h´MNhjV"h²hubjg)�”}”(hhh]”jl)�”}”(hŒenable threaded NAPIs”h]”hŒenable threaded NAPIs”…”�”}”(hj!#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MNhj#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjV"h²hh³jo"h´MNubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j9#jŒj9#j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct net_device *dev`` net_device instance **Description** Enable threaded mode for the NAPI instances of the device. This may be useful for devices where multiple NAPI instances get scheduled by a single interrupt. Threaded NAPI allows moving the NAPI processing to cores other than the core where IRQ is mapped. This function should be called before **dev** is registered.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjC#h]”hŒ Parameters”…”�”}”(hjE#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjA#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MRhj=#ubjß)�”}”(hhh]”jä)�”}”(hŒ/``struct net_device *dev`` net_device instance ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjb#h]”hŒstruct net_device *dev”…”�”}”(hjd#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MOhj\#ubj)�”}”(hhh]”jl)�”}”(hŒnet_device instance”h]”hŒnet_device instance”…”�”}”(hj{#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jw#h´MOhjx#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jw#h´MOhjY#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj=#ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�#h]”hŒ Description”…”�”}”(hjŸ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj›#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MQhj=#ubjl)�”}”(hŒþEnable threaded mode for the NAPI instances of the device. This may be useful for devices where multiple NAPI instances get scheduled by a single interrupt. Threaded NAPI allows moving the NAPI processing to cores other than the core where IRQ is mapped.”h]”hŒþEnable threaded mode for the NAPI instances of the device. This may be useful for devices where multiple NAPI instances get scheduled by a single interrupt. Threaded NAPI allows moving the NAPI processing to cores other than the core where IRQ is mapped.”…”�”}”(hj³#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MPhj=#ubjl)�”}”(hŒ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=&h´M`hj&ubjä)�”}”(hŒ,``unsigned int queue_index`` Index of queue ”h]”(jê)�”}”(hŒ``unsigned int queue_index``”h]”jð)�”}”(hja&h]”hŒunsigned int queue_index”…”�”}”(hjc&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mahj[&ubj)�”}”(hhh]”jl)�”}”(hŒIndex of queue”h]”hŒIndex of queue”…”�”}”(hjz&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jv&h´Mahjw&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jv&h´Mahj&ubjä)�”}”(hŒ7``enum netdev_queue_type type`` queue type as RX or TX ”h]”(jê)�”}”(hŒ``enum netdev_queue_type type``”h]”jð)�”}”(hjš&h]”hŒenum netdev_queue_type type”…”�”}”(hjœ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mbhj”&ubj)�”}”(hhh]”jl)�”}”(hŒqueue type as RX or TX”h]”hŒqueue type as RX or TX”…”�”}”(hj³&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯&h´Mbhj°&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯&h´Mbhj&ubjä)�”}”(hŒR``struct napi_struct *napi`` NAPI context, pass NULL to clear previously set NAPI ”h]”(jê)�”}”(hŒ``struct napi_struct *napi``”h]”jð)�”}”(hjÓ&h]”hŒstruct napi_struct *napi”…”�”}”(hjÕ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MchjÍ&ubj)�”}”(hhh]”jl)�”}”(hŒ4NAPI context, pass NULL to clear previously set NAPI”h]”hŒ4NAPI context, pass NULL to clear previously set NAPI”…”�”}”(hjì&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jè&h´Mchjé&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jè&h´Mchj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj'h]”hŒ Description”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mehj&ubjl)�”}”(hŒÁSet queue with its corresponding napi context. This should be done after registering the NAPI handler for the queue-vector and the queues have been mapped to the corresponding interrupt vector.”h]”hŒÁSet queue with its corresponding napi context. This should be done after registering the NAPI handler for the queue-vector and the queues have been mapped to the corresponding interrupt vector.”…”�”}”(hj$'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mdhj&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_disable (C function)”Œc.napi_disable”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)void napi_disable (struct napi_struct *n)”h]”j )�”}”(hŒ(void napi_disable(struct napi_struct *n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjS'h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjO'h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO'h²hh³ja'h´M¿ubj3)�”}”(hŒ napi_disable”h]”j9)�”}”(hŒ napi_disable”h]”hŒ napi_disable”…”�”}”(hjt'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp'ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjO'h²hh³ja'h´M¿ubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒ'ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj®'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°'Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jv'sbŒc.napi_disable”†”asbuh1hhjŒ'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒ'ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜ'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒ'ubj9)�”}”(hjDh]”hŒn”…”�”}”(hjé'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆ'ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjO'h²hh³ja'h´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjK'h²hh³ja'h´M¿ubah}”(h]”jF'ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³ja'h´M¿hjH'h²hubjg)�”}”(hhh]”jl)�”}”(hŒprevent NAPI from scheduling”h]”hŒprevent NAPI from scheduling”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¿hj(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjH'h²hh³ja'h´M¿ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j*(jŒj*(j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÚ**Parameters** ``struct napi_struct *n`` NAPI context **Description** Stop NAPI from being scheduled on this context. Waits till any outstanding processing completes. Takes netdev_lock() for associated net_device.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj4(h]”hŒ Parameters”…”�”}”(hj6(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÃhj.(ubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjS(h]”hŒstruct napi_struct *n”…”�”}”(hjU(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÀhjM(ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hjl(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh(h´MÀhji(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh(h´MÀhjJ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj.(ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŽ(h]”hŒ Description”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÂhj.(ubjl)�”}”(hŒ�Stop NAPI from being scheduled on this context. Waits till any outstanding processing completes. Takes netdev_lock() for associated net_device.”h]”hŒ�Stop NAPI from being scheduled on this context. Waits till any outstanding processing completes. Takes netdev_lock() for associated net_device.”…”�”}”(hj¤(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÁhj.(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_enable (C function)”Œ c.napi_enable”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ(void napi_enable (struct napi_struct *n)”h]”j )�”}”(hŒ'void napi_enable(struct napi_struct *n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓ(h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏ(h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ(h²hh³já(h´Mâubj3)�”}”(hŒ napi_enable”h]”j9)�”}”(hŒ napi_enable”h]”hŒ napi_enable”…”�”}”(hjô(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð(ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÏ(h²hh³já(h´Mâubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj )ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj )ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj.)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0)Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jö(sbŒ c.napi_enable”†”asbuh1hhj )ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj )ubj )�”}”(hj h]”hŒ*”…”�”}”(hj\)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj )ubj9)�”}”(hjDh]”hŒn”…”�”}”(hji)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj )ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÏ(h²hh³já(h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjË(h²hh³já(h´Mâubah}”(h]”jÆ(ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³já(h´MâhjÈ(h²hubjg)�”}”(hhh]”jl)�”}”(hŒenable NAPI scheduling”h]”hŒenable NAPI scheduling”…”�”}”(hj’)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mâhj�)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈ(h²hh³já(h´Mâubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jª)jŒjª)j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÃ**Parameters** ``struct napi_struct *n`` NAPI context **Description** Enable scheduling of a NAPI instance. Must be paired with napi_disable(). Takes netdev_lock() for associated net_device.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj´)h]”hŒ Parameters”…”�”}”(hj¶)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mæhj®)ubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjÓ)h]”hŒstruct napi_struct *n”…”�”}”(hjÕ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MãhjÍ)ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hjì)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jè)h´Mãhjé)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jè)h´MãhjÊ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj®)ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj*h]”hŒ Description”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Måhj®)ubjl)�”}”(hŒxEnable scheduling of a NAPI instance. Must be paired with napi_disable(). Takes netdev_lock() for associated net_device.”h]”hŒxEnable scheduling of a NAPI instance. Must be paired with napi_disable(). Takes netdev_lock() for associated net_device.”…”�”}”(hj$*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mähj®)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!netdev_has_upper_dev (C function)”Œc.netdev_has_upper_dev”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPbool netdev_has_upper_dev (struct net_device *dev, struct net_device *upper_dev)”h]”j )�”}”(hŒObool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjS*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjO*h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M@ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hja*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO*h²hh³j`*h´M@ ubj3)�”}”(hŒnetdev_has_upper_dev”h]”j9)�”}”(hŒnetdev_has_upper_dev”h]”hŒnetdev_has_upper_dev”…”�”}”(hjs*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjo*ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjO*h²hh³j`*h´M@ ubj¡ )�”}”(hŒ6(struct net_device *dev, struct net_device *upper_dev)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹*ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj­*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjª*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¯*Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já ju*sbŒc.netdev_has_upper_dev”†”asbuh1hhj‹*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹*ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÛ*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‹*ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjè*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‡*ubj§ )�”}”(hŒstruct net_device *upper_dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjý*ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j!+Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÉ*Œc.netdev_has_upper_dev”†”asbuh1hhjý*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjý*ubj )�”}”(hj h]”hŒ*”…”�”}”(hjK+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjý*ubj9)�”}”(hŒ upper_dev”h]”hŒ upper_dev”…”�”}”(hjX+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‡*ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjO*h²hh³j`*h´M@ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjK*h²hh³j`*h´M@ ubah}”(h]”jF*ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j`*h´M@ hjH*h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Check if device is linked to an upper device”h]”hŒ,Check if device is linked to an upper device”…”�”}”(hj‚+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M@ hj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjH*h²hh³j`*h´M@ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jš+jŒjš+j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXW**Parameters** ``struct net_device *dev`` device ``struct net_device *upper_dev`` upper device to check **Description** Find out if a device is linked to specified upper device and return true in case it is. Note that this checks only immediate upper device, not through a complete stack of devices. The caller must hold the RTNL lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¤+h]”hŒ Parameters”…”�”}”(hj¦+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MD hjž+ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÃ+h]”hŒstruct net_device *dev”…”�”}”(hjÅ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MA hj½+ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÜ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØ+h´MA hjÙ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØ+h´MA hjº+ubjä)�”}”(hŒ7``struct net_device *upper_dev`` upper device to check ”h]”(jê)�”}”(hŒ ``struct net_device *upper_dev``”h]”jð)�”}”(hjü+h]”hŒstruct net_device *upper_dev”…”�”}”(hjþ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjú+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MB hjö+ubj)�”}”(hhh]”jl)�”}”(hŒupper device to check”h]”hŒupper device to check”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,h´MB hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,h´MB hjº+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjž+ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj7,h]”hŒ Description”…”�”}”(hj9,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj5,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MD hjž+ubjl)�”}”(hŒ×Find out if a device is linked to specified upper device and return true in case it is. Note that this checks only immediate upper device, not through a complete stack of devices. The caller must hold the RTNL lock.”h]”hŒ×Find out if a device is linked to specified upper device and return true in case it is. Note that this checks only immediate upper device, not through a complete stack of devices. The caller must hold the RTNL lock.”…”�”}”(hjM,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MC hjž+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)netdev_has_upper_dev_all_rcu (C function)”Œc.netdev_has_upper_dev_all_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒXbool netdev_has_upper_dev_all_rcu (struct net_device *dev, struct net_device *upper_dev)”h]”j )�”}”(hŒWbool netdev_has_upper_dev_all_rcu(struct net_device *dev, struct net_device *upper_dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj|,h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjx,h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MW ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx,h²hh³j‰,h´MW ubj3)�”}”(hŒnetdev_has_upper_dev_all_rcu”h]”j9)�”}”(hŒnetdev_has_upper_dev_all_rcu”h]”hŒnetdev_has_upper_dev_all_rcu”…”�”}”(hjœ,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜,ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjx,h²hh³j‰,h´MW ubj¡ )�”}”(hŒ6(struct net_device *dev, struct net_device *upper_dev)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¸,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´,ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÖ,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jØ,Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jž,sbŒc.netdev_has_upper_dev_all_rcu”†”asbuh1hhj´,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´,ubj )�”}”(hj h]”hŒ*”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj´,ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj°,ubj§ )�”}”(hŒstruct net_device *upper_dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj*-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&-ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJ-Œmodname”NŒ classname”Njå jè )�”}”jë ]”jò,Œc.netdev_has_upper_dev_all_rcu”†”asbuh1hhj&-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&-ubj )�”}”(hj h]”hŒ*”…”�”}”(hjt-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj&-ubj9)�”}”(hŒ upper_dev”h]”hŒ upper_dev”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj°,ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjx,h²hh³j‰,h´MW ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjt,h²hh³j‰,h´MW ubah}”(h]”jo,ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‰,h´MW hjq,h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Check if device is linked to an upper device”h]”hŒ,Check if device is linked to an upper device”…”�”}”(hj«-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MW hj¨-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjq,h²hh³j‰,h´MW ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÃ-jŒjÃ-j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX+**Parameters** ``struct net_device *dev`` device ``struct net_device *upper_dev`` upper device to check **Description** Find out if a device is linked to specified upper device and return true in case it is. Note that this checks the entire upper device chain. The caller must hold rcu lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÍ-h]”hŒ Parameters”…”�”}”(hjÏ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjË-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M[ hjÇ-ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjì-h]”hŒstruct net_device *dev”…”�”}”(hjî-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjê-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MX hjæ-ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.h´MX hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.h´MX hjã-ubjä)�”}”(hŒ7``struct net_device *upper_dev`` upper device to check ”h]”(jê)�”}”(hŒ ``struct net_device *upper_dev``”h]”jð)�”}”(hj%.h]”hŒstruct net_device *upper_dev”…”�”}”(hj'.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MY hj.ubj)�”}”(hhh]”jl)�”}”(hŒupper device to check”h]”hŒupper device to check”…”�”}”(hj>.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:.h´MY hj;.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:.h´MY hjã-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇ-ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj`.h]”hŒ Description”…”�”}”(hjb.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M[ hjÇ-ubjl)�”}”(hŒ«Find out if a device is linked to specified upper device and return true in case it is. Note that this checks the entire upper device chain. The caller must hold rcu lock.”h]”hŒ«Find out if a device is linked to specified upper device and return true in case it is. Note that this checks the entire upper device chain. The caller must hold rcu lock.”…”�”}”(hjv.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MZ hjÇ-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%netdev_has_any_upper_dev (C function)”Œc.netdev_has_any_upper_dev”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6bool netdev_has_any_upper_dev (struct net_device *dev)”h]”j )�”}”(hŒ5bool netdev_has_any_upper_dev(struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¥.h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡.h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mm ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡.h²hh³j².h´Mm ubj3)�”}”(hŒnetdev_has_any_upper_dev”h]”j9)�”}”(hŒnetdev_has_any_upper_dev”h]”hŒnetdev_has_any_upper_dev”…”�”}”(hjÅ.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ.ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡.h²hh³j².h´Mm ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjá.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝ.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝ.ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÿ.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjü.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÇ.sbŒc.netdev_has_any_upper_dev”†”asbuh1hhjÝ.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝ.ubj )�”}”(hj h]”hŒ*”…”�”}”(hj-/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝ.ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj:/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙ.ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡.h²hh³j².h´Mm ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�.h²hh³j².h´Mm ubah}”(h]”j˜.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j².h´Mm hjš.h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Check if device is linked to some device”h]”hŒ(Check if device is linked to some device”…”�”}”(hjd/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mm hja/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjš.h²hh³j².h´Mm ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j|/jŒj|/j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒº**Parameters** ``struct net_device *dev`` device **Description** Find out if a device is linked to an upper device and return true in case it is. The caller must hold the RTNL lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj†/h]”hŒ Parameters”…”�”}”(hjˆ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mq hj€/ubjß)�”}”(hhh]”jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj¥/h]”hŒstruct net_device *dev”…”�”}”(hj§/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mn hjŸ/ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¾/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jº/h´Mn hj»/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jº/h´Mn hjœ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj€/ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjà/h]”hŒ Description”…”�”}”(hjâ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mp hj€/ubjl)�”}”(hŒtFind out if a device is linked to an upper device and return true in case it is. The caller must hold the RTNL lock.”h]”hŒtFind out if a device is linked to an upper device and return true in case it is. The caller must hold the RTNL lock.”…”�”}”(hjö/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mo hj€/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(netdev_master_upper_dev_get (C function)”Œc.netdev_master_upper_dev_get”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHstruct net_device * netdev_master_upper_dev_get (struct net_device *dev)”h]”j )�”}”(hŒFstruct net_device *netdev_master_upper_dev_get(struct net_device *dev)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj%0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!0h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M| ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj30h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!0h²hh³j20h´M| ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjD0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jF0Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_master_upper_dev_get”sbŒc.netdev_master_upper_dev_get”†”asbuh1hhj!0h²hh³j20h´M| ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!0h²hh³j20h´M| ubj )�”}”(hj h]”hŒ*”…”�”}”(hjs0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!0h²hh³j20h´M| ubj3)�”}”(hŒnetdev_master_upper_dev_get”h]”j9)�”}”(hjb0h]”hŒnetdev_master_upper_dev_get”…”�”}”(hj„0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€0ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj!0h²hh³j20h´M| ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŸ0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›0ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj½0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjº0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¿0Œmodname”NŒ classname”Njå jè )�”}”jë ]”j`0Œc.netdev_master_upper_dev_get”†”asbuh1hhj›0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›0ubj )�”}”(hj h]”hŒ*”…”�”}”(hjé0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj›0ubj9•)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjö0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj—0ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj!0h²hh³j20h´M| ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0h²hh³j20h´M| ubah}”(h]”j0ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j20h´M| hj0h²hubjg)�”}”(hhh]”jl)�”}”(hŒGet master upper device”h]”hŒGet master upper device”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M| hj1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj0h²hh³j20h´M| ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j81jŒj81j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ½**Parameters** ``struct net_device *dev`` device **Description** Find a master upper device and return pointer to it or NULL in case it's not there. The caller must hold the RTNL lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjB1h]”hŒ Parameters”…”�”}”(hjD1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj@1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M€ hj<1ubjß)�”}”(hhh]”jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hja1h]”hŒstruct net_device *dev”…”�”}”(hjc1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M} hj[1ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjz1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jv1h´M} hjw1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jv1h´M} hjX1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj<1ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjœ1h]”hŒ Description”…”�”}”(hjž1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjš1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M hj<1ubjl)�”}”(hŒwFind a master upper device and return pointer to it or NULL in case it's not there. The caller must hold the RTNL lock.”h]”hŒyFind a master upper device and return pointer to it or NULL in case it’s not there. The caller must hold the RTNL lock.”…”�”}”(hj²1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M~ hj<1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*netdev_upper_get_next_dev_rcu (C function)”Œc.netdev_upper_get_next_dev_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒcstruct net_device * netdev_upper_get_next_dev_rcu (struct net_device *dev, struct list_head **iter)”h]”j )�”}”(hŒastruct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev, struct list_head **iter)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjá1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝ1h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¼ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝ1h²hh³jî1h´M¼ ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j2Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_upper_get_next_dev_rcu”sbŒc.netdev_upper_get_next_dev_rcu”†”asbuh1hhjÝ1h²hh³jî1h´M¼ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝ1h²hh³jî1h´M¼ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj/2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝ1h²hh³jî1h´M¼ ubj3)�”}”(hŒnetdev_upper_get_next_dev_rcu”h]”j9)�”}”(hj2h]”hŒnetdev_upper_get_next_dev_rcu”…”�”}”(hj@2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<2ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÝ1h²hh³jî1h´M¼ ubj¡ )�”}”(hŒ1(struct net_device *dev, struct list_head **iter)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj[2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW2ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjy2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j{2Œmodname”NŒ classname”Njå jè )�”}”jë ]”j2Œc.netdev_upper_get_next_dev_rcu”†”asbuh1hhjW2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW2ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjW2ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj²2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjW2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjS2ubj§ )�”}”(hŒstruct list_head **iter”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjË2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇ2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ2ubh)�”}”(hhh]”j9)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjé2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jë2Œmodname”NŒ classname”Njå jè )�”}”jë ]”j2Œc.netdev_upper_get_next_dev_rcu”†”asbuh1hhjÇ2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ2ubj )�”}”(hj h]”hŒ*”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÇ2ubj )�”}”(hj h]”hŒ*”…”�”}”(hj"3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÇ2ubj9)�”}”(hŒiter”h]”hŒiter”…”�”}”(hj/3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjS2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÝ1h²hh³jî1h´M¼ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÙ1h²hh³jî1h´M¼ ubah}”(h]”jÔ1ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jî1h´M¼ hjÖ1h²hubjg)�”}”(hhh]”jl)�”}”(hŒ Get the next dev from upper list”h]”hŒ Get the next dev from upper list”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¼ hjV3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÖ1h²hh³jî1h´M¼ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jq3jŒjq3j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒú**Parameters** ``struct net_device *dev`` device ``struct list_head **iter`` list_head ** of the current position **Description** Gets the next device from the dev's upper list, starting from iter position. The caller must hold RCU read lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj{3h]”hŒ Parameters”…”�”}”(hj}3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjy3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÀ hju3ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjš3h]”hŒstruct net_device *dev”…”�”}”(hjœ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M½ hj”3ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj³3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯3h´M½ hj°3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯3h´M½ hj‘3ubjä)�”}”(hŒA``struct list_head **iter`` list_head ** of the current position ”h]”(jê)�”}”(hŒ``struct list_head **iter``”h]”jð)�”}”(hjÓ3h]”hŒstruct list_head **iter”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¾ hjÍ3ubj)�”}”(hhh]”jl)�”}”(hŒ$list_head ** of the current position”h]”hŒ$list_head ** of the current position”…”�”}”(hjì3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jè3h´M¾ hjé3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jè3h´M¾ hj‘3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhju3ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj4h]”hŒ Description”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj 4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÀ hju3ubjl)�”}”(hŒpGets the next device from the dev's upper list, starting from iter position. The caller must hold RCU read lock.”h]”hŒrGets the next device from the dev’s upper list, starting from iter position. The caller must hold RCU read lock.”…”�”}”(hj$4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¿ hju3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*netdev_lower_get_next_private (C function)”Œc.netdev_lower_get_next_private”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVvoid * netdev_lower_get_next_private (struct net_device *dev, struct list_head **iter)”h]”j )�”}”(hŒTvoid *netdev_lower_get_next_private(struct net_device *dev, struct list_head **iter)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjS4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjO4h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mg!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO4h²hh³ja4h´Mg!ubj )�”}”(hj h]”hŒ*”…”�”}”(hjp4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO4h²hh³ja4h´Mg!ubj3)�”}”(hŒnetdev_lower_get_next_private”h]”j9)�”}”(hŒnetdev_lower_get_next_private”h]”hŒnetdev_lower_get_next_private”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}4ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjO4h²hh³ja4h´Mg!ubj¡ )�”}”(hŒ1(struct net_device *dev, struct list_head **iter)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™4ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj»4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j½4Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jƒ4sbŒc.netdev_lower_get_next_private”†”asbuh1hhj™4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™4ubj )�”}”(hj h]”hŒ*”…”�”}”(hjé4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj™4ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjö4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•4ubj§ )�”}”(hŒstruct list_head **iter”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj 5ubh)�”}”(hhh]”j9)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj-5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j/5Œmodname”NŒ classname”Njå jè )�”}”jë ]”j×4Œc.netdev_lower_get_next_private”†”asbuh1hhj 5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj 5ubj )�”}”(hj h]”hŒ*”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj 5ubj )�”}”(hj h]”hŒ*”…”�”}”(hjf5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj 5ubj9)�”}”(hŒiter”h]”hŒiter”…”�”}”(hjs5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj 5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•4ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjO4h²hh³ja4h´Mg!ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjK4h²hh³ja4h´Mg!ubah}”(h]”jF4ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³ja4h´Mg!hjH4h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Get the next ->private from the lower neighbour list”h]”hŒ4Get the next ->private from the lower neighbour list”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mg!hjš5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjH4h²hh³ja4h´Mg!ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jµ5jŒjµ5j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXy**Parameters** ``struct net_device *dev`` device ``struct list_head **iter`` list_head ** of the current position **Description** Gets the next netdev_adjacent->private from the dev's lower neighbour list, starting from iter position. The caller must hold either hold the RTNL lock or its own locking that guarantees that the neighbour lower list will remain unchanged.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¿5h]”hŒ Parameters”…”�”}”(hjÁ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mk!hj¹5ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÞ5h]”hŒstruct net_device *dev”…”�”}”(hjà5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mi!hjØ5ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj÷5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jó5h´Mi!hjô5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jó5h´Mi!hjÕ5ubjä)�”}”(hŒA``struct list_head **iter`` list_head ** of the current position ”h]”(jê)�”}”(hŒ``struct list_head **iter``”h]”jð)�”}”(hj6h]”hŒstruct list_head **iter”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mj!hj6ubj)�”}”(hhh]”jl)�”}”(hŒ$list_head ** of the current position”h]”hŒ$list_head ** of the current position”…”�”}”(hj06h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,6h´Mj!hj-6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,6h´Mj!hjÕ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹5ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjR6h]”hŒ Description”…”�”}”(hjT6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjP6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Ml!hj¹5ubjl)�”}”(hŒïGets the next netdev_adjacent->private from the dev's lower neighbour list, starting from iter position. The caller must hold either hold the RTNL lock or its own locking that guarantees that the neighbour lower list will remain unchanged.”h]”hŒñGets the next netdev_adjacent->private from the dev’s lower neighbour list, starting from iter position. The caller must hold either hold the RTNL lock or its own locking that guarantees that the neighbour lower list will remain unchanged.”…”�”}”(hjh6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mk!hj¹5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ.netdev_lower_get_next_private_rcu (C function)”Œ#c.netdev_lower_get_next_private_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZvoid * netdev_lower_get_next_private_rcu (struct net_device *dev, struct list_head **iter)”h]”j )�”}”(hŒXvoid *netdev_lower_get_next_private_rcu(struct net_device *dev, struct list_head **iter)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj—6h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“6h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M‚!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“6h²hh³j¥6h´M‚!ubj )�”}”(hj h]”hŒ*”…”�”}”(hj´6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“6h²hh³j¥6h´M‚!ubj3)�”}”(hŒ!netdev_lower_get_next_private_rcu”h]”j9)�”}”(hŒ!netdev_lower_get_next_private_rcu”h]”hŒ!netdev_lower_get_next_private_rcu”…”�”}”(hjÅ6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ6ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj“6h²hh³j¥6h´M‚!ubj¡ )�”}”(hŒ1(struct net_device *dev, struct list_head **iter)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjá6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝ6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝ6ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÿ6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjü6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÇ6sbŒ#c.netdev_lower_get_next_private_rcu”†”asbuh1hhjÝ6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝ6ubj )�”}”(hj h]”hŒ*”…”�”}”(hj-7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝ6ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj:7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙ6ubj§ )�”}”(hŒstruct list_head **iter”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjS7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO7ubh)�”}”(hhh]”j9)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjq7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjn7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”js7Œmodname”NŒ classname”Njå jè )�”}”jë ]”j7Œ#c.netdev_lower_get_next_private_rcu”†”asbuh1hhjO7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO7ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO7ubj )�”}”(hj h]”hŒ*”…”�”}”(hjª7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO7ubj9)�”}”(hŒiter”h]”hŒiter”…”�”}”(hj·7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjO7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙ6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj“6h²hh³j¥6h´M‚!ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�6h²hh³j¥6h´M‚!ubah}”(h]”jŠ6ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¥6h´M‚!hjŒ6h²hubjg)�”}”(hhh]”jl)�”}”(hŒAGet the next ->private from the lower neighbour list, RCU variant”h]”hŒAGet the next ->private from the lower neighbour list, RCU variant”…”�”}”(hjá7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M‚!hjÞ7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŒ6h²hh³j¥6h´M‚!ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jù7jŒjù7j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` device ``struct list_head **iter`` list_head ** of the current position **Description** Gets the next netdev_adjacent->private from the dev's lower neighbour list, starting from iter position. The caller must hold RCU read lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M†!hjý7ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj"8h]”hŒstruct net_device *dev”…”�”}”(hj$8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj 8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M…!hj8ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj;8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j78h´M…!hj88ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j78h´M…!hj8ubjä)�”}”(hŒA``struct list_head **iter`` list_head ** of the current position ”h]”(jê)�”}”(hŒ``struct list_head **iter``”h]”jð)�”}”(hj[8h]”hŒstruct list_head **iter”…”�”}”(hj]8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjY8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M†!hjU8ubj)�”}”(hhh]”jl)�”}”(hŒ$list_head ** of the current position”h]”hŒ$list_head ** of the current position”…”�”}”(hjt8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jp8h´M†!hjq8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jp8h´M†!hj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjý7ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj–8h]”hŒ Description”…”�”}”(hj˜8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj”8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mˆ!hjý7ubjl)�”}”(hŒŒGets the next netdev_adjacent->private from the dev's lower neighbour list, starting from iter position. The caller must hold RCU read lock.”h]”hŒŽGets the next netdev_adjacent->private from the dev’s lower neighbour list, starting from iter position. The caller must hold RCU read lock.”…”�”}”(hj¬8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M‡!hjý7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"netdev_lower_get_next (C function)”Œc.netdev_lower_get_next”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNvoid * netdev_lower_get_next (struct net_device *dev, struct list_head **iter)”h]”j )�”}”(hŒLvoid *netdev_lower_get_next(struct net_device *dev, struct list_head **iter)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛ8h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj×8h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mž!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×8h²hh³jé8h´Mž!ubj )�”}”(hj h]”hŒ*”…”�”}”(hjø8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj×8h²hh³jé8h´Mž!ubj3)�”}”(hŒnetdev_lower_get_next”h]”j9)�”}”(hŒnetdev_lower_get_next”h]”hŒnetdev_lower_get_next”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj×8h²hh³jé8h´Mž!ubj¡ )�”}”(hŒ1(struct net_device *dev, struct list_head **iter)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj%9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj29h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!9ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjC9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jE9Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j 9sbŒc.netdev_lower_get_next”†”asbuh1hhj!9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!9ubj )�”}”(hj h]”hŒ*”…”�”}”(hjq9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!9ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj~9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ubj§ )�”}”(hŒstruct list_head **iter”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj—9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“9ubh)�”}”(hhh]”j9)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjµ9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j·9Œmodname”NŒ classname”Njå jè )�”}”jë ]”j_9Œc.netdev_lower_get_next”†”asbuh1hhj“9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“9ubj )�”}”(hj h]”hŒ*”…”�”}”(hjá9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“9ubj )�”}”(hj h]”hŒ*”…”�”}”(hjî9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“9ubj9)�”}”(hŒiter”h]”hŒiter”…”�”}”(hjû9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj×8h²hh³jé8h´Mž!ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÓ8h²hh³jé8h´Mž!ubah}”(h]”jÎ8ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jé8h´Mž!hjÐ8h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Get the next device from the lower neighbour list”h]”hŒ1Get the next device from the lower neighbour list”…”�”}”(hj%:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mž!hj":h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÐ8h²hh³jé8h´Mž!ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j=:jŒj=:j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX`**Parameters** ``struct net_device *dev`` device ``struct list_head **iter`` list_head ** of the current position **Description** Gets the next netdev_adjacent from the dev's lower neighbour list, starting from iter position. The caller must hold RTNL lock or its own locking that guarantees that the neighbour lower list will remain unchanged.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjG:h]”hŒ Parameters”…”�”}”(hjI:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjE:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¢!hjA:ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjf:h]”hŒstruct net_device *dev”…”�”}”(hjh:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjd:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M !hj`:ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{:h´M !hj|:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{:h´M !hj]:ubjä)�”}”(hŒA``struct list_head **iter`` list_head ** of the current position ”h]”(jê)�”}”(hŒ``struct list_head **iter``”h]”jð)�”}”(hjŸ:h]”hŒstruct list_head **iter”…”�”}”(hj¡:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¡!hj™:ubj)�”}”(hhh]”jl)�”}”(hŒ$list_head ** of the current position”h]”hŒ$list_head ** of the current position”…”�”}”(hj¸:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´:h´M¡!hjµ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´:h´M¡!hj]:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjA:ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÚ:h]”hŒ Description”…”�”}”(hjÜ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M£!hjA:ubjl)�”}”(hŒÖGets the next netdev_adjacent from the dev's lower neighbour list, starting from iter position. The caller must hold RTNL lock or its own locking that guarantees that the neighbour lower list will remain unchanged.”h]”hŒØGets the next netdev_adjacent from the dev’s lower neighbour list, starting from iter position. The caller must hold RTNL lock or its own locking that guarantees that the neighbour lower list will remain unchanged.”…”�”}”(hjð:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¢!hjA:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ/netdev_lower_get_first_private_rcu (C function)”Œ$c.netdev_lower_get_first_private_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBvoid * netdev_lower_get_first_private_rcu (struct net_device *dev)”h]”j )�”}”(hŒ@void *netdev_lower_get_first_private_rcu(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj;h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÀ"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;h²hh³j-;h´MÀ"ubj )�”}”(hj h]”hŒ*”…”�”}”(hj<;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj;h²hh³j-;h´MÀ"ubj3)�”}”(hŒ"netdev_lower_get_first_private_rcu”h]”j9)�”}”(hŒ"netdev_lower_get_first_private_rcu”h]”hŒ"netdev_lower_get_first_private_rcu”…”�”}”(hjM;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI;ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj;h²hh³j-;h´MÀ"ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hji;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje;ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj‡;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰;Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jO;sbŒ$c.netdev_lower_get_first_private_rcu”†”asbuh1hhje;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje;ubj )�”}”(hj h]”hŒ*”…”�”}”(hjµ;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hje;ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÂ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hja;ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj;h²hh³j-;h´MÀ"ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj;h²hh³j-;h´MÀ"ubah}”(h]”j;ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j-;h´MÀ"hj;h²hubjg)�”}”(hhh]”jl)�”}”(hŒBGet the first ->private from the lower neighbour list, RCU variant”h]”hŒBGet the first ->private from the lower neighbour list, RCU variant”…”�”}”(hjì;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÀ"hjé;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj;h²hh³j-;h´MÀ"ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j<jŒj<j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¶**Parameters** ``struct net_device *dev`` device **Description** Gets the first netdev_adjacent->private from the dev's lower neighbour list. The caller must hold RCU read lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj<h]”hŒ Parameters”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj <ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÄ"hj<ubjß)�”}”(hhh]”jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj-<h]”hŒstruct net_device *dev”…”�”}”(hj/<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÃ"hj'<ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjF<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jB<h´MÃ"hjC<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jB<h´MÃ"hj$<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj<ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh<h]”hŒ Description”…”�”}”(hjj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjf<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÅ"hj<ubjl)�”}”(hŒpGets the first netdev_adjacent->private from the dev's lower neighbour list. The caller must hold RCU read lock.”h]”hŒrGets the first netdev_adjacent->private from the dev’s lower neighbour list. The caller must hold RCU read lock.”…”�”}”(hj~<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÄ"hj<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ,netdev_master_upper_dev_get_rcu (C function)”Œ!c.netdev_master_upper_dev_get_rcu”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒLstruct net_device * netdev_master_upper_dev_get_rcu (struct net_device *dev)”h]”j )�”}”(hŒJstruct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj­<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©<h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÕ"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©<h²hh³jº<h´MÕ"ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÌ<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÎ<Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_master_upper_dev_get_rcu”sbŒ!c.netdev_master_upper_dev_get_rcu”†”asbuh1hhj©<h²hh³jº<h´MÕ"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©<h²hh³jº<h´MÕ"ubj )�”}”(hj h]”hŒ*”…”�”}”(hjû<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj©<h²hh³jº<h´MÕ"ubj3)�”}”(hŒnetdev_master_upper_dev_get_rcu”h]”j9)�”}”(hjê<h]”hŒnetdev_master_upper_dev_get_rcu”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj©<h²hh³jº<h´MÕ"ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj'=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#=ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjE=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjB=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jG=Œmodname”NŒ classname”Njå jè )�”}”jë ]”jè<Œ!c.netdev_master_upper_dev_get_rcu”†”asbuh1hhj#=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#=ubj )�”}”(hj h]”hŒ*”…”�”}”(hjq=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#=ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj~=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj=ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj©<h²hh³jº<h´MÕ"ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¥<h²hh³jº<h´MÕ"ubah}”(h]”j <ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jº<h´MÕ"hj¢<h²hubjg)�”}”(hhh]”jl)�”}”(hŒGet master upper device”h]”hŒGet master upper device”…”�”}”(hj¨=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÕ"hj¥=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢<h²hh³jº<h´MÕ"ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÀ=jŒjÀ=j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÁ**Parameters** ``struct net_device *dev`` device **Description** Find a master upper device and return pointer to it or NULL in case it's not there. The caller must hold the RCU read lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÊ=h]”hŒ Parameters”…”�”}”(hjÌ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÙ"hjÄ=ubjß)�”}”(hhh]”jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjé=h]”hŒstruct net_device *dev”…”�”}”(hjë=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjç=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÖ"hjã=ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþ=h´MÖ"hjÿ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjã=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþ=h´MÖ"hjà=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄ=ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj$>h]”hŒ Description”…”�”}”(hj&>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj">ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MØ"hjÄ=ubjl)�”}”(hŒ{Find a master upper device and return pointer to it or NULL in case it's not there. The caller must hold the RCU read lock.”h]”hŒ}Find a master upper device and return pointer to it or NULL in case it’s not there. The caller must hold the RCU read lock.”…”�”}”(hj:>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M×"hjÄ=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"netdev_upper_dev_link (C function)”Œc.netdev_upper_dev_link”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒpint netdev_upper_dev_link (struct net_device *dev, struct net_device *upper_dev, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒoint netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hji>h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hje>h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mè#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje>h²hh³jw>h´Mè#ubj3)�”}”(hŒnetdev_upper_dev_link”h]”j9)�”}”(hŒnetdev_upper_dev_link”h]”hŒnetdev_upper_dev_link”…”�”}”(hjŠ>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†>ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hje>h²hh³jw>h´Mè#ubj¡ )�”}”(hŒV(struct net_device *dev, struct net_device *upper_dev, struct netlink_ext_ack *extack)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢>ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÄ>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆ>Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŒ>sbŒc.netdev_upper_dev_link”†”asbuh1hhj¢>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢>ubj )�”}”(hj h]”hŒ*”…”�”}”(hjò>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢>ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÿ>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž>ubj§ )�”}”(hŒstruct net_device *upper_dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj6?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j8?Œmodname”NŒ classname”Njå jè )�”}”jë ]”jà>Œc.netdev_upper_dev_link”†”asbuh1hhj?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?ubj )�”}”(hj h]”hŒ*”…”�”}”(hjb?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?ubj9)�”}”(hŒ upper_dev”h]”hŒ upper_dev”…”�”}”(hjo?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž>ubj§ )�”}”(hŒstruct netlink_ext_ack *extack”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjˆ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„?ubh)�”}”(hhh]”j9)�”}”(hŒnetlink_ext_ack”h]”hŒnetlink_ext_ack”…”�”}”(hj¦?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¨?Œmodname”NŒ classname”Njå jè )�”}”jë ]”jà>Œc.netdev_upper_dev_link”†”asbuh1hhj„?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„?ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒ?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj„?ubj9)�”}”(hŒextack”h]”hŒextack”…”�”}”(hjß?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž>ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hje>h²hh³jw>h´Mè#ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhja>h²hh³jw>h´Mè#ubah}”(h]”j\>ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jw>h´Mè#hj^>h²hubjg)�”}”(hhh]”jl)�”}”(hŒAdd a link to the upper device”h]”hŒAdd a link to the upper device”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mè#hj@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^>h²hh³jw>h´Mè#ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j!@jŒj!@j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX‡**Parameters** ``struct net_device *dev`` device ``struct net_device *upper_dev`` new upper device ``struct netlink_ext_ack *extack`` netlink extended ack **Description** Adds a link to device which is upper to this one. The caller must hold the RTNL lock. On a failure a negative errno code is returned. On success the reference counts are adjusted and the function returns zero.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj+@h]”hŒ Parameters”…”�”}”(hj-@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mì#hj%@ubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjJ@h]”hŒstruct net_device *dev”…”�”}”(hjL@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjH@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mé#hjD@ubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjc@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_@h´Mé#hj`@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_@h´Mé#hjA@ubjä)�”}”(hŒ2``struct net_device *upper_dev`` new upper device ”h]”(jê)�”}”(hŒ ``struct net_device *upper_dev``”h]”jð)�”}”(hjƒ@h]”hŒstruct net_device *upper_dev”…”�”}”(hj…@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mê#hj}@ubj)�”}”(hhh]”jl)�”}”(hŒnew upper device”h]”hŒnew upper device”…”�”}”(hjœ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜@h´Mê#hj™@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜@h´Mê#hjA@ubjä)�”}”(hŒ8``struct netlink_ext_ack *extack`` netlink extended ack ”h]”(jê)�”}”(hŒ"``struct netlink_ext_ack *extack``”h]”jð)�”}”(hj¼@h]”hŒstruct netlink_ext_ack *extack”…”�”}”(hj¾@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjº@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Më#hj¶@ubj)�”}”(hhh]”jl)�”}”(hŒnetlink extended ack”h]”hŒnetlink extended ack”…”�”}”(hjÕ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÑ@h´Më#hjÒ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÑ@h´Më#hjA@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj%@ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj÷@h]”hŒ Description”…”�”}”(hjù@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjõ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mí#hj%@ubjl)�”}”(hŒÑAdds a link to device which is upper to this one. The caller must hold the RTNL lock. On a failure a negative errno code is returned. On success the reference counts are adjusted and the function returns zero.”h]”hŒÑAdds a link to device which is upper to this one. The caller must hold the RTNL lock. On a failure a negative errno code is returned. On success the reference counts are adjusted and the function returns zero.”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mì#hj%@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)netdev_master_upper_dev_link (C function)”Œc.netdev_master_upper_dev_link”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ›int netdev_master_upper_dev_link (struct net_device *dev, struct net_device *upper_dev, void *upper_priv, void *upper_info, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒšint netdev_master_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, void *upper_priv, void *upper_info, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEh²hh³jEh´M>$ubj3)�”}”(hŒnetdev_upper_dev_unlink”h]”j9)�”}”(hŒnetdev_upper_dev_unlink”h]”hŒnetdev_upper_dev_unlink”…”�”}”(hj&Eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"Eubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjEh²hh³jEh´M>$ubj¡ )�”}”(hŒ6(struct net_device *dev, struct net_device *upper_dev)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjBEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>Eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>Eubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj`Eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jbEŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j(EsbŒc.netdev_upper_dev_unlink”†”asbuh1hhj>Eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>Eubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>Eubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj›Eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj:Eubj§ )�”}”(hŒstruct net_device *upper_dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj´Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°Eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°Eubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÒEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔEŒmodname”NŒ classname”Njå jè )�”}”jë ]”j|EŒc.netdev_upper_dev_unlink”†”asbuh1hhj°Eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°Eubj )�”}”(hj h]”hŒ*”…”�”}”(hjþEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj°Eubj9)�”}”(hŒ upper_dev”h]”hŒ upper_dev”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj:Eubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjEh²hh³jEh´M>$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjýDh²hh³jEh´M>$ubah}”(h]”jøDah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jEh´M>$hjúDh²hubjg)�”}”(hhh]”jl)�”}”(hŒRemoves a link to upper device”h]”hŒRemoves a link to upper device”…”�”}”(hj5Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M>$hj2Fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjúDh²hh³jEh´M>$ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jMFjŒjMFj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÓ**Parameters** ``struct net_device *dev`` device ``struct net_device *upper_dev`` new upper device **Description** Removes a link to device which is upper to this one. The caller must hold the RTNL lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjWFh]”hŒ Parameters”…”�”}”(hjYFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjUFubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MB$hjQFubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjvFh]”hŒstruct net_device *dev”…”�”}”(hjxFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjtFubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M?$hjpFubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹Fh´M?$hjŒFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹Fh´M?$hjmFubjä)�”}”(hŒ2``struct net_device *upper_dev`` new upper device ”h]”(jê)�”}”(hŒ ``struct net_device *upper_dev``”h]”jð)�”}”(hj¯Fh]”hŒstruct net_device *upper_dev”…”�”}”(hj±Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M@$hj©Fubj)�”}”(hhh]”jl)�”}”(hŒnew upper device”h]”hŒnew upper device”…”�”}”(hjÈFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄFh´M@$hjÅFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄFh´M@$hjmFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQFubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjêFh]”hŒ Description”…”�”}”(hjìFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjèFubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MB$hjQFubjl)�”}”(hŒXRemoves a link to device which is upper to this one. The caller must hold the RTNL lock.”h]”hŒXRemoves a link to device which is upper to this one. The caller must hold the RTNL lock.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MA$hjQFubeh}”(h]”h ]”Œ kernelindent”a•h"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'netdev_bonding_info_change (C function)”Œc.netdev_bonding_info_change”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒbvoid netdev_bonding_info_change (struct net_device *dev, struct netdev_bonding_info *bonding_info)”h]”j )�”}”(hŒavoid netdev_bonding_info_change(struct net_device *dev, struct netdev_bonding_info *bonding_info)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj/Gh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj+Gh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M°$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj+Gh²hh³j=Gh´M°$ubj3)�”}”(hŒnetdev_bonding_info_change”h]”j9)�”}”(hŒnetdev_bonding_info_change”h]”hŒnetdev_bonding_info_change”…”�”}”(hjPGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLGubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj+Gh²hh³j=Gh´M°$ubj¡ )�”}”(hŒB(struct net_device *dev, struct netdev_bonding_info *bonding_info)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjlGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhGubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjŠGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒGŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jRGsbŒc.netdev_bonding_info_change”†”asbuh1hhjhGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjhGubj )�”}”(hj h]”hŒ*”…”�”}”(hj¸Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjhGubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÅGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjdGubj§ )�”}”(hŒ(struct netdev_bonding_info *bonding_info”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÞGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚGubh)�”}”(hhh]”j9)�”}”(hŒnetdev_bonding_info”h]”hŒnetdev_bonding_info”…”�”}”(hjüGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jþGŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¦GŒc.netdev_bonding_info_change”†”asbuh1hhjÚGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚGubj )�”}”(hj h]”hŒ*”…”�”}”(hj(Hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÚGubj9)�”}”(hŒ bonding_info”h]”hŒ bonding_info”…”�”}”(hj5Hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjdGubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj+Gh²hh³j=Gh´M°$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj'Gh²hh³j=Gh´M°$ubah}”(h]”j"Gah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j=Gh´M°$hj$Gh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Dispatch event about slave change”h]”hŒ!Dispatch event about slave change”…”�”}”(hj_Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M°$hj\Hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj$Gh²hh³j=Gh´M°$ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jwHjŒjwHj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒâ**Parameters** ``struct net_device *dev`` device ``struct netdev_bonding_info *bonding_info`` info to dispatch **Description** Send NETDEV_BONDING_INFO to netdev notifiers with info. The caller must hold the RTNL lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�Hh]”hŒ Parameters”…”�”}”(hjƒHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M´$hj{Hubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj Hh]”hŒstruct net_device *dev”…”�”}”(hj¢Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžHubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M±$hjšHubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¹Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµHh´M±$hj¶Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµHh´M±$hj—Hubjä)�”}”(hŒ>``struct netdev_bonding_info *bonding_info`` info to dispatch ”h]”(jê)�”}”(hŒ,``struct netdev_bonding_info *bonding_info``”h]”jð)�”}”(hjÙHh]”hŒ(struct netdev_bonding_info *bonding_info”…”�”}”(hjÛHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M²$hjÓHubj)�”}”(hhh]”jl)�”}”(hŒinfo to dispatch”h]”hŒinfo to dispatch”…”�”}”(hjòHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîHh´M²$hjïHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîHh´M²$hj—Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj{Hubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjIh]”hŒ Description”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M´$hj{Hubjl)�”}”(hŒ[Send NETDEV_BONDING_INFO to netdev notifiers with info. The caller must hold the RTNL lock.”h]”hŒ[Send NETDEV_BONDING_INFO to netdev notifiers with info. The caller must hold the RTNL lock.”…”�”}”(hj*Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M³$hj{Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"netdev_get_xmit_slave (C function)”Œc.netdev_get_xmit_slave”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒhstruct net_device * netdev_get_xmit_slave (struct net_device *dev, struct sk_buff *skb, bool all_slaves)”h]”j )�”}”(hŒfstruct net_device *netdev_get_xmit_slave(struct net_device *dev, struct sk_buff *skb, bool all_slaves)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjYIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUIh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M±%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUIh²hh³jfIh´M±%ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjxIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jzIŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_get_xmit_slave”sbŒc.netdev_get_xmit_slave”†”asbuh1hhjUIh²hh³jfIh´M±%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUIh²hh³jfIh´M±%ubj )�”}”(hj h]”hŒ*”…”�”}”(hj§Ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjUIh²hh³jfIh´M±%ubj3)�”}”(hŒnetdev_get_xmit_slave”h]”j9)�”}”(hj–Ih]”hŒnetdev_get_xmit_slave”…”�”}”(hj¸Ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´Iubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjUIh²hh³jfIh´M±%ubj¡ )�”}”(hŒ>(struct net_device *dev, struct sk_buff *skb, bool all_slaves)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÓIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏIubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjñIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jóIŒmodname”NŒ classname”Njå jè )�”}”jë ]”j”IŒc.netdev_get_xmit_slave”†”asbuh1hhjÏIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏIubj )�”}”(hj h]”hŒ*”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÏIubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj*Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjËIubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjCJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?Jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?Jubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjaJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jcJŒmodname”NŒ classname”Njå jè )�”}”jë ]”j”IŒc.netdev_get_xmit_slave”†”asbuh1hhj?Jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?Jubj )�”}”(hj h]”hŒ*”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?Jubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjšJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjËIubj§ )�”}”(hŒbool all_slaves”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj³Jh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯Jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯Jubj9)�”}”(hŒ all_slaves”h]”hŒ all_slaves”…”�”}”(hjÎJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjËIubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjUIh²hh³jfIh´M±%ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjQIh²hh³jfIh´M±%ubah}”(h]”jLIah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jfIh´M±%hjNIh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Get the xmit slave of master device”h]”hŒ#Get the xmit slave of master device”…”�”}”(hjøJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M±%hjõJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjNIh²hh³jfIh´M±%ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jKjŒjKj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXB**Parameters** ``struct net_device *dev`` device ``struct sk_buff *skb`` The packet ``bool all_slaves`` assume all the slaves are active **Description** The reference counters are not incremented so the caller must be careful with locks. The caller must hold RCU lock. ``NULL`` is returned if no slave is found.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjKh]”hŒ Parameters”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mµ%hjKubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj9Kh]”hŒstruct net_device *dev”…”�”}”(hj;Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M²%hj3Kubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjRKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNKh´M²%hjOKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNKh´M²%hj0Kubjä)�”}”(hŒ#``struct sk_buff *skb`` The packet ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjrKh]”hŒstruct sk_buff *skb”…”�”}”(hjtKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjpKubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M³%hjlKubj)�”}”(hhh]”jl)�”}”(hŒ The packet”h]”hŒ The packet”…”�”}”(hj‹Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡Kh´M³%hjˆKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡Kh´M³%hj0Kubjä)�”}”(hŒ5``bool all_slaves`` assume all the slaves are active ”h]”(jê)�”}”(hŒ``bool all_slaves``”h]”jð)�”}”(hj«Kh]”hŒbool all_slaves”…”�”}”(hj­Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M´%hj¥Kubj)�”}”(hhh]”jl)�”}”(hŒ assume all the slaves are active”h]”hŒ assume all the slaves are active”…”�”}”(hjÄKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀKh´M´%hjÁKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀKh´M´%hj0Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjKubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjæKh]”hŒ Description”…”�”}”(hjèKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjäKubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¶%hjKubjl)�”}”(hŒžThe reference counters are not incremented so the caller must be careful with locks. The caller must hold RCU lock. ``NULL`` is returned if no slave is found.”h]”(hŒtThe reference counters are not incremented so the caller must be careful with locks. The caller must hold RCU lock. ”…”�”}”(hjüKh²hh³Nh´Nubjð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjüKubhŒ" is returned if no slave is found.”…”�”}”(hjüKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mµ%hjKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%netdev_sk_get_lowest_dev (C function)”Œc.netdev_sk_get_lowest_dev”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVstruct net_device * netdev_sk_get_lowest_dev (struct net_device *dev, struct sock *sk)”h]”j )�”}”(hŒTstruct net_device *netdev_sk_get_lowest_dev(struct net_device *dev, struct sock *sk)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj=Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9Lh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÒ%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9Lh²hh³jJLh´MÒ%ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj\Lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j^LŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_sk_get_lowest_dev”sbŒc.netdev_sk_get_lowest_dev”†”asbuh1hhj9Lh²hh³jJLh´MÒ%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9Lh²hh³jJLh´MÒ%ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‹Lh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9Lh²hh³jJLh´MÒ%ubj3)�”}”(hŒnetdev_sk_get_lowest_dev”h]”j9)�”}”(hjzLh]”hŒnetdev_sk_get_lowest_dev”…”�”}”(hjœLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜Lubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj9Lh²hh³jJLh´MÒ%ubj¡ )�”}”(hŒ)(struct net_device *dev, struct sock *sk)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj·Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³Lubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³Lubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÕLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j×LŒmodname”NŒ classname”Njå jè )�”}”jë ]”jxLŒc.netdev_sk_get_lowest_dev”†”asbuh1hhj³Lubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³Lubj )�”}”(hj h]”hŒ*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj³Lubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯Lubj§ )�”}”(hŒstruct sock *sk”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj'Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#Mubh)�”}”(hhh]”j9)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjEMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGMŒmodname”NŒ classname”Njå jè )�”}”jë ]”jxLŒc.netdev_sk_get_lowest_dev”†”asbuh1hhj#Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#Mubj )�”}”(hj h]”hŒ*”…”�”}”(hjqMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#Mubj9)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj~Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯Lubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj9Lh²hh³jJLh´MÒ%ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj5Lh²hh³jJLh´MÒ%ubah}”(h]”j0Lah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jJLh´MÒ%hj2Lh²hubjg)�”}”(hhh]”jl)�”}”(hŒ6Get the lowest device in chain given device and socket”h]”hŒ6Get the lowest device in chain given device and socket”…”�”}”(hj¨Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÒ%hj¥Mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj2Lh²hh³jJLh´MÒ%ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÀMjŒjÀMj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ™**Parameters** ``struct net_device *dev`` device ``struct sock *sk`` the socket **Description** ``NULL`` is returned if no lower device is found.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÊMh]”hŒ Parameters”…”�”}”(hjÌMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈMubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÖ%hjÄMubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjéMh]”hŒstruct net_device *dev”…”�”}”(hjëMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjçMubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÓ%hjãMubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþMh´MÓ%hjÿMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþMh´MÓ%hjàMubjä)�”}”(hŒ``struct sock *sk`` the socket ”h]”(jê)�”}”(hŒ``struct sock *sk``”h]”jð)�”}”(hj"Nh]”hŒstruct sock *sk”…”�”}”(hj$Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÔ%hjNubj)�”}”(hhh]”jl)�”}”(hŒ the socket”h]”hŒ the socket”…”�”}”(hj;Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7Nh´MÔ%hj8Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7Nh´MÔ%hjàMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄMubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj]Nh]”hŒ Description”…”�”}”(hj_Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÖ%hjÄMubjl)�”}”(hŒ1``NULL`` is returned if no lower device is found.”h]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjwNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjsNubhŒ) is returned if no lower device is found.”…”�”}”(hjsNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÕ%hjÄMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'netdev_lower_state_changed (C function)”Œc.netdev_lower_state_changed”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVvoid netdev_lower_state_changed (struct net_device *lower_dev, void *lower_state_info)”h]”j )�”}”(hŒUvoid netdev_lower_state_changed(struct net_device *lower_dev, void *lower_state_info)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°Nh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¬Nh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MD&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬Nh²hh³j¾Nh´MD&ubj3)�”}”(hŒnetdev_lower_state_changed”h]”j9)�”}”(hŒnetdev_lower_state_changed”h]”hŒnetdev_lower_state_changed”…”�”}”(hjÑNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍNubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¬Nh²hh³j¾Nh´MD&ubj¡ )�”}”(hŒ6(struct net_device *lower_dev, void *lower_state_info)”h]”(j§ )�”}”(hŒstruct net_device *lower_dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjíNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéNubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j OŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÓNsbŒc.netdev_lower_state_changed”†”asbuh1hhjéNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéNubj )�”}”(hj h]”hŒ*”…”�”}”(hj9Oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjéNubj9)�”}”(hŒ lower_dev”h]”hŒ lower_dev”…”�”}”(hjFOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjåNubj§ )�”}”(hŒvoid *lower_state_info”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_Oh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[Oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[Oubj )�”}”(hj h]”hŒ*”…”�”}”(hj{Oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[Oubj9)�”}”(hŒlower_state_info”h]”hŒlower_state_info”…”�”}”(hjˆOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjåNubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¬Nh²hh³j¾Nh´MD&ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨Nh²hh³j¾Nh´MD&ubah}”(h]”j£Nah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¾Nh´MD&hj¥Nh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Dispatch event about lower device state change”h]”hŒ.Dispatch event about lower device state change”…”�”}”(hj²Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MD&hj¯Oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥Nh²hh³j¾Nh´MD&ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÊOjŒjÊOj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÛ**Parameters** ``struct net_device *lower_dev`` device ``void *lower_state_info`` state to dispatch **Description** Send NETDEV_CHANGELOWERSTATE to netdev notifiers with info. The caller must hold the RTNL lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÔOh]”hŒ Parameters”…”�”}”(hjÖOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒOubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MH&hjÎOubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct net_device *lower_dev`` device ”h]”(jê)�”}”(hŒ ``struct net_device *lower_dev``”h]”jð)�”}”(hjóOh]”hŒstruct net_device *lower_dev”…”�”}”(hjõOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñOubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´ME&hjíOubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jPh´ME&hj Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jPh´ME&hjêOubjä)�”}”(hŒ-``void *lower_state_info`` state to dispatch ”h]”(jê)�”}”(hŒ``void *lower_state_info``”h]”jð)�”}”(hj,Ph]”hŒvoid *lower_state_info”…”�”}”(hj.Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MF&hj&Pubj)�”}”(hhh]”jl)�”}”(hŒstate to dispatch”h]”hŒstate to dispatch”…”�”}”(hjEPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jAPh´MF&hjBPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jAPh´MF&hjêOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÎOubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjgPh]”hŒ Description”…”�”}”(hjiPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjePubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MH&hjÎOubjl)�”}”(hŒ_Send NETDEV_CHANGELOWERSTATE to netdev notifiers with info. The caller must hold the RTNL lock.”h]”hŒ_Send NETDEV_CHANGELOWERSTATE to netdev notifiers with info. The caller must hold the RTNL lock.”…”�”}”(hj}Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MG&hjÎOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_get_flags (C function)”Œc.netif_get_flags”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;unsigned int netif_get_flags (const struct net_device *dev)”h]”j )�”}”(hŒ:unsigned int netif_get_flags(const struct net_device *dev)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¬Ph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨Ph²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÃ&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨Ph²hh³jºPh´MÃ&ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÉPh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨Ph²hh³jºPh´MÃ&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨Ph²hh³jºPh´MÃ&ubj3)�”}”(hŒnetif_get_flags”h]”j9)�”}”(hŒnetif_get_flags”h]”hŒnetif_get_flags”…”�”}”(hjéPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåPubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¨Ph²hh³jºPh´MÃ&ubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQubj)�”}”(hjh]”hŒstruct”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj>Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@QŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jëPsbŒc.netif_get_flags”†”asbuh1hhjQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQubj )�”}”(hj h]”hŒ*”…”�”}”(hjlQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjQubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjyQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýPubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¨Ph²hh³jºPh´MÃ&ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¤Ph²hh³jºPh´MÃ&ubah}”(h]”jŸPah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jºPh´MÃ&hj¡Ph²hubjg)�”}”(hhh]”jl)�”}”(hŒget flags reported to userspace”h]”hŒget flags reported to userspace”…”�”}”(hj£Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÃ&hj Qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¡Ph²hh³jºPh´MÃ&ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j»QjŒj»Qj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``const struct net_device *dev`` device **Description** Get the combination of flag bits exported through APIs to userspace.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÅQh]”hŒ Parameters”…”�”}”(hjÇQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÃQubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÇ&hj¿Qubjß)�”}”(hhh]”jä)�”}”(hŒ(``const struct net_device *dev`` device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjäQh]”hŒconst struct net_device *dev”…”�”}”(hjæQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâQubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÄ&hjÞQubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjýQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jùQh´MÄ&hjúQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jùQh´MÄ&hjÛQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿Qubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjRh]”hŒ Description”…”�”}”(hj!Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÆ&hj¿Qubjl)�”}”(hŒDGet the combination of flag bits exported through APIs to userspace.”h]”hŒDGet the combination of flag bits exported through APIs to userspace.”…”�”}”(hj5Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÅ&hj¿Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(netif_pre_changeaddr_notify (C function)”Œc.netif_pre_changeaddr_notify”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒjint netif_pre_changeaddr_notify (struct net_device *dev, const char *addr, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒiint netif_pre_changeaddr_notify(struct net_device *dev, const char *addr, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjdRh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj`Rh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÐ'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`Rh²hh³jrRh´MÐ'ubj3)�”}”(hŒnetif_pre_changeaddr_notify”h]”j9)�”}”(hŒnetif_pre_changeaddr_notify”h]”hŒnetif_pre_changeaddr_notify”…”�”}”(hj…Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Rubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj`Rh²hh³jrRh´MÐ'ubj¡ )�”}”(hŒJ(struct net_device *dev, const char *addr, struct netlink_ext_ack *extack)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¡Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Rubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¿Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÁRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‡RsbŒc.netif_pre_changeaddr_notify”†”asbuh1hhj�Rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Rubj )�”}”(hj h]”hŒ*”…”�”}”(hjíRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�Rubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjúRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™Rubj§ )�”}”(hŒconst char *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj.Sh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jXsbŒc.netdev_port_same_parent_id”†”asbuh1hhjXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjXubj )�”}”(hj h]”hŒ*”…”�”}”(hjjXh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjXubj9)�”}”(hŒa”h]”hŒa”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjXubj§ )�”}”(hŒstruct net_device *b”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒXubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj®Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°XŒmodname”NŒ classname”Njå jè )�”}”jë ]”jXXŒc.netdev_port_same_parent_id”†”asbuh1hhjŒXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒXubj )�”}”(hj h]”hŒ*”…”�”}”(hjÚXh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒXubj9)�”}”(hjl”h]”hŒb”…”�”}”(hjçXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjXubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÞWh²hh³jïWh´M}(ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÚWh²hh³jïWh´M}(ubah}”(h]”jÕWah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jïWh´M}(hj×Wh²hubjg)�”}”(hhh]”jl)�”}”(hŒDIndicate if two network devices have the same port parent identifier”h]”hŒDIndicate if two network devices have the same port parent identifier”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M}(hj Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj×Wh²hh³jïWh´M}(ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j(YjŒj(Yj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒq**Parameters** ``struct net_device *a`` first network device ``struct net_device *b`` second network device”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj2Yh]”hŒ Parameters”…”�”}”(hj4Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M�(hj,Yubjß)�”}”(hhh]”(jä)�”}”(hŒ.``struct net_device *a`` first network device ”h]”(jê)�”}”(hŒ``struct net_device *a``”h]”jð)�”}”(hjQYh]”hŒstruct net_device *a”…”�”}”(hjSYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjOYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M(hjKYubj)�”}”(hhh]”jl)�”}”(hŒfirst network device”h]”hŒfirst network device”…”�”}”(hjjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jfYh´M(hjgYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jfYh´M(hjHYubjä)�”}”(hŒ.``struct net_device *b`` second network device”h]”(jê)�”}”(hŒ``struct net_device *b``”h]”jð)�”}”(hjŠYh]”hŒstruct net_device *b”…”�”}”(hjŒYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M�(hj„Yubj)�”}”(hhh]”jl)�”}”(hŒsecond network device”h]”hŒsecond network device”…”�”}”(hj£Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M€(hj Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸYh´M�(hjHYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj,Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netdev_update_features (C function)”Œc.netdev_update_features”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4void netdev_update_features (struct net_device *dev)”h]”j )�”}”(hŒ3void netdev_update_features(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäYh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàYh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MI,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàYh²hh³jòYh´MI,ubj3)�”}”(hŒnetdev_update_features”h]”j9)�”}”(hŒnetdev_update_features”h]”hŒnetdev_update_features”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjàYh²hh³jòYh´MI,ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj!Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj?Zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfeatures set and send notifications if it has changed. Should be called after driver or hardware dependent conditions might have changed that influence the features.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÆZh]”hŒ Parameters”…”�”}”(hjÈZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÄZubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MM,hjÀZubjß)�”}”(hhh]”jä)�”}”(hŒ/``struct net_device *dev`` the device to check ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjåZh]”hŒstruct net_device *dev”…”�”}”(hjçZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjãZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MJ,hjßZubj)�”}”(hhh]”jl)�”}”(hŒthe device to check”h]”hŒthe device to check”…”�”}”(hjþZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³júZh´MJ,hjûZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³júZh´MJ,hjÜZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÀZubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj [h]”hŒ Description”…”�”}”(hj"[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´ML,hjÀZubjÒ)�”}”(hŒ¶Recalculate dev->features set and send notifications if it has changed. Should be called after driver or hardware dependent conditions might have changed that influence the features.”h]”jl)�”}”(hŒ¶Recalculate dev->features set and send notifications if it has changed. Should be called after driver or hardware dependent conditions might have changed that influence the features.”h]”hŒ¶Recalculate dev->features set and send notifications if it has changed. Should be called after driver or hardware dependent conditions might have changed that influence the features.”…”�”}”(hj:[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MK,hj6[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jH[h´MK,hjÀZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netdev_change_features (C function)”Œc.netdev_change_features”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4void netdev_change_features (struct net_device *dev)”h]”j )�”}”(hŒ3void netdev_change_features(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjo[h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjk[h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MX,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjk[h²hh³j}[h´MX,ubj3)�”}”(hŒnetdev_change_features”h]”j9)�”}”(hŒnetdev_change_features”h]”hŒnetdev_change_features”…”�”}”(hj�[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒ[ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjk[h²hh³j}[h´MX,ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¬[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨[ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÊ[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇ[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÌ[Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j’[sbŒc.netdev_change_features”†”asbuh1hhj¨[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨[ubj )�”}”(hj h]”hŒ*”…”�”}”(hjø[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¨[ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¤[ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjk[h²hh³j}[h´MX,ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjg[h²hh³j}[h´MX,ubah}”(h]”jb[ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j}[h´MX,hjd[h²hubjg)�”}”(hhh]”jl)�”}”(hŒrecalculate device features”h]”hŒrecalculate device features”…”�”}”(hj/\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MX,hj,\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjd[h²hh³j}[h´MX,ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jG\jŒjG\j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXa**Parameters** ``struct net_device *dev`` the device to check **Description** Recalculate dev->features set and send notifications even if they have not changed. Should be called instead of netdev_update_features() if also dev->vlan_features might have changed to allow the changes to be propagated to stacked VLAN devices.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjQ\h]”hŒ Parameters”…”�”}”(hjS\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjO\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M\,hjK\ubjß)�”}”(hhh]”jä)�”}”(hŒ/``struct net_device *dev`` the device to check ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjp\h]”hŒstruct net_device *dev”…”�”}”(hjr\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjn\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MY,hjj\ubj)�”}”(hhh]”jl)�”}”(hŒthe device to check”h]”hŒthe device to check”…”�”}”(hj‰\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…\h´MY,hj†\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…\h´MY,hjg\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjK\ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj«\h]”hŒ Description”…”�”}”(hj­\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M[,hjK\ubjÒ)�”}”(hŒõRecalculate dev->features set and send notifications even if they have not changed. Should be called instead of netdev_update_features() if also dev->vlan_features might have changed to allow the changes to be propagated to stacked VLAN devices.”h]”jl)�”}”(hŒõRecalculate dev->features set and send notifications even if they have not changed. Should be called instead of netdev_update_features() if also dev->vlan_features might have changed to allow the changes to be propagated to stacked VLAN devices.”h]”hŒõRecalculate dev->features set and send notifications even if they have not changed. Should be called instead of netdev_update_features() if also dev->vlan_features might have changed to allow the changes to be propagated to stacked VLAN devices.”…”�”}”(hjÅ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MZ,hjÁ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÓ\h´MZ,hjK\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ-netif_stacked_transfer_operstate (C function)”Œ"c.netif_stacked_transfer_operstate”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`void netif_stacked_transfer_operstate (const struct net_device *rootdev, struct net_device *dev)”h]”j )�”}”(hŒ_void netif_stacked_transfer_operstate(const struct net_device *rootdev, struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjú\h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjö\h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mi,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjö\h²hh³j]h´Mi,ubj3)�”}”(hŒ netif_stacked_transfer_operstate”h]”j9)�”}”(hŒ netif_stacked_transfer_operstate”h]”hŒ netif_stacked_transfer_operstate”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjö\h²hh³j]h´Mi,ubj¡ )�”}”(hŒ:(const struct net_device *rootdev, struct net_device *dev)”h]”(j§ )�”}”(hŒ const struct net_device *rootdev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj7]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3]ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjR]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3]ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjp]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jr]Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j]sbŒ"c.netif_stacked_transfer_operstate”†”asbuh1hhj3]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3]ubj )�”}”(hj h]”hŒ*”…”�”}”(hjž]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj3]ubj9)�”}”(hŒrootdev”h]”hŒrootdev”…”�”}”(hj«]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/]ubj§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÄ]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ]ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjâ]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjß]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jä]Œmodname”•NŒ classname”Njå jè )�”}”jë ]”jŒ]Œ"c.netif_stacked_transfer_operstate”†”asbuh1hhjÀ]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀ]ubj )�”}”(hj h]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀ]ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/]ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjö\h²hh³j]h´Mi,ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjò\h²hh³j]h´Mi,ubah}”(h]”jí\ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j]h´Mi,hjï\h²hubjg)�”}”(hhh]”jl)�”}”(hŒtransfer operstate”h]”hŒtransfer operstate”…”�”}”(hjE^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mi,hjB^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjï\h²hh³j]h´Mi,ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j]^jŒj]^j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXr**Parameters** ``const struct net_device *rootdev`` the root or lower level device to transfer state from ``struct net_device *dev`` the device to transfer operstate to **Description** Transfer operational state from root to device. This is normally called when a stacking relationship exists between the root device and the device(a leaf device).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjg^h]”hŒ Parameters”…”�”}”(hji^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhje^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mm,hja^ubjß)�”}”(hhh]”(jä)�”}”(hŒ[``const struct net_device *rootdev`` the root or lower level device to transfer state from ”h]”(jê)�”}”(hŒ$``const struct net_device *rootdev``”h]”jð)�”}”(hj†^h]”hŒ const struct net_device *rootdev”…”�”}”(hjˆ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mj,hj€^ubj)�”}”(hhh]”jl)�”}”(hŒ5the root or lower level device to transfer state from”h]”hŒ5the root or lower level device to transfer state from”…”�”}”(hjŸ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›^h´Mj,hjœ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›^h´Mj,hj}^ubjä)�”}”(hŒ?``struct net_device *dev`` the device to transfer operstate to ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj¿^h]”hŒstruct net_device *dev”…”�”}”(hjÁ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mk,hj¹^ubj)�”}”(hhh]”jl)�”}”(hŒ#the device to transfer operstate to”h]”hŒ#the device to transfer operstate to”…”�”}”(hjØ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÔ^h´Mk,hjÕ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔ^h´Mk,hj}^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhja^ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjú^h]”hŒ Description”…”�”}”(hjü^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjø^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mm,hja^ubjÒ)�”}”(hŒ¢Transfer operational state from root to device. This is normally called when a stacking relationship exists between the root device and the device(a leaf device).”h]”jl)�”}”(hŒ¢Transfer operational state from root to device. This is normally called when a stacking relationship exists between the root device and the device(a leaf device).”h]”hŒ¢Transfer operational state from root to device. This is normally called when a stacking relationship exists between the root device and the device(a leaf device).”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Ml,hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j"_h´Ml,hja^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒregister_netdevice (C function)”Œc.register_netdevice”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/int register_netdevice (struct net_device *dev)”h]”j )�”}”(hŒ.int register_netdevice(struct net_device *dev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjI_h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjE_h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M@-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE_h²hh³jW_h´M@-ubj3)�”}”(hŒregister_netdevice”h]”j9)�”}”(hŒregister_netdevice”h]”hŒregister_netdevice”…”�”}”(hjj_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjf_ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjE_h²hh³jW_h´M@-ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj†_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚_ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¤_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¦_Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jl_sbŒc.register_netdevice”†”asbuh1hhj‚_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚_ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒ_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‚_ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjß_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~_ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjE_h²hh³jW_h´M@-ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjA_h²hh³jW_h´M@-ubah}”(h]”j<_ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jW_h´M@-hj>_h²hubjg)�”}”(hhh]”jl)�”}”(hŒregister a network device”h]”hŒregister a network device”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M@-hj`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj>_h²hh³jW_h´M@-ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j!`jŒj!`j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX3**Parameters** ``struct net_device *dev`` device to register **Description** Take a prepared network device structure and make it externally accessible. A ``NETDEV_REGISTER`` message is sent to the netdev notifier chain. Callers must hold the rtnl lock - you may want register_netdev() instead of this.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj+`h]”hŒ Parameters”…”�”}”(hj-`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MD-hj%`ubjß)�”}”(hhh]”jä)�”}”(hŒ.``struct net_device *dev`` device to register ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjJ`h]”hŒstruct net_device *dev”…”�”}”(hjL`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjH`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MA-hjD`ubj)�”}”(hhh]”jl)�”}”(hŒdevice to register”h]”hŒdevice to register”…”�”}”(hjc`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_`h´MA-hj``ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_`h´MA-hjA`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj%`ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj…`h]”hŒ Description”…”�”}”(hj‡`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MC-hj%`ubjl)�”}”(hŒáTake a prepared network device structure and make it externally accessible. A ``NETDEV_REGISTER`` message is sent to the netdev notifier chain. Callers must hold the rtnl lock - you may want register_netdev() instead of this.”h]”(hŒNTake a prepared network device structure and make it externally accessible. A ”…”�”}”(hj›`h²hh³Nh´Nubjð)�”}”(hŒ``NETDEV_REGISTER``”h]”hŒNETDEV_REGISTER”…”�”}”(hj£`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj›`ubhŒ€ message is sent to the netdev notifier chain. Callers must hold the rtnl lock - you may want register_netdev() instead of this.”…”�”}”(hj›`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MB-hj%`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒregister_netdev (C function)”Œc.register_netdev”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,int register_netdev (struct net_device *dev)”h]”j )�”}”(hŒ+int register_netdev(struct net_device *dev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÜ`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjØ`h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjØ`h²hh³jê`h´M.ubj3)�”}”(hŒregister_netdev”h]”j9)�”}”(hŒregister_netdev”h]”hŒregister_netdev”…”�”}”(hjý`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù`ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjØ`h²hh³jê`h´M.ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&ah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj7ah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j9aŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÿ`sbŒc.register_netdev”†”asbuh1hhjaubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaubj )�”}”(hj h]”hŒ*”…”�”}”(hjeah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjaubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjrah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjaubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjØ`h²hh³jê`h´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÔ`h²hh³jê`h´M.ubah}”(h]”jÏ`ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jê`h´M.hjÑ`h²hubjg)�”}”(hhh]”jl)�”}”(hŒregister a network device”h]”hŒregister a network device”…”�”}”(hjœah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hj™ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÑ`h²hh³jê`h´M.ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j´ajŒj´aj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` device to register **Description** Take a completed network device structure and add it to the kernel interfaces. A ``NETDEV_REGISTER`` message is sent to the netdev notifier chain. 0 is returned on success. A negative errno code is returned on a failure to set up the device, or if the name is a duplicate. This is a wrapper around register_netdevice that takes the rtnl semaphore and expands the device name if you passed a format string to alloc_netdev.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¾ah]”hŒ Parameters”…”�”}”(hjÀah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼aubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hj¸aubjß)�”}”(hhh]”jä)�”}”(hŒ.``struct net_device *dev`` device to register ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÝah]”hŒstruct net_device *dev”…”�”}”(hjßah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hj×aubj)�”}”(hhh]”jl)�”}”(hŒdevice to register”h]”hŒdevice to register”…”�”}”(hjöah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jòah´M.hjóaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jòah´M.hjÔaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸aubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjbh]”hŒ Description”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hj¸aubjÒ)�”}”(hX¦Take a completed network device structure and add it to the kernel interfaces. A ``NETDEV_REGISTER`` message is sent to the netdev notifier chain. 0 is returned on success. A negative errno code is returned on a failure to set up the device, or if the name is a duplicate. This is a wrapper around register_netdevice that takes the rtnl semaphore and expands the device name if you passed a format string to alloc_netdev.”h]”(jl)�”}”(hXTake a completed network device structure and add it to the kernel interfaces. A ``NETDEV_REGISTER`` message is sent to the netdev notifier chain. 0 is returned on success. A negative errno code is returned on a failure to set up the device, or if the name is a duplicate.”h]”(hŒQTake a completed network device structure and add it to the kernel interfaces. A ”…”�”}”(hj2bh²hh³Nh´Nubjð)�”}”(hŒ``NETDEV_REGISTER``”h]”hŒNETDEV_REGISTER”…”�”}”(hj:bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2bubhŒ¬ message is sent to the netdev notifier chain. 0 is returned on success. A negative errno code is returned on a failure to set up the device, or if the name is a duplicate.”…”�”}”(hj2bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hj.bubjl)�”}”(hŒ”This is a wrapper around register_netdevice that takes the rtnl semaphore and expands the device name if you passed a format string to alloc_netdev.”h]”hŒ”This is a wrapper around register_netdevice that takes the rtnl semaphore and expands the device name if you passed a format string to alloc_netdev.”…”�”}”(hjSbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M.hj.bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jRbh´M.hj¸aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_get_stats (C function)”Œc.dev_get_stats”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒdstruct rtnl_link_stats64 * dev_get_stats (struct net_device *dev, struct rtnl_link_stats64 *storage)”h]”j )�”}”(hŒbstruct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, struct rtnl_link_stats64 *storage)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjˆbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„bh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Ma/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„bh²hh³j•bh´Ma/ubh)�”}”(hhh]”j9)�”}”(hŒrtnl_link_stats64”h]”hŒrtnl_link_stats64”…”�”}”(hj§bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j©bŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ dev_get_stats”sbŒc.dev_get_stats”†”asbuh1hhj„bh²hh³j•bh´Ma/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„bh²hh³j•bh´Ma/ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÖbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj„bh²hh³j•bh´Ma/ubj3)�”}”(hŒ dev_get_stats”h]”j9)�”}”(hjÅbh]”hŒ dev_get_stats”…”�”}”(hjçbh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjãbubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj„bh²hh³j•bh´Ma/ubj¡ )�”}”(hŒ;(struct net_device *dev, struct rtnl_link_stats64 *storage)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþbubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j"cŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÃbŒc.dev_get_stats”†”asbuh1hhjþbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþbubj )�”}”(hj h]”hŒ*”…”�”}”(hjLch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjþbubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjYch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúbubj§ )�”}”(hŒ!struct rtnl_link_stats64 *storage”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjrch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjncubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjncubh)�”}”(hhh]”j9)�”}”(hŒrtnl_link_stats64”h]”hŒrtnl_link_stats64”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’cŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÃbŒc.dev_get_stats”†”asbuh1hhjncubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjncubj )�”}”(hj h]”hŒ*”…”�”}”(hj¼ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjncubj9)�”}”(hŒstorage”h]”hŒstorage”…”�”}”(hjÉch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjncubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj„bh²hh³j•bh´Ma/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj€bh²hh³j•bh´Ma/ubah}”(h]”j{bah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j•bh´Ma/hj}bh²hubjg)�”}”(hhh]”jl)�”}”(hŒget network device statistics”h]”hŒget network device statistics”…”�”}”(hjóch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Ma/hjðch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj}bh²hh³j•bh´Ma/ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j djŒj dj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct net_device *dev`` device to get statistics from ``struct rtnl_link_stats64 *storage`` place to store stats **Description** Get network statistics from device. Return **storage**. The device driver may provide its own method by setting dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats; otherwise the internal statistics structure is used.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjdh]”hŒ Parameters”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Me/hjdubjß)�”}”(hhh]”(jä)�”}”(hŒ9``struct net_device *dev`` device to get statistics from ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj4dh]”hŒstruct net_device *dev”…”�”}”(hj6dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2dubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mb/hj.dubj)�”}”(hhh]”jl)�”}”(hŒdevice to get statistics from”h]”hŒdevice to get statistics from”…”�”}”(hjMdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jIdh´Mb/hjJdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jIdh´Mb/hj+dubjä)�”}”(hŒ;``struct rtnl_link_stats64 *storage`` place to store stats ”h]”(jê)�”}”(hŒ%``struct rtnl_link_stats64 *storage``”h]”jð)�”}”(hjmdh]”hŒ!struct rtnl_link_stats64 *storage”…”�”}”(hjodh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjkdubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mc/hjgdubj)�”}”(hhh]”jl)�”}”(hŒplace to store stats”h]”hŒplace to store stats”…”�”}”(hj†dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚dh´Mc/hjƒdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚dh´Mc/hj+dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjdubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¨dh]”hŒ Description”…”�”}”(hjªdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦dubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Me/hjdubjÒ)�”}”(hŒàGet network statistics from device. Return **storage**. The device driver may provide its own method by setting dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats; otherwise the internal statistics structure is used.”h]”jl)�”}”(hŒàGet network statistics from device. Return **storage**. The device driver may provide its own method by setting dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats; otherwise the internal statistics structure is used.”h]”(hŒ+Get network statistics from device. Return ”…”�”}”(hjÂdh²hh³Nh´Nubj›)�”}”(hŒ **storage**”h]”hŒstorage”…”�”}”(hjÊdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂdubhŒª. The device driver may provide its own method by setting dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats; otherwise the internal statistics structure is used.”…”�”}”(hjÂdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Md/hj¾dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jâdh´Md/hjdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"dev_fetch_sw_netstats (C function)”Œc.dev_fetch_sw_netstats”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒjvoid dev_fetch_sw_netstats (struct rtnl_link_stats64 *s, const struct pcpu_sw_netstats __percpu *netstats)”h]”j )�”}”(hŒivoid dev_fetch_sw_netstats(struct rtnl_link_stats64 *s, const struct pcpu_sw_netstats __percpu *netstats)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjeh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mž/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeh²hh³jeh´Mž/ubj3)�”}”(hŒdev_fetch_sw_netstats”h]”j9)�”}”(hŒdev_fetch_sw_netstats”h]”hŒdev_fetch_sw_netstats”…”�”}”(hj*eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&eubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjeh²hh³jeh´Mž/ubj¡ )�”}”(hŒO(struct rtnl_link_stats64 *s, const struct pcpu_sw_netstats __percpu *netstats)”h]”(j§ )�”}”(hŒstruct rtnl_link_stats64 *s”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjFeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBeubh)�”}”(hhh]”j9)�”}”(hŒrtnl_link_stats64”h]”hŒrtnl_link_stats64”…”�”}”(hjdeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jfeŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j,esbŒc.dev_fetch_sw_netstats”†”asbuh1hhjBeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBeubj )�”}”(hj h]”hŒ*”…”�”}”(hj’eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjBeubj9)�”}”(hŒs”h]”hŒs”…”�”}”(hjŸeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>eubj§ )�”}”(hŒ0const struct pcpu_sw_netstats __percpu *netstats”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¸eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´eubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÓeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´eubh)�”}”(hhh]”j9)�”}”(hŒpcpu_sw_netstats”h]”hŒpcpu_sw_netstats”…”�”}”(hjñeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jóeŒmodname”NŒ classname”Njå jè )�”}”jë ]”j€eŒc.dev_fetch_sw_netstats”†”asbuh1hhj´eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´eubhŒ__percpu”…”�”}”(hj´eh²hh³Nh´Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´eubj )�”}”(hj h]”hŒ*”…”�”}”(hj/fh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj´eubj9)�”}”(hŒnetstats”h]”hŒnetstats”…”�”}”(hjeubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjeh²hh³jeh´Mž/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjeh²hh³jeh´Mž/ubah}”(h]”jüdah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jeh´Mž/hjþdh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%get per-cpu network device statistics”h]”hŒ%get per-cpu network device statistics”…”�”}”(hjffh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mž/hjcfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjþdh²hh³jeh´Mž/ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j~fjŒj~fj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct rtnl_link_stats64 *s`` place to store stats ``const struct pcpu_sw_netstats __percpu *netstats`` per-cpu network stats to read from **Description** Read per-cpu network statistics and populate the related fields in **s**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjˆfh]”hŒ Parameters”…”�”}”(hjŠfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†fubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¢/hj‚fubjß)�”}”(hhh]”(jä)�”}”(hŒ5``struct rtnl_link_stats64 *s`` place to store stats ”h]”(jê)�”}”(hŒ``struct rtnl_link_stats64 *s``”h]”jð)�”}”(hj§fh]”hŒstruct rtnl_link_stats64 *s”…”�”}”(hj©fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥fubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MŸ/hj¡fubj)�”}”(hhh]”jl)�”}”(hŒplace to store stats”h]”hŒplace to store stats”…”�”}”(hjÀfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼fh´MŸ/hj½fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼fh´MŸ/hjžfubjä)�”}”(hŒX``const struct pcpu_sw_netstats __percpu *netstats`` per-cpu network stats to read from ”h]”(jê)�”}”(hŒ4``const struct pcpu_sw_netstats __percpu *netstats``”h]”jð)�”}”(hjàfh]”hŒ0const struct pcpu_sw_netstats __percpu *netstats”…”�”}”(hjâfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M /hjÚfubj)�”}”(hhh]”jl)�”}”(hŒ"per-cpu network stats to read from”h]”hŒ"per-cpu network stats to read from”…”�”}”(hjùfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõfh´M /hjöfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõfh´M /hjžfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚fubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjgh]”hŒ Description”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¢/hj‚fubjÒ)�”}”(hŒIRead per-cpu network statistics and populate the related fields in **s**.”h]”jl)�”}”(hj3gh]”(hŒCRead per-cpu network statistics and populate the related fields in ”…”�”}”(hj5gh²hh³Nh´Nubj›)�”}”(hŒ**s**”h]”hŒs”…”�”}”(hjstats and dev->tstats. Can be used as ndo_get_stats64() callback.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÌhh]”hŒ Parameters”…”�”}”(hjÎhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊhubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÄ/hjÆhubjß)�”}”(hhh]”(jä)�”}”(hŒ9``struct net_device *dev`` device to get statistics from ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjëhh]”hŒstruct net_device *dev”…”�”}”(hjíhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéhubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÁ/hjåhubj)�”}”(hhh]”jl)�”}”(hŒdevice to get statistics from”h]”hŒdevice to get statistics from”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jih´MÁ/hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jih´MÁ/hjâhubjä)�”}”(hŒ5``struct rtnl_link_stats64 *s`` place to store stats ”h]”(jê)�”}”(hŒ``struct rtnl_link_stats64 *s``”h]”jð)�”}”(hj$ih]”hŒstruct rtnl_link_stats64 *s”…”�”}”(hj&ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"iubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÂ/hjiubj)�”}”(hhh]”jl)�”}”(hŒplace to store stats”h]”hŒplace to store stats”…”�”}”(hj=ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9ih´MÂ/hj:iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9ih´MÂ/hjâhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÆhubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj_ih]”hŒ Description”…”�”}”(hjaih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]iubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÄ/hjÆhubjÒ)�”}”(hŒZPopulate **s** from dev->stats and dev->tstats. Can be used as ndo_get_stats64() callback.”h]”jl)�”}”(hŒZPopulate **s** from dev->stats and dev->tstats. Can be used as ndo_get_stats64() callback.”h]”(hŒ Populate ”…”�”}”(hjyih²hh³Nh´Nubj›)�”}”(hŒ**s**”h]”hŒs”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjyiubhŒL from dev->stats and dev->tstats. Can be used as ndo_get_stats64() callback.”…”�”}”(hjyih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MÃ/hjuiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j™ih´MÃ/hjÆhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ.netdev_sw_irq_coalesce_default_on (C function)”Œ#c.netdev_sw_irq_coalesce_default_on”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ?void netdev_sw_irq_coalesce_default_on (struct net_device *dev)”h]”j )�”}”(hŒ>void netdev_sw_irq_coalesce_default_on(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼ih²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Më/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ih²hh³jÎih´Më/ubj3)�”}”(hŒ!netdev_sw_irq_coalesce_default_on”h]”j9)�”}”(hŒ!netdev_sw_irq_coalesce_default_on”h]”hŒ!netdev_sw_irq_coalesce_default_on”…”�”}”(hjáih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝiubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¼ih²hh³jÎih´Më/ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjýih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùiubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jjŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jãisbŒ#c.netdev_sw_irq_coalesce_default_on”†”asbuh1hhjùiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùiubj )�”}”(hj h]”hŒ*”…”�”}”(hjIjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjùiubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjVjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõiubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¼ih²hh³jÎih´Më/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¸ih²hh³jÎih´Më/ubah}”(h]”j³iah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÎih´Më/hjµih²hubjg)�”}”(hhh]”jl)�”}”(hŒ#enable SW IRQ coalescing by default”h]”hŒ#enable SW IRQ coalescing by default”…”�”}”(hj€jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Më/hj}jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjµih²hh³jÎih´Më/ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j˜jjŒj˜jj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ×**Parameters** ``struct net_device *dev`` netdev to enable the IRQ coalescing on **Description** Sets a conservative default for SW IRQ coalescing. Users can use sysfs attributes to override the default values.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¢jh]”hŒ Parameters”…”�”}”(hj¤jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj jubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mï/hjœjubjß)�”}”(hhh]”jä)�”}”(hŒB``struct net_device *dev`` netdev to enable the IRQ coalescing on ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÁjh]”hŒstruct net_device *dev”…”�”}”(hjÃjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿jubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mì/hj»jubj)�”}”(hhh]”jl)�”}”(hŒ&netdev to enable the IRQ coalescing on”h]”hŒ&netdev to enable the IRQ coalescing on”…”�”}”(hjÚjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖjh´Mì/hj×jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖjh´Mì/hj¸jubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjœjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjüjh]”hŒ Description”…”�”}”(hjþjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjújubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mî/hjœjubjl)�”}”(hŒqSets a conservative default for SW IRQ coalescing. Users can use sysfs attributes to override the default values.”h]”hŒqSets a conservative default for SW IRQ coalescing. Users can use sysfs attributes to override the default values.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mí/hjœjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒalloc_netdev_mqs (C function)”Œc.alloc_netdev_mqs”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ²struct net_device * alloc_netdev_mqs (int sizeof_priv, const char *name, unsigned char name_assign_type, void (*setup)(struct net_device *), unsigned int txqs, unsigned int rxqs)”h]”j )�”}”(hŒ¯struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name, unsigned char name_assign_type, void (*setup)(struct net_device*), unsigned int txqs, unsigned int rxqs)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjAkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=kh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mý/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=kh²hh³jNkh´Mý/ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj`kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jbkŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œalloc_netdev_mqs”sbŒc.alloc_netdev_mqs”†”asbuh1hhj=kh²hh³jNkh´Mý/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=kh²hh³jNkh´Mý/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj=kh²hh³jNkh´Mý/ubj3)�”}”(hŒalloc_netdev_mqs”h]”j9)�”}”(hj~kh]”hŒalloc_netdev_mqs”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœkubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj=kh²hh³jNkh´Mý/ubj¡ )�”}”(hŒŒ(int sizeof_priv, const char *name, unsigned char name_assign_type, void (*setup)(struct net_device*), unsigned int txqs, unsigned int rxqs)”h]”(j§ )�”}”(hŒint sizeof_priv”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj»kh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj·kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·kubj9)�”}”(hŒ sizeof_priv”h]”hŒ sizeof_priv”…”�”}”(hj×kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³kubj§ )�”}”(hŒconst char *name”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjðkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìkubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìkubj )�”}”(hj h]”hŒ*”…”�”}”(hj'lh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjìkubj9)�”}”(hŒname”h]”hŒname”…”�”}”(hj4lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³kubj§ )�”}”(hŒunsigned char name_assign_type”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjMlh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjIlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIlubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjilh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjIlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIlubj9)�”}”(hŒname_assign_type”h]”hŒname_assign_type”…”�”}”(hj…lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³kubj§ )�”}”(hŒ!void (*setup)(struct net_device*)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjžlh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjšlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšlubj )�”}”(hjh]”hŒ(”…”�”}”(hjºlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšlubj )�”}”(hj h]”hŒ*”…”�”}”(hjÇlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšlubj9)�”}”(hŒsetup”h]”hŒsetup”…”�”}”(hjÔlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšlubj )�”}”(hjEh]”hŒ)”…”�”}”(hjâlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšlubj )�”}”(hjh]”hŒ(”…”�”}”(hjïlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšlubj)�”}”(hjh]”hŒstruct”…”�”}”(hjülh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšlubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jmŒmodname”NŒ classname”Njå jè )�”}”jë ]”j|kŒc.alloc_netdev_mqs”†”asbuh1hhjšlubj )�”}”(hj h]”hŒ*”…”�”}”(hj8mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšlubj )�”}”(hjEh]”hŒ)”…”�”}”(hjEmh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³kubj§ )�”}”(hŒunsigned int txqs”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj]mh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjYmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYmubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjymh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjYmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYmubj9)�”}”(hŒtxqs”h]”hŒtxqs”…”�”}”(hj•mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³kubj§ )�”}”(hŒunsigned int rxqs”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj®mh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjªmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªmubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÊmh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjªmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªmubj9)�”}”(hŒrxqs”h]”hŒrxqs”…”�”}”(hjæmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj=kh²hh³jNkh´Mý/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj9kh²hh³jNkh´Mý/ubah}”(h]”j4kah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jNkh´Mý/hj6kh²hubjg)�”}”(hhh]”jl)�”}”(hŒallocate network device”h]”hŒallocate network device”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mý/hj nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj6kh²hh³jNkh´Mý/ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j(njŒj(nj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX>**Parameters** ``int sizeof_priv`` size of private data to allocate space for ``const char *name`` device name format string ``unsigned char name_assign_type`` origin of device name ``void (*setup)(struct net_device *)`` callback to initialize device ``unsigned int txqs`` the number of TX subqueues to allocate ``unsigned int rxqs`` the number of RX subqueues to allocate **Description** Allocates a struct net_device with private data area for driver use and performs basic initialization. Also allocates subqueue structs for each queue on the device.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj2nh]”hŒ Parameters”…”�”}”(hj4nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hj,nubjß)�”}”(hhh]”(jä)�”}”(hŒ?``int sizeof_priv`` size of private data to allocate space for ”h]”(jê)�”}”(hŒ``int sizeof_priv``”h]”jð)�”}”(hjQnh]”hŒint sizeof_priv”…”�”}”(hjSnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjOnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mþ/hjKnubj)�”}”(hhh]”jl)�”}”(hŒ*size of private data to allocate space for”h]”hŒ*size of private data to allocate space for”…”�”}”(hjjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jfnh´Mþ/hjgnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jfnh´Mþ/hjHnubjä)�”}”(hŒ/``const char *name`` device name format string ”h]”(jê)�”}”(hŒ``const char *name``”h]”jð)�”}”(hjŠnh]”hŒconst char *name”…”�”}”(hjŒnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mÿ/hj„nubj)�”}”(hhh]”jl)�”}”(hŒdevice name format string”h]”hŒdevice name format string”…”�”}”(hj£nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸnh´Mÿ/hj nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸnh´Mÿ/hjHnubjä)�”}”(hŒ9``unsigned char name_assign_type`` origin of device name ”h]”(jê)�”}”(hŒ"``unsigned char name_assign_type``”h]”jð)�”}”(hjÃnh]”hŒunsigned char name_assign_type”…”�”}”(hjÅnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hj½nubj)�”}”(hhh]”jl)�”}”(hŒorigin of device name”h]”hŒorigin of device name”…”�”}”(hjÜnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØnh´M0hjÙnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØnh´M0hjHnubjä)�”}”(hŒE``void (*setup)(struct net_device *)`` callback to initialize device ”h]”(jê)�”}”(hŒ&``void (*setup)(struct net_device *)``”h]”jð)�”}”(hjünh]”hŒ"void (*setup)(struct net_device *)”…”�”}”(hjþnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjúnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hjönubj)�”}”(hhh]”jl)�”}”(hŒcallback to initialize device”h]”hŒcallback to initialize device”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³joh´M0hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjönubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³joh´M0hjHnubjä)�”}”(hŒ=``unsigned int txqs`` the number of TX subqueues to allocate ”h]”(jê)�”}”(hŒ``unsigned int txqs``”h]”jð)�”}”(hj5oh]”hŒunsigned int txqs”…”�”}”(hj7oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3oubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hj/oubj)�”}”(hhh]”jl)�”}”(hŒ&the number of TX subqueues to allocate”h]”hŒ&the number of TX subqueues to allocate”…”�”}”(hjNoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jJoh´M0hjKoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJoh´M0hjHnubjä)�”}”(hŒ=``unsigned int rxqs`` the number of RX subqueues to allocate ”h]”(jê)�”}”(hŒ``unsigned int rxqs``”h]”jð)�”}”(hjnoh]”hŒunsigned int rxqs”…”�”}”(hjpoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjloubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hjhoubj)�”}”(hhh]”jl)�”}”(hŒ&the number of RX subqueues to allocate”h]”hŒ&the number of RX subqueues to allocate”…”�”}”(hj‡oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒoh´M0hj„oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒoh´M0hjHnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj,nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj©oh]”hŒ Description”…”�”}”(hj«oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj§oubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hj,nubjl)�”}”(hŒ¥Allocates a struct net_device with private data area for driver use and performs basic initialization. Also allocates subqueue structs for each queue on the device.”h]”hŒ¥Allocates a struct net_device with private data area for driver use and performs basic initialization. Also allocates subqueue structs for each queue on the device.”…”�”}”(hj¿oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M0hj,nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒfree_netdev (C function)”Œ c.free_netdev”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)void free_netdev (struct net_device *dev)”h]”j )�”}”(hŒ(void free_netdev(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîoh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêoh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¦0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêoh²hh³jüoh´M¦0ubj3)�”}”(hŒ free_netdev”h]”j9)�”}”(hŒ free_netdev”h]”hŒ free_netdev”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj pubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjêoh²hh³jüoh´M¦0ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj+ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'pubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjIph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKpŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jpsbŒ c.free_netdev”†”asbuh1hhj'pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'pubj )�”}”(hj h]”hŒ*”…”�”}”(hjwph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj'pubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj„ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#pubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjêoh²hh³jüoh´M¦0ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæoh²hh³jüoh´M¦0ubah}”(h]”jáoah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüoh´M¦0hjãoh²hubjg)�”}”(hhh]”jl)�”}”(hŒfree network device”h]”hŒfree network device”…”�”}”(hj®ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¦0hj«ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjãoh²hh³jüoh´M¦0ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÆpjŒjÆpj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` device **Description** This function does the last stage of destroying an allocated device interface. The reference to the device object is released. If this is the last reference then it will be freed.Must be called in process context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÐph]”hŒ Parameters”…”�”}”(hjÒph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎpubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mª0hjÊpubjß)�”}”(hhh]”jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjïph]”hŒstruct net_device *dev”…”�”}”(hjñph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjípubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M§0hjépubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqh´M§0hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjépubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jqh´M§0hjæpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊpubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj*qh]”hŒ Description”…”�”}”(hj,qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M©0hjÊpubjl)�”}”(hŒÕThis function does the last stage of destroying an allocated device interface. The reference to the device object is released. If this is the last reference then it will be freed.Must be called in process context.”h]”hŒÕThis function does the last stage of destroying an allocated device interface. The reference to the device object is released. If this is the last reference then it will be freed.Must be called in process context.”…”�”}”(hj@qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M¨0hjÊpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒalloc_netdev_dummy (C function)”Œc.alloc_netdev_dummy”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8struct net_device * alloc_netdev_dummy (int sizeof_priv)”h]”j )�”}”(hŒ6struct net_device *alloc_netdev_dummy(int sizeof_priv)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjoqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkqh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mê0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkqh²hh³j|qh´Mê0ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjŽqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�qŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œalloc_netdev_dummy”sbŒc.alloc_netdev_dummy”†”asbuh1hhjkqh²hh³j|qh´Mê0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkqh²hh³j|qh´Mê0ubj )�”}”(hj h]”hŒ*”…”�”}”(hj½qh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjkqh²hh³j|qh´Mê0ubj3)�”}”(hŒalloc_netdev_dummy”h]”j9)�”}”(hj¬qh]”hŒalloc_netdev_dummy”…”�”}”(hjÎqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊqubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjkqh²hh³j|qh´Mê0ubj¡ )�”}”(hŒ(int sizeof_priv)”h]”j§ )�”}”(hŒint sizeof_priv”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjéqh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjåqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåqubj9)�”}”(hŒ sizeof_priv”h]”hŒ sizeof_priv”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjáqubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjkqh²hh³j|qh´Mê0ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjgqh²hh³j|qh´Mê0ubah}”(h]”jbqah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j|qh´Mê0hjdqh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Allocate and initialize a dummy net device.”h]”hŒ+Allocate and initialize a dummy net device.”…”�”}”(hj/rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mê0hj,rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjdqh²hh³j|qh´Mê0ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jGrjŒjGrj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ‘**Parameters** ``int sizeof_priv`` size of private data to allocate space for **Return** the allocated net_device on success, NULL otherwise”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjQrh]”hŒ Parameters”…”�”}”(hjSrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOrubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mî0hjKrubjß)�”}”(hhh]”jä)�”}”(hŒ?``int sizeof_priv`` size of private data to allocate space for ”h]”(jê)�”}”(hŒ``int sizeof_priv``”h]”jð)�”}”(hjprh]”hŒint sizeof_priv”…”�”}”(hjrrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjnrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Më0hjjrubj)�”}”(hhh]”jl)�”}”(hŒ*size of private data to allocate space for”h]”hŒ*size of private data to allocate space for”…”�”}”(hj‰rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…rh´Më0hj†rubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…rh´Më0hjgrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjKrubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj«rh]”hŒReturn”…”�”}”(hj­rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©rubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mí0hjKrubjl)�”}”(hŒ3the allocated net_device on success, NULL otherwise”h]”hŒ3the allocated net_device on success, NULL otherwise”…”�”}”(hjÁrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mí0hjKrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsynchronize_net (C function)”Œc.synchronize_net”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒvoid synchronize_net (void)”h]”j )�”}”(hŒvoid synchronize_net(void)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjðrh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìrh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M÷0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìrh²hh³jþrh´M÷0ubj3)�”}”(hŒsynchronize_net”h]”j9)�”}”(hŒsynchronize_net”h]”hŒsynchronize_net”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj subah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjìrh²hh³jþrh´M÷0ubj¡ )�”}”(hŒ(void)”h]”j§ )�”}”(hŒvoid”h]”jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-sh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)subah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj%subah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjìrh²hh³jþrh´M÷0ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjèrh²hh³jþrh´M÷0ubah}”(h]”jãrah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jþrh´M÷0hjårh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*Synchronize with packet receive processing”h]”hŒ*Synchronize with packet receive processing”…”�”}”(hjWsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M÷0hjTsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjårh²hh³jþrh´M÷0ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹josjŒjosj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¥**Parameters** ``void`` no arguments **Description** Wait for packets currently being received to be done. Does not block later packets from starting.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjysh]”hŒ Parameters”…”�”}”(hj{sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjwsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”•h´Mû0hjssubjß)�”}”(hhh]”jä)�”}”(hŒ``void`` no arguments ”h]”(jê)�”}”(hŒ``void``”h]”jð)�”}”(hj˜sh]”hŒvoid”…”�”}”(hjšsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–subah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Khj’subj)�”}”(hhh]”jl)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj±sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­sh´Khj®subah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’subeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­sh´Khj�subah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjssubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÓsh]”hŒ Description”…”�”}”(hjÕsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÑsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´KhjssubjÒ)�”}”(hŒaWait for packets currently being received to be done. Does not block later packets from starting.”h]”jl)�”}”(hŒaWait for packets currently being received to be done. Does not block later packets from starting.”h]”hŒaWait for packets currently being received to be done. Does not block later packets from starting.”…”�”}”(hjísh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mø0hjésubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jûsh´Mø0hjssubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'unregister_netdevice_queue (C function)”Œc.unregister_netdevice_queue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPvoid unregister_netdevice_queue (struct net_device *dev, struct list_head *head)”h]”j )�”}”(hŒOvoid unregister_netdevice_queue(struct net_device *dev, struct list_head *head)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"th²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjth²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjth²hh³j0th´M1ubj3)�”}”(hŒunregister_netdevice_queue”h]”j9)�”}”(hŒunregister_netdevice_queue”h]”hŒunregister_netdevice_queue”…”�”}”(hjCth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?tubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjth²hh³j0th´M1ubj¡ )�”}”(hŒ0(struct net_device *dev, struct list_head *head)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj_th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[tubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj}th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjztubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jtŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jEtsbŒc.unregister_netdevice_queue”†”asbuh1hhj[tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[tubj )�”}”(hj h]”hŒ*”…”�”}”(hj«th²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[tubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¸th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWtubj§ )�”}”(hŒstruct list_head *head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍtubh)�”}”(hhh]”j9)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjïth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñtŒmodname”NŒ classname”Njå jè )�”}”jë ]”j™tŒc.unregister_netdevice_queue”†”asbuh1hhjÍtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍtubj )�”}”(hj h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍtubj9)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj(uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWtubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjth²hh³j0th´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjth²hh³j0th´M1ubah}”(h]”jtah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j0th´M1hjth²hubjg)�”}”(hhh]”jl)�”}”(hŒremove device from the kernel”h]”hŒremove device from the kernel”…”�”}”(hjRuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjOuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjth²hh³j0th´M1ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjujŒjjuj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXk**Parameters** ``struct net_device *dev`` device ``struct list_head *head`` list **Description** This function shuts down a device interface and removes it from the kernel tables. If head not NULL, device is queued to be unregistered later. Callers must hold the rtnl semaphore. You may want unregister_netdev() instead of this.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjtuh]”hŒ Parameters”…”�”}”(hjvuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjruubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjnuubjß)�”}”(hhh]”(jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj“uh]”hŒstruct net_device *dev”…”�”}”(hj•uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘uubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hj�uubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¬uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨uh´M1hj©uubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨uh´M1hjŠuubjä)�”}”(hŒ ``struct list_head *head`` list ”h]”(jê)�”}”(hŒ``struct list_head *head``”h]”jð)�”}”(hjÌuh]”hŒstruct list_head *head”…”�”}”(hjÎuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊuubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjÆuubj)�”}”(hhh]”jl)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjåuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jáuh´M1hjâuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáuh´M1hjŠuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjnuubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjvh]”hŒ Description”…”�”}”(hj vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjnuubjÒ)�”}”(hŒéThis function shuts down a device interface and removes it from the kernel tables. If head not NULL, device is queued to be unregistered later. Callers must hold the rtnl semaphore. You may want unregister_netdev() instead of this.”h]”(jl)�”}”(hŒ�This function shuts down a device interface and removes it from the kernel tables. If head not NULL, device is queued to be unregistered later.”h]”hŒ�This function shuts down a device interface and removes it from the kernel tables. If head not NULL, device is queued to be unregistered later.”…”�”}”(hj!vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjvubjl)�”}”(hŒXCallers must hold the rtnl semaphore. You may want unregister_netdev() instead of this.”h]”hŒXCallers must hold the rtnl semaphore. You may want unregister_netdev() instead of this.”…”�”}”(hj0vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M1hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j/vh´M1hjnuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&unregister_netdevice_many (C function)”Œc.unregister_netdevice_many”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void unregister_netdevice_many (struct list_head *head)”h]”j )�”}”(hŒ6void unregister_netdevice_many(struct list_head *head)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjevh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjavh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mô1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjavh²hh³jsvh´Mô1ubj3)�”}”(hŒunregister_netdevice_many”h]”j9)�”}”(hŒunregister_netdevice_many”h]”hŒunregister_netdevice_many”…”�”}”(hj†vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚vubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjavh²hh³jsvh´Mô1ubj¡ )�”}”(hŒ(struct list_head *head)”h]”j§ )�”}”(hŒstruct list_head *head”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¢vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžvubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯vh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžvubh)�”}”(hhh]”j9)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjÀvh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÂvŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jˆvsbŒc.unregister_netdevice_many”†”asbuh1hhjžvubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžvubj )�”}”(hj h]”hŒ*”…”�”}”(hjîvh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjžvubj9)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjûvh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjšvubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjavh²hh³jsvh´Mô1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj]vh²hh³jsvh´Mô1ubah}”(h]”jXvah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jsvh´Mô1hjZvh²hubjg)�”}”(hhh]”jl)�”}”(hŒunregister many devices”h]”hŒunregister many devices”…”�”}”(hj%wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mô1hj"wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjZvh²hh³jsvh´Mô1ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j=wjŒj=wj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¼**Parameters** ``struct list_head *head`` list of devices **Note** As most callers use a stack allocated list_head, we force a list_del() to make sure stack won't be corrupted later.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjGwh]”hŒ Parameters”…”�”}”(hjIwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjEwubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mø1hjAwubjß)�”}”(hhh]”jä)�”}”(hŒ+``struct list_head *head`` list of devices ”h]”(jê)�”}”(hŒ``struct list_head *head``”h]”jð)�”}”(hjfwh]”hŒstruct list_head *head”…”�”}”(hjhwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdwubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mõ1hj`wubj)�”}”(hhh]”jl)�”}”(hŒlist of devices”h]”hŒlist of devices”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{wh´Mõ1hj|wubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{wh´Mõ1hj]wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjAwubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hj¡wh]”hŒNote”…”�”}”(hj£wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸwubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M÷1hjAwubjß)�”}”(hhh]”jä)�”}”(hŒsAs most callers use a stack allocated list_head, we force a list_del() to make sure stack won't be corrupted later.”h]”(jê)�”}”(hŒ0As most callers use a stack allocated list_head,”h]”hŒ0As most callers use a stack allocated list_head,”…”�”}”(hj¾wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M÷1hjºwubj)�”}”(hhh]”jl)�”}”(hŒBwe force a list_del() to make sure stack won't be corrupted later.”h]”hŒDwe force a list_del() to make sure stack won’t be corrupted later.”…”�”}”(hjÐwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mø1hjÍwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌwh´M÷1hj·wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjAwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒunregister_netdev (C function)”Œc.unregister_netdev”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void unregister_netdev (struct net_device *dev)”h]”j )�”}”(hŒ.void unregister_netdev(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj xh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M[2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj xh²hh³jxh´M[2ubj3)�”}”(hŒunregister_netdev”h]”j9)�”}”(hŒunregister_netdev”h]”hŒunregister_netdev”…”�”}”(hj2xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.xubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj xh²hh³jxh´M[2ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjNxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJxubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjlxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjixubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jnxŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4xsbŒc.unregister_netdev”†”asbuh1hhjJxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJxubj )�”}”(hj h]”hŒ*”…”�”}”(hjšxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJxubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj§xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFxubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj xh²hh³jxh´M[2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj xh²hh³jxh´M[2ubah}”(h]”jxah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jxh´M[2hjxh²hubjg)�”}”(hhh]”jl)�”}”(hŒremove device from the kernel”h]”hŒremove device from the kernel”…”�”}”(hjÑxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M[2hjÎxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjxh²hh³jxh´M[2ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jéxjŒjéxj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX@**Parameters** ``struct net_device *dev`` device **Description** This function shuts down a device interface and removes it from the kernel tables. This is just a wrapper for unregister_netdevice that takes the rtnl semaphore. In general you want to use this and not unregister_netdevice.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjóxh]”hŒ Parameters”…”�”}”(hjõxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M_2hjíxubjß)�”}”(hhh]”jä)�”}”(hŒ"``struct net_device *dev`` device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjyh]”hŒstruct net_device *dev”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M\2hj yubj)�”}”(hhh]”jl)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj+yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'yh´M\2hj(yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'yh´M\2hj yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjíxubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjMyh]”hŒ Description”…”�”}”(hjOyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjKyubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M^2hjíxubjÒ)�”}”(hŒáThis function shuts down a device interface and removes it from the kernel tables. This is just a wrapper for unregister_netdevice that takes the rtnl semaphore. In general you want to use this and not unregister_netdevice.”h]”(jl)�”}”(hŒRThis function shuts down a device interface and removes it from the kernel tables.”h]”hŒRThis function shuts down a device interface and removes it from the kernel tables.”…”�”}”(hjgyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M]2hjcyubjl)�”}”(hŒ�This is just a wrapper for unregister_netdevice that takes the rtnl semaphore. In general you want to use this and not unregister_netdevice.”h]”hŒ�This is just a wrapper for unregister_netdevice that takes the rtnl semaphore. In general you want to use this and not unregister_netdevice.”…”�”}”(hjvyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M`2hjcyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³juyh´M]2hjíxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&netdev_increment_features (C function)”Œc.netdev_increment_features”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒrnetdev_features_t netdev_increment_features (netdev_features_t all, netdev_features_t one, netdev_features_t mask)”h]”j )�”}”(hŒqnetdev_features_t netdev_increment_features(netdev_features_t all, netdev_features_t one, netdev_features_t mask)”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdev_features_t”h]”hŒnetdev_features_t”…”�”}”(hj®yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°yŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_increment_features”sbŒc.netdev_increment_features”†”asbuh1hhj§yh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐyh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§yh²hh³jÏyh´M3ubj3)�”}”(hŒnetdev_increment_features”h]”j9)�”}”(hjÌyh]”hŒnetdev_increment_features”…”�”}”(hjâyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞyubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj§yh²hh³jÏyh´M3ubj¡ )�”}”(hŒF(netdev_features_t all, netdev_features_t one, netdev_features_t mask)”h]”(j§ )�”}”(hŒnetdev_features_t all”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdev_features_t”h]”hŒnetdev_features_t”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jzŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÊyŒc.netdev_increment_features”†”asbuh1hhjùyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùyubj9)�”}”(hŒall”h]”hŒall”…”�”}”(hj,zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõyubj§ )�”}”(hŒnetdev_features_t one”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdev_features_t”h]”hŒnetdev_features_t”…”�”}”(hjHzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJzŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÊyŒc.netdev_increment_features”†”asbuh1hhjAzubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAzubj9)�”}”(hŒone”h]”hŒone”…”�”}”(hjtzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjAzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõyubj§ )�”}”(hŒnetdev_features_t mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒnetdev_features_t”h]”hŒnetdev_features_t”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’zŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÊyŒc.netdev_increment_features”†”asbuh1hhj‰zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰zubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj¼zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõyubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj§yh²hh³jÏyh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj£yh²hh³jÏyh´M3ubah}”(h]”jžyah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÏyh´M3hj yh²hubjg)�”}”(hhh]”jl)�”}”(hŒincrement feature set by one”h]”hŒincrement feature set by one”…”�”}”(hjæzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M3hjãzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj yh²hh³jÏyh´M3ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jþzjŒjþzj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX�**Parameters** ``netdev_features_t all`` current feature set ``netdev_features_t one`` new feature set ``netdev_features_t mask`` mask feature set **Description** Computes a new feature set after adding a device with feature set **one** to the master device with current feature set **all**. Will not enable anything that is off in **mask**. Returns the new feature set.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj{h]”hŒ Parameters”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mƒ3hj{ubjß)�”}”(hhh]”(jä)�”}”(hŒ.``netdev_features_t all`` current feature set ”h]”(jê)�”}”(hŒ``netdev_features_t all``”h]”jð)�”}”(hj'{h]”hŒnetdev_features_t all”…”�”}”(hj){h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M€3hj!{ubj)�”}”(hhh]”jl)�”}”(hŒcurrent feature set”h]”hŒcurrent feature set”…”�”}”(hj@{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j<{h´M€3hj={ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j<{h´M€3hj{ubjä)�”}”(hŒ*``netdev_features_t one`` new feature set ”h]”(jê)�”}”(hŒ``netdev_features_t one``”h]”jð)�”}”(hj`{h]”hŒnetdev_features_t one”…”�”}”(hjb{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M�3hjZ{ubj)�”}”(hhh]”jl)�”}”(hŒnew feature set”h]”hŒnew feature set”…”�”}”(hjy{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ju{h´M�3hjv{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ju{h´M�3hj{ubjä)�”}”(hŒ,``netdev_features_t mask`` mask feature set ”h]”(jê)�”}”(hŒ``netdev_features_t mask``”h]”jð)�”}”(hj™{h]”hŒnetdev_features_t mask”…”�”}”(hj›{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M‚3hj“{ubj)�”}”(hhh]”jl)�”}”(hŒmask feature set”h]”hŒmask feature set”…”�”}”(hj²{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j®{h´M‚3hj¯{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j®{h´M‚3hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj{ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÔ{h]”hŒ Description”…”�”}”(hjÖ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M„3hj{ubjÒ)�”}”(hŒÐComputes a new feature set after adding a device with feature set **one** to the master device with current feature set **all**. Will not enable anything that is off in **mask**. Returns the new feature set.”h]”jl)�”}”(hŒÐComputes a new feature set after adding a device with feature set **one** to the master device with current feature set **all**. Will not enable anything that is off in **mask**. Returns the new feature set.”h]”(hŒBComputes a new feature set after adding a device with feature set ”…”�”}”(hjî{h²hh³Nh´Nubj›)�”}”(hŒ**one**”h]”hŒone”…”�”}”(hjö{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî{ubhŒ/ to the master device with current feature set ”…”�”}”(hjî{h²hh³Nh´Nubj›)�”}”(hŒ**all**”h]”hŒall”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî{ubhŒ+. Will not enable anything that is off in ”…”�”}”(hjî{h²hh³Nh´Nubj›)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî{ubhŒ. Returns the new feature set.”…”�”}”(hjî{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mƒ3hjê{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j2|h´Mƒ3hj{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ1netdev_compute_master_upper_features (C function)”Œ&c.netdev_compute_master_upper_features”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVvoid netdev_compute_master_upper_features (struct net_device *dev, bool update_header)”h]”j )�”}”(hŒUvoid netdev_compute_master_upper_features(struct net_device *dev, bool update_header)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY|h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjU|h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M›3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU|h²hh³jg|h´M›3ubj3)�”}”(hŒ$netdev_compute_master_upper_features”h]”j9)�”}”(hŒ$netdev_compute_master_upper_features”h]”hŒ$netdev_compute_master_upper_features”…”�”}”(hjz|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv|ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjU|h²hh³jg|h´M›3ubj¡ )�”}”(hŒ,(struct net_device *dev, bool update_header)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj–|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’|ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj´|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¶|Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j||sbŒ&c.netdev_compute_master_upper_features”†”asbuh1hhj’|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’|ubj )�”}”(hj h]”hŒ*”…”�”}”(hjâ|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’|ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjï|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ|ubj§ )�”}”(hŒbool update_header”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}ubj9)�”}”(hŒ update_header”h]”hŒ update_header”…”�”}”(hj#}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ|ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjU|h²hh³jg|h´M›3ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjQ|h²hh³jg|h´M›3ubah}”(h]”jL|ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jg|h´M›3hjN|h²hubjg)�”}”(hhh]”jl)�”}”(hŒcompute feature from lowers”h]”hŒcompute feature from lowers”…”�”}”(hjM}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M›3hjJ}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjN|h²hh³jg|h´M›3ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹je}jŒje}j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒí**Parameters** ``struct net_device *dev`` the upper device ``bool update_header`` whether to update upper device's header_len/headroom/tailroom **Description** Recompute the upper device's feature based on all lower devices.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjo}h]”hŒ Parameters”…”�”}”(hjq}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjm}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MŸ3hji}ubjß)�”}”(hhh]”(jä)�”}”(hŒ,``struct net_device *dev`` the upper device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjŽ}h]”hŒstruct net_device *dev”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mœ3hjˆ}ubj)�”}”(hhh]”jl)�”}”(hŒthe upper device”h]”hŒthe upper device”…”�”}”(hj§}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£}h´Mœ3hj¤}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£}h´Mœ3hj…}ubjä)�”}”(hŒU``bool update_header`` whether to update upper device's header_len/headroom/tailroom ”h]”(jê)�”}”(hŒ``bool update_header``”h]”jð)�”}”(hjÇ}h]”hŒbool update_header”…”�”}”(hjÉ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´M�3hjÁ}ubj)�”}”(hhh]”jl)�”}”(hŒ=whether to update upper device's header_len/headroom/tailroom”h]”hŒ?whether to update upper device’s header_len/headroom/tailroom”…”�”}”(hjà}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜ}h´M�3hjÝ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜ}h´M�3hj…}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhji}ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj~h]”hŒ Description”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´MŸ3hji}ubjÒ)�”}”(hŒ@Recompute the upper device's feature based on all lower devices.”h]”jl)�”}”(hj~h]”hŒBRecompute the upper device’s feature based on all lower devices.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒN/var/lib/git/docbuild/linux/Documentation/networking/kapi:92: ./net/core/dev.c”h´Mž3hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j)~h´Mž3hji}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_header (C function)”Œ c.eth_header”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ‰int eth_header (struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned int len)”h]”j )�”}”(hŒˆint eth_header(struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned int len)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjP~h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjL~h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL~h²hh³j^~h´KCubj3)�”}”(hŒ eth_header”h]”j9)�”}”(hŒ eth_header”h]”hŒ eth_header”…”�”}”(hjq~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm~ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjL~h²hh³j^~h´KCubj¡ )�”}”(hŒz(struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned int len)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰~ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj«~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­~Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já js~sbŒ c.eth_header”†”asbuh1hhj‰~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰~ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÙ~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‰~ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjæ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…~ubj§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÿ~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjû~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjû~ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÇ~Œ c.eth_header”†”asbuh1hhjû~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjû~ubj )�”}”(hj h]”hŒ*”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjû~ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjû~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…~ubj§ )�”}”(hŒunsigned short type”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkubjM )�”}”(hŒshort”h]”hŒshort”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…~ubj§ )�”}”(hŒconst void *daddr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ubj )�”}”(hj h]”hŒ*”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼ubj9)�”}”(hŒdaddr”h]”hŒdaddr”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…~ubj§ )�”}”(hŒconst void *saddr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj8€h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€ubj )�”}”(hj h]”hŒ*”…”�”}”(hjT€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€ubj9)�”}”(hŒsaddr”h]”hŒsaddr”…”�”}”(hja€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…~ubj§ )�”}”(hŒunsigned int len”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjz€h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjv€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjv€ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj–€h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjv€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjv€ubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj²€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…~ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjL~h²hh³j^~h´KCubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjH~h²hh³j^~h´KCubah}”(h]”jC~ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j^~h´KChjE~h²hubjg)�”}”(hhh]”jl)�”}”(hŒcreate the Ethernet header”h]”hŒcreate the Ethernet header”…”�”}”(hjÜ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KChjÙ€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjE~h²hh³j^~h´KCubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jô€jŒjô€j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXÎ**Parameters** ``struct sk_buff *skb`` buffer to alter ``struct net_device *dev`` source device ``unsigned short type`` Ethernet type field ``const void *daddr`` destination address (NULL leave destination address) ``const void *saddr`` source address (NULL use device source address) ``unsigned int len`` packet length (<= skb->len) **Description** Set the protocol type. For a packet of type ETH_P_802_3/2 we put the length in here instead.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjþ€h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KGhjø€ubjß)�”}”(hhh]”(jä)�”}”(hŒ(``struct sk_buff *skb`` buffer to alter ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj�h]”hŒstruct sk_buff *skb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KDhj�ubj)�”}”(hhh]”jl)�”}”(hŒbuffer to alter”h]”hŒbuffer to alter”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2�h´KDhj3�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2�h´KDhj�ubjä)�”}”(hŒ)``struct net_device *dev`` source device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjV�h]”hŒstruct net_device *dev”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjT�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KEhjP�ubj)�”}”(hhh]”jl)�”}”(hŒ source device”h]”hŒ source device”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jk�h´KEhjl�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jk�h´KEhj�ubjä)�”}”(hŒ,``unsigned short type`` Ethernet type field ”h]”(jê)�”}”(hŒ``unsigned short type``”h]”jð)�”}”(hj��h]”hŒunsigned short type”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KFhj‰�ubj)�”}”(hhh]”jl)�”}”(hŒEthernet type field”h]”hŒEthernet type field”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤�h´KFhj¥�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤�h´KFhj�ubjä)�”}”(hŒK``const void *daddr`` destination address (NULL leave destination address) ”h]”(jê)�”}”(hŒ``const void *daddr``”h]”jð)�”}”(hjÈ�h]”hŒconst void *daddr”…”�”}”(hjÊ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KGhjÂ�ubj)�”}”(hhh]”jl)�”}”(hŒ4destination address (NULL leave destination address)”h]”hŒ4destination address (NULL leave destination address)”…”�”}”(hjá�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝ�h´KGhjÞ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝ�h´KGhj�ubjä)�”}”(hŒF``const void *saddr`` source address (NULL use device source address) ”h]”(jê)�”}”(hŒ``const void *saddr``”h]”jð)�”}”(hj‚h]”hŒconst void *saddr”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KHhjû�ubj)�”}”(hhh]”jl)�”}”(hŒ/source address (NULL use device source address)”h]”hŒ/source address (NULL use device source address)”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚h´KHhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjû�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚h´KHhj�ubjä)�”}”(hŒ1``unsigned int len`` packet length (<= skb->len) ”h]”(jê)�”}”(hŒ``unsigned int len``”h]”jð)�”}”(hj:‚h]”hŒunsigned int len”…”�”}”(hj<‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KIhj4‚ubj)�”}”(hhh]”jl)�”}”(hŒpacket length (<= skb->len)”h]”hŒpacket length (<= skb->len)”…”�”}”(hjS‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jO‚h´KIhjP‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jO‚h´KIhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjø€ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hju‚h]”hŒ Description”…”�”}”(hjw‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjs‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KKhjø€ubjl)�”}”(hŒ\Set the protocol type. For a packet of type ETH_P_802_3/2 we put the length in here instead.”h]”hŒ\Set the protocol type. For a packet of type ETH_P_802_3/2 we put the length in here instead.”…”�”}”(hj‹‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KJhjø€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_get_headlen (C function)”Œc.eth_get_headlen”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMu32 eth_get_headlen (const struct net_device *dev, const void *data, u32 len)”h]”j )�”}”(hŒLu32 eth_get_headlen(const struct net_device *dev, const void *data, u32 len)”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj½‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjº‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¿‚Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œeth_get_headlen”sbŒc.eth_get_headlen”†”asbuh1hhj¶‚h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶‚h²hh³jÞ‚h´Kuubj3)�”}”(hŒeth_get_headlen”h]”j9)�”}”(hjÛ‚h]”hŒeth_get_headlen”…”�”}”(hjñ‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjí‚ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶‚h²hh³jÞ‚h´Kuubj¡ )�”}”(hŒ9(const struct net_device *dev, const void *data, u32 len)”h]”(j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒubj)�”}”(hjh]”hŒstruct”…”�”}”(hj'ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjEƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÙ‚Œc.eth_get_headlen”†”asbuh1hhjƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒubj )�”}”(hj h]”hŒ*”…”�”}”(hjqƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj~ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒubj§ )�”}”(hŒconst void *data”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj—ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“ƒubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj²ƒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“ƒubj )�”}”(hj h]”hŒ*”…”�”}”(hj΃h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“ƒubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÛƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒubj§ )�”}”(hŒu32 len”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj÷ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jùƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÙ‚Œc.eth_get_headlen”†”asbuh1hhjðƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðƒubj9)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj#„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶‚h²hh³jÞ‚h´Kuubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj²‚h²hh³jÞ‚h´Kuubah}”(h]”j­‚ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÞ‚h´Kuhj¯‚h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4determine the length of header for an ethernet frame”h]”hŒ4determine the length of header for an ethernet frame”…”�”}”(hjM„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KuhjJ„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯‚h²hh³jÞ‚h´Kuubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹je„jŒje„j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX **Parameters** ``const struct net_device *dev`` pointer to network device ``const void *data`` pointer to start of frame ``u32 len`` total length of frame **Description** Make a best effort attempt to pull the length for all of the headers for a given frame in a linear buffer.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjo„h]”hŒ Parameters”…”�”}”(hjq„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjm„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kyhji„ubjß)�”}”(hhh]”(jä)�”}”(hŒ;``const struct net_device *dev`` pointer to network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjŽ„h]”hŒconst struct net_device *dev”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kvhjˆ„ubj)�”}”(hhh]”jl)�”}”(hŒpointer to network device”h]”hŒpointer to network device”…”�”}”(hj§„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£„h´Kvhj¤„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£„h´Kvhj…„ubjä)�”}”(hŒ/``const void *data`` pointer to start of frame ”h]”(jê)�”}”(hŒ``const void *data``”h]”jð)�”}”(hjÇ„h]”hŒconst void *data”…”�”}”(hjÉ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KwhjÁ„ubj)�”}”(hhh]”jl)�”}”(hŒpointer to start of frame”h]”hŒpointer to start of frame”…”�”}”(hjà„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜ„h´KwhjÝ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜ„h´Kwhj…„ubjä)�”}”(hŒ"``u32 len`` total length of frame ”h]”(jê)�”}”(hŒ ``u32 len``”h]”jð)�”}”(hj…h]”hŒu32 len”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kxhjú„ubj)�”}”(hhh]”jl)�”}”(hŒtotal length of frame”h]”hŒtotal length of frame”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…h´Kxhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…h´Kxhj…„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhji„ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj;…h]”hŒ Description”…”�”}”(hj=…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj9…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kzhji„ubjl)�”}”(hŒjMake a best effort attempt to pull the length for all of the headers for a given frame in a linear buffer.”h]”hŒjMake a best effort attempt to pull the length for all of the headers for a given frame in a linear buffer.”…”�”}”(hjQ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kyhji„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_type_trans (C function)”Œc.eth_type_trans”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒC__be16 eth_type_trans (struct sk_buff *skb, struct net_device *dev)”h]”j )�”}”(hŒB__be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be16”h]”hŒ__be16”…”�”}”(hjƒ…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j……Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œeth_type_trans”sbŒc.eth_type_trans”†”asbuh1hhj|…h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´K“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|…h²hh³j¤…h´K“ubj3)�”}”(hŒeth_type_trans”h]”j9)�”}”(hj¡…h]”hŒeth_type_trans”…”�”}”(hj·…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³…ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj|…h²hh³j¤…h´K“ubj¡ )�”}”(hŒ-(struct sk_buff *skb, struct net_device *dev)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÒ…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎ…ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjð…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjí…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jò…Œmodname”NŒ classname”Njå jè )�”}”jë ]”jŸ…Œc.eth_type_trans”†”asbuh1hhjÎ…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎ…ubj )�”}”(hj h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÎ…ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj)†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎ…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÊ…ubj§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjB†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>†ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj`†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jb†Œmodname”NŒ classname”Njå jè )�”}”jë ]”jŸ…Œc.eth_type_trans”†”asbuh1hhj>†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>†ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŒ†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj>†ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj™†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÊ…ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj|…h²hh³j¤…h´K“ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjx…h²hh³j¤…h´K“ubah}”(h]”js…ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¤…h´K“hju…h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#determine the packet's protocol ID.”h]”hŒ%determine the packet’s protocol ID.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´K“hjÀ†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhju…h²hh³j¤…h´K“ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÛ†jŒjÛ†j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX **Parameters** ``struct sk_buff *skb`` received socket data ``struct net_device *dev`` receiving network device **Description** The rule here is that we assume 802.3 if the type field is short enough to be a length. This is normal practice and works for any 'now in use' protocol.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjå†h]”hŒ Parameters”…”�”}”(hjç†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjã†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´K—hj߆ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct sk_buff *skb`` received socket data ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj‡h]”hŒstruct sk_buff *skb”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´K”hjþ†ubj)�”}”(hhh]”jl)�”}”(hŒreceived socket data”h]”hŒreceived socket data”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡h´K”hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡h´K”hjû†ubjä)�”}”(hŒ4``struct net_device *dev`` receiving network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj=‡h]”hŒstruct net_device *dev”…”�”}”(hj?‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´K•hj7‡ubj)�”}”(hhh]”jl)�”}”(hŒreceiving network device”h]”hŒreceiving network device”…”�”}”(hjV‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jR‡h´K•hjS‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jR‡h´K•hjû†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj߆ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjx‡h]”hŒ Description”…”�”}”(hjz‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjv‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´K—hj߆ubjl)�”}”(hŒ˜The rule here is that we assume 802.3 if the type field is short enough to be a length. This is normal practice and works for any 'now in use' protocol.”h]”hŒœThe rule here is that we assume 802.3 if the type field is short enough to be a length. This is normal practice and works for any ‘now in use’ protocol.”…”�”}”(hjއh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´K–hj߆ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_header_cache (C function)”Œc.eth_header_cache”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVint eth_header_cache (const struct neighbour *neigh, struct hh_cache *hh, __be16 type)”h]”j )�”}”(hŒUint eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh, __be16 type)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj½‡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹‡h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̇h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹‡h²hh³jˇh´KÁubj3)�”}”(hŒeth_header_cache”h]”j9)�”}”(hŒeth_header_cache”h]”hŒeth_header_cache”…”�”}”(hjÞ‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚ‡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¹‡h²hh³jˇh´KÁubj¡ )�”}”(hŒA(const struct neighbour *neigh, struct hh_cache *hh, __be16 type)”h]”(j§ )�”}”(hŒconst struct neighbour *neigh”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjú‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjö‡ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"ˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjö‡ubh)�”}”(hhh]”j9)�”}”(hŒ neighbour”h]”hŒ neighbour”…”�”}”(hj3ˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0ˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j5ˆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jà‡sbŒc.eth_header_cache”†”asbuh1hhjö‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjö‡ubj )�”}”(hj h]”hŒ*”…”�”}”(hjaˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjö‡ubj9)�”}”(hŒneigh”h]”hŒneigh”…”�”}”(hjnˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjö‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjò‡ubj§ )�”}”(hŒstruct hh_cache *hh”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‡ˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”ˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒˆubh)�”}”(hhh]”j9)�”}”(hŒhh_cache”h]”hŒhh_cache”…”�”}”(hj¥ˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢ˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§ˆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jOˆŒc.eth_header_cache”†”asbuh1hhjƒˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒˆubj )�”}”(hj h]”hŒ*”…”�”}”(hjшh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒˆubj9)�”}”(hŒhh”h]”hŒhh”…”�”}”(hjÞˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjò‡ubj§ )�”}”(hŒ __be16 type”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be16”h]”hŒ__be16”…”�”}”(hjúˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷ˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jüˆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jOˆŒc.eth_header_cache”†”asbuh1hhjóˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóˆubj9)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj&‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjò‡ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¹‡h²hh³jˇh´KÁubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjµ‡h²hh³jˇh´KÁubah}”(h]”j°‡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jˇh´KÁhj²‡h²hubjg)�”}”(hhh]”jl)�”}”(hŒfill cache entry from neighbour”h]”hŒfill cache entry from neighbour”…”�”}”(hjP‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÁhjM‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj²‡h²hh³jˇh´KÁubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jh‰jŒjh‰j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒç**Parameters** ``const struct neighbour *neigh`` source neighbour ``struct hh_cache *hh`` destination cache entry ``__be16 type`` Ethernet type field **Description** Create an Ethernet header template from the neighbour.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjr‰h]”hŒ Parameters”…”�”}”(hjt‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjp‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÅhjl‰ubjß)�”}”(hhh]”(jä)�”}”(hŒ3``const struct neighbour *neigh`` source neighbour ”h]”(jê)�”}”(hŒ!``const struct neighbour *neigh``”h]”jð)�”}”(hj‘‰h]”hŒconst struct neighbour *neigh”…”�”}”(hj“‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÂhj‹‰ubj)�”}”(hhh]”jl)�”}”(hŒsource neighbour”h]”hŒsource neighbour”…”�”}”(hjª‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦‰h´KÂhj§‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦‰h´KÂhjˆ‰ubjä)�”}”(hŒ0``struct hh_cache *hh`` destination cache entry ”h]”(jê)�”}”(hŒ``struct hh_cache *hh``”h]”jð)�”}”(hjʉh]”hŒstruct hh_cache *hh”…”�”}”(hj̉h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjȉubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÃhjĉubj)�”}”(hhh]”jl)�”}”(hŒdestination cache entry”h]”hŒdestination cache entry”…”�”}”(hjã‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j߉h´KÃhjà‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjĉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j߉h´KÃhjˆ‰ubjä)�”}”(hŒ$``__be16 type`` Ethernet type field ”h]”(jê)�”}”(hŒ``__be16 type``”h]”jð)�”}”(hjŠh]”hŒ __be16 type”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÄhjý‰ubj)�”}”(hhh]”jl)�”}”(hŒEthernet type field”h]”hŒEthernet type field”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠh´KÄhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠh´KÄhjˆ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjl‰ubjl)�”}”(•hŒ**Description**”h]”j›)�”}”(hj>Šh]”hŒ Description”…”�”}”(hj@Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj<Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÆhjl‰ubjl)�”}”(hŒ6Create an Ethernet header template from the neighbour.”h]”hŒ6Create an Ethernet header template from the neighbour.”…”�”}”(hjTŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KÅhjl‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$eth_header_cache_update (C function)”Œc.eth_header_cache_update”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒlvoid eth_header_cache_update (struct hh_cache *hh, const struct net_device *dev, const unsigned char *haddr)”h]”j )�”}”(hŒkvoid eth_header_cache_update(struct hh_cache *hh, const struct net_device *dev, const unsigned char *haddr)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒŠh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŠh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Káubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŠh²hh³j‘Šh´Káubj3)�”}”(hŒeth_header_cache_update”h]”j9)�”}”(hŒeth_header_cache_update”h]”hŒeth_header_cache_update”…”�”}”(hj¤Šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Šubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŠh²hh³j‘Šh´Káubj¡ )�”}”(hŒO(struct hh_cache *hh, const struct net_device *dev, const unsigned char *haddr)”h]”(j§ )�”}”(hŒstruct hh_cache *hh”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÀŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼Šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Šubh)�”}”(hhh]”j9)�”}”(hŒhh_cache”h]”hŒhh_cache”…”�”}”(hjÞŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jàŠŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¦ŠsbŒc.eth_header_cache_update”†”asbuh1hhj¼Šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Šubj )�”}”(hj h]”hŒ*”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Šubj9)�”}”(hŒhh”h]”hŒhh”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸Šubj§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj2‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.‹ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjM‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.‹ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjk‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jm‹Œmodname”NŒ classname”Njå jè )�”}”jë ]”júŠŒc.eth_header_cache_update”†”asbuh1hhj.‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.‹ubj )�”}”(hj h]”hŒ*”…”�”}”(hj—‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj.‹ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¤‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸Šubj§ )�”}”(hŒconst unsigned char *haddr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj½‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹‹ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjØ‹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ‹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹‹ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjô‹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹‹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¹‹ubj9)�”}”(hŒhaddr”h]”hŒhaddr”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸Šubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŠh²hh³j‘Šh´Káubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj{Šh²hh³j‘Šh´Káubah}”(h]”jvŠah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‘Šh´KáhjxŠh²hubjg)�”}”(hhh]”jl)�”}”(hŒupdate cache entry”h]”hŒupdate cache entry”…”�”}”(hjGŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KáhjDŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjxŠh²hh³j‘Šh´Káubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_ŒjŒj_Œj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÿ**Parameters** ``struct hh_cache *hh`` destination cache entry ``const struct net_device *dev`` network device ``const unsigned char *haddr`` new hardware address **Description** Called by Address Resolution module to notify changes in address.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjiŒh]”hŒ Parameters”…”�”}”(hjkŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjgŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KåhjcŒubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct hh_cache *hh`` destination cache entry ”h]”(jê)�”}”(hŒ``struct hh_cache *hh``”h]”jð)�”}”(hjˆŒh]”hŒstruct hh_cache *hh”…”�”}”(hjŠŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kâhj‚Œubj)�”}”(hhh]”jl)�”}”(hŒdestination cache entry”h]”hŒdestination cache entry”…”�”}”(hj¡Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Œh´KâhjžŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Œh´KâhjŒubjä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjÁŒh]”hŒconst struct net_device *dev”…”�”}”(hjÃŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kãhj»Œubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjÚŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖŒh´Kãhj׌ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖŒh´KãhjŒubjä)�”}”(hŒ4``const unsigned char *haddr`` new hardware address ”h]”(jê)�”}”(hŒ``const unsigned char *haddr``”h]”jð)�”}”(hjúŒh]”hŒconst unsigned char *haddr”…”�”}”(hjüŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KähjôŒubj)�”}”(hhh]”jl)�”}”(hŒnew hardware address”h]”hŒnew hardware address”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´Kähj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´KähjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjcŒubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj5�h]”hŒ Description”…”�”}”(hj7�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KæhjcŒubjl)�”}”(hŒACalled by Address Resolution module to notify changes in address.”h]”hŒACalled by Address Resolution module to notify changes in address.”…”�”}”(hjK�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KåhjcŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒð_header_parse_protocol (C function)”Œc.eth_header_parse_protocol”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ<__be16 eth_header_parse_protocol (const struct sk_buff *skb)”h]”j )�”}”(hŒ;__be16 eth_header_parse_protocol(const struct sk_buff *skb)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be16”h]”hŒ__be16”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œeth_header_parse_protocol”sbŒc.eth_header_parse_protocol”†”asbuh1hhjv�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjv�h²hh³jž�h´Kòubj3)�”}”(hŒeth_header_parse_protocol”h]”j9)�”}”(hj›�h]”hŒeth_header_parse_protocol”…”�”}”(hj±�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjv�h²hh³jž�h´Kòubj¡ )�”}”(hŒ(const struct sk_buff *skb)”h]”j§ )�”}”(hŒconst struct sk_buff *skb”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÌ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈ�ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈ�ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŽŒmodname”NŒ classname”Njå jè )�”}”jë ]”j™�Œc.eth_header_parse_protocol”†”asbuh1hhjÈ�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈ�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj1Žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÈ�ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj>Žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÄ�ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjv�h²hh³jž�h´Kòubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjr�h²hh³jž�h´Kòubah}”(h]”jm�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jž�h´Kòhjo�h²hubjg)�”}”(hhh]”jl)�”}”(hŒextract protocol from L2 header”h]”hŒextract protocol from L2 header”…”�”}”(hjhŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´KòhjeŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjo�h²hh³jž�h´Kòubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j€ŽjŒj€Žj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒO**Parameters** ``const struct sk_buff *skb`` packet to extract protocol from”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŠŽh]”hŒ Parameters”…”�”}”(hjŒŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Köhj„Žubjß)�”}”(hhh]”jä)�”}”(hŒ=``const struct sk_buff *skb`` packet to extract protocol from”h]”(jê)�”}”(hŒ``const struct sk_buff *skb``”h]”jð)�”}”(hj©Žh]”hŒconst struct sk_buff *skb”…”�”}”(hj«Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Køhj£Žubj)�”}”(hhh]”jl)�”}”(hŒpacket to extract protocol from”h]”hŒpacket to extract protocol from”…”�”}”(hjÂŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kóhj¿Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾Žh´Køhj Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj„Žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(eth_prepare_mac_addr_change (C function)”Œc.eth_prepare_mac_addr_change”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAint eth_prepare_mac_addr_change (struct net_device *dev, void *p)”h]”j )�”}”(hŒ@int eth_prepare_mac_addr_change(struct net_device *dev, void *p)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÿŽh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿŽh²hh³j�h´Kþubj3)�”}”(hŒeth_prepare_mac_addr_change”h]”j9)�”}”(hŒeth_prepare_mac_addr_change”h]”hŒeth_prepare_mac_addr_change”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj �ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÿŽh²hh³j�h´Kþubj¡ )�”}”(hŒ!(struct net_device *dev, void *p)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj@�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<�ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j`�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j&�sbŒc.eth_prepare_mac_addr_change”†”asbuh1hhj<�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj<�ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj8�ubj§ )�”}”(hŒvoid *p”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj®�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj®�ubj9)�”}”(hj h]”hŒp”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj8�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÿŽh²hh³j�h´Kþubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjûŽh²hh³j�h´Kþubah}”(h]”jöŽah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�h´KþhjøŽh²hubjg)�”}”(hhh]”jl)�”}”(hŒprepare for mac change”h]”hŒprepare for mac change”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kþhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjøŽh²hh³j�h´Kþubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�jŒj�j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒY**Parameters** ``struct net_device *dev`` network device ``void *p`` socket address”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj&�h]”hŒ Parameters”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhj �ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjE�h]”hŒstruct net_device *dev”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjC�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Kÿhj?�ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZ�h´Kÿhj[�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZ�h´Kÿhj<�ubjä)�”}”(hŒ``void *p`` socket address”h]”(jê)�”}”(hŒ ``void *p``”h]”jð)�”}”(hj~�h]”hŒvoid *p”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhjx�ubj)�”}”(hhh]”jl)�”}”(hŒsocket address”h]”hŒsocket address”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhj”�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“�h´Mhj<�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj �ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'eth_commit_mac_addr_change (C function)”Œc.eth_commit_mac_addr_change”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAvoid eth_commit_mac_addr_change (struct net_device *dev, void *p)”h]”j )�”}”(hŒ@void eth_commit_mac_addr_change(struct net_device *dev, void *p)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØ�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÔ�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔ�h²hh³jæ�h´Mubj3)�”}”(hŒeth_commit_mac_addr_change”h]”j9)�”}”(hŒeth_commit_mac_addr_change”h]”hŒeth_commit_mac_addr_change”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÔ�h²hh³jæ�h´Mubj¡ )�”}”(hŒ!(struct net_device *dev, void *p)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj3‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j5‘Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jû�sbŒc.eth_commit_mac_addr_change”†”asbuh1hhj‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘ubj )�”}”(hj h]”hŒ*”…”�”}”(hja‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‘ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjn‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ‘ubj§ )�”}”(hŒvoid *p”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡‘h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjƒ‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ‘ubj )�”}”(hj h]”hŒ*”…”�”}”(hj£‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒ‘ubj9)�”}”(hj h]”hŒp”…”�”}”(hj°‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ‘ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÔ�h²hh³jæ�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÐ�h²hh³jæ�h´Mubah}”(h]”jË�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jæ�h´MhjÍ�h²hubjg)�”}”(hhh]”jl)�”}”(hŒcommit mac change”h]”hŒcommit mac change”…”�”}”(hjÙ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MhjÖ‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÍ�h²hh³jæ�h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñ‘jŒjñ‘j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒY**Parameters** ``struct net_device *dev`` network device ``void *p`` socket address”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjû‘h]”hŒ Parameters”…”�”}”(hjý‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjù‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhjõ‘ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj’h]”hŒstruct net_device *dev”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhj’ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj3’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/’h´Mhj0’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/’h´Mhj’ubjä)�”}”(hŒ``void *p`` socket address”h]”(jê)�”}”(hŒ ``void *p``”h]”jð)�”}”(hjS’h]”hŒvoid *p”…”�”}”(hjU’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MhjM’ubj)�”}”(hhh]”jl)�”}”(hŒsocket address”h]”hŒsocket address”…”�”}”(hjl’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhji’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh’h´Mhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõ‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_mac_addr (C function)”Œc.eth_mac_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2int eth_mac_addr (struct net_device *dev, void *p)”h]”j )�”}”(hŒ1int eth_mac_addr(struct net_device *dev, void *p)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj­’h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj©’h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©’h²hh³j»’h´Mubj3)�”}”(hŒ eth_mac_addr”h]”j9)�”}”(hŒ eth_mac_addr”h]”hŒ eth_mac_addr”…”�”}”(hjÎ’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ’ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj©’h²hh³j»’h´Mubj¡ )�”}”(hŒ!(struct net_device *dev, void *p)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjê’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ’ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j “Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÐ’sbŒc.eth_mac_addr”†”asbuh1hhjæ’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ’ubj )�”}”(hj h]”hŒ*”…”�”}”(hj6“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjæ’ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjC“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ’ubj§ )�”}”(hŒvoid *p”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj\“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjX“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjX“ubj )�”}”(hj h]”hŒ*”…”�”}”(hjx“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjX“ubj9)�”}”(hj h]”hŒp”…”�”}”(hj…“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj©’h²hh³j»’h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¥’h²hh³j»’h´Mubah}”(h]”j ’ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j»’h´Mhj¢’h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!set new Ethernet hardware address”h]”hŒ!set new Ethernet hardware address”…”�”}”(hj®“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhj«“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢’h²hh³j»’h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÆ“jŒjÆ“j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒç**Parameters** ``struct net_device *dev`` network device ``void *p`` socket address **Description** Change hardware address of device. This doesn't change hardware matching, so needs to be overridden for most real devices.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjГh]”hŒ Parameters”…”�”}”(hjÒ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjΓubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M hjÊ“ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjï“h]”hŒstruct net_device *dev”…”�”}”(hjñ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjí“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhjé“ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”h´Mhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”h´Mhjæ“ubjä)�”}”(hŒ``void *p`` socket address ”h]”(jê)�”}”(hŒ ``void *p``”h]”jð)�”}”(hj(”h]”hŒvoid *p”…”�”}”(hj*”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mhj"”ubj)�”}”(hhh]”jl)�”}”(hŒsocket address”h]”hŒsocket address”…”�”}”(hjA”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=”h´Mhj>”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=”h´Mhjæ“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊ“ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjc”h]”hŒ Description”…”�”}”(hje”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhja”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M hjÊ“ubjl)�”}”(hŒ"Change hardware address of device.”h]”hŒ"Change hardware address of device.”…”�”}”(hjy”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MhjÊ“ubjl)�”}”(hŒWThis doesn't change hardware matching, so needs to be overridden for most real devices.”h]”hŒYThis doesn’t change hardware matching, so needs to be overridden for most real devices.”…”�”}”(hjˆ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M!hjÊ“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒether_setup (C function)”Œ c.ether_setup”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)void ether_setup (struct net_device *dev)”h]”j )�”}”(hŒ(void ether_setup(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj·”h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj³”h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³”h²hh³jÅ”h´MCubj3)�”}”(hŒ ether_setup”h]”j9)�”}”(hŒ ether_setup”h]”hŒ ether_setup”…”�”}”(hjØ”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔ”ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj³”h²hh³jÅ”h´MCubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjô”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjð”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjð”ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j•Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÚ”sbŒ c.ether_setup”†”asbuh1hhjð”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjð”ubj )�”}”(hj h]”hŒ*”…”�”}”(hj@•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjð”ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjM•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjì”ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj³”h²hh³jÅ”h´MCubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¯”h²hh³jÅ”h´MCubah}”(h]”jª”ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÅ”h´MChj¬”h²hubjg)�”}”(hhh]”jl)�”}”(hŒsetup Ethernet network device”h]”hŒsetup Ethernet network device”…”�”}”(hjw•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MChjt•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¬”h²hh³jÅ”h´MCubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�•jŒj�•j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ–**Parameters** ``struct net_device *dev`` network device **Description** Fill in the fields of the device structure with Ethernet-generic values.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj™•h]”hŒ Parameters”…”�”}”(hj›•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MGhj“•ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj¸•h]”hŒstruct net_device *dev”…”�”}”(hjº•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MDhj²•ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjÑ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍ•h´MDhjΕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍ•h´MDhj¯•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“•ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjó•h]”hŒ Description”…”�”}”(hjõ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MFhj“•ubjl)�”}”(hŒHFill in the fields of the device structure with Ethernet-generic values.”h]”hŒHFill in the fields of the device structure with Ethernet-generic values.”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MEhj“•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒalloc_etherdev_mqs (C function)”Œc.alloc_etherdev_mqs”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ^struct net_device * alloc_etherdev_mqs (int sizeof_priv, unsigned int txqs, unsigned int rxqs)”h]”j )�”}”(hŒ\struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs, unsigned int rxqs)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj8–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4–h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4–h²hh³jE–h´M\ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjW–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jY–Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œalloc_etherdev_mqs”sbŒc.alloc_etherdev_mqs”†”asbuh1hhj4–h²hh³jE–h´M\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4–h²hh³jE–h´M\ubj )�”}”(hj h]”hŒ*”…”�”}”(hj†–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj4–h²hh³jE–h´M\ubj3)�”}”(hŒalloc_etherdev_mqs”h]”j9)�”}”(hju–h]”hŒalloc_etherdev_mqs”…”�”}”(hj—–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“–ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj4–h²hh³jE–h´M\ubj¡ )�”}”(hŒ7(int sizeof_priv, unsigned int txqs, unsigned int rxqs)”h]”(j§ )�”}”(hŒint sizeof_priv”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj²–h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj®–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®–ubj9)�”}”(hŒ sizeof_priv”h]”hŒ sizeof_priv”…”�”}”(hjΖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª–ubj§ )�”}”(hŒunsigned int txqs”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjç–h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjã–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã–ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjã–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã–ubj9)�”}”(hŒtxqs”h]”hŒtxqs”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª–ubj§ )�”}”(hŒunsigned int rxqs”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj8—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4—ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjT—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4—ubj9)�”}”(hŒrxqs”h]”hŒrxqs”…”�”}”(hjp—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª–ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj4–h²hh³jE–h´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0–h²hh³jE–h´M\ubah}”(h]”j+–ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jE–h´M\hj-–h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Allocates and sets up an Ethernet device”h]”hŒ(Allocates and sets up an Ethernet device”…”�”}”(hjš—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M\hj——h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj-–h²hh³jE–h´M\ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j²—jŒj²—j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX2**Parameters** ``int sizeof_priv`` Size of additional driver-private structure to be allocated for this Ethernet device ``unsigned int txqs`` The number of TX queues this device has. ``unsigned int rxqs`` The number of RX queues this device has. **Description** Fill in the fields of the device structure with Ethernet-generic values. Basically does everything except registering the device. Constructs a new net device, complete with a private data area of size (sizeof_priv). A 32-byte (not bit) alignment is enforced for this private data area.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¼—h]”hŒ Parameters”…”�”}”(hj¾—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjº—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M`hj¶—ubjß)�”}”(hhh]”(jä)�”}”(hŒi``int sizeof_priv`` Size of additional driver-private structure to be allocated for this Ethernet device ”h]”(jê)�”}”(hŒ``int sizeof_priv``”h]”jð)�”}”(hjÛ—h]”hŒint sizeof_priv”…”�”}”(hjÝ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M^hjÕ—ubj)�”}”(hhh]”jl)�”}”(hŒTSize of additional driver-private structure to be allocated for this Ethernet device”h]”hŒTSize of additional driver-private structure to be allocated for this Ethernet device”…”�”}”(hjô—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M]hjñ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jð—h´M^hjÒ—ubjä)�”}”(hŒ?``unsigned int txqs`` The number of TX queues this device has. ”h]”(jê)�”}”(hŒ``unsigned int txqs``”h]”jð)�”}”(hj˜h]”hŒunsigned int txqs”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M_hj˜ubj)�”}”(hhh]”jl)�”}”(hŒ(The number of TX queues this device has.”h]”hŒ(The number of TX queues this device has.”…”�”}”(hj.˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*˜h´M_hj+˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*˜h´M_hjÒ—ubjä)�”}”(hŒ?``unsigned int rxqs`` The number of RX queues this device has. ”h]”(jê)�”}”(hŒ``unsigned int rxqs``”h]”jð)�”}”(hjN˜h]”hŒunsigned int rxqs”…”�”}”(hjP˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M`hjH˜ubj)�”}”(hhh]”jl)�”}”(hŒ(The number of RX queues this device has.”h]”hŒ(The number of RX queues this device has.”…”�”}”(hjg˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc˜h´M`hjd˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc˜h´M`hjÒ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶—ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‰˜h]”hŒ Description”…”�”}”(hj‹˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mbhj¶—ubjl)�”}”(hŒ�Fill in the fields of the device structure with Ethernet-generic values. Basically does everything except registering the device.”h]”hŒ�Fill in the fields of the device structure with Ethernet-generic values. Basically does everything except registering the device.”…”�”}”(hjŸ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mahj¶—ubjl)�”}”(hŒœConstructs a new net device, complete with a private data area of size (sizeof_priv). A 32-byte (not bit) alignment is enforced for this private data area.”h]”hŒœConstructs a new net device, complete with a private data area of size (sizeof_priv). A 32-byte (not bit) alignment is enforced for this private data area.”…”�”}”(hj®˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mdhj¶—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(platform_get_ethdev_address (C function)”Œc.platform_get_ethdev_address”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOint platform_get_ethdev_address (struct device *dev, struct net_device *netdev)”h]”j )�”}”(hŒNint platform_get_ethdev_address(struct device *dev, struct net_device *netdev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjݘh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÙ˜h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ˜h²hh³jë˜h´Mêubj3)�”}”(hŒplatform_get_ethdev_address”h]”j9)�”}”(hŒplatform_get_ethdev_address”h]”hŒplatform_get_ethdev_address”…”�”}”(hjþ˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjú˜ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÙ˜h²hh³jë˜h´Mêubj¡ )�”}”(hŒ/(struct device *dev, struct net_device *netdev)”h]”(j§ )�”}”(hŒstruct device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™ubh)�”}”(hhh]”j9)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj8™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:™Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j™sbŒc.platform_get_ethdev_address”†”asbuh1hhj™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™ubj )�”}”(hj h]”hŒ*”…”�”}”(hjf™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj™ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjs™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™ubj§ )�”}”(hŒstruct net_device *netdev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŒ™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆ™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆ™ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjª™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¬™Œmodname”NŒ classname”Njå jè )�”}”jë ]”jT™Œc.platform_get_ethdev_address”†”asbuh1hhjˆ™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆ™ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÖ™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjˆ™ubj9)�”}”(hŒnetdev”h]”hŒnetdev”…”�”}”(hjã™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆ™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÙ˜h²hh³jë˜h´Mêubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÕ˜h²hh³jë˜h´Mêubah}”(h]”jИah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jë˜h´MêhjÒ˜h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Set netdev's MAC address from a given device”h]”hŒ.Set netdev’s MAC address from a given device”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mêhj šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÒ˜h²hh³jë˜h´Mêubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j%šjŒj%šj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct device *dev`` Pointer to the device ``struct net_device *netdev`` Pointer to netdev to write the address to **Description** Wrapper around eth_platform_get_mac_address() which writes the address directly to netdev->dev_addr.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj/šh]”hŒ Parameters”…”�”}”(hj1šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mîhj)šubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct device *dev`` Pointer to the device ”h]”(jê)�”}”(hŒ``struct device *dev``”h]”jð)�”}”(hjNšh]”hŒstruct device *dev”…”�”}”(hjPšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLšubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MëhjHšubj)�”}”(hhh]”jl)�”}”(hŒPointer to the device”h]”hŒPointer to the device”…”�”}”(hjgšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jcšh´Mëhjdšubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jcšh´MëhjEšubjä)�”}”(hŒH``struct net_device *netdev`` Pointer to netdev to write the address to ”h]”(jê)�”}”(hŒ``struct net_device *netdev``”h]”jð)�”}”(hj‡šh]”hŒstruct net_device *netdev”…”�”}”(hj‰šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…šubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mìhj�šubj)�”}”(hhh]”jl)�”}”(hŒ)Pointer to netdev to write the address to”h]”hŒ)Pointer to netdev to write the address to”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœšh´Mìhj�šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœšh´MìhjEšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj)šubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjšh]”hŒ Description”…”�”}”(hjÄšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mîhj)šubjl)�”}”(hŒdWrapper around eth_platform_get_mac_address() which writes the address directly to netdev->dev_addr.”h]”hŒdWrapper around eth_platform_get_mac_address() which writes the address directly to netdev->dev_addr.”…”�”}”(hjØšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Míhj)šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#fwnode_get_mac_address (C function)”Œc.fwnode_get_mac_address”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEint fwnode_get_mac_address (struct fwnode_handle *fwnode, char *addr)”h]”j )�”}”(hŒDint fwnode_get_mac_address(struct fwnode_handle *fwnode, char *addr)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj›h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›h²hh³j›h´M0ubj3)�”}”(hŒfwnode_get_mac_address”h]”j9)�”}”(hŒfwnode_get_mac_address”h]”hŒfwnode_get_mac_address”…”�”}”(hj(›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$›ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj›h²hh³j›h´M0ubj¡ )�”}”(hŒ*(struct fwnode_handle *fwnode, char *addr)”h]”(j§ )�”}”(hŒstruct fwnode_handle *fwnode”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjD›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@›ubh)�”}”(hhh]”j9)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjb›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jd›Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j*›sbŒc.fwnode_get_mac_address”†”asbuh1hhj@›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@›ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@›ubj9)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hj�›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<›ubj§ )�”}”(hŒ char *addr”h]”(jM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¶›h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj²›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²›ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒ›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj²›ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjß›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<›ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj›h²hh³j›h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÿšh²hh³j›h´M0ubah}”(h]”júšah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j›h´M0hjüšh²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Get the MAC from the firmware node”h]”hŒ"Get the MAC from the firmware node”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M0hjœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjüšh²hh³j›h´M0ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j!œjŒj!œj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX7**Parameters** ``struct fwnode_handle *fwnode`` Pointer to the firmware node ``char *addr`` Address of buffer to store the MAC in **Description** Search the firmware node for the best MAC address to use. 'mac-address' is checked first, because that is supposed to contain to "most recent" MAC address. If that isn't set, then 'local-mac-address' is checked next, because that is the default address. If that isn't set, then the obsolete 'address' is checked, just in case we're using an old device tree. Note that the 'address' property is supposed to contain a virtual address of the register set, but some DTS files have redefined that property to be the MAC address. All-zero MAC addresses are rejected, because those could be properties that exist in the firmware tables, but were not updated by the firmware. For example, the DTS could define 'mac-address' and 'local-mac-address', with zero MAC addresses. Some older U-Boots only initialized 'local-mac-address'. In this case, the real MAC is in 'local-mac-address', and 'mac-address' exists but is all zeros.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj+œh]”hŒ Parameters”…”�”}”(hj-œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M4hj%œubjß)�”}”(hhh]”(jä)�”}”(hŒ>``struct fwnode_handle *fwnode`` Pointer to the firmware node ”h]”(jê)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”jð)�”}”(hjJœh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hjLœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjHœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M1hjDœubj)�”}”(hhh]”jl)�”}”(hŒPointer to the firmware node”h]”hŒPointer to the firmware node”…”�”}”(hjcœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_œh´M1hj`œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_œh´M1hjAœubjä)�”}”(hŒ5``char *addr`` Address of buffer to store the MAC in ”h]”(jê)�”}”(hŒ``char *addr``”h]”jð)�”}”(hjƒœh]”hŒ char *addr”…”�”}”(hj…œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M2hj}œubj)�”}”(hhh]”jl)�”}”(hŒ%Address of buffer to store the MAC in”h]”hŒ%Address of buffer to store the MAC in”…”�”}”(hjœœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜œh´M2hj™œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜œh´M2hjAœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj%œubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¾œh]”hŒ Description”…”�”}”(hjÀœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M4hj%œubjl)�”}”(hXgSearch the firmware node for the best MAC address to use. 'mac-address' is checked first, because that is supposed to contain to "most recent" MAC address. If that isn't set, then 'local-mac-address' is checked next, because that is the default address. If that isn't set, then the obsolete 'address' is checked, just in case we're using an old device tree.”h]”hX}Search the firmware node for the best MAC address to use. ‘mac-address’ is checked first, because that is supposed to contain to “most recentâ€� MAC address. If that isn’t set, then ‘local-mac-address’ is checked next, because that is the default address. If that isn’t set, then the obsolete ‘address’ is checked, just in case we’re using an old device tree.”…”�”}”(hjÔœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M3hj%œubjl)�”}”(hŒ¥Note that the 'address' property is supposed to contain a virtual address of the register set, but some DTS files have redefined that property to be the MAC address.”h]”hŒ©Note that the ‘address’ property is supposed to contain a virtual address of the register set, but some DTS files have redefined that property to be the MAC address.”…”�”}”(hjãœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M9hj%œubjl)�”}”(hX�All-zero MAC addresses are rejected, because those could be properties that exist in the firmware tables, but were not updated by the firmware. For example, the DTS could define 'mac-address' and 'local-mac-address', with zero MAC addresses. Some older U-Boots only initialized 'local-mac-address'. In this case, the real MAC is in 'local-mac-address', and 'mac-address' exists but is all zeros.”h]”hX¡All-zero MAC addresses are rejected, because those could be properties that exist in the firmware tables, but were not updated by the firmware. For example, the DTS could define ‘mac-address’ and ‘local-mac-address’, with zero MAC addresses. Some older U-Boots only initialized ‘local-mac-address’. In this case, the real MAC is in ‘local-mac-address’, and ‘mac-address’ exists but is all zeros.”…”�”}”(hjòœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M=hj%œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#device_get_mac_address (C function)”Œc.device_get_mac_address”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;int device_get_mac_address (struct device *dev, char *addr)”h]”j )�”}”(hŒ:int device_get_mac_address(struct device *dev, char *addr)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�h²hh³j/�h´MQubj3)�”}”(hŒdevice_get_mac_address”h]”j9)�”}”(hŒdevice_get_mac_address”h]”hŒdevice_get_mac_address”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�h²hh³j/�h´MQubj¡ )�”}”(hŒ (struct device *dev, char *addr)”h]”(j§ )�”}”(hŒstruct device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZ�ubh)�”}”(hhh]”j9)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjy�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j~�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jD�sbŒc.device_get_mac_address”†”asbuh1hhjZ�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZ�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjZ�ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj·�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjV�ubj§ )�”}”(hŒ char *addr”h]”(jM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÐ�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÌ�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌ�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjì�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÌ�ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjV�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�h²hh³j/�h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j/�h´MQubah}”(h]”j�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j/�h´MQhj�h²hubjg)�”}”(hhh]”jl)�”}”(hŒGet the MAC for a given device”h]”hŒGet the MAC for a given device”…”�”}”(hj#žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MQhj žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�h²hh³j/�h´MQubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j;žjŒj;žj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒv**Parameters** ``struct device *dev`` Pointer to the device ``char *addr`` Address of buffer to store the MAC in”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjEžh]”hŒ Parameters”…”�”}”(hjGžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjCžubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MUhj?žubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct device *dev`` Pointer to the device ”h]”(jê)�”}”(hŒ``struct device *dev``”h]”jð)�”}”(hjdžh]”hŒstruct device *dev”…”�”}”(hjfžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjbžubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MRhj^žubj)�”}”(hhh]”jl)�”}”(hŒPointer to the device”h]”hŒPointer to the device”…”�”}”(hj}žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jyžh´MRhjzžubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jyžh´MRhj[žubjä)�”}”(hŒ4``char *addr`` Address of buffer to store the MAC in”h]”(jê)�”}”(hŒ``char *addr``”h]”jð)�”}”(hj�žh]”hŒ char *addr”…”�”}”(hjŸžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj›žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MThj—žubj)�”}”(hhh]”jl)�”}”(hŒ%Address of buffer to store the MAC in”h]”hŒ%Address of buffer to store the MAC in”…”�”}”(hj¶žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MShj³žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j²žh´MThj[žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj?žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&device_get_ethdev_address (C function)”Œc.device_get_ethdev_address”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint device_get_ethdev_address (struct device *dev, struct net_device *netdev)”h]”j )�”}”(hŒLint device_get_ethdev_address(struct device *dev, struct net_device *netdev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj÷žh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjóžh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóžh²hh³jŸh´M_ubj3)�”}”(hŒdevice_get_ethdev_address”h]”j9)�”}”(hŒdevice_get_ethdev_address”h]”hŒdevice_get_ethdev_address”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjóžh²hh³jŸh´M_ubj¡ )�”}”(hŒ/(struct device *dev, struct net_device *netdev)”h]”(j§ )�”}”(hŒstruct device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj4Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0Ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0Ÿubh)�”}”(hhh]”j9)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjRŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jTŸŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŸsbŒc.device_get_ethdev_address”†”asbuh1hhj0Ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0Ÿubj )�”}”(hj h]”hŒ*”…”�”}”(hj€Ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj0Ÿubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ÿubj§ )�”}”(hŒstruct net_device *netdev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢Ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢Ÿubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÄŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆŸŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnŸŒc.device_get_ethdev_address”†”asbuh1hhj¢Ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢Ÿubj )�”}”(hj h]”hŒ*”…”�”}”(hjðŸh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢Ÿubj9)�”}”(hŒnetdev”h]”hŒnetdev”…”�”}”(hjýŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ÿubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjóžh²hh³jŸh´M_ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjïžh²hh³jŸh´M_ubah}”(h]”jêžah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŸh´M_hjìžh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Set netdev's MAC address from a given device”h]”hŒ.Set netdev’s MAC address from a given device”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M_hj$ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjìžh²hh³jŸh´M_ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j? jŒj? j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒú**Parameters** ``struct device *dev`` Pointer to the device ``struct net_device *netdev`` Pointer to netdev to write the address to **Description** Wrapper around device_get_mac_address() which writes the address directly to netdev->dev_addr.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjI h]”hŒ Parameters”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”•h´MchjC ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct device *dev`` Pointer to the device ”h]”(jê)�”}”(hŒ``struct device *dev``”h]”jð)�”}”(hjh h]”hŒstruct device *dev”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´M`hjb ubj)�”}”(hhh]”jl)�”}”(hŒPointer to the device”h]”hŒPointer to the device”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j} h´M`hj~ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j} h´M`hj_ ubjä)�”}”(hŒH``struct net_device *netdev`` Pointer to netdev to write the address to ”h]”(jê)�”}”(hŒ``struct net_device *netdev``”h]”jð)�”}”(hj¡ h]”hŒstruct net_device *netdev”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´Mahj› ubj)�”}”(hhh]”jl)�”}”(hŒ)Pointer to netdev to write the address to”h]”hŒ)Pointer to netdev to write the address to”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¶ h´Mahj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj› ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶ h´Mahj_ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjC ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÜ h]”hŒ Description”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MchjC ubjl)�”}”(hŒ^Wrapper around device_get_mac_address() which writes the address directly to netdev->dev_addr.”h]”hŒ^Wrapper around device_get_mac_address() which writes the address directly to netdev->dev_addr.”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒR/var/lib/git/docbuild/linux/Documentation/networking/kapi:95: ./net/ethernet/eth.c”h´MbhjC ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_carrier_on (C function)”Œc.netif_carrier_on”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void netif_carrier_on (struct net_device *dev)”h]”j )�”}”(hŒ-void netif_carrier_on(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!¡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´Mzubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡h²hh³j/¡h´Mzubj3)�”}”(hŒnetif_carrier_on”h]”j9)�”}”(hŒnetif_carrier_on”h]”hŒnetif_carrier_on”…”�”}”(hjB¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>¡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡h²hh³j/¡h´Mzubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj^¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZ¡ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj|¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjy¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j~¡Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jD¡sbŒc.netif_carrier_on”†”asbuh1hhjZ¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZ¡ubj )�”}”(hj h]”hŒ*”…”�”}”(hjª¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjZ¡ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj·¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZ¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjV¡ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡h²hh³j/¡h´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¡h²hh³j/¡h´Mzubah}”(h]”j¡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j/¡h´Mzhj¡h²hubjg)�”}”(hhh]”jl)�”}”(hŒ set carrier”h]”hŒ set carrier”…”�”}”(hjá¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´MzhjÞ¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¡h²hh³j/¡h´Mzubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jù¡jŒjù¡j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒy**Parameters** ``struct net_device *dev`` network device **Description** Device has detected acquisition of carrier.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¢h]”hŒ Parameters”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M~hjý¡ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj"¢h]”hŒstruct net_device *dev”…”�”}”(hj$¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M{hj¢ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj;¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7¢h´M{hj8¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7¢h´M{hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjý¡ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj]¢h]”hŒ Description”…”�”}”(hj_¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M}hjý¡ubjl)�”}”(hŒ+Device has detected acquisition of carrier.”h]”hŒ+Device has detected acquisition of carrier.”…”�”}”(hjs¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M|hjý¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_carrier_off (C function)”Œc.netif_carrier_off”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void netif_carrier_off (struct net_device *dev)”h]”j )�”}”(hŒ.void netif_carrier_off(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢¢h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjž¢h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´MŽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž¢h²hh³j°¢h´MŽubj3)�”}”(hŒnetif_carrier_off”h]”j9)�”}”(hŒnetif_carrier_off”h]”hŒnetif_carrier_off”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿¢ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjž¢h²hh³j°¢h´MŽubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjߢh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛ¢ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjý¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjú¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿ¢Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÅ¢sbŒc.netif_carrier_off”†”asbuh1hhjÛ¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛ¢ubj )�”}”(hj h]”hŒ*”…”�”}”(hj+£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÛ¢ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj8£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛ¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj×¢ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjž¢h²hh³j°¢h´MŽubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjš¢h²hh³j°¢h´MŽubah}”(h]”j•¢ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j°¢h´MŽhj—¢h²hubjg)�”}”(hhh]”jl)�”}”(hŒ clear carrier”h]”hŒ clear carrier”…”�”}”(hjb£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´MŽhj_£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj—¢h²hh³j°¢h´MŽubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jz£jŒjz£j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒr**Parameters** ``struct net_device *dev`` network device **Description** Device has detected loss of carrier.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj„£h]”hŒ Parameters”…”�”}”(hj†£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M’hj~£ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj££h]”hŒstruct net_device *dev”…”�”}”(hj¥£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M�hj�£ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj¼£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¸£h´M�hj¹£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸£h´M�hjš£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj~£ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÞ£h]”hŒ Description”…”�”}”(hjà£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M‘hj~£ubjl)�”}”(hŒ$Device has detected loss of carrier.”h]”hŒ$Device has detected loss of carrier.”…”�”}”(hjô£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M�hj~£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_carrier_event (C function)”Œc.netif_carrier_event”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void netif_carrier_event (struct net_device *dev)”h]”j )�”}”(hŒ0void netif_carrier_event(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj#¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¤h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´MŸubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤h²hh³j1¤h´MŸubj3)�”}”(hŒnetif_carrier_event”h]”j9)�”}”(hŒnetif_carrier_event”h]”hŒnetif_carrier_event”…”�”}”(hjD¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@¤ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¤h²hh³j1¤h´MŸubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj`¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\¤ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj~¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j€¤Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jF¤sbŒc.netif_carrier_event”†”asbuh1hhj\¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\¤ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¬¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj\¤ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¹¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjX¤ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¤h²hh³j1¤h´MŸubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¤h²hh³j1¤h´MŸubah}”(h]”j¤ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j1¤h´MŸhj¤h²hubjg)�”}”(hhh]”jl)�”}”(hŒreport carrier state event”h]”hŒreport carrier state event”…”�”}”(hjã¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´MŸhjà¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¤h²hh³j1¤h´MŸubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jû¤jŒjû¤j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` network device **Description** Device has detected a carrier event but the carrier state wasn't changed. Use in drivers when querying carrier state asynchronously, to avoid missing events (link flaps) if link recovers before it's queried.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¥h]”hŒ Parameters”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M£hjÿ¤ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj$¥h]”hŒstruct net_device *dev”…”�”}”(hj&¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M hj¥ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj=¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9¥h´M hj:¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9¥h´M hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÿ¤ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj_¥h]”hŒ Description”…”�”}”(hja¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M¢hjÿ¤ubjl)�”}”(hŒÏDevice has detected a carrier event but the carrier state wasn't changed. Use in drivers when querying carrier state asynchronously, to avoid missing events (link flaps) if link recovers before it's queried.”h]”hŒÓDevice has detected a carrier event but the carrier state wasn’t changed. Use in drivers when querying carrier state asynchronously, to avoid missing events (link flaps) if link recovers before it’s queried.”…”�”}”(hju¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒW/var/lib/git/docbuild/linux/Documentation/networking/kapi:98: ./net/sched/sch_generic.c”h´M¡hjÿ¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#eth_type_trans_careful (C function)”Œc.eth_type_trans_careful”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYenum skb_drop_reason eth_type_trans_careful (struct sk_buff *skb, struct net_device *dev)”h]”j )�”}”(hŒXenum skb_drop_reason eth_type_trans_careful(struct sk_buff *skb, struct net_device *dev)”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hj¤¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ¥h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¥h²hh³j±¥h´K+ubh)�”}”(hhh]”j9)�”}”(hŒskb_drop_reason”h]”hŒskb_drop_reason”…”�”}”(hjÃ¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÅ¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œeth_type_trans_careful”sbŒc.eth_type_trans_careful”†”asbuh1hhj ¥h²hh³j±¥h´K+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¥h²hh³j±¥h´K+ubj3)�”}”(hŒeth_type_trans_careful”h]”j9)�”}”(hjá¥h]”hŒeth_type_trans_careful”…”�”}”(hjö¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò¥ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj ¥h²hh³j±¥h´K+ubj¡ )�”}”(hŒ-(struct sk_buff *skb, struct net_device *dev)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¦ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj/¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1¦Œmodname”NŒ classname”Njå jè )�”}”jë ]”jߥŒc.eth_type_trans_careful”†”asbuh1hhj ¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hj[¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ¦ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjh¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ¦ubj§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjަh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}¦ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjŸ¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¡¦Œmodname”NŒ classname”Njå jè )�”}”jë ]”jߥŒc.eth_type_trans_careful”†”asbuh1hhj}¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hj˦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}¦ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjئh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ¦ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj ¥h²hh³j±¥h´K+ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjœ¥h²hh³j±¥h´K+ubah}”(h]”j—¥ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j±¥h´K+hj™¥h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/eth_type_trans() for skbs coming from the stack”h]”hŒ/eth_type_trans() for skbs coming from the stack”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K+hjÿ¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj™¥h²hh³j±¥h´K+ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j§jŒj§j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX^**Parameters** ``struct sk_buff *skb`` buffer, possibly with less than ETH_HLEN bytes in its linear area ``struct net_device *dev`` receiving network device **Description** eth_type_trans() expects ETH_HLEN bytes in skb->head, which NIC drivers provide. Devices looping skbs from their transmit path back to the receive path (loopback, OVS internal ports) get skbs built by the stack, whose link-layer header might have been popped by tc or OVS actions. Sets skb->protocol on success. **Return** SKB_NOT_DROPPED_YET on success, or a drop reason. In the latter case, the caller must free **skb**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj$§h]”hŒ Parameters”…”�”}”(hj&§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj"§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K/hj§ubjß)�”}”(hhh]”(jä)�”}”(hŒZ``struct sk_buff *skb`` buffer, possibly with less than ETH_HLEN bytes in its linear area ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjC§h]”hŒstruct sk_buff *skb”…”�”}”(hjE§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjA§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K,hj=§ubj)�”}”(hhh]”jl)�”}”(hŒAbuffer, possibly with less than ETH_HLEN bytes in its linear area”h]”hŒAbuffer, possibly with less than ETH_HLEN bytes in its linear area”…”�”}”(hj\§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jX§h´K,hjY§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jX§h´K,hj:§ubjä)�”}”(hŒ4``struct net_device *dev`` receiving network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj|§h]”hŒstruct net_device *dev”…”�”}”(hj~§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjz§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K-hjv§ubj)�”}”(hhh]”jl)�”}”(hŒreceiving network device”h]”hŒreceiving network device”…”�”}”(hj•§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘§h´K-hj’§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘§h´K-hj:§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj§ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj·§h]”hŒ Description”…”�”}”(hj¹§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K/hj§ubjl)�”}”(hXeth_type_trans() expects ETH_HLEN bytes in skb->head, which NIC drivers provide. Devices looping skbs from their transmit path back to the receive path (loopback, OVS internal ports) get skbs built by the stack, whose link-layer header might have been popped by tc or OVS actions.”h]”hXeth_type_trans() expects ETH_HLEN bytes in skb->head, which NIC drivers provide. Devices looping skbs from their transmit path back to the receive path (loopback, OVS internal ports) get skbs built by the stack, whose link-layer header might have been popped by tc or OVS actions.”…”�”}”(hjͧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K.hj§ubjl)�”}”(hŒSets skb->protocol on success.”h]”hŒSets skb->protocol on success.”…”�”}”(hjܧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K3hj§ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjí§h]”hŒReturn”…”�”}”(hjï§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjë§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K5hj§ubjl)�”}”(hŒcSKB_NOT_DROPPED_YET on success, or a drop reason. In the latter case, the caller must free **skb**.”h]”(hŒ[SKB_NOT_DROPPED_YET on success, or a drop reason. In the latter case, the caller must free ”…”�”}”(hj¨h²hh³Nh´Nubj›)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¨ubhŒ.”…”�”}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K6hj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%is_link_local_ether_addr (C function)”Œc.is_link_local_ether_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.bool is_link_local_ether_addr (const u8 *addr)”h]”j )�”}”(hŒ-bool is_link_local_ether_addr(const u8 *addr)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjD¨h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj@¨h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Knubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@¨h²hh³jQ¨h´Knubj3)�”}”(hŒis_link_local_ether_addr”h]”j9)�”}”(hŒis_link_local_ether_addr”h]”hŒis_link_local_ether_addr”…”�”}”(hjd¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`¨ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj@¨h²hh³jQ¨h´Knubj¡ )�”}”(hŒ(const u8 *addr)”h]”j§ )�”}”(hŒconst u8 *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj€¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|¨ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjž¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ¨Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jf¨sbŒc.is_link_local_ether_addr”†”asbuh1hhj|¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|¨ubj )�”}”(hj h]”hŒ*”…”�”}”(hj̨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj|¨ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjÙ¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjx¨ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj@¨h²hh³jQ¨h´Knubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj<¨h²hh³jQ¨h´Knubah}”(h]”j7¨ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQ¨h´Knhj9¨h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Determine if given Ethernet address is link-local”h]”hŒ1Determine if given Ethernet address is link-local”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Knhj©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj9¨h²hh³jQ¨h´Knubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©jŒj©j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Return** true if address is link local reserved addr (01:80:c2:00:00:0X) per IEEE 802.1Q 8.6.3 Frame filtering. **Description** Please note: addr must be aligned to u16.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%©h]”hŒ Parameters”…”�”}”(hj'©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Krhj©ubjß)�”}”(hhh]”jä)�”}”(hŒO``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr``”h]”jð)�”}”(hjD©h]”hŒconst u8 *addr”…”�”}”(hjF©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kohj>©ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hj]©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY©h´KohjZ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY©h´Kohj;©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj©ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj©h]”hŒReturn”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kqhj©ubjl)�”}”(hŒftrue if address is link local reserved addr (01:80:c2:00:00:0X) per IEEE 802.1Q 8.6.3 Frame filtering.”h]”hŒftrue if address is link local reserved addr (01:80:c2:00:00:0X) per IEEE 802.1Q 8.6.3 Frame filtering.”…”�”}”(hj•©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kqhj©ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¦©h]”hŒ Description”…”�”}”(hj¨©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kthj©ubjl)�”}”(hŒ)Please note: addr must be aligned to u16.”h]”hŒ)Please note: addr must be aligned to u16.”…”�”}”(hj¼©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kshj©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒis_zero_ether_addr (C function)”Œc.is_zero_ether_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ(bool is_zero_ether_addr (const u8 *addr)”h]”j )�”}”(hŒ'bool is_zero_ether_addr(const u8 *addr)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjë©h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjç©h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç©h²hh³jø©h´K…ubj3)�”}”(hŒis_zero_ether_addr”h]”j9)�”}”(hŒis_zero_ether_addr”h]”hŒis_zero_ether_addr”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjç©h²hh³jø©h´K…ubj¡ )�”}”(hŒ(const u8 *addr)”h]”j§ )�”}”(hŒconst u8 *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj'ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#ªubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjEªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j ªsbŒc.is_zero_ether_addr”†”asbuh1hhj#ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#ªubj )�”}”(hj h]”hŒ*”…”�”}”(hjsªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#ªubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj€ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjªubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjç©h²hh³jø©h´K…ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjã©h²hh³jø©h´K…ubah}”(h]”jÞ©ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jø©h´K…hjà©h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Determine if give Ethernet address is all zeros.”h]”hŒ0Determine if give Ethernet address is all zeros.”…”�”}”(hjªªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K…hj§ªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjà©h²hh³jø©h´K…ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jªjŒjªj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÌ**Parameters** ``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Return** true if the address is all zeroes. **Description** Please note: addr must be aligned to u16.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj̪h]”hŒ Parameters”…”�”}”(hjΪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjʪubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K‰hjƪubjß)�”}”(hhh]”jä)�”}”(hŒO``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr``”h]”jð)�”}”(hjëªh]”hŒconst u8 *addr”…”�”}”(hjíªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéªubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K†hjåªubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«h´K†hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«h´K†hjâªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjƪubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj&«h]”hŒReturn”…”�”}”(hj(«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kˆhjƪubjl)�”}”(hŒ"true if the address is all zeroes.”h]”hŒ"true if the address is all zeroes.”…”�”}”(hj<«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kˆhjƪubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjM«h]”hŒ Description”…”�”}”(hjO«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjK«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KŠhjƪubjl)�”}”(hŒ)Please note: addr must be aligned to u16.”h]”hŒ)Please note: addr must be aligned to u16.”…”�”}”(hjc«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K‰hjƪubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$is_multicast_ether_addr (C function)”Œc.is_multicast_ether_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-bool is_multicast_ether_addr (const u8 *addr)”h]”j )�”}”(hŒ,bool is_multicast_ether_addr(const u8 *addr)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj’«h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽ«h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj «h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ«h²hh³jŸ«h´K˜ubj3)�”}”(hŒis_multicast_ether_addr”h]”j9)�”}”(hŒis_multicast_ether_addr”h]”hŒis_multicast_ether_addr”…”�”}”(hj²«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®«ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŽ«h²hh³jŸ«h´K˜ubj¡ )�”}”(hŒ(const u8 *addr)”h]”j§ )�”}”(hŒconst u8 *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjΫh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ«ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjì«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j´«sbŒc.is_multicast_ether_addr”†”asbuh1hhjÊ«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ«ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÊ«ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj'¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÆ«ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŽ«h²hh³jŸ«h´K˜ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŠ«h²hh³jŸ«h´K˜ubah}”(h]”j…«ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŸ«h´K˜hj‡«h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Determine if the Ethernet address is a multicast.”h]”hŒ1Determine if the Ethernet address is a multicast.”…”�”}”(hjQ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K˜hjN¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡«h²hh³jŸ«h´K˜ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ji¬jŒji¬j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÚ**Parameters** ``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Return** true if the address is a multicast address. By definition the broadcast address is also a multicast address.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjs¬h]”hŒ Parameters”…”�”}”(hju¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kœhjm¬ubjß)�”}”(hhh]”jä)�”}”(hŒO``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr``”h]”jð)�”}”(hj’¬h]”hŒconst u8 *addr”…”�”}”(hj”¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K™hjŒ¬ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hj«¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§¬h´K™hj¨¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§¬h´K™hj‰¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjm¬ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjͬh]”hŒReturn”…”�”}”(hjϬh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˬubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K›hjm¬ubjl)�”}”(hŒltrue if the address is a multicast address. By definition the broadcast address is also a multicast address.”h]”hŒltrue if the address is a multicast address. By definition the broadcast address is also a multicast address.”…”�”}”(hjã¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K›hjm¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ is_local_ether_addr (C function)”Œc.is_local_ether_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)bool is_local_ether_addr (const u8 *addr)”h]”j )�”}”(hŒ(bool is_local_ether_addr(const u8 *addr)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj­h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­h²hh³j­h´Kºubj3)�”}”(hŒis_local_ether_addr”h]”j9)�”}”(hŒis_local_ether_addr”h]”hŒis_local_ether_addr”…”�”}”(hj2­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.­ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj­h²hh³j­h´Kºubj¡ )�”}”(hŒ(const u8 *addr)”h]”j§ )�”}”(hŒconst u8 *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjN­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ­ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjl­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jn­Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4­sbŒc.is_local_ether_addr”†”asbuh1hhjJ­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ­ubj )�”}”(hj h]”hŒ*”…”�”}”(hjš­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJ­ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj§­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjF­ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj­h²hh³j­h´Kºubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ­h²hh³j­h´Kºubah}”(h]”j­ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j­h´Kºhj­h²hubjg)�”}”(hhh]”jl)�”}”(hŒEDetermine if the Ethernet address is locally-assigned one (IEEE 802).”h]”hŒEDetermine if the Ethernet address is locally-assigned one (IEEE 802).”…”�”}”(hjÑ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kºhjέh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj­h²hh³j­h´Kºubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jé­jŒjé­j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ•**Parameters** ``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Return** true if the address is a local address.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjó­h]”hŒ Parameters”…”�”}”(hjõ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K¾hjí­ubjß)�”}”(hhh]”jä)�”}”(hŒO``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr``”h]”jð)�”}”(hj®h]”hŒconst u8 *addr”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K»hj ®ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hj+®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'®h´K»hj(®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'®h´K»hj ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjí­ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjM®h]”hŒReturn”…”�”}”(hjO®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjK®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K½hjí­ubjl)�”}”(hŒ'true if the address is a local address.”h]”hŒ'true if the address is a local address.”…”�”}”(hjc®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K½hjí­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$is_broadcast_ether_addr (C function)”Œc.is_broadcast_ether_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-bool is_broadcast_ether_addr (const u8 *addr)”h]”j )�”}”(hŒ,bool is_broadcast_ether_addr(const u8 *addr)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj’®h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽ®h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ®h²hh³jŸ®h´KÅubj3)�”}”(hŒis_broadcast_ether_addr”h]”j9)�”}”(hŒis_broadcast_ether_addr”h]”hŒis_broadcast_ether_addr”…”�”}”(hj²®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®®ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŽ®h²hh³jŸ®h´KÅubj¡ )�”}”(hŒ(const u8 *addr)”h]”j§ )�”}”(hŒconst u8 *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjήh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ®ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjì®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j´®sbŒc.is_broadcast_ether_addr”†”asbuh1hhjÊ®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊ®ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÊ®ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj'¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÆ®ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŽ®h²hh³jŸ®h´KÅubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŠ®h²hh³jŸ®h´KÅubah}”(h]”j…®ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŸ®h´KÅhj‡®h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Determine if the Ethernet address is broadcast”h]”hŒ.Determine if the Ethernet address is broadcast”…”�”}”(hjQ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÅhjN¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡®h²hh³jŸ®h´KÅubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ji¯jŒji¯j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ×**Parameters** ``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Return** true if the address is the broadcast address. **Description** Please note: addr must be aligned to u16.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjs¯h]”hŒ Parameters”…”�”}”(hju¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÉhjm¯ubjß)�”}”(hhh]”jä)�”}”(hŒO``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr``”h]”jð)�”}”(hj’¯h]”hŒconst u8 *addr”…”�”}”(hj”¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÆhjŒ¯ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hj«¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§¯h´KÆhj¨¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§¯h´KÆhj‰¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjm¯ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjͯh]”hŒReturn”…”�”}”(hjϯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÈhjm¯ubjl)�”}”(hŒ-true if the address is the broadcast address.”h]”hŒ-true if the address is the broadcast address.”…”�”}”(hjã¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÈhjm¯ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjô¯h]”hŒ Description”…”�”}”(hjö¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjò¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÊhjm¯ubjl)�”}”(hŒ)Please note: addr must be aligned to u16.”h]”hŒ)Please note: addr must be aligned to u16.”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÉhjm¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"is_unicast_ether_addr (C function)”Œc.is_unicast_ether_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+bool is_unicast_ether_addr (const u8 *addr)”h]”j )�”}”(hŒ*bool is_unicast_ether_addr(const u8 *addr)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj9°h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5°h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5°h²hh³jF°h´KÔubj3)�”}”(hŒis_unicast_ether_addr”h]”j9)�”}”(hŒis_unicast_ether_addr”h]”hŒis_unicast_ether_addr”…”�”}”(hjY°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU°ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj5°h²hh³jF°h´KÔubj¡ )�”}”(hŒ(const u8 *addr)”h]”j§ )�”}”(hŒconst u8 *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hju°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq°ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj“°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j•°Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j[°sbŒc.is_unicast_ether_addr”†”asbuh1hhjq°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq°ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁ°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjq°ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjΰh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm°ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj5°h²hh³jF°h´KÔubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj1°h²hh³jF°h´KÔubah}”(h]”j,°ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jF°h´KÔhj.°h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Determine if the Ethernet address is unicast”h]”hŒ,Determine if the Ethernet address is unicast”…”�”}”(hjø°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÔhjõ°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj.°h²hh³jF°h´KÔubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j±jŒj±j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ—**Parameters** ``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Return** true if the address is a unicast address.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj±h]”hŒ Parameters”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KØhj±ubjß)�”}”(hhh]”jä)�”}”(hŒO``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr``”h]”jð)�”}”(hj9±h]”hŒconst u8 *addr”…”�”}”(hj;±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KÕhj3±ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hjR±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jN±h´KÕhjO±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jN±h´KÕhj0±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjt±h]”hŒReturn”…”�”}”(hjv±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjr±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K×hj±ubjl)�”}”(hŒ)true if the address is a unicast address.”h]”hŒ)true if the address is a unicast address.”…”�”}”(hjбh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´K×hj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ is_valid_ether_addr (C function)”Œc.is_valid_ether_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)bool is_valid_ether_addr (const u8 *addr)”h]”j )�”}”(hŒ(bool is_valid_ether_addr(const u8 *addr)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¹±h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjµ±h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDZh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµ±h²hh³jƱh´Kßubj3)�”}”(hŒis_valid_ether_addr”h]”j9)�”}”(hŒis_valid_ether_addr”h]”hŒis_valid_ether_addr”…”�”}”(hjÙ±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ±ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjµ±h²hh³jƱh´Kßubj¡ )�”}”(hŒ(const u8 *addr)”h]”j§ )�”}”(hŒconst u8 *addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjõ±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñ±ubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j²Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÛ±sbŒc.is_valid_ether_addr”†”asbuh1hhjñ±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñ±ubj )�”}”(hj h]”hŒ*”…”�”}”(hjA²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjñ±ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjN²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjí±ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjµ±h²hh³jƱh´Kßubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj±±h²hh³jƱh´Kßubah}”(h]”j¬±ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jƱh´Kßhj®±h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Determine if the given Ethernet address is valid”h]”hŒ0Determine if the given Ethernet address is valid”…”�”}”(hjx²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kßhju²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®±h²hh³jƱh´Kßubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�²jŒj�²j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXC**Parameters** ``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Description** Check that the Ethernet address (MAC) is not 00:00:00:00:00:00, is not a multicast address, and is not FF:FF:FF:FF:FF:FF. Please note: addr must be aligned to u16. **Return** true if the address is valid.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjš²h]”hŒ Parameters”…”�”}”(hjœ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kãhj”²ubjß)�”}”(hhh]”jä)�”}”(hŒO``const u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr``”h]”jð)�”}”(hj¹²h]”hŒconst u8 *addr”…”�”}”(hj»²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kàhj³²ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hjÒ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jβh´Kàhjϲubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jβh´Kàhj°²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj”²ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjô²h]”hŒ Description”…”�”}”(hjö²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjò²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kâhj”²ubjl)�”}”(hŒyCheck that the Ethernet address (MAC) is not 00:00:00:00:00:00, is not a multicast address, and is not FF:FF:FF:FF:FF:FF.”h]”hŒyCheck that the Ethernet address (MAC) is not 00:00:00:00:00:00, is not a multicast address, and is not FF:FF:FF:FF:FF:FF.”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Káhj”²ubjl)�”}”(hŒ)Please note: addr must be aligned to u16.”h]”hŒ)Please note: addr must be aligned to u16.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kåhj”²ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj*³h]”hŒReturn”…”�”}”(hj,³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj(³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kçhj”²ubjl)�”}”(hŒtrue if the address is valid.”h]”hŒtrue if the address is valid.”…”�”}”(hj@³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kåhj”²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_proto_is_802_3 (C function)”Œc.eth_proto_is_802_3”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&bool eth_proto_is_802_3 (__be16 proto)”h]”j )�”}”(hŒ%bool eth_proto_is_802_3(__be16 proto)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjo³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjk³h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjk³h²hh³j|³h´Kñubj3)�”}”(hŒeth_proto_is_802_3”h]”j9)�”}”(hŒeth_proto_is_802_3”h]”hŒeth_proto_is_802_3”…”�”}”(hj�³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹³ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjk³h²hh³j|³h´Kñubj¡ )�”}”(hŒ(__be16 proto)”h]”j§ )�”}”(hŒ __be16 proto”h]”(h)�”}”(hhh]”j9)�”}”(hŒ__be16”h]”hŒ__be16”…”�”}”(hj®³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°³Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‘³sbŒc.eth_proto_is_802_3”†”asbuh1hhj§³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjγh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§³ubj9)�”}”(hŒproto”h]”hŒproto”…”�”}”(hjܳh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£³ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjk³h²hh³j|³h´Kñubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjg³h²hh³j|³h´Kñubah}”(h]”jb³ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j|³h´Kñhjd³h²hubjg)�”}”(hhh]”jl)�”}”(hŒ3Determine if a given Ethertype/length is a protocol”h]”hŒ3Determine if a given Ethertype/length is a protocol”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kñhj´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjd³h²hh³j|³h´Kñubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j´jŒj´j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒã**Parameters** ``__be16 proto`` Ethertype/length value to be tested **Description** Check that the value from the Ethertype/length field is a valid Ethertype. **Return** true if the valid is an 802.3 supported Ethertype.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj(´h]”hŒ Parameters”…”�”}”(hj*´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kõhj"´ubjß)�”}”(hhh]”jä)�”}”(hŒ5``__be16 proto`` Ethertype/length value to be tested ”h]”(jê)�”}”(hŒ``__be16 proto``”h]”jð)�”}”(hjG´h]”hŒ __be16 proto”…”�”}”(hjI´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´KòhjA´ubj)�”}”(hhh]”jl)�”}”(hŒ#Ethertype/length value to be tested”h]”hŒ#Ethertype/length value to be tested”…”�”}”(hj`´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\´h´Kòhj]´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\´h´Kòhj>´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"´ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‚´h]”hŒ Description”…”�”}”(hj„´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kôhj"´ubjl)�”}”(hŒJCheck that the value from the Ethertype/length field is a valid Ethertype.”h]”hŒJCheck that the value from the Ethertype/length field is a valid Ethertype.”…”�”}”(hj˜´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kóhj"´ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj©´h]”hŒReturn”…”�”}”(hj«´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj§´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Kõhj"´ubjl)�”}”(hŒ2true if the valid is an 802.3 supported Ethertype.”h]”hŒ2true if the valid is an 802.3 supported Ethertype.”…”�”}”(hj¿´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Köhj"´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_random_addr (C function)”Œc.eth_random_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒvoid eth_random_addr (u8 *addr)”h]”j )�”}”(hŒvoid eth_random_addr(u8 *addr)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjî´h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjê´h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjê´h²hh³jü´h´Mubj3)�”}”(hŒeth_random_addr”h]”j9)�”}”(hŒeth_random_addr”h]”hŒeth_random_addr”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj µubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjê´h²hh³jü´h´Mubj¡ )�”}”(hŒ (u8 *addr)”h]”j§ )�”}”(hŒu8 *addr”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj.µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+µubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0µŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jµsbŒc.eth_random_addr”†”asbuh1hhj'µubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNµh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'µubj )�”}”(hj h]”hŒ*”…”�”}”(hj\µh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj'µubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjiµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#µubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjê´h²hh³jü´h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæ´h²hh³jü´h´Mubah}”(h]”já´ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jü´h´Mhjã´h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2Generate software assigned random Ethernet address”h]”hŒ2Generate software assigned random Ethernet address”…”�”}”(hj“µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”•h´Mhj�µh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjã´h²hh³jü´h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j«µjŒj«µj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÏ**Parameters** ``u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Description** Generate a random Ethernet address (MAC) that is not multicast and has the local assigned bit set.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjµµh]”hŒ Parameters”…”�”}”(hj·µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³µubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj¯µubjß)�”}”(hhh]”jä)�”}”(hŒI``u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ ``u8 *addr``”h]”jð)�”}”(hjÔµh]”hŒu8 *addr”…”�”}”(hjÖµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhjεubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hjíµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jéµh´Mhjêµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjεubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéµh´Mhj˵ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯µubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¶h]”hŒ Description”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj¯µubjl)�”}”(hŒbGenerate a random Ethernet address (MAC) that is not multicast and has the local assigned bit set.”h]”hŒbGenerate a random Ethernet address (MAC) that is not multicast and has the local assigned bit set.”…”�”}”(hj%¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj¯µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_broadcast_addr (C function)”Œc.eth_broadcast_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ"void eth_broadcast_addr (u8 *addr)”h]”j )�”}”(hŒ!void eth_broadcast_addr(u8 *addr)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjT¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjP¶h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjP¶h²hh³jb¶h´Mubj3)�”}”(hŒeth_broadcast_addr”h]”j9)�”}”(hŒeth_broadcast_addr”h]”hŒeth_broadcast_addr”…”�”}”(hju¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq¶ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjP¶h²hh³jb¶h´Mubj¡ )�”}”(hŒ (u8 *addr)”h]”j§ )�”}”(hŒu8 *addr”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj”¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–¶Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jw¶sbŒc.eth_broadcast_addr”†”asbuh1hhj�¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�¶ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�¶ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj϶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‰¶ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjP¶h²hh³jb¶h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjL¶h²hh³jb¶h´Mubah}”(h]”jG¶ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jb¶h´MhjI¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒAssign broadcast address”h]”hŒAssign broadcast address”…”�”}”(hjù¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhjö¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjI¶h²hh³jb¶h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j·jŒj·j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¥**Parameters** ``u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Description** Assign the broadcast address to the given address array.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj·h]”hŒ Parameters”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj·ubjß)�”}”(hhh]”jä)�”}”(hŒI``u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ ``u8 *addr``”h]”jð)�”}”(hj:·h]”hŒu8 *addr”…”�”}”(hj<·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj4·ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hjS·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jO·h´MhjP·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jO·h´Mhj1·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj·ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hju·h]”hŒ Description”…”�”}”(hjw·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjs·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj·ubjl)�”}”(hŒ8Assign the broadcast address to the given address array.”h]”hŒ8Assign the broadcast address to the given address array.”…”�”}”(hj‹·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_zero_addr (C function)”Œc.eth_zero_addr”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒvoid eth_zero_addr (u8 *addr)”h]”j )�”}”(hŒvoid eth_zero_addr(u8 *addr)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjº·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶·h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶·h²hh³jÈ·h´Mubj3)�”}”(hŒ eth_zero_addr”h]”j9)�”}”(hŒ eth_zero_addr”h]”hŒ eth_zero_addr”…”�”}”(hjÛ·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×·ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶·h²hh³jÈ·h´Mubj¡ )�”}”(hŒ (u8 *addr)”h]”j§ )�”}”(hŒu8 *addr”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjú·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jü·Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÝ·sbŒc.eth_zero_addr”†”asbuh1hhjó·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjó·ubj )�”}”(hj h]”hŒ*”…”�”}”(hj(¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjó·ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj5¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjï·ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶·h²hh³jÈ·h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj²·h²hh³jÈ·h´Mubah}”(h]”j­·ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÈ·h´Mhj¯·h²hubjg)�”}”(hhh]”jl)�”}”(hŒAssign zero address”h]”hŒAssign zero address”…”�”}”(hj_¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj\¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯·h²hh³jÈ·h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jw¸jŒjw¸j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ **Parameters** ``u8 *addr`` Pointer to a six-byte array containing the Ethernet address **Description** Assign the zero address to the given address array.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�¸h]”hŒ Parameters”…”�”}”(hjƒ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M hj{¸ubjß)�”}”(hhh]”jä)�”}”(hŒI``u8 *addr`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ ``u8 *addr``”h]”jð)�”}”(hj ¸h]”hŒu8 *addr”…”�”}”(hj¢¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhjš¸ubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hj¹¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµ¸h´Mhj¶¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµ¸h´Mhj—¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj{¸ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÛ¸h]”hŒ Description”…”�”}”(hjݸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj{¸ubjl)�”}”(hŒ3Assign the zero address to the given address array.”h]”hŒ3Assign the zero address to the given address array.”…”�”}”(hjñ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mhj{¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_hw_addr_random (C function)”Œc.eth_hw_addr_random”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void eth_hw_addr_random (struct net_device *dev)”h]”j )�”}”(hŒ/void eth_hw_addr_random(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹h²hh³j.¹h´M'ubj3)�”}”(hŒeth_hw_addr_random”h]”j9)�”}”(hŒeth_hw_addr_random”h]”hŒeth_hw_addr_random”…”�”}”(hjA¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=¹ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¹h²hh³j.¹h´M'ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj]¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY¹ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj{¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j}¹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jC¹sbŒc.eth_hw_addr_random”†”asbuh1hhjY¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY¹ubj )�”}”(hj h]”hŒ*”…”�”}”(hj©¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjY¹ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¶¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjY¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjU¹ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¹h²hh³j.¹h´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¹h²hh³j.¹h´M'ubah}”(h]”j¹ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j.¹h´M'hj¹h²hubjg)�”}”(hhh]”jl)�”}”(hŒ>Generate software assigned random Ethernet and set device flag”h]”hŒ>Generate software assigned random Ethernet and set device flag”…”�”}”(hjà¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M'hjݹh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¹h²hh³j.¹h´M'ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jø¹jŒjø¹j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ÷**Parameters** ``struct net_device *dev`` pointer to net_device structure **Description** Generate a random Ethernet address (MAC) to be used by a net device and set addr_assign_type so the state can be read by sysfs and be used by userspace.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjºh]”hŒ Parameters”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M+hjü¹ubjß)�”}”(hhh]”jä)�”}”(hŒ;``struct net_device *dev`` pointer to net_device structure ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj!ºh]”hŒstruct net_device *dev”…”�”}”(hj#ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M)hjºubj)�”}”(hhh]”jl)�”}”(hŒpointer to net_device structure”h]”hŒpointer to net_device structure”…”�”}”(hj:ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6ºh´M)hj7ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6ºh´M)hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjü¹ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj\ºh]”hŒ Description”…”�”}”(hj^ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZºubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M+hjü¹ubjl)�”}”(hŒ˜Generate a random Ethernet address (MAC) to be used by a net device and set addr_assign_type so the state can be read by sysfs and be used by userspace.”h]”hŒ˜Generate a random Ethernet address (MAC) to be used by a net device and set addr_assign_type so the state can be read by sysfs and be used by userspace.”…”�”}”(hjrºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M*hjü¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_hw_addr_crc (C function)”Œc.eth_hw_addr_crc”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/u32 eth_hw_addr_crc (struct netdev_hw_addr *ha)”h]”j )�”}”(hŒ.u32 eth_hw_addr_crc(struct netdev_hw_addr *ha)”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¤ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡ºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¦ºŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œeth_hw_addr_crc”sbŒc.eth_hw_addr_crc”†”asbuh1hhj�ºh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƺh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ºh²hh³jźh´M9ubj3)�”}”(hŒeth_hw_addr_crc”h]”j9)�”}”(hjºh]”hŒeth_hw_addr_crc”…”�”}”(hjغh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔºubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�ºh²hh³jźh´M9ubj¡ )�”}”(hŒ(struct netdev_hw_addr *ha)”h]”j§ )�”}”(hŒstruct netdev_hw_addr *ha”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjóºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïºubh)�”}”(hhh]”j9)�”}”(hŒnetdev_hw_addr”h]”hŒnetdev_hw_addr”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÀºŒc.eth_hw_addr_crc”†”asbuh1hhjïºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïºubj )�”}”(hj h]”hŒ*”…”�”}”(hj=»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjïºubj9)�”}”(hŒha”h]”hŒha”…”�”}”(hjJ»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjëºubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�ºh²hh³jźh´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj™ºh²hh³jźh´M9ubah}”(h]”j”ºah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jźh´M9hj–ºh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Calculate CRC from netdev_hw_addr”h]”hŒ!Calculate CRC from netdev_hw_addr”…”�”}”(hjt»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M9hjq»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj–ºh²hh³jźh´M9ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŒ»jŒjŒ»j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒŸ**Parameters** ``struct netdev_hw_addr *ha`` pointer to hardware address **Description** Calculate CRC from a hardware address as basis for filter hashes.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj–»h]”hŒ Parameters”…”�”}”(hj˜»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj”»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M=hj�»ubjß)�”}”(hhh]”jä)�”}”(hŒ:``struct netdev_hw_addr *ha`` pointer to hardware address ”h]”(jê)�”}”(hŒ``struct netdev_hw_addr *ha``”h]”jð)�”}”(hjµ»h]”hŒstruct netdev_hw_addr *ha”…”�”}”(hj·»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj³»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M:hj¯»ubj)�”}”(hhh]”jl)�”}”(hŒpointer to hardware address”h]”hŒpointer to hardware address”…”�”}”(hjλh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÊ»h´M:hjË»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÊ»h´M:hj¬»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�»ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjð»h]”hŒ Description”…”�”}”(hjò»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M<hj�»ubjl)�”}”(hŒACalculate CRC from a hardware address as basis for filter hashes.”h]”hŒACalculate CRC from a hardware address as basis for filter hashes.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M;hj�»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒether_addr_copy (C function)”Œc.ether_addr_copy”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-void ether_addr_copy (u8 *dst, const u8 *src)”h]”j )�”}”(hŒ,void ether_addr_copy(u8 *dst, const u8 *src)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj5¼h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj1¼h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1¼h²hh³jC¼h´MDubj3)�”}”(hŒether_addr_copy”h]”j9)�”}”(hŒether_addr_copy”h]”hŒether_addr_copy”…”�”}”(hjV¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjR¼ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj1¼h²hh³jC¼h´MDubj¡ )�”}”(hŒ(u8 *dst, const u8 *src)”h]”(j§ )�”}”(hŒu8 *dst”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hju¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jw¼Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jX¼sbŒc.ether_addr_copy”†”asbuh1hhjn¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjn¼ubj )�”}”(hj h]”hŒ*”…”�”}”(hj£¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjn¼ubj9)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj°¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjn¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjj¼ubj§ )�”}”(hŒ const u8 *src”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjɼh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjżubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjżubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjç¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j鼌modname”NŒ classname”Njå jè )�”}”jë ]”j‘¼Œc.ether_addr_copy”†”asbuh1hhjżubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjżubj )�”}”(hj h]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjżubj9)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjżubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjj¼ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj1¼h²hh³jC¼h´MDubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj-¼h²hh³jC¼h´MDubah}”(h]”j(¼ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jC¼h´MDhj*¼h²hubjg)�”}”(hhh]”jl)�”}”(hŒCopy an Ethernet address”h]”hŒCopy an Ethernet address”…”�”}”(hjJ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MDhjG½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj*¼h²hh³jC¼h´MDubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jb½jŒjb½j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒå**Parameters** ``u8 *dst`` Pointer to a six-byte array Ethernet address destination ``const u8 *src`` Pointer to a six-byte array Ethernet address source **Description** Please note: dst & src must both be aligned to u16.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjl½h]”hŒ Parameters”…”�”}”(hjn½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MHhjf½ubjß)�”}”(hhh]”(jä)�”}”(hŒE``u8 *dst`` Pointer to a six-byte array Ethernet address destination ”h]”(jê)�”}”(hŒ ``u8 *dst``”h]”jð)�”}”(hj‹½h]”hŒu8 *dst”…”�”}”(hj�½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MEhj…½ubj)�”}”(hhh]”jl)�”}”(hŒ8Pointer to a six-byte array Ethernet address destination”h]”hŒ8Pointer to a six-byte array Ethernet address destination”…”�”}”(hj¤½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ½h´MEhj¡½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ½h´MEhj‚½ubjä)�”}”(hŒF``const u8 *src`` Pointer to a six-byte array Ethernet address source ”h]”(jê)�”}”(hŒ``const u8 *src``”h]”jð)�”}”(hjĽh]”hŒ const u8 *src”…”�”}”(hjƽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MFhj¾½ubj)�”}”(hhh]”jl)�”}”(hŒ3Pointer to a six-byte array Ethernet address source”h]”hŒ3Pointer to a six-byte array Ethernet address source”…”�”}”(hjݽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÙ½h´MFhjÚ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙ½h´MFhj‚½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjf½ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÿ½h]”hŒ Description”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjý½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MHhjf½ubjl)�”}”(hŒ3Please note: dst & src must both be aligned to u16.”h]”hŒ3Please note: dst & src must both be aligned to u16.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MGhjf½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_hw_addr_set (C function)”Œc.eth_hw_addr_set”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void eth_hw_addr_set (struct net_device *dev, const u8 *addr)”h]”j )�”}”(hŒbool ether_addr_equal_64bits(const u8 *addr1, const u8 *addr2)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÐÄh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÌÄh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌÄh²hh³jÝÄh´M�ubj3)�”}”(hŒether_addr_equal_64bits”h]”j9)�”}”(hŒether_addr_equal_64bits”h]”hŒether_addr_equal_64bits”…”�”}”(hjðÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìÄubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÌÄh²hh³jÝÄh´M�ubj¡ )�”}”(hŒ"(const u8 *addr1, const u8 *addr2)”h]”(j§ )�”}”(hŒconst u8 *addr1”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj*Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'Åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j,ÅŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jòÄsbŒc.ether_addr_equal_64bits”†”asbuh1hhjÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅubj )�”}”(hj h]”hŒ*”…”�”}”(hjXÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÅubj9)�”}”(hŒaddr1”h]”hŒaddr1”…”�”}”(hjeÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÅubj§ )�”}”(hŒconst u8 *addr2”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj~Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzÅubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjœÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™Åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jžÅŒmodname”NŒ classname”Njå jè )�”}”jë ]”jFÅŒc.ether_addr_equal_64bits”†”asbuh1hhjzÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzÅubj )�”}”(hj h]”hŒ*”…”�”}”(hjÈÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjzÅubj9)�”}”(hŒaddr2”h]”hŒaddr2”…”�”}”(hjÕÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÅubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÌÄh²hh³jÝÄh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÈÄh²hh³jÝÄh´M�ubah}”(h]”jÃÄah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÝÄh´M�hjÅÄh²hubjg)�”}”(hhh]”jl)�”}”(hŒCompare two Ethernet addresses”h]”hŒCompare two Ethernet addresses”…”�”}”(hjÿÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M�hjüÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÅÄh²hh³jÝÄh´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÆjŒjÆj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXõ**Parameters** ``const u8 *addr1`` Pointer to an array of 8 bytes ``const u8 *addr2`` Pointer to an other array of 8 bytes **Description** Compare two Ethernet addresses, returns true if equal, false otherwise. The function doesn't need any conditional branches and possibly uses word memory accesses on CPU allowing cheap unaligned memory reads. arrays = { byte1, byte2, byte3, byte4, byte5, byte6, pad1, pad2 } Please note that alignment of addr1 & addr2 are only guaranteed to be 16 bits.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj!Æh]”hŒ Parameters”…”�”}”(hj#Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M‘hjÆubjß)�”}”(hhh]”(jä)�”}”(hŒ3``const u8 *addr1`` Pointer to an array of 8 bytes ”h]”(jê)�”}”(hŒ``const u8 *addr1``”h]”jð)�”}”(hj@Æh]”hŒconst u8 *addr1”…”�”}”(hjBÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MŽhj:Æubj)�”}”(hhh]”jl)�”}”(hŒPointer to an array of 8 bytes”h]”hŒPointer to an array of 8 bytes”…”�”}”(hjYÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jUÆh´MŽhjVÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jUÆh´MŽhj7Æubjä)�”}”(hŒ9``const u8 *addr2`` Pointer to an other array of 8 bytes ”h]”(jê)�”}”(hŒ``const u8 *addr2``”h]”jð)�”}”(hjyÆh]”hŒconst u8 *addr2”…”�”}”(hj{Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjwÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M�hjsÆubj)�”}”(hhh]”jl)�”}”(hŒ$Pointer to an other array of 8 bytes”h]”hŒ$Pointer to an other array of 8 bytes”…”�”}”(hj’Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽÆh´M�hj�Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽÆh´M�hj7Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÆubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj´Æh]”hŒ Description”…”�”}”(hj¶Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M‘hjÆubjl)�”}”(hŒGCompare two Ethernet addresses, returns true if equal, false otherwise.”h]”hŒGCompare two Ethernet addresses, returns true if equal, false otherwise.”…”�”}”(hjÊÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M�hjÆubjl)�”}”(hŒÉThe function doesn't need any conditional branches and possibly uses word memory accesses on CPU allowing cheap unaligned memory reads. arrays = { byte1, byte2, byte3, byte4, byte5, byte6, pad1, pad2 }”h]”hŒËThe function doesn’t need any conditional branches and possibly uses word memory accesses on CPU allowing cheap unaligned memory reads. arrays = { byte1, byte2, byte3, byte4, byte5, byte6, pad1, pad2 }”…”�”}”(hjÙÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M’hjÆubjl)�”}”(hŒNPlease note that alignment of addr1 & addr2 are only guaranteed to be 16 bits.”h]”hŒNPlease note that alignment of addr1 & addr2 are only guaranteed to be 16 bits.”…”�”}”(hjèÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M–hjÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'ether_addr_equal_unaligned (C function)”Œc.ether_addr_equal_unaligned”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBbool ether_addr_equal_unaligned (const u8 *addr1, const u8 *addr2)”h]”j )�”}”(hŒAbool ether_addr_equal_unaligned(const u8 *addr1, const u8 *addr2)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÇh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇh²hh³j$Çh´Mªubj3)�”}”(hŒether_addr_equal_unaligned”h]”j9)�”}”(hŒether_addr_equal_unaligned”h]”hŒether_addr_equal_unaligned”…”�”}”(hj7Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3Çubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÇh²hh³j$Çh´Mªubj¡ )�”}”(hŒ"(const u8 *addr1, const u8 *addr2)”h]”(j§ )�”}”(hŒconst u8 *addr1”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjSÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOÇubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjqÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jsÇŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j9ÇsbŒc.ether_addr_equal_unaligned”†”asbuh1hhjOÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOÇubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjOÇubj9)�”}”(hŒaddr1”h]”hŒaddr1”…”�”}”(hj¬Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKÇubj§ )�”}”(hŒconst u8 *addr2”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÅÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁÇubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjãÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jåÇŒmodname”NŒ classname”Njå jè )�”}”jë ]”j�ÇŒc.ether_addr_equal_unaligned”†”asbuh1hhjÁÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁÇubj )�”}”(hj h]”hŒ*”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÁÇubj9)�”}”(hŒaddr2”h]”hŒaddr2”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKÇubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÇh²hh³j$Çh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÇh²hh³j$Çh´Mªubah}”(h]”j Çah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j$Çh´Mªhj Çh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Compare two not u16 aligned Ethernet addresses”h]”hŒ.Compare two not u16 aligned Ethernet addresses”…”�”}”(hjFÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MªhjCÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj Çh²hh³j$Çh´Mªubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j^ÈjŒj^Èj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXF**Parameters** ``const u8 *addr1`` Pointer to a six-byte array containing the Ethernet address ``const u8 *addr2`` Pointer other six-byte array containing the Ethernet address **Description** Compare two Ethernet addresses, returns true if equal Please note: Use only when any Ethernet address may not be u16 aligned.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjhÈh]”hŒ Parameters”…”�”}”(hjjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjfÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M®hjbÈubjß)�”}”(hhh]”(jä)�”}”(hŒP``const u8 *addr1`` Pointer to a six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr1``”h]”jð)�”}”(hj‡Èh]”hŒconst u8 *addr1”…”�”}”(hj‰Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M«hj�Èubj)�”}”(hhh]”jl)�”}”(hŒ;Pointer to a six-byte array containing the Ethernet address”h]”hŒ;Pointer to a six-byte array containing the Ethernet address”…”�”}”(hj Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœÈh´M«hj�Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœÈh´M«hj~Èubjä)�”}”(hŒQ``const u8 *addr2`` Pointer other six-byte array containing the Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *addr2``”h]”jð)�”}”(hjÀÈh]”hŒconst u8 *addr2”…”�”}”(hjÂÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M¬hjºÈubj)�”}”(hhh]”jl)�”}”(hŒ×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj×ubj9)�”}”(hjl”h]”hŒb”…”�”}”(hjK×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Öubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjNÖh²hh³j`Öh´MJubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjJÖh²hh³j`Öh´MJubah}”(h]”jEÖah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j`Öh´MJhjGÖh²hubjg)�”}”(hhh]”jl)�”}”(hŒCompare two Ethernet headers”h]”hŒCompare two Ethernet headers”…”�”}”(hjt×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MJhjq×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjGÖh²hh³j`Öh´MJubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŒ×jŒjŒ×j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX�**Parameters** ``const void *a`` Pointer to Ethernet header ``const void *b`` Pointer to Ethernet header **Description** Compare two Ethernet headers, returns 0 if equal. This assumes that the network header (i.e., IP header) is 4-byte aligned OR the platform can handle unaligned access. This is the case for all packets coming into netif_receive_skb or similar entry points.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj–×h]”hŒ Parameters”…”�”}”(hj˜×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj”×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MNhj�×ubjß)�”}”(hhh]”(jä)�”}”(hŒ-``const void *a`` Pointer to Ethernet header ”h]”(jê)�”}”(hŒ``const void *a``”h]”jð)�”}”(hjµ×h]”hŒ const void *a”…”�”}”(hj·×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj³×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MKhj¯×ubj)�”}”(hhh]”jl)�”}”(hŒPointer to Ethernet header”h]”hŒPointer to Ethernet header”…”�”}”(hjÎ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÊ×h´MKhjË×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÊ×h´MKhj¬×ubjä)�”}”(hŒ-``const void *b`` Pointer to Ethernet header ”h]”(jê)�”}”(hŒ``const void *b``”h]”jð)�”}”(hjî×h]”hŒ const void *b”…”�”}”(hjð×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjì×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MLhjè×ubj)�”}”(hhh]”jl)�”}”(hŒPointer to Ethernet header”h]”hŒPointer to Ethernet header”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØh´MLhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjè×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØh´MLhj¬×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�×ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj)Øh]”hŒ Description”…”�”}”(hj+Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MNhj�×ubjl)�”}”(hXCompare two Ethernet headers, returns 0 if equal. This assumes that the network header (i.e., IP header) is 4-byte aligned OR the platform can handle unaligned access. This is the case for all packets coming into netif_receive_skb or similar entry points.”h]”hXCompare two Ethernet headers, returns 0 if equal. This assumes that the network header (i.e., IP header) is 4-byte aligned OR the platform can handle unaligned access. This is the case for all packets coming into netif_receive_skb or similar entry points.”…”�”}”(hj?Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MMhj�×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_hw_addr_gen (C function)”Œc.eth_hw_addr_gen”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSvoid eth_hw_addr_gen (struct net_device *dev, const u8 *base_addr, unsigned int id)”h]”j )�”}”(hŒRvoid eth_hw_addr_gen(struct net_device *dev, const u8 *base_addr, unsigned int id)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjnØh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjjØh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Moubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjØh²hh³j|Øh´Moubj3)�”}”(hŒeth_hw_addr_gen”h]”j9)�”}”(hŒeth_hw_addr_gen”h]”hŒeth_hw_addr_gen”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Øubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjjØh²hh³j|Øh´Moubj¡ )�”}”(hŒ>(struct net_device *dev, const u8 *base_addr, unsigned int id)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj«Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§Øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§Øubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÉØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jËØŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‘ØsbŒc.eth_hw_addr_gen”†”asbuh1hhj§Øubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§Øubj )�”}”(hj h]”hŒ*”…”�”}”(hj÷Øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj§Øubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Øubj§ )�”}”(hŒconst u8 *base_addr”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj;Ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8Ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j=ÙŒmodname”NŒ classname”Njå jè )�”}”jë ]”jåØŒc.eth_hw_addr_gen”†”asbuh1hhjÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÙh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙubj )�”}”(hj h]”hŒ*”…”�”}”(hjgÙh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÙubj9)�”}”(hŒ base_addr”h]”hŒ base_addr”…”�”}”(hjtÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Øubj§ )�”}”(hŒunsigned int id”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‰Ùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰ÙubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj©Ùh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‰Ùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰Ùubj9)�”}”(hŒid”h]”hŒid”…”�”}”(hjÅÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰Ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Øubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjjØh²hh³j|Øh´Moubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjfØh²hh³j|Øh´Moubah}”(h]”jaØah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j|Øh´MohjcØh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Generate and assign Ethernet address to a port”h]”hŒ.Generate and assign Ethernet address to a port”…”�”}”(hjïÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MohjìÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjcØh²hh³j|Øh´Moubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÚjŒjÚj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXž**Parameters** ``struct net_device *dev`` pointer to port's net_device structure ``const u8 *base_addr`` base Ethernet address ``unsigned int id`` offset to add to the base address **Description** Generate a MAC address using a base address and an offset and assign it to a net_device. Commonly used by switch drivers which need to compute addresses for all their ports. addr_assign_type is not changed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÚh]”hŒ Parameters”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mshj Úubjß)�”}”(hhh]”(jä)�”}”(hŒB``struct net_device *dev`` pointer to port's net_device structure ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj0Úh]”hŒstruct net_device *dev”…”�”}”(hj2Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mphj*Úubj)�”}”(hhh]”jl)�”}”(hŒ&pointer to port's net_device structure”h]”hŒ(pointer to port’s net_device structure”…”�”}”(hjIÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jEÚh´MphjFÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEÚh´Mphj'Úubjä)�”}”(hŒ.``const u8 *base_addr`` base Ethernet address ”h]”(jê)�”}”(hŒ``const u8 *base_addr``”h]”jð)�”}”(hjiÚh]”hŒconst u8 *base_addr”…”�”}”(hjkÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MqhjcÚubj)�”}”(hhh]”jl)�”}”(hŒbase Ethernet address”h]”hŒbase Ethernet address”…”�”}”(hj‚Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~Úh´MqhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~Úh´Mqhj'Úubjä)�”}”(hŒ6``unsigned int id`` offset to add to the base address ”h]”(jê)�”}”(hŒ``unsigned int id``”h]”jð)�”}”(hj¢Úh]”hŒunsigned int id”…”�”}”(hj¤Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´MrhjœÚubj)�”}”(hhh]”jl)�”}”(hŒ!offset to add to the base address”h]”hŒ!offset to add to the base address”…”�”}”(hj»Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j·Úh´Mrhj¸Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·Úh´Mrhj'Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Úubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÝÚh]”hŒ Description”…”�”}”(hjßÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mthj Úubjl)�”}”(hŒÎGenerate a MAC address using a base address and an offset and assign it to a net_device. Commonly used by switch drivers which need to compute addresses for all their ports. addr_assign_type is not changed.”h]”hŒÎGenerate a MAC address using a base address and an offset and assign it to a net_device. Commonly used by switch drivers which need to compute addresses for all their ports. addr_assign_type is not changed.”…”�”}”(hjóÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mshj Úubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_skb_pkt_type (C function)”Œc.eth_skb_pkt_type”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒIvoid eth_skb_pkt_type (struct sk_buff *skb, const struct net_device *dev)”h]”j )�”}”(hŒHvoid eth_skb_pkt_type(struct sk_buff *skb, const struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"Ûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÛh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M„ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛh²hh³j0Ûh´M„ubj3)�”}”(hŒeth_skb_pkt_type”h]”j9)�”}”(hŒeth_skb_pkt_type”h]”hŒeth_skb_pkt_type”…”�”}”(hjCÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?Ûubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÛh²hh³j0Ûh´M„ubj¡ )�”}”(hŒ3(struct sk_buff *skb, const struct net_device *dev)”h]”(j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj_Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[Ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[Ûubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj}Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÛŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jEÛsbŒc.eth_skb_pkt_type”†”asbuh1hhj[Ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[Ûubj )�”}”(hj h]”hŒ*”…”�”}”(hj«Ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[Ûubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¸Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWÛubj§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÑÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍÛubj)�”}”(hjh]”hŒstruct”…”�”}”(hjìÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍÛubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ÜŒmodname”NŒ classname”Njå jè )�”}”jë ]”j™ÛŒc.eth_skb_pkt_type”†”asbuh1hhjÍÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Üh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍÛubj )�”}”(hj h]”hŒ*”…”�”}”(hj6Üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍÛubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjCÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjWÛubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÛh²hh³j0Ûh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÛh²hh³j0Ûh´M„ubah}”(h]”jÛah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j0Ûh´M„hjÛh²hubjg)�”}”(hhh]”jl)�”}”(hŒ8Assign packet type if destination address does not match”h]”hŒ8Assign packet type if destination address does not match”…”�”}”(hjmÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M„hjjÜh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÛh²hh³j0Ûh´M„ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j…ÜjŒj…Üj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXQ**Parameters** ``struct sk_buff *skb`` Assigned a packet type if address does not match **dev** address ``const struct net_device *dev`` Network device used to compare packet address against **Description** If the destination MAC address of the packet does not match the network device address, assign an appropriate packet type.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�Üh]”hŒ Parameters”…”�”}”(hj‘Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mˆhj‰Üubjß)�”}”(hhh]”(jä)�”}”(hŒY``struct sk_buff *skb`` Assigned a packet type if address does not match **dev** address ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj®Üh]”hŒstruct sk_buff *skb”…”�”}”(hj°Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M…hj¨Üubj)�”}”(hhh]”jl)�”}”(hŒ@Assigned a packet type if address does not match **dev** address”h]”(hŒ1Assigned a packet type if address does not match ”…”�”}”(hjÇÜh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÏÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇÜubhŒ address”…”�”}”(hjÇÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÃÜh´M…hjÄÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃÜh´M…hj¥Üubjä)�”}”(hŒW``const struct net_device *dev`` Network device used to compare packet address against ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjùÜh]”hŒconst struct net_device *dev”…”�”}”(hjûÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M†hjóÜubj)�”}”(hhh]”jl)�”}”(hŒ5Network device used to compare packet address against”h]”hŒ5Network device used to compare packet address against”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝh´M†hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjóÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝh´M†hj¥Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‰Üubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj4Ýh]”hŒ Description”…”�”}”(hj6Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´Mˆhj‰Üubjl)�”}”(hŒzIf the destination MAC address of the packet does not match the network device address, assign an appropriate packet type.”h]”hŒzIf the destination MAC address of the packet does not match the network device address, assign an appropriate packet type.”…”�”}”(hjJÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M‡hj‰Üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒeth_skb_pad (C function)”Œ c.eth_skb_pad”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ%int eth_skb_pad (struct sk_buff *skb)”h]”j )�”}”(hŒ$int eth_skb_pad(struct sk_buff *skb)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjyÝh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjuÝh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuÝh²hh³j‡Ýh´M¥ubj3)�”}”(hŒ eth_skb_pad”h]”j9)�”}”(hŒ eth_skb_pad”h]”hŒ eth_skb_pad”…”�”}”(hjšÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–Ýubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjuÝh²hh³j‡Ýh´M¥ubj¡ )�”}”(hŒ(struct sk_buff *skb)”h]”j§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¶Ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²Ýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²Ýubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÔÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÖÝŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jœÝsbŒ c.eth_skb_pad”†”asbuh1hhj²Ýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²Ýubj )�”}”(hj h]”hŒ*”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj²Ýubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®Ýubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjuÝh²hh³j‡Ýh´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjqÝh²hh³j‡Ýh´M¥ubah}”(h]”jlÝah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‡Ýh´M¥hjnÝh²hubjg)�”}”(hhh]”jl)�”}”(hŒ9Pad buffer to minimum number of octets for Ethernet frame”h]”hŒ9Pad buffer to minimum number of octets for Ethernet frame”…”�”}”(hj9Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M¥hj6Þh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjnÝh²hh³j‡Ýh´M¥ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jQÞjŒjQÞj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ×**Parameters** ``struct sk_buff *skb`` Buffer to pad **Description** An Ethernet frame should have a minimum size of 60 bytes. This function takes short frames and pads them with zeros up to the 60 byte limit.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj[Þh]”hŒ Parameters”…”�”}”(hj]Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjYÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M©hjUÞubjß)�”}”(hhh]”jä)�”}”(hŒ&``struct sk_buff *skb`` Buffer to pad ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hjzÞh]”hŒstruct sk_buff *skb”…”�”}”(hj|Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjxÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M¦hjtÞubj)�”}”(hhh]”jl)�”}”(hŒ Buffer to pad”h]”hŒ Buffer to pad”…”�”}”(hj“Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Þh´M¦hj�Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Þh´M¦hjqÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjUÞubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjµÞh]”hŒ Description”…”�”}”(hj·Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M¨hjUÞubjl)�”}”(hŒ�An Ethernet frame should have a minimum size of 60 bytes. This function takes short frames and pads them with zeros up to the 60 byte limit.”h]”hŒ�An Ethernet frame should have a minimum size of 60 bytes. This function takes short frames and pads them with zeros up to the 60 byte limit.”…”�”}”(hjËÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ\/var/lib/git/docbuild/linux/Documentation/networking/kapi:101: ./include/linux/etherdevice.h”h´M§hjUÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒgro_node (C struct)”Œ c.gro_node”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒgro_node”h]”j )�”}”(hŒstruct gro_node”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjúÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöÞh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöÞh²hh³jßh´Kubj3)�”}”(hŒgro_node”h]”j9)�”}”(hjôÞh]”hŒgro_node”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjöÞh²hh³jßh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjòÞh²hh³jßh´Kubah}”(h]”jíÞah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jßh´KhjïÞh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,structure to support Generic Receive Offload”h]”hŒ,structure to support Generic Receive Offload”…”�”}”(hj<ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mghj9ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjïÞh²hh³jßh´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jTßjŒjTßj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX"**Definition**:: struct gro_node { unsigned long bitmask; struct gro_list hash[GRO_HASH_BUCKETS]; struct list_head rx_list; u32 rx_count; u32 cached_napi_id; }; **Members** ``bitmask`` bitmask to indicate used buckets in **hash** ``hash`` hashtable of pending aggregated skbs, separated by flows ``rx_list`` list of pending ``GRO_NORMAL`` skbs ``rx_count`` cached current length of **rx_list** ``cached_napi_id`` napi_struct::napi_id cached for hotpath, 0 for standalone”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj`ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj\ßubhŒ:”…”�”}”(hj\ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MkhjXßubj¶)�”}”(hŒ¼struct gro_node { unsigned long bitmask; struct gro_list hash[GRO_HASH_BUCKETS]; struct list_head rx_list; u32 rx_count; u32 cached_napi_id; };”h]”hŒ¼struct gro_node { unsigned long bitmask; struct gro_list hash[GRO_HASH_BUCKETS]; struct list_head rx_list; u32 rx_count; u32 cached_napi_id; };”…”�”}”hjyßsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MmhjXßubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjŠßh]”hŒMembers”…”�”}”(hjŒßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆßubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MuhjXßubjß)�”}”(hhh]”(jä)�”}”(hŒ9``bitmask`` bitmask to indicate used buckets in **hash** ”h]”(jê)�”}”(hŒ ``bitmask``”h]”jð)�”}”(hj©ßh]”hŒbitmask”…”�”}”(hj«ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mihj£ßubj)�”}”(hhh]”jl)�”}”(hŒ,bitmask to indicate used buckets in **hash**”h]”(hŒ$bitmask to indicate used buckets in ”…”�”}”(hjÂßh²hh³Nh´Nubj›)�”}”(hŒ**hash**”h]”hŒhash”…”�”}”(hjÊßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾ßh´Mihj¿ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾ßh´Mihj ßubjä)�”}”(hŒB``hash`` hashtable of pending aggregated skbs, separated by flows ”h]”(jê)�”}”(hŒ``hash``”h]”jð)�”}”(hjðßh]”hŒhash”…”�”}”(hjòßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mjhjêßubj)�”}”(hhh]”jl)�”}”(hŒ8hashtable of pending aggregated skbs, separated by flows”h]”hŒ8hashtable of pending aggregated skbs, separated by flows”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jàh´Mjhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jàh´Mjhj ßubjä)�”}”(hŒ0``rx_list`` list of pending ``GRO_NORMAL`` skbs ”h]”(jê)�”}”(hŒ ``rx_list``”h]”jð)�”}”(hj)àh]”hŒrx_list”…”�”}”(hj+àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mkhj#àubj)�”}”(hhh]”jl)�”}”(hŒ#list of pending ``GRO_NORMAL`` skbs”h]”(hŒlist of pending ”…”�”}”(hjBàh²hh³Nh´Nubjð)�”}”(hŒ``GRO_NORMAL``”h]”hŒ GRO_NORMAL”…”�”}”(hjJàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBàubhŒ skbs”…”�”}”(hjBàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>àh´Mkhj?àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>àh´Mkhj ßubjä)�”}”(hŒ2``rx_count`` cached current length of **rx_list** ”h]”(jê)�”}”(hŒ ``rx_count``”h]”jð)�”}”(hjtàh]”hŒrx_count”…”�”}”(hjvàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjràubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mlhjnàubj)�”}”(hhh]”jl)�”}”(hŒ$cached current length of **rx_list**”h]”(hŒcached current length of ”…”�”}”(hj�àh²hh³Nh´Nubj›)�”}”(hŒ **rx_list**”h]”hŒrx_list”…”�”}”(hj•àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‰àh´MlhjŠàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰àh´Mlhj ßubjä)�”}”(hŒL``cached_napi_id`` napi_struct::napi_id cached for hotpath, 0 for standalone”h]”(jê)�”}”(hŒ``cached_napi_id``”h]”jð)�”}”(hj»àh]”hŒcached_napi_id”…”�”}”(hj½àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mlhjµàubj)�”}”(hhh]”jl)�”}”(hŒ9napi_struct::napi_id cached for hotpath, 0 for standalone”h]”hŒ9napi_struct::napi_id cached for hotpath, 0 for standalone”…”�”}”(hjÔàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MmhjÑàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐàh´Mlhj ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjXßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_is_scheduled (C function)”Œc.napi_is_scheduled”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.bool napi_is_scheduled (struct napi_struct *n)”h]”j )�”}”(hŒ-bool napi_is_scheduled(struct napi_struct *n)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjáh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjáh²hh³j"áh´Mubj3)�”}”(hŒnapi_is_scheduled”h]”j9)�”}”(hŒnapi_is_scheduled”h]”hŒnapi_is_scheduled”…”�”}”(hj5áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1áubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”•ÑRjPjQuh1j2hjáh²hh³j"áh´Mubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjQáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMáubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMáubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjoáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjláubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jqáŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j7ásbŒc.napi_is_scheduled”†”asbuh1hhjMáubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMáubj )�”}”(hj h]”hŒ*”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjMáubj9)�”}”(hjDh]”hŒn”…”�”}”(hjªáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjIáubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjáh²hh³j"áh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj áh²hh³j"áh´Mubah}”(h]”jáah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j"áh´Mhj áh²hubjg)�”}”(hhh]”jl)�”}”(hŒtest if NAPI is scheduled”h]”hŒtest if NAPI is scheduled”…”�”}”(hjÓáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjÐáh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj áh²hh³j"áh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jëájŒjëáj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX?**Parameters** ``struct napi_struct *n`` NAPI context **Description** This check is "best-effort". With no locking implemented, a NAPI can be scheduled or terminate right after this check and produce not precise results. NAPI_STATE_SCHED is an internal state, napi_is_scheduled should not be used normally and napi_schedule should be used instead. Use only if the driver really needs to check if a NAPI is scheduled for example in the context of delayed timer that can be skipped if a NAPI is already scheduled. **Return** True if NAPI is scheduled, False otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjõáh]”hŒ Parameters”…”�”}”(hj÷áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjïáubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjâh]”hŒstruct napi_struct *n”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjâubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hj-âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)âh´Mhj*âubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)âh´Mhj âubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjïáubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjOâh]”hŒ Description”…”�”}”(hjQâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjMâubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjïáubjl)�”}”(hŒ–This check is "best-effort". With no locking implemented, a NAPI can be scheduled or terminate right after this check and produce not precise results.”h]”hŒšThis check is “best-effortâ€�. With no locking implemented, a NAPI can be scheduled or terminate right after this check and produce not precise results.”…”�”}”(hjeâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjïáubjl)�”}”(hŒ~NAPI_STATE_SCHED is an internal state, napi_is_scheduled should not be used normally and napi_schedule should be used instead.”h]”hŒ~NAPI_STATE_SCHED is an internal state, napi_is_scheduled should not be used normally and napi_schedule should be used instead.”…”�”}”(hjtâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjïáubjl)�”}”(hŒ£Use only if the driver really needs to check if a NAPI is scheduled for example in the context of delayed timer that can be skipped if a NAPI is already scheduled.”h]”hŒ£Use only if the driver really needs to check if a NAPI is scheduled for example in the context of delayed timer that can be skipped if a NAPI is already scheduled.”…”�”}”(hjƒâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjïáubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj”âh]”hŒReturn”…”�”}”(hj–âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’âubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M$hjïáubjl)�”}”(hŒ+True if NAPI is scheduled, False otherwise.”h]”hŒ+True if NAPI is scheduled, False otherwise.”…”�”}”(hjªâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M%hjïáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_schedule (C function)”Œc.napi_schedule”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*bool napi_schedule (struct napi_struct *n)”h]”j )�”}”(hŒ)bool napi_schedule(struct napi_struct *n)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÙâh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÕâh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕâh²hh³jæâh´M/ubj3)�”}”(hŒ napi_schedule”h]”j9)�”}”(hŒ napi_schedule”h]”hŒ napi_schedule”…”�”}”(hjùâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõâubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÕâh²hh³jæâh´M/ubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"ãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj3ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j5ãŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jûâsbŒc.napi_schedule”†”asbuh1hhjãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãubj )�”}”(hj h]”hŒ*”…”�”}”(hjaãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjãubj9)�”}”(hjDh]”hŒn”…”�”}”(hjnãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ãubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÕâh²hh³jæâh´M/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÑâh²hh³jæâh´M/ubah}”(h]”jÌâah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jæâh´M/hjÎâh²hubjg)�”}”(hhh]”jl)�”}”(hŒschedule NAPI poll”h]”hŒschedule NAPI poll”…”�”}”(hj—ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M/hj”ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÎâh²hh³jæâh´M/ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¯ãjŒj¯ãj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX#**Parameters** ``struct napi_struct *n`` NAPI context **Description** Schedule NAPI poll routine to be called if it is not already running. **Return** true if we schedule a NAPI or false if not. Refer to napi_schedule_prep() for additional reason on why a NAPI might not be scheduled.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¹ãh]”hŒ Parameters”…”�”}”(hj»ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M3hj³ãubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjØãh]”hŒstruct napi_struct *n”…”�”}”(hjÚãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M0hjÒãubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hjñãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jíãh´M0hjîãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jíãh´M0hjÏãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³ãubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjäh]”hŒ Description”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M2hj³ãubjl)�”}”(hŒESchedule NAPI poll routine to be called if it is not already running.”h]”hŒESchedule NAPI poll routine to be called if it is not already running.”…”�”}”(hj)äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M1hj³ãubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj:äh]”hŒReturn”…”�”}”(hj<äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj8äubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4hj³ãubjl)�”}”(hŒ…true if we schedule a NAPI or false if not. Refer to napi_schedule_prep() for additional reason on why a NAPI might not be scheduled.”h]”hŒ…true if we schedule a NAPI or false if not. Refer to napi_schedule_prep() for additional reason on why a NAPI might not be scheduled.”…”�”}”(hjPäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4hj³ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!napi_schedule_irqoff (C function)”Œc.napi_schedule_irqoff”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void napi_schedule_irqoff (struct napi_struct *n)”h]”j )�”}”(hŒ0void napi_schedule_irqoff(struct napi_struct *n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj{äh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{äh²hh³j�äh´MCubj3)�”}”(hŒnapi_schedule_irqoff”h]”j9)�”}”(hŒnapi_schedule_irqoff”h]”hŒnapi_schedule_irqoff”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœäubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj{äh²hh³j�äh´MCubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¼äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸äubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjÚäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÜäŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¢äsbŒc.napi_schedule_irqoff”†”asbuh1hhj¸äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸äubj )�”}”(hj h]”hŒ*”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¸äubj9)�”}”(hjDh]”hŒn”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´äubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj{äh²hh³j�äh´MCubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjwäh²hh³j�äh´MCubah}”(h]”jräah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�äh´MChjtäh²hubjg)�”}”(hhh]”jl)�”}”(hŒschedule NAPI poll”h]”hŒschedule NAPI poll”…”�”}”(hj>åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MChj;åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjtäh²hh³j�äh´MCubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jVåjŒjVåj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ…**Parameters** ``struct napi_struct *n`` NAPI context **Description** Variant of napi_schedule(), assuming hard irqs are masked.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj`åh]”hŒ Parameters”…”�”}”(hjbåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^åubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MGhjZåubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hjåh]”hŒstruct napi_struct *n”…”�”}”(hj�åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MDhjyåubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hj˜åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”åh´MDhj•åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”åh´MDhjvåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjZåubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjºåh]”hŒ Description”…”�”}”(hj¼åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸åubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MFhjZåubjl)�”}”(hŒ:Variant of napi_schedule(), assuming hard irqs are masked.”h]”hŒ:Variant of napi_schedule(), assuming hard irqs are masked.”…”�”}”(hjÐåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MEhjZåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_complete_done (C function)”Œc.napi_complete_done”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>bool napi_complete_done (struct napi_struct *n, int work_done)”h]”j )�”}”(hŒ=bool napi_complete_done(struct napi_struct *n, int work_done)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÿåh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjûåh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûåh²hh³j æh´MOubj3)�”}”(hŒnapi_complete_done”h]”j9)�”}”(hŒnapi_complete_done”h]”hŒnapi_complete_done”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjûåh²hh³j æh´MOubj¡ )�”}”(hŒ&(struct napi_struct *n, int work_done)”h]”(j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj;æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7æubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjYæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j[æŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j!æsbŒc.napi_complete_done”†”asbuh1hhj7æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7æubj )�”}”(hj h]”hŒ*”…”�”}”(hj‡æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj7æubj9)�”}”(hjDh]”hŒn”…”�”}”(hj”æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj3æubj§ )�”}”(hŒ int work_done”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¬æh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨æubj9)�”}”(hŒ work_done”h]”hŒ work_done”…”�”}”(hjÈæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj3æubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjûåh²hh³j æh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj÷åh²hh³j æh´MOubah}”(h]”jòåah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j æh´MOhjôåh²hubjg)�”}”(hhh]”jl)�”}”(hŒNAPI processing complete”h]”hŒNAPI processing complete”…”�”}”(hjòæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MOhjïæh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjôåh²hh³j æh´MOubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j çjŒj çj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX@**Parameters** ``struct napi_struct *n`` NAPI context ``int work_done`` number of packets processed **Description** Mark NAPI processing as complete. Should only be called if poll budget has not been completely consumed. Prefer over napi_complete(). **Return** false if device should avoid rearming interrupts.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjçh]”hŒ Parameters”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MShjçubjß)�”}”(hhh]”(jä)�”}”(hŒ'``struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hj3çh]”hŒstruct napi_struct *n”…”�”}”(hj5çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MPhj-çubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hjLçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHçh´MPhjIçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHçh´MPhj*çubjä)�”}”(hŒ.``int work_done`` number of packets processed ”h]”(jê)�”}”(hŒ``int work_done``”h]”jð)�”}”(hjlçh]”hŒ int work_done”…”�”}”(hjnçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MQhjfçubj)�”}”(hhh]”jl)�”}”(hŒnumber of packets processed”h]”hŒnumber of packets processed”…”�”}”(hj…çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�çh´MQhj‚çubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�çh´MQhj*çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjçubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj§çh]”hŒ Description”…”�”}”(hj©çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥çubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MShjçubjl)�”}”(hŒ…Mark NAPI processing as complete. Should only be called if poll budget has not been completely consumed. Prefer over napi_complete().”h]”hŒ…Mark NAPI processing as complete. Should only be called if poll budget has not been completely consumed. Prefer over napi_complete().”…”�”}”(hj½çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MRhjçubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÎçh]”hŒReturn”…”�”}”(hjÐçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌçubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MVhjçubjl)�”}”(hŒ1false if device should avoid rearming interrupts.”h]”hŒ1false if device should avoid rearming interrupts.”…”�”}”(hjäçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MVhjçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnapi_synchronize (C function)”Œc.napi_synchronize”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void napi_synchronize (const struct napi_struct *n)”h]”j )�”}”(hŒ2void napi_synchronize(const struct napi_struct *n)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjèh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèh²hh³j!èh´Mjubj3)�”}”(hŒnapi_synchronize”h]”j9)�”}”(hŒnapi_synchronize”h]”hŒnapi_synchronize”…”�”}”(hj4èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0èubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjèh²hh³j!èh´Mjubj¡ )�”}”(hŒ(const struct napi_struct *n)”h]”j§ )�”}”(hŒconst struct napi_struct *n”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjPèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLèubj)�”}”(hjh]”hŒstruct”…”�”}”(hjkèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLèubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj‰èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹èŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j6èsbŒc.napi_synchronize”†”asbuh1hhjLèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLèubj )�”}”(hj h]”hŒ*”…”�”}”(hj·èh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjLèubj9)�”}”(hjDh]”hŒn”…”�”}”(hjÄèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjHèubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjèh²hh³j!èh´Mjubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj èh²hh³j!èh´Mjubah}”(h]”jèah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j!èh´Mjhjèh²hubjg)�”}”(hhh]”jl)�”}”(hŒwait until NAPI is not running”h]”hŒwait until NAPI is not running”…”�”}”(hjíèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mjhjêèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjèh²hh³j!èh´Mjubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jéjŒjéj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒâ**Parameters** ``const struct napi_struct *n`` NAPI context **Description** Wait until NAPI is done being scheduled on this context. Waits till any outstanding processing completes but does not disable future activations.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjéh]”hŒ Parameters”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj éubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mnhj éubjß)�”}”(hhh]”jä)�”}”(hŒ-``const struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``const struct napi_struct *n``”h]”jð)�”}”(hj.éh]”hŒconst struct napi_struct *n”…”�”}”(hj0éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mkhj(éubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hjGéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jCéh´MkhjDéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jCéh´Mkhj%éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj éubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjiéh]”hŒ Description”…”�”}”(hjkéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjgéubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mmhj éubjl)�”}”(hŒ‘Wait until NAPI is done being scheduled on this context. Waits till any outstanding processing completes but does not disable future activations.”h]”hŒ‘Wait until NAPI is done being scheduled on this context. Waits till any outstanding processing completes but does not disable future activations.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mlhj éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*napi_if_scheduled_mark_missed (C function)”Œc.napi_if_scheduled_mark_missed”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:bool napi_if_scheduled_mark_missed (struct napi_struct *n)”h]”j )�”}”(hŒ9bool napi_if_scheduled_mark_missed(struct napi_struct *n)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj®éh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjªéh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªéh²hh³j»éh´M{ubj3)�”}”(hŒnapi_if_scheduled_mark_missed”h]”j9)�”}”(hŒnapi_if_scheduled_mark_missed”h]”hŒnapi_if_scheduled_mark_missed”…”�”}”(hjÎéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊéubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjªéh²hh³j»éh´M{ubj¡ )�”}”(hŒ(struct napi_struct *n)”h]”j§ )�”}”(hŒstruct napi_struct *n”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjêéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæéubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j êŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÐésbŒc.napi_if_scheduled_mark_missed”†”asbuh1hhjæéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæéubj )�”}”(hj h]”hŒ*”…”�”}”(hj6êh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjæéubj9)�”}”(hjDh]”hŒn”…”�”}”(hjCêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâéubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjªéh²hh³j»éh´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¦éh²hh³j»éh´M{ubah}”(h]”j¡éah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j»éh´M{hj£éh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.if napi is running, set the NAPIF_STATE_MISSED”h]”hŒ.if napi is running, set the NAPIF_STATE_MISSED”…”�”}”(hjlêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M{hjiêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj£éh²hh³j»éh´M{ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j„êjŒj„êj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ **Parameters** ``struct napi_struct *n`` NAPI context **Description** If napi is running, set the NAPIF_STATE_MISSED, and return true if NAPI is scheduled.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŽêh]”hŒ Parameters”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒêubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjˆêubjß)�”}”(hhh]”jä)�”}”(hŒ'``struct napi_struct *n`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *n``”h]”jð)�”}”(hj­êh]”hŒstruct napi_struct *n”…”�”}”(hj¯êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M}hj§êubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hjÆêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂêh´M}hjÃêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂêh´M}hj¤êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆêubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjèêh]”hŒ Description”…”�”}”(hjêêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæêubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjˆêubjl)�”}”(hŒUIf napi is running, set the NAPIF_STATE_MISSED, and return true if NAPI is scheduled.”h]”hŒUIf napi is running, set the NAPIF_STATE_MISSED, and return true if NAPI is scheduled.”…”�”}”(hjþêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M~hjˆêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetdev_priv_flags (C enum)”Œc.netdev_priv_flags”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒnetdev_priv_flags”h]”j )�”}”(hŒenum netdev_priv_flags”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hj-ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)ëh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M„ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)ëh²hh³j:ëh´M„ubj3)�”}”(hŒnetdev_priv_flags”h]”j9)�”}”(hj'ëh]”hŒnetdev_priv_flags”…”�”}”(hjMëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIëubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj)ëh²hh³j:ëh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj%ëh²hh³j:ëh´M„ubah}”(h]”j ëah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j:ëh´M„hj"ëh²hubjg)�”}”(hhh]”jl)�”}”(hŒ3:c:type:`struct net_device ` priv_flags”h]”(h)�”}”(hŒ(:c:type:`struct net_device `”h]”jð)�”}”(hjuëh]”hŒstruct net_device”…”�”}”(hjwëh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjsëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå jè )�”}”jë ]”jî )�”}”já j'ësbŒc.netdev_priv_flags”†”asbj¶Œ net_device”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´KhjoëubhŒ priv_flags”…”�”}”(hjoëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¾hjlëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj"ëh²hh³j:ëh´M„ubeh}”(h]”h ]”(j…Œenum”eh"]”h$]”h&]”jŠj…j‹j®ëjŒj®ëj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXˆ**Constants** ``IFF_802_1Q_VLAN`` 802.1Q VLAN device ``IFF_EBRIDGE`` Ethernet bridging device ``IFF_BONDING`` bonding master or slave ``IFF_ISATAP`` ISATAP interface (RFC4214) ``IFF_WAN_HDLC`` WAN HDLC device ``IFF_XMIT_DST_RELEASE`` dev_hard_start_xmit() is allowed to release skb->dst ``IFF_DONT_BRIDGE`` disallow bridging this ether dev ``IFF_DISABLE_NETPOLL`` disable netpoll at run-time ``IFF_MACVLAN_PORT`` device used as macvlan port ``IFF_BRIDGE_PORT`` device used as bridge port ``IFF_OVS_DATAPATH`` device used as Open vSwitch datapath port ``IFF_TX_SKB_SHARING`` The interface supports sharing skbs on transmit ``IFF_UNICAST_FLT`` Supports unicast filtering ``IFF_TEAM_PORT`` device used as team port ``IFF_SUPP_NOFCS`` device supports sending custom FCS ``IFF_LIVE_ADDR_CHANGE`` device supports hardware address change when it's running ``IFF_MACVLAN`` Macvlan device ``IFF_XMIT_DST_RELEASE_PERM`` IFF_XMIT_DST_RELEASE not taking into account underlying stacked devices ``IFF_L3MDEV_MASTER`` device is an L3 master device ``IFF_NO_QUEUE`` device can run without qdisc attached ``IFF_OPENVSWITCH`` device is a Open vSwitch master ``IFF_L3MDEV_SLAVE`` device is enslaved to an L3 master device ``IFF_TEAM`` device is a team device ``IFF_PHONY_HEADROOM`` the headroom value is controlled by an external entity (i.e. the master device for bridged veth) ``IFF_MACSEC`` device is a MACsec device ``IFF_NO_RX_HANDLER`` device doesn't support the rx_handler hook ``IFF_FAILOVER`` device is a failover master device ``IFF_FAILOVER_SLAVE`` device is lower dev of a failover master device ``IFF_L3MDEV_RX_HANDLER`` only invoke the rx handler of L3 master device ``IFF_NO_ADDRCONF`` prevent ipv6 addrconf ``IFF_TX_SKB_NO_LINEAR`` device/driver is capable of xmitting frames with skb_headlen(skb) == 0 (data starts from frag0)”h]”(jl)�”}”(hŒ **Constants**”h]”j›)�”}”(hj¸ëh]”hŒ Constants”…”�”}”(hjºëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÂhj²ëubjß)�”}”(hhh]”(jä)�”}”(hŒ'``IFF_802_1Q_VLAN`` 802.1Q VLAN device ”h]”(jê)�”}”(hŒ``IFF_802_1Q_VLAN``”h]”jð)�”}”(hj×ëh]”hŒIFF_802_1Q_VLAN”…”�”}”(hjÙëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÅhjÑëubj)�”}”(hhh]”jl)�”}”(hŒ802.1Q VLAN device”h]”hŒ802.1Q VLAN device”…”�”}”(hjðëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jìëh´MÅhjíëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jìëh´MÅhjÎëubjä)�”}”(hŒ)``IFF_EBRIDGE`` Ethernet bridging device ”h]”(jê)�”}”(hŒ``IFF_EBRIDGE``”h]”jð)�”}”(hjìh]”hŒ IFF_EBRIDGE”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÈhj ìubj)�”}”(hhh]”jl)�”}”(hŒEthernet bridging device”h]”hŒEthernet bridging device”…”�”}”(hj)ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%ìh´MÈhj&ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%ìh´MÈhjÎëubjä)�”}”(hŒ(``IFF_BONDING`` bonding master or slave ”h]”(jê)�”}”(hŒ``IFF_BONDING``”h]”jð)�”}”(hjIìh]”hŒ IFF_BONDING”…”�”}”(hjKìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjGìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MËhjCìubj)�”}”(hhh]”jl)�”}”(hŒbonding master or slave”h]”hŒbonding master or slave”…”�”}”(hjbìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^ìh´MËhj_ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^ìh´MËhjÎëubjä)�”}”(hŒ*``IFF_ISATAP`` ISATAP interface (RFC4214) ”h]”(jê)�”}”(hŒ``IFF_ISATAP``”h]”jð)�”}”(hj‚ìh]”hŒ IFF_ISATAP”…”�”}”(hj„ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÎhj|ìubj)�”}”(hhh]”jl)�”}”(hŒISATAP interface (RFC4214)”h]”hŒISATAP interface (RFC4214)”…”�”}”(hj›ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—ìh´MÎhj˜ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—ìh´MÎhjÎëubjä)�”}”(hŒ!``IFF_WAN_HDLC`` WAN HDLC device ”h]”(jê)�”}”(hŒ``IFF_WAN_HDLC``”h]”jð)�”}”(hj»ìh]”hŒ IFF_WAN_HDLC”…”�”}”(hj½ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÑhjµìubj)�”}”(hhh]”jl)�”}”(hŒWAN HDLC device”h]”hŒWAN HDLC device”…”�”}”(hjÔìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐìh´MÑhjÑìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐìh´MÑhjÎëubjä)�”}”(hŒN``IFF_XMIT_DST_RELEASE`` dev_hard_start_xmit() is allowed to release skb->dst ”h]”(jê)�”}”(hŒ``IFF_XMIT_DST_RELEASE``”h]”jð)�”}”(hjôìh]”hŒIFF_XMIT_DST_RELEASE”…”�”}”(hjöìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÕhjîìubj)�”}”(hhh]”jl)�”}”(hŒ4dev_hard_start_xmit() is allowed to release skb->dst”h]”hŒ4dev_hard_start_xmit() is allowed to release skb->dst”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÔhj íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j íh´MÕhjÎëubjä)�”}”(hŒ5``IFF_DONT_BRIDGE`` disallow bridging this ether dev ”h]”(jê)�”}”(hŒ``IFF_DONT_BRIDGE``”h]”jð)�”}”(hj.íh]”hŒIFF_DONT_BRIDGE”…”�”}”(hj0íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,íubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MØhj(íubj)�”}”(hhh]”jl)�”}”(hŒ disallow bridging this ether dev”h]”hŒ disallow bridging this ether dev”…”�”}”(hjGíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jCíh´MØhjDíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jCíh´MØhjÎëubjä)�”}”(hŒ4``IFF_DISABLE_NETPOLL`` disable netpoll at run-time ”h]”(jê)�”}”(hŒ``IFF_DISABLE_NETPOLL``”h]”jð)�”}”(hjgíh]”hŒIFF_DISABLE_NETPOLL”…”�”}”(hjiíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjeíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÛhjaíubj)�”}”(hhh]”jl)�”}”(hŒdisable netpoll at run-time”h]”hŒdisable netpoll at run-time”…”�”}”(hj€íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|íh´MÛhj}íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|íh´MÛhjÎëubjä)�”}”(hŒ1``IFF_MACVLAN_PORT`` device used as macvlan port ”h]”(jê)�”}”(hŒ``IFF_MACVLAN_PORT``”h]”jð)�”}”(hj íh]”hŒIFF_MACVLAN_PORT”…”�”}”(hj¢íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÞhjšíubj)�”}”(hhh]”jl)�”}”(hŒdevice used as macvlan port”h]”hŒdevice used as macvlan port”…”�”}”(hj¹íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµíh´MÞhj¶íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµíh´MÞhjÎëubjä)�”}”(hŒ/``IFF_BRIDGE_PORT`` device used as bridge port ”h]”(jê)�”}”(hŒ``IFF_BRIDGE_PORT``”h]”jð)�”}”(hjÙíh]”hŒIFF_BRIDGE_PORT”…”�”}”(hjÛíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×íubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MáhjÓíubj)�”}”(hhh]”jl)�”}”(hŒdevice used as bridge port”h]”hŒdevice used as bridge port”…”�”}”(hjòíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîíh´Máhjïíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîíh´MáhjÎëubjä)�”}”(hŒ?``IFF_OVS_DATAPATH`` device used as Open vSwitch datapath port ”h]”(jê)�”}”(hŒ``IFF_OVS_DATAPATH``”h]”jð)�”}”(hjîh]”hŒIFF_OVS_DATAPATH”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mähj îubj)�”}”(hhh]”jl)�”}”(hŒ)device used as Open vSwitch datapath port”h]”hŒ)device used as Open vSwitch datapath port”…”�”}”(hj+îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'îh´Mähj(îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'îh´MähjÎëubjä)�”}”(hŒG``IFF_TX_SKB_SHARING`` The interface supports sharing skbs on transmit ”h]”(jê)�”}”(hŒ``IFF_TX_SKB_SHARING``”h]”jð)�”}”(hjKîh]”hŒIFF_TX_SKB_SHARING”…”�”}”(hjMîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MçhjEîubj)�”}”(hhh]”jl)�”}”(hŒ/The interface supports sharing skbs on transmit”h]”hŒ/The interface supports sharing skbs on transmit”…”�”}”(hjdîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`îh´Mçhjaîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`îh´MçhjÎëubjä)�”}”(hŒ/``IFF_UNICAST_FLT`` Supports unicast filtering ”h]”(jê)�”}”(hŒ``IFF_UNICAST_FLT``”h]”jð)�”}”(hj„îh]”hŒIFF_UNICAST_FLT”…”�”}”(hj†îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mêhj~îubj)�”}”(hhh]”jl)�”}”(hŒSupports unicast filtering”h]”hŒSupports unicast filtering”…”�”}”(hj�îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™îh´Mêhjšîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™îh´MêhjÎëubjä)�”}”(hŒ+``IFF_TEAM_PORT`` device used as team port ”h]”(jê)�”}”(hŒ``IFF_TEAM_PORT``”h]”jð)�”}”(hj½îh]”hŒ IFF_TEAM_PORT”…”�”}”(hj¿îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Míhj·îubj)�”}”(hhh]”jl)�”}”(hŒdevice used as team port”h]”hŒdevice used as team port”…”�”}”(hjÖîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒîh´MíhjÓîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒîh´MíhjÎëubjä)�”}”(hŒ6``IFF_SUPP_NOFCS`` device supports sending custom FCS ”h]”(jê)�”}”(hŒ``IFF_SUPP_NOFCS``”h]”jð)�”}”(hjöîh]”hŒIFF_SUPP_NOFCS”…”�”}”(hjøîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjôîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mðhjðîubj)�”}”(hhh]”jl)�”}”(hŒ"device supports sending custom FCS”h]”hŒ"device supports sending custom FCS”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ïh´Mðhj ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ïh´MðhjÎëubjä)�”}”(hŒS``IFF_LIVE_ADDR_CHANGE`` device supports hardware address change when it's running ”h]”(jê)�”}”(hŒ``IFF_LIVE_ADDR_CHANGE``”h]”jð)�”}”(hj/ïh]”hŒIFF_LIVE_ADDR_CHANGE”…”�”}”(hj1ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Môhj)ïubj)�”}”(hhh]”jl)�”}”(hŒ9device supports hardware address change when it's running”h]”hŒ;device supports hardware address change when it’s running”…”�”}”(hjHïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MóhjEïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jDïh´MôhjÎëubjä)�”}”(hŒ``IFF_MACVLAN`` Macvlan device ”h]”(jê)�”}”(hŒ``IFF_MACVLAN``”h]”jð)�”}”(hjiïh]”hŒ IFF_MACVLAN”…”�”}”(hjkïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M÷hjcïubj)�”}”(hhh]”jl)�”}”(hŒMacvlan device”h]”hŒMacvlan device”…”�”}”(hj‚ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~ïh´M÷hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~ïh´M÷hjÎëubjä)�”}”(hŒf``IFF_XMIT_DST_RELEASE_PERM`` IFF_XMIT_DST_RELEASE not taking into account underlying stacked devices ”h]”(jê)�”}”(hŒ``IFF_XMIT_DST_RELEASE_PERM``”h]”jð)�”}”(hj¢ïh]”hŒIFF_XMIT_DST_RELEASE_PERM”…”�”}”(hj¤ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mûhjœïubj)�”}”(hhh]”jl)�”}”(hŒGIFF_XMIT_DST_RELEASE not taking into account underlying stacked devices”h]”hŒGIFF_XMIT_DST_RELEASE not taking into account underlying stacked devices”…”�”}”(hj»ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Múhj¸ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·ïh´MûhjÎëubjä)�”}”(hŒ4``IFF_L3MDEV_MASTER`` device is an L3 master device ”h]”(jê)�”}”(hŒ``IFF_L3MDEV_MASTER``”h]”jð)�”}”(hjÜïh]”hŒIFF_L3MDEV_MASTER”…”�”}”(hjÞïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MþhjÖïubj)�”}”(hhh]”jl)�”}”(hŒdevice is an L3 master device”h]”hŒdevice is an L3 master device”…”�”}”(hjõïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñïh´Mþhjòïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñïh´MþhjÎëubjä)�”}”(hŒ7``IFF_NO_QUEUE`` device can run without qdisc attached ”h]”(jê)�”}”(hŒ``IFF_NO_QUEUE``”h]”jð)�”}”(hjðh]”hŒ IFF_NO_QUEUE”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjðubj)�”}”(hhh]”jl)�”}”(hŒ%device can run without qdisc attached”h]”hŒ%device can run without qdisc attached”…”�”}”(hj.ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*ðh´Mhj+ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*ðh´MhjÎëubjä)�”}”(hŒ4``IFF_OPENVSWITCH`` device is a Open vSwitch master ”h]”(jê)�”}”(hŒ``IFF_OPENVSWITCH``”h]”jð)�”}”(hjNðh]”hŒIFF_OPENVSWITCH”…”�”}”(hjPðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjHðubj)�”}”(hhh]”jl)�”}”(hŒdevice is a Open vSwitch master”h]”hŒdevice is a Open vSwitch master”…”�”}”(hjgðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jcðh´Mhjdðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jcðh´MhjÎëubjä)�”}”(hŒ?``IFF_L3MDEV_SLAVE`` device is enslaved to an L3 master device ”h]”(jê)�”}”(hŒ``IFF_L3MDEV_SLAVE``”h]”jð)�”}”(hj‡ðh]”hŒIFF_L3MDEV_SLAVE”…”�”}”(hj‰ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj�ðubj)�”}”(hhh]”jl)�”}”(hŒ)device is enslaved to an L3 master device”h]”hŒ)device is enslaved to an L3 master device”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœðh´Mhj�ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœðh´MhjÎëubjä)�”}”(hŒ%``IFF_TEAM`` device is a team device ”h]”(jê)�”}”(hŒ ``IFF_TEAM``”h]”jð)�”}”(hjÀðh]”hŒIFF_TEAM”…”�”}”(hjÂðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjºðubj)�”}”(hhh]”jl)�”}”(hŒdevice is a team device”h]”hŒdevice is a team device”…”�”}”(hjÙðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕðh´M hjÖðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕðh´M hjÎëubjä)�”}”(hŒx``IFF_PHONY_HEADROOM`` the headroom value is controlled by an external entity (i.e. the master device for bridged veth) ”h]”(jê)�”}”(hŒ``IFF_PHONY_HEADROOM``”h]”jð)�”}”(hjùðh]”hŒIFF_PHONY_HEADROOM”…”�”}”(hjûðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjóðubj)�”}”(hhh]”jl)�”}”(hŒ`the headroom value is controlled by an external entity (i.e. the master device for bridged veth)”h]”hŒ`the headroom value is controlled by an external entity (i.e. the master device for bridged veth)”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjóðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñh´MhjÎëubjä)�”}”(hŒ)``IFF_MACSEC`` device is a MACsec device ”h]”(jê)�”}”(hŒ``IFF_MACSEC``”h]”jð)�”}”(hj3ñh]”hŒ IFF_MACSEC”…”�”}”(hj5ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj-ñubj)�”}”(hhh]”jl)�”}”(hŒdevice is a MACsec device”h]”hŒdevice is a MACsec device”…”�”}”(hjLñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHñh´MhjIñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHñh´MhjÎëubjä)�”}”(hŒA``IFF_NO_RX_HANDLER`` device doesn't support the rx_handler hook ”h]”(jê)�”}”(hŒ``IFF_NO_RX_HANDLER``”h]”jð)�”}”(hjlñh]”hŒIFF_NO_RX_HANDLER”…”�”}”(hjnñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjfñubj)�”}”(hhh]”jl)�”}”(hŒ*device doesn't support the rx_handler hook”h]”hŒ,device doesn’t support the rx_handler hook”…”�”}”(hj…ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�ñh´Mhj‚ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�ñh´MhjÎëubjä)�”}”(hŒ4``IFF_FAILOVER`` device is a failover master device ”h]”(jê)�”}”(hŒ``IFF_FAILOVER``”h]”jð)�”}”(hj¥ñh]”hŒ IFF_FAILOVER”…”�”}”(hj§ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjŸñubj)�”}”(hhh]”jl)�”}”(hŒ"device is a failover master device”h]”hŒ"device is a failover master device”…”�”}”(hj¾ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jºñh´Mhj»ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jºñh´MhjÎëubjä)�”}”(hŒG``IFF_FAILOVER_SLAVE`` device is lower dev of a failover master device ”h]”(jê)�”}”(hŒ``IFF_FAILOVER_SLAVE``”h]”jð)�”}”(hjÞñh]”hŒIFF_FAILOVER_SLAVE”…”�”}”(hjàñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjØñubj)�”}”(hhh]”jl)�”}”(hŒ/device is lower dev of a failover master device”h]”hŒ/device is lower dev of a failover master device”…”�”}”(hj÷ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóñh´Mhjôñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jóñh´MhjÎëubjä)�”}”(hŒI``IFF_L3MDEV_RX_HANDLER`` only invoke the rx handler of L3 master device ”h]”(jê)�”}”(hŒ``IFF_L3MDEV_RX_HANDLER``”h]”jð)�”}”(hjòh]”hŒIFF_L3MDEV_RX_HANDLER”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjòubj)�”}”(hhh]”jl)�”}”(hŒ.only invoke the rx handler of L3 master device”h]”hŒ.only invoke the rx handler of L3 master device”…”�”}”(hj0òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,òh´Mhj-òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,òh´MhjÎëubjä)�”}”(hŒ*``IFF_NO_ADDRCONF`` prevent ipv6 addrconf ”h]”(jê)�”}”(hŒ``IFF_NO_ADDRCONF``”h]”jð)�”}”(hjPòh]”hŒIFF_NO_ADDRCONF”…”�”}”(hjRòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjNòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjJòubj)�”}”(hhh]”jl)�”}”(hŒprevent ipv6 addrconf”h]”hŒprevent ipv6 addrconf”…”�”}”(hjiòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jeòh´M hjfòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jeòh´M hjÎëubjä)�”}”(hŒx``IFF_TX_SKB_NO_LINEAR`` device/driver is capable of xmitting frames with skb_headlen(skb) == 0 (data starts from frag0)”h]”(jê)�”}”(hŒ``IFF_TX_SKB_NO_LINEAR``”h]”jð)�”}”(hj‰òh]”hŒIFF_TX_SKB_NO_LINEAR”…”�”}”(hj‹òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡òubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M#hjƒòubj)�”}”(hhh]”jl)�”}”(hŒ_device/driver is capable of xmitting frames with skb_headlen(skb) == 0 (data starts from frag0)”h]”hŒ_device/driver is capable of xmitting frames with skb_headlen(skb) == 0 (data starts from frag0)”…”�”}”(hj¢òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jžòh´M#hjŸòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jžòh´M#hjÎëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj²ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjËòh]”hŒ Description”…”�”}”(hjÍòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÉòubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M&hj�Âh²hubjl)�”}”(hŒîThese are the :c:type:`struct net_device `, they are only set internally by drivers and used in the kernel. These flags are invisible to userspace; this means that the order of these flags can change during any kernel release.”h]”(hŒThese are the ”…”�”}”(hjáòh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct net_device `”h]”jð)�”}”(hjëòh]”hŒstruct net_device”…”�”}”(hjíòh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjéòubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ net_device”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¿hjáòubhŒ¸, they are only set internally by drivers and used in the kernel. These flags are invisible to userspace; this means that the order of these flags can change during any kernel release.”…”�”}”(hjáòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóh´M¿hj�Âh²hubjl)�”}”(hŒ‰You should add bitfield booleans after either net_device::priv_flags (hotpath) or ::threaded (slowpath) instead of extending these flags.”h]”hŒ‰You should add bitfield booleans after either net_device::priv_flags (hotpath) or ::threaded (slowpath) instead of extending these flags.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÄhj�Âh²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnet_device (C struct)”Œ c.net_device”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ net_device”h]”j )�”}”(hŒstruct net_device”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj;óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7óh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7óh²hh³jHóh´MÊubj3)�”}”(hŒ net_device”h]”j9)�”}”(hj5óh]”hŒ net_device”…”�”}”(hj[óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWóubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj7óh²hh³jHóh´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj3óh²hh³jHóh´MÊubah}”(h]”j.óah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jHóh´MÊhj0óh²hubjg)�”}”(hhh]”jl)�”}”(hŒThe DEVICE structure.”h]”hŒThe DEVICE structure.”…”�”}”(hj}óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M,hjzóh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj0óh²hh³jHóh´MÊubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j•ójŒj•ój�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX[j**Definition**:: struct net_device { ; struct { unsigned long priv_flags:32; unsigned long lltx:1; unsigned long netmem_tx:2; unsigned long pacing_offload:1; }; const struct net_device_ops *netdev_ops; const struct header_ops *header_ops; struct netdev_queue *_tx; netdev_features_t gso_partial_features; unsigned int real_num_tx_queues; unsigned int gso_max_size; unsigned int gso_ipv4_max_size; u16 gso_max_segs; s16 num_tc; unsigned int mtu; unsigned short needed_headroom; struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE]; #ifdef CONFIG_XPS; struct xps_dev_maps *xps_maps[XPS_MAPS_MAX]; #endif; #ifdef CONFIG_NETFILTER_EGRESS; struct nf_hook_entries *nf_hooks_egress; #endif; #ifdef CONFIG_NET_XGRESS; struct bpf_mprog_entry *tcx_egress; #endif; ; ; union { struct pcpu_lstats __percpu *lstats; struct pcpu_sw_netstats __percpu *tstats; struct pcpu_dstats __percpu *dstats; }; unsigned long state; unsigned int flags; unsigned short hard_header_len; enum netdev_stat_type pcpu_stat_type:8; netdev_features_t features; struct inet6_dev *ip6_ptr; ; ; struct bpf_prog *xdp_prog; struct list_head ptype_specific; int ifindex; unsigned int real_num_rx_queues; struct netdev_rx_queue *_rx; unsigned int gro_max_size; unsigned int gro_ipv4_max_size; rx_handler_func_t *rx_handler; void *rx_handler_data; possible_net_t nd_net; #ifdef CONFIG_NETPOLL; struct netpoll_info *npinfo; #endif; #ifdef CONFIG_NET_XGRESS; struct bpf_mprog_entry *tcx_ingress; #endif; ; char name[IFNAMSIZ]; struct netdev_name_node *name_node; struct dev_ifalias *ifalias; unsigned long mem_end; unsigned long mem_start; unsigned long base_addr; struct list_head dev_list; struct list_head napi_list; struct list_head unreg_list; #ifdef CONFIG_DEBUG_NET_SMALL_RTNL; struct list_head unreg_list_net; #endif; struct list_head close_list; struct list_head ptype_all; struct { struct list_head upper; struct list_head lower; } adj_list; xdp_features_t xdp_features; const struct xdp_metadata_ops *xdp_metadata_ops; const struct xsk_tx_metadata_ops *xsk_tx_metadata_ops; unsigned short gflags; unsigned short needed_tailroom; netdev_features_t hw_features; netdev_features_t wanted_features; netdev_features_t vlan_features; netdev_features_t hw_enc_features; netdev_features_t mpls_features; netdev_features_t mangleid_features; unsigned int min_mtu; unsigned int max_mtu; unsigned short type; unsigned char min_header_len; unsigned char name_assign_type; int group; struct net_device_stats stats; struct net_device_core_stats __percpu *core_stats; atomic_t carrier_up_count; atomic_t carrier_down_count; #ifdef CONFIG_WIRELESS_EXT; const struct iw_handler_def *wireless_handlers; #endif; const struct ethtool_ops *ethtool_ops; #ifdef CONFIG_NET_L3_MASTER_DEV; const struct l3mdev_ops *l3mdev_ops; #endif; #if IS_ENABLED(CONFIG_IPV6); const struct ndisc_ops *ndisc_ops; #endif; #ifdef CONFIG_XFRM_OFFLOAD; const struct xfrmdev_ops *xfrmdev_ops; #endif; #if IS_ENABLED(CONFIG_TLS_DEVICE); const struct tlsdev_ops *tlsdev_ops; #endif; unsigned int operstate; unsigned char link_mode; unsigned char if_port; unsigned char dma; unsigned char perm_addr[MAX_ADDR_LEN]; unsigned char addr_assign_type; unsigned char addr_len; unsigned char upper_level; unsigned char lower_level; u8 threaded; unsigned short neigh_priv_len; unsigned short dev_id; unsigned short dev_port; int irq; u32 priv_len; spinlock_t addr_list_lock; struct netdev_hw_addr_list uc; struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; #ifdef CONFIG_SYSFS; struct kset *queues_kset; #endif; #ifdef CONFIG_LOCKDEP; struct list_head unlink_list; #endif; unsigned int promiscuity; unsigned int allmulti; bool uc_promisc; struct list_head work_node; netdevice_tracker work_tracker; unsigned long work_pending; unsigned long work_core_pending; struct netdev_hw_addr_list rx_mode_addr_cache; struct timer_list rx_mode_retry_timer; unsigned int rx_mode_retry_count; #ifdef CONFIG_LOCKDEP; unsigned char nested_level; #endif; struct in_device *ip_ptr; struct hlist_head fib_nh_head; #if IS_ENABLED(CONFIG_VLAN_8021Q); struct vlan_info *vlan_info; #endif; #if IS_ENABLED(CONFIG_NET_DSA); struct dsa_port *dsa_ptr; #endif; #if IS_ENABLED(CONFIG_TIPC); struct tipc_bearer *tipc_ptr; #endif; #if IS_ENABLED(CONFIG_CFG80211); struct wireless_dev *ieee80211_ptr; #endif; #if IS_ENABLED(CONFIG_IEEE802154) || IS_ENABLED(CONFIG_6LOWPAN); struct wpan_dev *ieee802154_ptr; #endif; #if IS_ENABLED(CONFIG_MPLS_ROUTING); struct mpls_dev *mpls_ptr; #endif; #if IS_ENABLED(CONFIG_MCTP); struct mctp_dev *mctp_ptr; #endif; #if IS_ENABLED(CONFIG_INET_PSP); struct psp_dev *psp_dev; #endif; const unsigned char *dev_addr; unsigned int num_rx_queues; #define GRO_LEGACY_MAX_SIZE 65536u; #define GRO_MAX_SIZE (8 * 65535u); unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; #ifdef CONFIG_NETFILTER_INGRESS; struct nf_hook_entries *nf_hooks_ingress; #endif; unsigned char broadcast[MAX_ADDR_LEN]; #ifdef CONFIG_RFS_ACCEL; struct cpu_rmap *rx_cpu_rmap; #endif; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; unsigned int tx_queue_len; spinlock_t tx_global_lock; struct xdp_dev_bulk_queue __percpu *xdp_bulkq; #ifdef CONFIG_NET_SCHED; unsigned long qdisc_hash[1 << (( 4) - 1)]; #endif; struct timer_list watchdog_timer; int watchdog_timeo; spinlock_t watchdog_lock; bool watchdog_ref_held; u32 proto_down_reason; struct list_head todo_list; #ifdef CONFIG_PCPU_DEV_REFCNT; int __percpu *pcpu_refcnt; #else; refcount_t dev_refcnt; #endif; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; bool dismantle; bool moving_ns; bool rtnl_link_initializing; bool needs_free_netdev; void (*priv_destructor)(struct net_device *dev); void *ml_priv; enum netdev_ml_priv_type ml_priv_type; #if IS_ENABLED(CONFIG_GARP); struct garp_port *garp_port; #endif; #if IS_ENABLED(CONFIG_MRP); struct mrp_port *mrp_port; #endif; #if IS_ENABLED(CONFIG_NET_DROP_MONITOR); struct dm_hw_stat_delta *dm_private; #endif; struct device dev; const struct attribute_group *sysfs_groups[5]; const struct attribute_group *sysfs_rx_queue_group; const struct rtnl_link_ops *rtnl_link_ops; const struct netdev_stat_ops *stat_ops; const struct netdev_queue_mgmt_ops *queue_mgmt_ops; #define GSO_MAX_SEGS 65535u; #define GSO_LEGACY_MAX_SIZE 65536u; #define GSO_MAX_SIZE (8 * GSO_MAX_SEGS); #define TSO_LEGACY_MAX_SIZE 65536; #define TSO_MAX_SIZE UINT_MAX; unsigned int tso_max_size; #define TSO_MAX_SEGS U16_MAX; u16 tso_max_segs; #ifdef CONFIG_DCB; const struct dcbnl_rtnl_ops *dcbnl_ops; #endif; u8 prio_tc_map[TC_BITMASK + 1]; #if IS_ENABLED(CONFIG_FCOE); unsigned int fcoe_ddp_xid; #endif; #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO); struct netprio_map *priomap; #endif; struct phy_link_topology *link_topo; struct phy_device *phydev; struct sfp_bus *sfp_bus; struct lock_class_key *qdisc_tx_busylock; bool proto_down; bool irq_affinity_auto; bool rx_cpu_rmap_auto; unsigned long see_all_hwtstamp_requests:1; unsigned long change_proto_down:1; unsigned long netns_immutable:1; unsigned long fcoe_mtu:1; struct list_head net_notifier_list; #if IS_ENABLED(CONFIG_MACSEC); const struct macsec_ops *macsec_ops; #endif; const struct udp_tunnel_nic_info *udp_tunnel_nic_info; struct udp_tunnel_nic *udp_tunnel_nic; struct netdev_config *cfg; struct netdev_config *cfg_pending; struct ethtool_netdev_state *ethtool; struct bpf_xdp_entity xdp_state[__MAX_XDP_MODE]; #ifdef CONFIG_XDP_SOCKETS; struct hlist_head xsk_pools; #endif; u8 dev_addr_shadow[MAX_ADDR_LEN]; netdevice_tracker linkwatch_dev_tracker; netdevice_tracker watchdog_dev_tracker; netdevice_tracker dev_registered_tracker; struct rtnl_hw_stats64 *offload_xstats_l3; struct devlink_port *devlink_port; #if IS_ENABLED(CONFIG_DPLL); struct dpll_pin *dpll_pin; #endif; #if IS_ENABLED(CONFIG_PAGE_POOL); struct hlist_head page_pools; #endif; struct dim_irq_moder *irq_moder; u64 max_pacing_offload_horizon; struct napi_config *napi_config; u32 num_napi_configs; u32 napi_defer_hard_irqs; unsigned long gro_flush_timeout; bool up; bool request_ops_lock; struct mutex lock; #if IS_ENABLED(CONFIG_NET_SHAPER); struct net_shaper_hierarchy *net_shaper_hierarchy; #endif; struct hlist_head neighbours[NEIGH_NR_TABLES]; struct hwtstamp_provider *hwprov; u8 priv[]; }; **Members** ``{unnamed_struct}`` anonymous ``priv_flags`` flags invisible to userspace defined as bits, see enum netdev_priv_flags for the definitions ``lltx`` device supports lockless Tx. Deprecated for real HW drivers. Mainly used by logical interfaces, such as bonding and tunnels ``netmem_tx`` device netmem TX mode ``pacing_offload`` enable EDT pacing offload. ``netdev_ops`` Includes several pointers to callbacks, if one wants to override the ndo_*() functions ``header_ops`` Includes callbacks for creating,parsing,caching,etc of Layer 2 headers. ``_tx`` Array of TX queues ``gso_partial_features`` value(s) from NETIF_F_GSO\* ``real_num_tx_queues`` Number of TX queues currently active in device ``gso_max_size`` Maximum size of generic segmentation offload ``gso_ipv4_max_size`` Maximum size of generic segmentation offload, for IPv4. ``gso_max_segs`` Maximum number of segments that can be passed to the NIC for GSO ``num_tc`` Number of traffic classes in the net device ``mtu`` Interface MTU value ``needed_headroom`` Extra headroom the hardware may need, but not in all cases can this be guaranteed ``tc_to_txq`` XXX: need comments on this one ``xps_maps`` XXX: need comments on this one ``nf_hooks_egress`` netfilter hooks executed for egress packets ``tcx_egress`` BPF & clsact qdisc specific data for egress processing ``{unnamed_union}`` anonymous ``lstats`` Loopback statistics: packets, bytes ``tstats`` Tunnel statistics: RX/TX packets, RX/TX bytes ``dstats`` Dummy statistics: RX/TX/drop packets, RX/TX bytes ``state`` Generic network queuing layer state, see netdev_state_t ``flags`` Interface flags (a la BSD) ``hard_header_len`` Maximum hardware header length. ``pcpu_stat_type`` Type of device statistics which the core should allocate/free: none, lstats, tstats, dstats. none means the driver is handling statistics allocation/ freeing internally. ``features`` Currently active device features ``ip6_ptr`` IPv6 specific data ``xdp_prog`` XDP sockets filter program pointer ``ptype_specific`` Device-specific, protocol-specific packet handlers ``ifindex`` interface index ``real_num_rx_queues`` Number of RX queues currently active in device ``_rx`` Array of RX queues ``gro_max_size`` Maximum size of aggregated packet in generic receive offload (GRO) ``gro_ipv4_max_size`` Maximum size of aggregated packet in generic receive offload (GRO), for IPv4. ``rx_handler`` handler for received packets ``rx_handler_data`` XXX: need comments on this one ``nd_net`` Network namespace this network device is inside protected by **lock** ``npinfo`` XXX: need comments on this one ``tcx_ingress`` BPF & clsact qdisc specific data for ingress processing ``name`` This is the first field of the "visible" part of this structure (i.e. as seen by users in the "Space.c" file). It is the name of the interface. ``name_node`` Name hashlist node ``ifalias`` SNMP alias ``mem_end`` Shared memory end ``mem_start`` Shared memory start ``base_addr`` Device I/O address ``dev_list`` The global list of network devices ``napi_list`` List entry used for polling NAPI devices ``unreg_list`` List entry when we are unregistering the device; see the function unregister_netdev ``unreg_list_net`` List entry when we are unregistering the cross-netns device; see the function unregister_netdevice_queue_net() ``close_list`` List entry used when we are closing the device ``ptype_all`` Device-specific packet handlers for all protocols ``adj_list`` Directly linked devices, like slaves for bonding ``xdp_features`` XDP capability supported by the device ``xdp_metadata_ops`` Includes pointers to XDP metadata callbacks. ``xsk_tx_metadata_ops`` Includes pointers to AF_XDP TX metadata callbacks. ``gflags`` Global flags ( kept as legacy ) ``needed_tailroom`` Extra tailroom the hardware may need, but not in all cases can this be guaranteed. Some cases also use LL_MAX_HEADER instead to allocate the skb ``hw_features`` User-changeable features ``wanted_features`` User-requested features ``vlan_features`` Mask of features inheritable by VLAN devices ``hw_enc_features`` Mask of features inherited by encapsulating devices This field indicates what encapsulation offloads the hardware is capable of doing, and drivers will need to set them appropriately. ``mpls_features`` Mask of features inheritable by MPLS ``mangleid_features`` Mask of features requiring MANGLEID, will be disabled together with the latter. ``min_mtu`` Interface Minimum MTU value ``max_mtu`` Interface Maximum MTU value ``type`` Interface hardware type ``min_header_len`` Minimum hardware header length ``name_assign_type`` network interface name assignment type ``group`` The group the device belongs to ``stats`` Statistics struct, which was left as a legacy, use rtnl_link_stats64 instead ``core_stats`` core networking counters, do not use this in drivers ``carrier_up_count`` Number of times the carrier has been up ``carrier_down_count`` Number of times the carrier has been down ``wireless_handlers`` List of functions to handle Wireless Extensions, instead of ioctl, see for details. ``ethtool_ops`` Management operations ``l3mdev_ops`` Layer 3 master device operations ``ndisc_ops`` Includes callbacks for different IPv6 neighbour discovery handling. Necessary for e.g. 6LoWPAN. ``xfrmdev_ops`` Transformation offload operations ``tlsdev_ops`` Transport Layer Security offload operations ``operstate`` RFC2863 operstate ``link_mode`` Mapping policy to operstate ``if_port`` Selectable AUI, TP, ... ``dma`` DMA channel ``perm_addr`` Permanent hw address ``addr_assign_type`` Hw address assignment type ``addr_len`` Hardware address length ``upper_level`` Maximum depth level of upper devices. ``lower_level`` Maximum depth level of lower devices. ``threaded`` napi threaded state. ``neigh_priv_len`` Used in neigh_alloc() ``dev_id`` Used to differentiate devices that share the same link layer address ``dev_port`` Used to differentiate devices that share the same function ``irq`` Device IRQ number ``priv_len`` Size of the ->priv flexible array ``addr_list_lock`` XXX: need comments on this one ``uc`` unicast mac addresses ``mc`` multicast mac addresses ``dev_addrs`` list of device hw addresses ``queues_kset`` Group of all Kobjects in the Tx and RX queues ``unlink_list`` As netif_addr_lock() can be called recursively, keep a list of interfaces to be deleted. ``promiscuity`` Number of times the NIC is told to work in promiscuous mode; if it becomes 0 the NIC will exit promiscuous mode ``allmulti`` Counter, enables or disables allmulticast mode ``uc_promisc`` Counter that indicates promiscuous mode has been enabled due to the need to listen to additional unicast addresses in a device that does not implement ndo_set_rx_mode() ``work_node`` List entry for async netdev_work processing ``work_tracker`` Refcount tracker for async netdev_work ``work_pending`` Driver-defined pending netdev_work, passed to ndo_work() (see netdev_work_sched()) ``work_core_pending`` Core-defined pending netdev_work (NETDEV_WORK_*) ``rx_mode_addr_cache`` Recycled snapshot entries for rx_mode work ``rx_mode_retry_timer`` Timer that re-queues rx_mode work after failure ``rx_mode_retry_count`` Number of consecutive retries already scheduled ``nested_level`` Used as a parameter of spin_lock_nested() of dev->addr_list_lock. ``ip_ptr`` IPv4 specific data ``fib_nh_head`` nexthops associated with this netdev ``vlan_info`` VLAN info ``dsa_ptr`` dsa specific data ``tipc_ptr`` TIPC specific data ``ieee80211_ptr`` IEEE 802.11 specific data, assign before registering ``ieee802154_ptr`` IEEE 802.15.4 low-rate Wireless Personal Area Network device struct ``mpls_ptr`` mpls_dev struct pointer ``mctp_ptr`` MCTP specific data ``psp_dev`` PSP crypto device registered for this netdev ``dev_addr`` Hw address (before bcast, because most packets are unicast) ``num_rx_queues`` Number of RX queues allocated at register_netdev() time ``xdp_zc_max_segs`` Maximum number of segments supported by AF_XDP zero copy driver ``ingress_queue`` XXX: need comments on this one ``nf_hooks_ingress`` netfilter hooks executed for ingress packets ``broadcast`` hw bcast address ``rx_cpu_rmap`` CPU reverse-mapping for RX completion interrupts, indexed by RX queue number. Assigned by driver. This must only be set if the ndo_rx_flow_steer operation is defined ``index_hlist`` Device index hash chain ``num_tx_queues`` Number of TX queues allocated at alloc_netdev_mq() time ``qdisc`` Root qdisc from userspace point of view ``tx_queue_len`` Max frames per queue allowed ``tx_global_lock`` XXX: need comments on this one ``xdp_bulkq`` XDP device bulk queue ``qdisc_hash`` qdisc hash table ``watchdog_timer`` List of timers ``watchdog_timeo`` Represents the timeout that is used by the watchdog (see dev_watchdog()) ``watchdog_lock`` protect watchdog_ref_held ``watchdog_ref_held`` True if the watchdog device ref is taken. ``proto_down_reason`` reason a netdev interface is held down ``todo_list`` Delayed register/unregister ``pcpu_refcnt`` Number of references to this device ``dev_refcnt`` Number of references to this device ``refcnt_tracker`` Tracker directory for tracked references to this device ``link_watch_list`` XXX: need comments on this one ``reg_state`` Register/unregister state machine ``dismantle`` Device is going to be freed ``moving_ns`` device is changing netns, protected by **lock** ``rtnl_link_initializing`` Device being created, suppress events ``needs_free_netdev`` Should unregister perform free_netdev? ``priv_destructor`` Called from unregister ``ml_priv`` Mid-layer private ``ml_priv_type`` Mid-layer private type ``garp_port`` GARP ``mrp_port`` MRP ``dm_private`` Drop monitor private ``dev`` Class/net/name entry ``sysfs_groups`` Space for optional device, statistics and wireless sysfs groups ``sysfs_rx_queue_group`` Space for optional per-rx queue attributes ``rtnl_link_ops`` Rtnl_link_ops ``stat_ops`` Optional ops for queue-aware statistics ``queue_mgmt_ops`` Optional ops for queue management ``tso_max_size`` Device (as in HW) limit on the max TSO request size ``tso_max_segs`` Device (as in HW) limit on the max TSO segment count ``dcbnl_ops`` Data Center Bridging netlink ops ``prio_tc_map`` XXX: need comments on this one ``fcoe_ddp_xid`` Max exchange id for FCoE LRO by ddp ``priomap`` XXX: need comments on this one ``link_topo`` Physical link topology tracking attached PHYs ``phydev`` Physical device may attach itself for hardware timestamping ``sfp_bus`` attached :c:type:`struct sfp_bus ` structure. ``qdisc_tx_busylock`` lockdep class annotating Qdisc->busylock spinlock ``proto_down`` protocol port state information can be sent to the switch driver and used to set the phys state of the switch port. ``irq_affinity_auto`` driver wants the core to store and re-assign the IRQ affinity. Set by netif_enable_irq_affinity(), then the driver must create a persistent napi by netif_napi_add_config() and finally bind the napi to IRQ (via netif_napi_set_irq()). ``rx_cpu_rmap_auto`` driver wants the core to manage the ARFS rmap. Set by calling netif_enable_cpu_rmap(). ``see_all_hwtstamp_requests`` device wants to see calls to ndo_hwtstamp_set() for all timestamp requests regardless of source, even if those aren't HWTSTAMP_SOURCE_NETDEV ``change_proto_down`` device supports setting carrier via IFLA_PROTO_DOWN ``netns_immutable`` interface can't change network namespaces ``fcoe_mtu`` device supports maximum FCoE MTU, 2158 bytes ``net_notifier_list`` List of per-net netdev notifier block that follow this device when it is moved to another network namespace. ``macsec_ops`` MACsec offloading ops ``udp_tunnel_nic_info`` static structure describing the UDP tunnel offload capabilities of the device ``udp_tunnel_nic`` UDP tunnel offload state ``cfg`` net_device queue-related configuration ``cfg_pending`` same as **cfg** but when device is being actively reconfigured includes any changes to the configuration requested by the user, but which may or may not be rejected. ``ethtool`` ethtool related state ``xdp_state`` stores info on attached XDP BPF programs ``xsk_pools`` assigned AF_XDP pools, ops protected ``dev_addr_shadow`` Copy of **dev_addr** to catch direct writes. ``linkwatch_dev_tracker`` refcount tracker used by linkwatch. ``watchdog_dev_tracker`` refcount tracker used by watchdog. ``dev_registered_tracker`` tracker for reference held while registered ``offload_xstats_l3`` L3 HW stats for this netdevice. ``devlink_port`` Pointer to related devlink port structure. Assigned by a driver before netdev registration using SET_NETDEV_DEVLINK_PORT macro. This pointer is static during the time netdevice is registered. ``dpll_pin`` Pointer to the SyncE source pin of a DPLL subsystem, where the clock is recovered. ``page_pools`` page pools created for this netdevice ``irq_moder`` dim parameters used if IS_ENABLED(CONFIG_DIMLIB). ``max_pacing_offload_horizon`` max EDT offload horizon in nsec. ``napi_config`` An array of napi_config structures containing per-NAPI settings. ``num_napi_configs`` number of allocated NAPI config structs, always >= max(num_rx_queues, num_tx_queues). ``napi_defer_hard_irqs`` If not zero, provides a counter that would allow to avoid NIC hard IRQ, on busy queues. ``gro_flush_timeout`` timeout for GRO layer in NAPI ``up`` copy of **state**'s IFF_UP, but safe to read with just **lock**. May report false negatives while the device is being opened or closed (**lock** does not protect .ndo_open, or .ndo_close). ``request_ops_lock`` request the core to run all **netdev_ops** and **ethtool_ops** under the **lock**. ``lock`` netdev-scope lock, protects a small selection of fields. Should always be taken using netdev_lock() / netdev_unlock() helpers. Drivers are free to use it for other protection. For the drivers that implement shaper or queue API, the scope of this lock is expanded to cover most ndo/queue/ethtool/sysfs operations. Drivers may opt-in to this behavior by setting **request_ops_lock**. **lock** protection mixes with rtnl_lock in multiple ways, fields are either: - simply protected by the instance **lock**; - double protected - writers hold both locks, readers hold either; - ops protected - protected by the lock held around the NDOs and other callbacks, that is the instance lock on devices for which netdev_need_ops_lock() returns true, otherwise by rtnl_lock; - double ops protected - always protected by rtnl_lock but for devices for which netdev_need_ops_lock() returns true - also the instance lock. Simply protects: **gro_flush_timeout**, **napi_defer_hard_irqs**, **napi_list**, **net_shaper_hierarchy**, **reg_state**, **threaded** Double protects: **up**, **moving_ns**, **nd_net**, **xdp_features** Ops protects: **cfg**, **cfg_pending**, **ethtool**, **hwprov** Double ops protects: **real_num_rx_queues**, **real_num_tx_queues** Also protects some fields in: struct napi_struct, struct netdev_queue, struct netdev_rx_queue Ordering: - take after rtnl_lock - for the case of netdev queue leasing, the netdev-scope lock is taken for both the virtual and the physical device; to prevent deadlocks, the virtual device's lock must always be acquired before the physical device's (see netdev_nl_queue_create_doit) ``net_shaper_hierarchy`` data tracking the current shaper status see include/net/net_shapers.h ``neighbours`` List heads pointing to this device's neighbours' dev_list, one per address-family. ``hwprov`` Tracks which PTP performs hardware packet time stamping. ``priv`` Flexible array containing private data”•&h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¡óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�óubhŒ:”…”�”}”(hj�óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M0hj™óubj¶)�”}”(hX‘'struct net_device { ; struct { unsigned long priv_flags:32; unsigned long lltx:1; unsigned long netmem_tx:2; unsigned long pacing_offload:1; }; const struct net_device_ops *netdev_ops; const struct header_ops *header_ops; struct netdev_queue *_tx; netdev_features_t gso_partial_features; unsigned int real_num_tx_queues; unsigned int gso_max_size; unsigned int gso_ipv4_max_size; u16 gso_max_segs; s16 num_tc; unsigned int mtu; unsigned short needed_headroom; struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE]; #ifdef CONFIG_XPS; struct xps_dev_maps *xps_maps[XPS_MAPS_MAX]; #endif; #ifdef CONFIG_NETFILTER_EGRESS; struct nf_hook_entries *nf_hooks_egress; #endif; #ifdef CONFIG_NET_XGRESS; struct bpf_mprog_entry *tcx_egress; #endif; ; ; union { struct pcpu_lstats __percpu *lstats; struct pcpu_sw_netstats __percpu *tstats; struct pcpu_dstats __percpu *dstats; }; unsigned long state; unsigned int flags; unsigned short hard_header_len; enum netdev_stat_type pcpu_stat_type:8; netdev_features_t features; struct inet6_dev *ip6_ptr; ; ; struct bpf_prog *xdp_prog; struct list_head ptype_specific; int ifindex; unsigned int real_num_rx_queues; struct netdev_rx_queue *_rx; unsigned int gro_max_size; unsigned int gro_ipv4_max_size; rx_handler_func_t *rx_handler; void *rx_handler_data; possible_net_t nd_net; #ifdef CONFIG_NETPOLL; struct netpoll_info *npinfo; #endif; #ifdef CONFIG_NET_XGRESS; struct bpf_mprog_entry *tcx_ingress; #endif; ; char name[IFNAMSIZ]; struct netdev_name_node *name_node; struct dev_ifalias *ifalias; unsigned long mem_end; unsigned long mem_start; unsigned long base_addr; struct list_head dev_list; struct list_head napi_list; struct list_head unreg_list; #ifdef CONFIG_DEBUG_NET_SMALL_RTNL; struct list_head unreg_list_net; #endif; struct list_head close_list; struct list_head ptype_all; struct { struct list_head upper; struct list_head lower; } adj_list; xdp_features_t xdp_features; const struct xdp_metadata_ops *xdp_metadata_ops; const struct xsk_tx_metadata_ops *xsk_tx_metadata_ops; unsigned short gflags; unsigned short needed_tailroom; netdev_features_t hw_features; netdev_features_t wanted_features; netdev_features_t vlan_features; netdev_features_t hw_enc_features; netdev_features_t mpls_features; netdev_features_t mangleid_features; unsigned int min_mtu; unsigned int max_mtu; unsigned short type; unsigned char min_header_len; unsigned char name_assign_type; int group; struct net_device_stats stats; struct net_device_core_stats __percpu *core_stats; atomic_t carrier_up_count; atomic_t carrier_down_count; #ifdef CONFIG_WIRELESS_EXT; const struct iw_handler_def *wireless_handlers; #endif; const struct ethtool_ops *ethtool_ops; #ifdef CONFIG_NET_L3_MASTER_DEV; const struct l3mdev_ops *l3mdev_ops; #endif; #if IS_ENABLED(CONFIG_IPV6); const struct ndisc_ops *ndisc_ops; #endif; #ifdef CONFIG_XFRM_OFFLOAD; const struct xfrmdev_ops *xfrmdev_ops; #endif; #if IS_ENABLED(CONFIG_TLS_DEVICE); const struct tlsdev_ops *tlsdev_ops; #endif; unsigned int operstate; unsigned char link_mode; unsigned char if_port; unsigned char dma; unsigned char perm_addr[MAX_ADDR_LEN]; unsigned char addr_assign_type; unsigned char addr_len; unsigned char upper_level; unsigned char lower_level; u8 threaded; unsigned short neigh_priv_len; unsigned short dev_id; unsigned short dev_port; int irq; u32 priv_len; spinlock_t addr_list_lock; struct netdev_hw_addr_list uc; struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; #ifdef CONFIG_SYSFS; struct kset *queues_kset; #endif; #ifdef CONFIG_LOCKDEP; struct list_head unlink_list; #endif; unsigned int promiscuity; unsigned int allmulti; bool uc_promisc; struct list_head work_node; netdevice_tracker work_tracker; unsigned long work_pending; unsigned long work_core_pending; struct netdev_hw_addr_list rx_mode_addr_cache; struct timer_list rx_mode_retry_timer; unsigned int rx_mode_retry_count; #ifdef CONFIG_LOCKDEP; unsigned char nested_level; #endif; struct in_device *ip_ptr; struct hlist_head fib_nh_head; #if IS_ENABLED(CONFIG_VLAN_8021Q); struct vlan_info *vlan_info; #endif; #if IS_ENABLED(CONFIG_NET_DSA); struct dsa_port *dsa_ptr; #endif; #if IS_ENABLED(CONFIG_TIPC); struct tipc_bearer *tipc_ptr; #endif; #if IS_ENABLED(CONFIG_CFG80211); struct wireless_dev *ieee80211_ptr; #endif; #if IS_ENABLED(CONFIG_IEEE802154) || IS_ENABLED(CONFIG_6LOWPAN); struct wpan_dev *ieee802154_ptr; #endif; #if IS_ENABLED(CONFIG_MPLS_ROUTING); struct mpls_dev *mpls_ptr; #endif; #if IS_ENABLED(CONFIG_MCTP); struct mctp_dev *mctp_ptr; #endif; #if IS_ENABLED(CONFIG_INET_PSP); struct psp_dev *psp_dev; #endif; const unsigned char *dev_addr; unsigned int num_rx_queues; #define GRO_LEGACY_MAX_SIZE 65536u; #define GRO_MAX_SIZE (8 * 65535u); unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; #ifdef CONFIG_NETFILTER_INGRESS; struct nf_hook_entries *nf_hooks_ingress; #endif; unsigned char broadcast[MAX_ADDR_LEN]; #ifdef CONFIG_RFS_ACCEL; struct cpu_rmap *rx_cpu_rmap; #endif; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; unsigned int tx_queue_len; spinlock_t tx_global_lock; struct xdp_dev_bulk_queue __percpu *xdp_bulkq; #ifdef CONFIG_NET_SCHED; unsigned long qdisc_hash[1 << (( 4) - 1)]; #endif; struct timer_list watchdog_timer; int watchdog_timeo; spinlock_t watchdog_lock; bool watchdog_ref_held; u32 proto_down_reason; struct list_head todo_list; #ifdef CONFIG_PCPU_DEV_REFCNT; int __percpu *pcpu_refcnt; #else; refcount_t dev_refcnt; #endif; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; bool dismantle; bool moving_ns; bool rtnl_link_initializing; bool needs_free_netdev; void (*priv_destructor)(struct net_device *dev); void *ml_priv; enum netdev_ml_priv_type ml_priv_type; #if IS_ENABLED(CONFIG_GARP); struct garp_port *garp_port; #endif; #if IS_ENABLED(CONFIG_MRP); struct mrp_port *mrp_port; #endif; #if IS_ENABLED(CONFIG_NET_DROP_MONITOR); struct dm_hw_stat_delta *dm_private; #endif; struct device dev; const struct attribute_group *sysfs_groups[5]; const struct attribute_group *sysfs_rx_queue_group; const struct rtnl_link_ops *rtnl_link_ops; const struct netdev_stat_ops *stat_ops; const struct netdev_queue_mgmt_ops *queue_mgmt_ops; #define GSO_MAX_SEGS 65535u; #define GSO_LEGACY_MAX_SIZE 65536u; #define GSO_MAX_SIZE (8 * GSO_MAX_SEGS); #define TSO_LEGACY_MAX_SIZE 65536; #define TSO_MAX_SIZE UINT_MAX; unsigned int tso_max_size; #define TSO_MAX_SEGS U16_MAX; u16 tso_max_segs; #ifdef CONFIG_DCB; const struct dcbnl_rtnl_ops *dcbnl_ops; #endif; u8 prio_tc_map[TC_BITMASK + 1]; #if IS_ENABLED(CONFIG_FCOE); unsigned int fcoe_ddp_xid; #endif; #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO); struct netprio_map *priomap; #endif; struct phy_link_topology *link_topo; struct phy_device *phydev; struct sfp_bus *sfp_bus; struct lock_class_key *qdisc_tx_busylock; bool proto_down; bool irq_affinity_auto; bool rx_cpu_rmap_auto; unsigned long see_all_hwtstamp_requests:1; unsigned long change_proto_down:1; unsigned long netns_immutable:1; unsigned long fcoe_mtu:1; struct list_head net_notifier_list; #if IS_ENABLED(CONFIG_MACSEC); const struct macsec_ops *macsec_ops; #endif; const struct udp_tunnel_nic_info *udp_tunnel_nic_info; struct udp_tunnel_nic *udp_tunnel_nic; struct netdev_config *cfg; struct netdev_config *cfg_pending; struct ethtool_netdev_state *ethtool; struct bpf_xdp_entity xdp_state[__MAX_XDP_MODE]; #ifdef CONFIG_XDP_SOCKETS; struct hlist_head xsk_pools; #endif; u8 dev_addr_shadow[MAX_ADDR_LEN]; netdevice_tracker linkwatch_dev_tracker; netdevice_tracker watchdog_dev_tracker; netdevice_tracker dev_registered_tracker; struct rtnl_hw_stats64 *offload_xstats_l3; struct devlink_port *devlink_port; #if IS_ENABLED(CONFIG_DPLL); struct dpll_pin *dpll_pin; #endif; #if IS_ENABLED(CONFIG_PAGE_POOL); struct hlist_head page_pools; #endif; struct dim_irq_moder *irq_moder; u64 max_pacing_offload_horizon; struct napi_config *napi_config; u32 num_napi_configs; u32 napi_defer_hard_irqs; unsigned long gro_flush_timeout; bool up; bool request_ops_lock; struct mutex lock; #if IS_ENABLED(CONFIG_NET_SHAPER); struct net_shaper_hierarchy *net_shaper_hierarchy; #endif; struct hlist_head neighbours[NEIGH_NR_TABLES]; struct hwtstamp_provider *hwprov; u8 priv[]; };”h]”hX‘'struct net_device { ; struct { unsigned long priv_flags:32; unsigned long lltx:1; unsigned long netmem_tx:2; unsigned long pacing_offload:1; }; const struct net_device_ops *netdev_ops; const struct header_ops *header_ops; struct netdev_queue *_tx; netdev_features_t gso_partial_features; unsigned int real_num_tx_queues; unsigned int gso_max_size; unsigned int gso_ipv4_max_size; u16 gso_max_segs; s16 num_tc; unsigned int mtu; unsigned short needed_headroom; struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE]; #ifdef CONFIG_XPS; struct xps_dev_maps *xps_maps[XPS_MAPS_MAX]; #endif; #ifdef CONFIG_NETFILTER_EGRESS; struct nf_hook_entries *nf_hooks_egress; #endif; #ifdef CONFIG_NET_XGRESS; struct bpf_mprog_entry *tcx_egress; #endif; ; ; union { struct pcpu_lstats __percpu *lstats; struct pcpu_sw_netstats __percpu *tstats; struct pcpu_dstats __percpu *dstats; }; unsigned long state; unsigned int flags; unsigned short hard_header_len; enum netdev_stat_type pcpu_stat_type:8; netdev_features_t features; struct inet6_dev *ip6_ptr; ; ; struct bpf_prog *xdp_prog; struct list_head ptype_specific; int ifindex; unsigned int real_num_rx_queues; struct netdev_rx_queue *_rx; unsigned int gro_max_size; unsigned int gro_ipv4_max_size; rx_handler_func_t *rx_handler; void *rx_handler_data; possible_net_t nd_net; #ifdef CONFIG_NETPOLL; struct netpoll_info *npinfo; #endif; #ifdef CONFIG_NET_XGRESS; struct bpf_mprog_entry *tcx_ingress; #endif; ; char name[IFNAMSIZ]; struct netdev_name_node *name_node; struct dev_ifalias *ifalias; unsigned long mem_end; unsigned long mem_start; unsigned long base_addr; struct list_head dev_list; struct list_head napi_list; struct list_head unreg_list; #ifdef CONFIG_DEBUG_NET_SMALL_RTNL; struct list_head unreg_list_net; #endif; struct list_head close_list; struct list_head ptype_all; struct { struct list_head upper; struct list_head lower; } adj_list; xdp_features_t xdp_features; const struct xdp_metadata_ops *xdp_metadata_ops; const struct xsk_tx_metadata_ops *xsk_tx_metadata_ops; unsigned short gflags; unsigned short needed_tailroom; netdev_features_t hw_features; netdev_features_t wanted_features; netdev_features_t vlan_features; netdev_features_t hw_enc_features; netdev_features_t mpls_features; netdev_features_t mangleid_features; unsigned int min_mtu; unsigned int max_mtu; unsigned short type; unsigned char min_header_len; unsigned char name_assign_type; int group; struct net_device_stats stats; struct net_device_core_stats __percpu *core_stats; atomic_t carrier_up_count; atomic_t carrier_down_count; #ifdef CONFIG_WIRELESS_EXT; const struct iw_handler_def *wireless_handlers; #endif; const struct ethtool_ops *ethtool_ops; #ifdef CONFIG_NET_L3_MASTER_DEV; const struct l3mdev_ops *l3mdev_ops; #endif; #if IS_ENABLED(CONFIG_IPV6); const struct ndisc_ops *ndisc_ops; #endif; #ifdef CONFIG_XFRM_OFFLOAD; const struct xfrmdev_ops *xfrmdev_ops; #endif; #if IS_ENABLED(CONFIG_TLS_DEVICE); const struct tlsdev_ops *tlsdev_ops; #endif; unsigned int operstate; unsigned char link_mode; unsigned char if_port; unsigned char dma; unsigned char perm_addr[MAX_ADDR_LEN]; unsigned char addr_assign_type; unsigned char addr_len; unsigned char upper_level; unsigned char lower_level; u8 threaded; unsigned short neigh_priv_len; unsigned short dev_id; unsigned short dev_port; int irq; u32 priv_len; spinlock_t addr_list_lock; struct netdev_hw_addr_list uc; struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; #ifdef CONFIG_SYSFS; struct kset *queues_kset; #endif; #ifdef CONFIG_LOCKDEP; struct list_head unlink_list; #endif; unsigned int promiscuity; unsigned int allmulti; bool uc_promisc; struct list_head work_node; netdevice_tracker work_tracker; unsigned long work_pending; unsigned long work_core_pending; struct netdev_hw_addr_list rx_mode_addr_cache; struct timer_list rx_mode_retry_timer; unsigned int rx_mode_retry_count; #ifdef CONFIG_LOCKDEP; unsigned char nested_level; #endif; struct in_device *ip_ptr; struct hlist_head fib_nh_head; #if IS_ENABLED(CONFIG_VLAN_8021Q); struct vlan_info *vlan_info; #endif; #if IS_ENABLED(CONFIG_NET_DSA); struct dsa_port *dsa_ptr; #endif; #if IS_ENABLED(CONFIG_TIPC); struct tipc_bearer *tipc_ptr; #endif; #if IS_ENABLED(CONFIG_CFG80211); struct wireless_dev *ieee80211_ptr; #endif; #if IS_ENABLED(CONFIG_IEEE802154) || IS_ENABLED(CONFIG_6LOWPAN); struct wpan_dev *ieee802154_ptr; #endif; #if IS_ENABLED(CONFIG_MPLS_ROUTING); struct mpls_dev *mpls_ptr; #endif; #if IS_ENABLED(CONFIG_MCTP); struct mctp_dev *mctp_ptr; #endif; #if IS_ENABLED(CONFIG_INET_PSP); struct psp_dev *psp_dev; #endif; const unsigned char *dev_addr; unsigned int num_rx_queues; #define GRO_LEGACY_MAX_SIZE 65536u; #define GRO_MAX_SIZE (8 * 65535u); unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; #ifdef CONFIG_NETFILTER_INGRESS; struct nf_hook_entries *nf_hooks_ingress; #endif; unsigned char broadcast[MAX_ADDR_LEN]; #ifdef CONFIG_RFS_ACCEL; struct cpu_rmap *rx_cpu_rmap; #endif; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; unsigned int tx_queue_len; spinlock_t tx_global_lock; struct xdp_dev_bulk_queue __percpu *xdp_bulkq; #ifdef CONFIG_NET_SCHED; unsigned long qdisc_hash[1 << (( 4) - 1)]; #endif; struct timer_list watchdog_timer; int watchdog_timeo; spinlock_t watchdog_lock; bool watchdog_ref_held; u32 proto_down_reason; struct list_head todo_list; #ifdef CONFIG_PCPU_DEV_REFCNT; int __percpu *pcpu_refcnt; #else; refcount_t dev_refcnt; #endif; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; bool dismantle; bool moving_ns; bool rtnl_link_initializing; bool needs_free_netdev; void (*priv_destructor)(struct net_device *dev); void *ml_priv; enum netdev_ml_priv_type ml_priv_type; #if IS_ENABLED(CONFIG_GARP); struct garp_port *garp_port; #endif; #if IS_ENABLED(CONFIG_MRP); struct mrp_port *mrp_port; #endif; #if IS_ENABLED(CONFIG_NET_DROP_MONITOR); struct dm_hw_stat_delta *dm_private; #endif; struct device dev; const struct attribute_group *sysfs_groups[5]; const struct attribute_group *sysfs_rx_queue_group; const struct rtnl_link_ops *rtnl_link_ops; const struct netdev_stat_ops *stat_ops; const struct netdev_queue_mgmt_ops *queue_mgmt_ops; #define GSO_MAX_SEGS 65535u; #define GSO_LEGACY_MAX_SIZE 65536u; #define GSO_MAX_SIZE (8 * GSO_MAX_SEGS); #define TSO_LEGACY_MAX_SIZE 65536; #define TSO_MAX_SIZE UINT_MAX; unsigned int tso_max_size; #define TSO_MAX_SEGS U16_MAX; u16 tso_max_segs; #ifdef CONFIG_DCB; const struct dcbnl_rtnl_ops *dcbnl_ops; #endif; u8 prio_tc_map[TC_BITMASK + 1]; #if IS_ENABLED(CONFIG_FCOE); unsigned int fcoe_ddp_xid; #endif; #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO); struct netprio_map *priomap; #endif; struct phy_link_topology *link_topo; struct phy_device *phydev; struct sfp_bus *sfp_bus; struct lock_class_key *qdisc_tx_busylock; bool proto_down; bool irq_affinity_auto; bool rx_cpu_rmap_auto; unsigned long see_all_hwtstamp_requests:1; unsigned long change_proto_down:1; unsigned long netns_immutable:1; unsigned long fcoe_mtu:1; struct list_head net_notifier_list; #if IS_ENABLED(CONFIG_MACSEC); const struct macsec_ops *macsec_ops; #endif; const struct udp_tunnel_nic_info *udp_tunnel_nic_info; struct udp_tunnel_nic *udp_tunnel_nic; struct netdev_config *cfg; struct netdev_config *cfg_pending; struct ethtool_netdev_state *ethtool; struct bpf_xdp_entity xdp_state[__MAX_XDP_MODE]; #ifdef CONFIG_XDP_SOCKETS; struct hlist_head xsk_pools; #endif; u8 dev_addr_shadow[MAX_ADDR_LEN]; netdevice_tracker linkwatch_dev_tracker; netdevice_tracker watchdog_dev_tracker; netdevice_tracker dev_registered_tracker; struct rtnl_hw_stats64 *offload_xstats_l3; struct devlink_port *devlink_port; #if IS_ENABLED(CONFIG_DPLL); struct dpll_pin *dpll_pin; #endif; #if IS_ENABLED(CONFIG_PAGE_POOL); struct hlist_head page_pools; #endif; struct dim_irq_moder *irq_moder; u64 max_pacing_offload_horizon; struct napi_config *napi_config; u32 num_napi_configs; u32 napi_defer_hard_irqs; unsigned long gro_flush_timeout; bool up; bool request_ops_lock; struct mutex lock; #if IS_ENABLED(CONFIG_NET_SHAPER); struct net_shaper_hierarchy *net_shaper_hierarchy; #endif; struct hlist_head neighbours[NEIGH_NR_TABLES]; struct hwtstamp_provider *hwprov; u8 priv[]; };”…”�”}”hjºósbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M2hj™óubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjËóh]”hŒMembers”…”�”}”(hjÍóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÉóubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mghj™óubjß)�”}”(hhh]”(jä)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_struct}``”h]”jð)�”}”(hjêóh]”hŒ{unnamed_struct}”…”�”}”(hjìóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjèóubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Khjäóubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿóh´Khjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿóh´Khjáóubjä)�”}”(hŒl``priv_flags`` flags invisible to userspace defined as bits, see enum netdev_priv_flags for the definitions ”h]”(jê)�”}”(hŒ``priv_flags``”h]”jð)�”}”(hj#ôh]”hŒ priv_flags”…”�”}”(hj%ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4hjôubj)�”}”(hhh]”jl)�”}”(hŒ\flags invisible to userspace defined as bits, see enum netdev_priv_flags for the definitions”h]”hŒ\flags invisible to userspace defined as bits, see enum netdev_priv_flags for the definitions”…”�”}”(hj<ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M3hj9ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8ôh´M4hjáóubjä)�”}”(hŒ…``lltx`` device supports lockless Tx. Deprecated for real HW drivers. Mainly used by logical interfaces, such as bonding and tunnels ”h]”(jê)�”}”(hŒ``lltx``”h]”jð)�”}”(hj]ôh]”hŒlltx”…”�”}”(hj_ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M7hjWôubj)�”}”(hhh]”jl)�”}”(hŒ{device supports lockless Tx. Deprecated for real HW drivers. Mainly used by logical interfaces, such as bonding and tunnels”h]”hŒ{device supports lockless Tx. Deprecated for real HW drivers. Mainly used by logical interfaces, such as bonding and tunnels”…”�”}”(hjvôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M5hjsôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrôh´M7hjáóubjä)�”}”(hŒ$``netmem_tx`` device netmem TX mode ”h]”(jê)�”}”(hŒ ``netmem_tx``”h]”jð)�”}”(hj—ôh]”hŒ netmem_tx”…”�”}”(hj™ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M8hj‘ôubj)�”}”(hhh]”jl)�”}”(hŒdevice netmem TX mode”h]”hŒdevice netmem TX mode”…”�”}”(hj°ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬ôh´M8hj­ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬ôh´M8hjáóubjä)�”}”(hŒ.``pacing_offload`` enable EDT pacing offload. ”h]”(jê)�”}”(hŒ``pacing_offload``”h]”jð)�”}”(hjÐôh]”hŒpacing_offload”…”�”}”(hjÒôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M9hjÊôubj)�”}”(hhh]”jl)�”}”(hŒenable EDT pacing offload.”h]”hŒenable EDT pacing offload.”…”�”}”(hjéôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåôh´M9hjæôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåôh´M9hjáóubjä)�”}”(hŒf``netdev_ops`` Includes several pointers to callbacks, if one wants to override the ndo_*() functions ”h]”(jê)�”}”(hŒ``netdev_ops``”h]”jð)�”}”(hj õh]”hŒ netdev_ops”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mrhjõubj)�”}”(hhh]”jl)�”}”(hŒVIncludes several pointers to callbacks, if one wants to override the ndo_*() functions”h]”hŒVIncludes several pointers to callbacks, if one wants to override the ndo_*() functions”…”�”}”(hj"õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mqhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõh´Mrhjáóubjä)�”}”(hŒW``header_ops`` Includes callbacks for creating,parsing,caching,etc of Layer 2 headers. ”h]”(jê)�”}”(hŒ``header_ops``”h]”jð)�”}”(hjCõh]”hŒ header_ops”…”�”}”(hjEõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjAõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M|hj=õubj)�”}”(hhh]”jl)�”}”(hŒGIncludes callbacks for creating,parsing,caching,etc of Layer 2 headers.”h]”hŒGIncludes callbacks for creating,parsing,caching,etc of Layer 2 headers.”…”�”}”(hj\õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M{hjYõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jXõh´M|hjáóubjä)�”}”(hŒ``_tx`` Array of TX queues ”h]”(jê)�”}”(hŒ``_tx``”h]”jð)�”}”(hj}õh]”hŒ_tx”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÚhjwõubj)�”}”(hhh]”jl)�”}”(hŒArray of TX queues”h]”hŒArray of TX queues”…”�”}”(hj–õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’õh´MÚhj“õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’õh´MÚhjáóubjä)�”}”(hŒ5``gso_partial_features`` value(s) from NETIF_F_GSO\* ”h]”(jê)�”}”(hŒ``gso_partial_features``”h]”jð)�”}”(hj¶õh]”hŒgso_partial_features”…”�”}”(hj¸õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M^hj°õubj)�”}”(hhh]”jl)�”}”(hŒvalue(s) from NETIF_F_GSO\*”h]”hŒvalue(s) from NETIF_F_GSO*”…”�”}”(hjÏõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËõh´M^hjÌõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËõh´M^hjáóubjä)�”}”(hŒF``real_num_tx_queues`` Number of TX queues currently active in device ”h]”(jê)�”}”(hŒ``real_num_tx_queues``”h]”jð)�”}”(hjïõh]”hŒreal_num_tx_queues”…”�”}”(hjñõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÜhjéõubj)�”}”(hhh]”jl)�”}”(hŒ.Number of TX queues currently active in device”h]”hŒ.Number of TX queues currently active in device”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöh´MÜhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöh´MÜhjáóubjä)�”}”(hŒ>``gso_max_size`` Maximum size of generic segmentation offload ”h]”(jê)�”}”(hŒ``gso_max_size``”h]”jð)�”}”(hj(öh]”hŒ gso_max_size”…”�”}”(hj*öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj"öubj)�”}”(hhh]”jl)�”}”(hŒ,Maximum size of generic segmentation offload”h]”hŒ,Maximum size of generic segmentation offload”…”�”}”(hjAöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=öh´Mhj>öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=öh´Mhjáóubjä)�”}”(hŒN``gso_ipv4_max_size`` Maximum size of generic segmentation offload, for IPv4. ”h]”(jê)�”}”(hŒ``gso_ipv4_max_size``”h]”jð)�”}”(hjaöh]”hŒgso_ipv4_max_size”…”�”}”(hjcöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj[öubj)�”}”(hhh]”jl)�”}”(hŒ7Maximum size of generic segmentation offload, for IPv4.”h]”hŒ7Maximum size of generic segmentation offload, for IPv4.”…”�”}”(hjzöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjwöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvöh´Mhjáóubjä)�”}”(hŒR``gso_max_segs`` Maximum number of segments that can be passed to the NIC for GSO ”h]”(jê)�”}”(hŒ``gso_max_segs``”h]”jð)�”}”(hj›öh]”hŒ gso_max_segs”…”�”}”(hj�öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj•öubj)�”}”(hhh]”jl)�”}”(hŒ@Maximum number of segments that can be passed to the NIC for GSO”h]”hŒ@Maximum number of segments that can be passed to the NIC for GSO”…”�”}”(hj´öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj±öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°öh´Mhjáóubjä)�”}”(hŒ7``num_tc`` Number of traffic classes in the net device ”h]”(jê)�”}”(hŒ ``num_tc``”h]”jð)�”}”(hjÕöh]”hŒnum_tc”…”�”}”(hj×öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓöubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjÏöubj)�”}”(hhh]”jl)�”}”(hŒ+Number of traffic classes in the net device”h]”hŒ+Number of traffic classes in the net device”…”�”}”(hjîöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêöh´Mhjëöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêöh´Mhjáóubjä)�”}”(hŒ``mtu`` Interface MTU value ”h]”(jê)�”}”(hŒ``mtu``”h]”jð)�”}”(hj÷h]”hŒmtu”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‡hj÷ubj)�”}”(hhh]”jl)�”}”(hŒInterface MTU value”h]”hŒInterface MTU value”…”�”}”(hj'÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#÷h´M‡hj$÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#÷h´M‡hjáóubjä)�”}”(hŒf``needed_headroom`` Extra headroom the hardware may need, but not in all cases can this be guaranteed ”h]”(jê)�”}”(hŒ``needed_headroom``”h]”jð)�”}”(hjG÷h]”hŒneeded_headroom”…”�”}”(hjI÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hjA÷ubj)�”}”(hhh]”jl)�”}”(hŒQExtra headroom the hardware may need, but not in all cases can this be guaranteed”h]”hŒQExtra headroom the hardware may need, but not in all cases can this be guaranteed”…”�”}”(hj`÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŽhj]÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\÷h´M�hjáóubjä)�”}”(hŒ-``tc_to_txq`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ ``tc_to_txq``”h]”jð)�”}”(hj�÷h]”hŒ tc_to_txq”…”�”}”(hjƒ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj{÷ubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjš÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j–÷h´Mhj—÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–÷h´Mhjáóubjä)�”}”(hŒ,``xps_maps`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ ``xps_maps``”h]”jð)�”}”(hjº÷h]”hŒxps_maps”…”�”}”(hj¼÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mãhj´÷ubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjÓ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏ÷h´MãhjÐ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏ÷h´Mãhjáóubjä)�”}”(hŒ@``nf_hooks_egress`` netfilter hooks executed for egress packets ”h]”(jê)�”}”(hŒ``nf_hooks_egress``”h]”jð)�”}”(hjó÷h]”hŒnf_hooks_egress”…”�”}”(hjõ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Måhjí÷ubj)�”}”(hhh]”jl)�”}”(hŒ+netfilter hooks executed for egress packets”h]”hŒ+netfilter hooks executed for egress packets”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jøh´Måhj øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjí÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jøh´Måhjáóubjä)�”}”(hŒF``tcx_egress`` BPF & clsact qdisc specific data for egress processing ”h]”(jê)�”}”(hŒ``tcx_egress``”h]”jð)�”}”(hj,øh]”hŒ tcx_egress”…”�”}”(hj.øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mähj&øubj)�”}”(hhh]”jl)�”}”(hŒ6BPF & clsact qdisc specific data for egress processing”h]”hŒ6BPF & clsact qdisc specific data for egress processing”…”�”}”(hjEøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jAøh´MähjBøubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jAøh´Mähjáóubjä)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jê)�”}”(hŒ``{unnamed_union}``”h]”jð)�”}”(hjeøh]”hŒ{unnamed_union}”…”�”}”(hjgøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjcøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Khj_øubj)�”}”(hhh]”jl)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj~øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jzøh´Khj{øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jzøh´Khjáóubjä)�”}”(hŒ/``lstats`` Loopback statistics: packets, bytes ”h]”(jê)�”}”(hŒ ``lstats``”h]”jð)�”}”(hjžøh]”hŒlstats”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj˜øubj)�”}”(hhh]”jl)�”}”(hŒ#Loopback statistics: packets, bytes”h]”hŒ#Loopback statistics: packets, bytes”…”�”}”(hj·øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³øh´Mhj´øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³øh´Mhjáóubjä)�”}”(hŒ9``tstats`` Tunnel statistics: RX/TX packets, RX/TX bytes ”h]”(jê)�”}”(hŒ ``tstats``”h]”jð)�”}”(hj×øh]”hŒtstats”…”�”}”(hjÙøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjÑøubj)�”}”(hhh]”jl)�”}”(hŒ-Tunnel statistics: RX/TX packets, RX/TX bytes”h]”hŒ-Tunnel statistics: RX/TX packets, RX/TX bytes”…”�”}”(hjðøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jìøh´Mhjíøubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jìøh´Mhjáóubjä)�”}”(hŒ=``dstats`` Dummy statistics: RX/TX/drop packets, RX/TX bytes ”h]”(jê)�”}”(hŒ ``dstats``”h]”jð)�”}”(hjùh]”hŒdstats”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj ùubj)�”}”(hhh]”jl)�”}”(hŒ1Dummy statistics: RX/TX/drop packets, RX/TX bytes”h]”hŒ1Dummy statistics: RX/TX/drop packets, RX/TX bytes”…”�”}”(hj)ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%ùh´Mhj&ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%ùh´Mhjáóubjä)�”}”(hŒB``state`` Generic network queuing layer state, see netdev_state_t ”h]”(jê)�”}”(hŒ ``state``”h]”jð)�”}”(hjIùh]”hŒstate”…”�”}”(hjKùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjGùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MFhjCùubj)�”}”(hhh]”jl)�”}”(hŒ7Generic network queuing layer state, see netdev_state_t”h]”hŒ7Generic network queuing layer state, see netdev_state_t”…”�”}”(hjbùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^ùh´MFhj_ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^ùh´MFhjáóubjä)�”}”(hŒ%``flags`` Interface flags (a la BSD) ”h]”(jê)�”}”(hŒ ``flags``”h]”jð)�”}”(hj‚ùh]”hŒflags”…”�”}”(hj„ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M~hj|ùubj)�”}”(hhh]”jl)�”}”(hŒInterface flags (a la BSD)”h]”hŒInterface flags (a la BSD)”…”�”}”(hj›ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—ùh´M~hj˜ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—ùh´M~hjáóubjä)�”}”(hŒ4``hard_header_len`` Maximum hardware header length. ”h]”(jê)�”}”(hŒ``hard_header_len``”h]”jð)�”}”(hj»ùh]”hŒhard_header_len”…”�”}”(hj½ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‹hjµùubj)�”}”(hhh]”jl)�”}”(hŒMaximum hardware header length.”h]”hŒMaximum hardware header length.”…”�”}”(hjÔùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐùh´M‹hjÑùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐùh´M‹hjáóubjä)�”}”(hŒ½``pcpu_stat_type`` Type of device statistics which the core should allocate/free: none, lstats, tstats, dstats. none means the driver is handling statistics allocation/ freeing internally. ”h]”(jê)�”}”(hŒ``pcpu_stat_type``”h]”jð)�”}”(hjôùh]”hŒpcpu_stat_type”…”�”}”(hjöùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjîùubj)�”}”(hhh]”jl)�”}”(hŒ©Type of device statistics which the core should allocate/free: none, lstats, tstats, dstats. none means the driver is handling statistics allocation/ freeing internally.”h]”hŒ©Type of device statistics which the core should allocate/free: none, lstats, tstats, dstats. none means the driver is handling statistics allocation/ freeing internally.”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mÿhj úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j úh´Mhjáóubjä)�”}”(hŒ.``features`` Currently active device features ”h]”(jê)�”}”(hŒ ``features``”h]”jð)�”}”(hj.úh]”hŒfeatures”…”�”}”(hj0úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MRhj(úubj)�”}”(hhh]”jl)�”}”(hŒ Currently active device features”h]”hŒ Currently active device features”…”�”}”(hjGúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jCúh´MRhjDúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jCúh´MRhjáóubjä)�”}”(hŒ``ip6_ptr`` IPv6 specific data ”h]”(jê)�”}”(hŒ ``ip6_ptr``”h]”jð)�”}”(hjgúh]”hŒip6_ptr”…”�”}”(hjiúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjeúubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¼hjaúubj)�”}”(hhh]”jl)�”}”(hŒIPv6 specific data”h]”hŒIPv6 specific data”…”�”}”(hj€úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|úh´M¼hj}úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|úh´M¼hjáóubjä)�”}”(hŒ0``xdp_prog`` XDP sockets filter program pointer ”h]”(jê)�”}”(hŒ ``xdp_prog``”h]”jð)�”}”(hj úh]”hŒxdp_prog”…”�”}”(hj¢úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžúubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MËhjšúubj)�”}”(hhh]”jl)�”}”(hŒ"XDP sockets filter program pointer”h]”hŒ"XDP sockets filter program pointer”…”�”}”(hj¹úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµúh´MËhj¶úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµúh´MËhjáóubjä)�”}”(hŒF``ptype_specific`` Device-specific, protocol-specific packet handlers ”h]”(jê)�”}”(hŒ``ptype_specific``”h]”jð)�”}”(hjÙúh]”hŒptype_specific”…”�”}”(hjÛúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MOhjÓúubj)�”}”(hhh]”jl)�”}”(hŒ2Device-specific, protocol-specific packet handlers”h]”hŒ2Device-specific, protocol-specific packet handlers”…”�”}”(hjòúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîúh´MOhjïúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîúh´MOhjáóubjä)�”}”(hŒ``ifindex`` interface index ”h]”(jê)�”}”(hŒ ``ifindex``”h]”jð)�”}”(hjûh]”hŒifindex”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mbhj ûubj)�”}”(hhh]”jl)�”}”(hŒinterface index”h]”hŒinterface index”…”�”}”(hj+ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'ûh´Mbhj(ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'ûh´Mbhjáóubjä)�”}”(hŒF``real_num_rx_queues`` Number of RX queues currently active in device ”h]”(jê)�”}”(hŒ``real_num_rx_queues``”h]”jð)�”}”(hjKûh]”hŒreal_num_rx_queues”…”�”}”(hjMûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÊhjEûubj)�”}”(hhh]”jl)�”}”(hŒ.Number of RX queues currently active in device”h]”hŒ.Number of RX queues currently active in device”…”�”}”(hjdûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`ûh´MÊhjaûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`ûh´MÊhjáóubjä)�”}”(hŒ``_rx`` Array of RX queues ”h]”(jê)�”}”(hŒ``_rx``”h]”jð)�”}”(hj„ûh]”hŒ_rx”…”�”}”(hj†ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÇhj~ûubj)�”}”(hhh]”jl)�”}”(hŒArray of RX queues”h]”hŒArray of RX queues”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™ûh´MÇhjšûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™ûh´MÇhjáóubjä)�”}”(hŒT``gro_max_size`` Maximum size of aggregated packet in generic receive offload (GRO) ”h]”(jê)�”}”(hŒ``gro_max_size``”h]”jð)�”}”(hj½ûh]”hŒ gro_max_size”…”�”}”(hj¿ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MRhj·ûubj)�”}”(hhh]”jl)�”}”(hŒBMaximum size of aggregated packet in generic receive offload (GRO)”h]”hŒBMaximum size of aggregated packet in generic receive offload (GRO)”…”�”}”(hjÖûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MQhjÓûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒûh´MRhjáóubjä)�”}”(hŒd``gro_ipv4_max_size`` Maximum size of aggregated packet in generic receive offload (GRO), for IPv4. ”h]”(jê)�”}”(hŒ``gro_ipv4_max_size``”h]”jð)�”}”(hj÷ûh]”hŒgro_ipv4_max_size”…”�”}”(hjùûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MThjñûubj)�”}”(hhh]”jl)�”}”(hŒMMaximum size of aggregated packet in generic receive offload (GRO), for IPv4.”h]”hŒMMaximum size of aggregated packet in generic receive offload (GRO), for IPv4.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MShj üubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j üh´MThjáóubjä)�”}”(hŒ,``rx_handler`` handler for received packets ”h]”(jê)�”}”(hŒ``rx_handler``”h]”jð)�”}”(hj1üh]”hŒ rx_handler”…”�”}”(hj3üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÍhj+üubj)�”}”(hhh]”jl)�”}”(hŒhandler for received packets”h]”hŒhandler for received packets”…”�”}”(hjJüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jFüh´MÍhjGüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jFüh´MÍhjáóubjä)�”}”(hŒ3``rx_handler_data`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ``rx_handler_data``”h]”jð)�”}”(hjjüh]”hŒrx_handler_data”…”�”}”(hjlüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÎhjdüubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjƒüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüh´MÎhj€üubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jüh´MÎhjáóubjä)�”}”(hŒQ``nd_net`` Network namespace this network device is inside protected by **lock** ”h]”(jê)�”}”(hŒ ``nd_net``”h]”jð)�”}”(hj£üh]”hŒnd_net”…”�”}”(hj¥üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Múhj�üubj)�”}”(hhh]”jl)�”}”(hŒENetwork namespace this network device is inside protected by **lock**”h]”(hŒ=Network namespace this network device is inside protected by ”…”�”}”(hj¼üh²hh³Nh´Nubj›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hjÄüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mùhj¹üubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸üh´Múhjáóubjä)�”}”(hŒ*``npinfo`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ ``npinfo``”h]”jð)�”}”(hjëüh]”hŒnpinfo”…”�”}”(hjíüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Møhjåüubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jýh´Møhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jýh´Møhjáóubjä)�”}”(hŒH``tcx_ingress`` BPF & clsact qdisc specific data for ingress processing ”h]”(jê)�”}”(hŒ``tcx_ingress``”h]”jð)�”}”(hj$ýh]”hŒ tcx_ingress”…”�”}”(hj&ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÏhjýubj)�”}”(hhh]”jl)�”}”(hŒ7BPF & clsact qdisc specific data for ingress processing”h]”hŒ7BPF & clsact qdisc specific data for ingress processing”…”�”}”(hj=ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9ýh´MÏhj:ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9ýh´MÏhjáóubjä)�”}”(hŒš``name`` This is the first field of the "visible" part of this structure (i.e. as seen by users in the "Space.c" file). It is the name of the interface. ”h]”(jê)�”}”(hŒ``name``”h]”jð)�”}”(hj]ýh]”hŒname”…”�”}”(hj_ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M=hjWýubj)�”}”(hhh]”jl)�”}”(hŒ�This is the first field of the "visible" part of this structure (i.e. as seen by users in the "Space.c" file). It is the name of the interface.”h]”hŒ˜This is the first field of the “visibleâ€� part of this structure (i.e. as seen by users in the “Space.câ€� file). It is the name of the interface.”…”�”}”(hjvýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M;hjsýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrýh´M=hjáóubjä)�”}”(hŒ!``name_node`` Name hashlist node ”h]”(jê)�”}”(hŒ ``name_node``”h]”jð)�”}”(hj—ýh]”hŒ name_node”…”�”}”(hj™ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M?hj‘ýubj)�”}”(hhh]”jl)�”}”(hŒName hashlist node”h]”hŒName hashlist node”…”�”}”(hj°ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬ýh´M?hj­ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬ýh´M?hjáóubjä)�”}”(hŒ``ifalias`` SNMP alias ”h]”(jê)�”}”(hŒ ``ifalias``”h]”jð)�”}”(hjÐýh]”hŒifalias”…”�”}”(hjÒýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M@hjÊýubj)�”}”(hhh]”jl)�”}”(hŒ SNMP alias”h]”hŒ SNMP alias”…”�”}”(hjéýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåýh´M@hjæýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåýh´M@hjáóubjä)�”}”(hŒ``mem_end`` Shared memory end ”h]”(jê)�”}”(hŒ ``mem_end``”h]”jð)�”}”(hj þh]”hŒmem_end”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MAhjþubj)�”}”(hhh]”jl)�”}”(hŒShared memory end”h]”hŒShared memory end”…”�”}”(hj"þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþh´MAhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþh´MAhjáóubjä)�”}”(hŒ"``mem_start`` Shared memory start ”h]”(jê)�”}”(hŒ ``mem_start``”h]”jð)�”}”(hjBþh]”hŒ mem_start”…”�”}”(hjDþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MBhj<þubj)�”}”(hhh]”jl)�”}”(hŒShared memory start”h]”hŒShared memory start”…”�”}”(hj[þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jWþh´MBhjXþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jWþh´MBhjáóubjä)�”}”(hŒ!``base_addr`` Device I/O address ”h]”(jê)�”}”(hŒ ``base_addr``”h]”jð)�”}”(hj{þh]”hŒ base_addr”…”�”}”(hj}þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MChjuþubj)�”}”(hhh]”jl)�”}”(hŒDevice I/O address”h]”hŒDevice I/O address”…”�”}”(hj”þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�þh´MChj‘þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�þh´MChjáóubjä)�”}”(hŒ0``dev_list`` The global list of network devices ”h]”(jê)�”}”(hŒ ``dev_list``”h]”jð)�”}”(hj´þh]”hŒdev_list”…”�”}”(hj¶þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MGhj®þubj)�”}”(hhh]”jl)�”}”(hŒ"The global list of network devices”h]”hŒ"The global list of network devices”…”�”}”(hjÍþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉþh´MGhjÊþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉþh´MGhjáóubjä)�”}”(hŒ7``napi_list`` List entry used for polling NAPI devices ”h]”(jê)�”}”(hŒ ``napi_list``”h]”jð)�”}”(hjíþh]”hŒ napi_list”…”�”}”(hjïþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MHhjçþubj)�”}”(hhh]”jl)�”}”(hŒ(List entry used for polling NAPI devices”h]”hŒ(List entry used for polling NAPI devices”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿh´MHhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿh´MHhjáóubjä)�”}”(hŒd``unreg_list`` List entry when we are unregistering the device; see the function unregister_netdev ”h]”(jê)�”}”(hŒ``unreg_list``”h]”jð)�”}”(hj&ÿh]”hŒ unreg_list”…”�”}”(hj(ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj$ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MJhj ÿubj)�”}”(hhh]”jl)�”}”(hŒTList entry when we are unregistering the device; see the function unregister_netdev”h]”hŒTList entry when we are unregistering the device; see the function unregister_netdev”…”�”}”(hj?ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MIhj<ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j;ÿh´MJhjáóubjä)�”}”(hŒ‚``unreg_list_net`` List entry when we are unregistering the cross-netns device; see the function unregister_netdevice_queue_net() ”h]”(jê)�”}”(hŒ``unreg_list_net``”h]”jð)�”}”(hj`ÿh]”hŒunreg_list_net”…”�”}”(hjbÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MLhjZÿubj)�”}”(hhh]”jl)�”}”(hŒnList entry when we are unregistering the cross-netns device; see the function unregister_netdevice_queue_net()”h]”hŒnList entry when we are unregistering the cross-netns device; see the function unregister_netdevice_queue_net()”…”�”}”(hjyÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MKhjvÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³juÿh´MLhjáóubjä)�”}”(hŒ>``close_list`` List entry used when we are closing the device ”h]”(jê)�”}”(hŒ``close_list``”h]”jð)�”}”(hjšÿh]”hŒ close_list”…”�”}”(hjœÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MMhj”ÿubj)�”}”(hhh]”jl)�”}”(hŒ.List entry used when we are closing the device”h]”hŒ.List entry used when we are closing the device”…”�”}”(hj³ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯ÿh´MMhj°ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯ÿh´MMhjáóubjä)�”}”(hŒ@``ptype_all`` Device-specific packet handlers for all protocols ”h]”(jê)�”}”(hŒ ``ptype_all``”h]”jð)�”}”(hjÓÿh]”hŒ ptype_all”…”�”}”(hjÕÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MNhjÍÿubj)�”}”(hhh]”jl)�”}”(hŒ1Device-specific packet handlers for all protocols”h]”hŒ1Device-specific packet handlers for all protocols”…”�”}”(hjìÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèÿh´MNhjéÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèÿh´MNhjáóubjä)�”}”(hŒ>``adj_list`` Directly linked devices, like slaves for bonding ”h]”(jê)�”}”(hŒ ``adj_list``”h]”jð)�”}”(hj h]”hŒadj_list”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MQhjubj)�”}”(hhh]”jl)�”}”(hŒ0Directly linked devices, like slaves for bonding”h]”hŒ0Directly linked devices, like slaves for bonding”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!h´MQhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!h´MQhjáóubjä)�”}”(hŒ8``xdp_features`` XDP capability supported by the device ”h]”(jê)�”}”(hŒ``xdp_features``”h]”jð)�”}”(hjEh]”hŒ xdp_features”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj?ubj)�”}”(hhh]”jl)�”}”(hŒ&XDP capability supported by the device”h]”hŒ&XDP capability supported by the device”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZh´Mhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZh´Mhjáóubjä)�”}”(hŒB``xdp_metadata_ops`` Includes pointers to XDP metadata callbacks. ”h]”(jê)�”}”(hŒ``xdp_metadata_ops``”h]”jð)�”}”(hj~h]”hŒxdp_metadata_ops”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mshjxubj)�”}”(hhh]”jl)�”}”(hŒ,Includes pointers to XDP metadata callbacks.”h]”hŒ,Includes pointers to XDP metadata callbacks.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“h´Mshj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“h´Mshjáóubjä)�”}”(hŒK``xsk_tx_metadata_ops`` Includes pointers to AF_XDP TX metadata callbacks. ”h]”(jê)�”}”(hŒ``xsk_tx_metadata_ops``”h]”jð)�”}”(hj·h]”hŒxsk_tx_metadata_ops”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mthj±ubj)�”}”(hhh]”jl)�”}”(hŒ2Includes pointers to AF_XDP TX metadata callbacks.”h]”hŒ2Includes pointers to AF_XDP TX metadata callbacks.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌh´MthjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌh´Mthjáóubjä)�”}”(hŒ+``gflags`` Global flags ( kept as legacy ) ”h]”(jê)�”}”(hŒ ``gflags``”h]”jð)�”}”(hjðh]”hŒgflags”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M€hjêubj)�”}”(hhh]”jl)�”}”(hŒGlobal flags ( kept as legacy )”h]”hŒGlobal flags ( kept as legacy )”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M€hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M€hjáóubjä)�”}”(hŒ¥``needed_tailroom`` Extra tailroom the hardware may need, but not in all cases can this be guaranteed. Some cases also use LL_MAX_HEADER instead to allocate the skb ”h]”(jê)�”}”(hŒ``needed_tailroom``”h]”jð)�”}”(hj)h]”hŒneeded_tailroom”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M’hj#ubj)�”}”(hhh]”jl)�”}”(hŒ�Extra tailroom the hardware may need, but not in all cases can this be guaranteed. Some cases also use LL_MAX_HEADER instead to allocate the skb”h]”hŒ�Extra tailroom the hardware may need, but not in all cases can this be guaranteed. Some cases also use LL_MAX_HEADER instead to allocate the skb”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>h´M’hjáóubjä)�”}”(hŒ)``hw_features`` User-changeable features ”h]”(jê)�”}”(hŒ``hw_features``”h]”jð)�”}”(hjch]”hŒ hw_features”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MShj]ubj)�”}”(hhh]”jl)�”}”(hŒUser-changeable features”h]”hŒUser-changeable features”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxh´MShjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxh´MShjáóubjä)�”}”(hŒ,``wanted_features`` User-requested features ”h]”(jê)�”}”(hŒ``wanted_features``”h]”jð)�”}”(hjœh]”hŒwanted_features”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MUhj–ubj)�”}”(hhh]”jl)�”}”(hŒUser-requested features”h]”hŒUser-requested features”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±h´MUhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±h´MUhjáóubjä)�”}”(hŒ?``vlan_features`` Mask of features inheritable by VLAN devices ”h]”(jê)�”}”(hŒ``vlan_features``”h]”jð)�”}”(hjÕh]”hŒ vlan_features”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MVhjÏubj)�”}”(hhh]”jl)�”}”(hŒ,Mask of features inheritable by VLAN devices”•(h]”hŒ,Mask of features inheritable by VLAN devices”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêh´MVhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêh´MVhjáóubjä)�”}”(hŒÌ``hw_enc_features`` Mask of features inherited by encapsulating devices This field indicates what encapsulation offloads the hardware is capable of doing, and drivers will need to set them appropriately. ”h]”(jê)�”}”(hŒ``hw_enc_features``”h]”jð)�”}”(hjh]”hŒhw_enc_features”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M[hjubj)�”}”(hhh]”jl)�”}”(hŒ·Mask of features inherited by encapsulating devices This field indicates what encapsulation offloads the hardware is capable of doing, and drivers will need to set them appropriately.”h]”hŒ·Mask of features inherited by encapsulating devices This field indicates what encapsulation offloads the hardware is capable of doing, and drivers will need to set them appropriately.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MXhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#h´M[hjáóubjä)�”}”(hŒ7``mpls_features`` Mask of features inheritable by MPLS ”h]”(jê)�”}”(hŒ``mpls_features``”h]”jð)�”}”(hjHh]”hŒ mpls_features”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M]hjBubj)�”}”(hhh]”jl)�”}”(hŒ$Mask of features inheritable by MPLS”h]”hŒ$Mask of features inheritable by MPLS”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]h´M]hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]h´M]hjáóubjä)�”}”(hŒf``mangleid_features`` Mask of features requiring MANGLEID, will be disabled together with the latter. ”h]”(jê)�”}”(hŒ``mangleid_features``”h]”jð)�”}”(hj�h]”hŒmangleid_features”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M`hj{ubj)�”}”(hhh]”jl)�”}”(hŒOMask of features requiring MANGLEID, will be disabled together with the latter.”h]”hŒOMask of features requiring MANGLEID, will be disabled together with the latter.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M_hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–h´M`hjáóubjä)�”}”(hŒ(``min_mtu`` Interface Minimum MTU value ”h]”(jê)�”}”(hŒ ``min_mtu``”h]”jð)�”}”(hj»h]”hŒmin_mtu”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mˆhjµubj)�”}”(hhh]”jl)�”}”(hŒInterface Minimum MTU value”h]”hŒInterface Minimum MTU value”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐh´MˆhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐh´Mˆhjáóubjä)�”}”(hŒ(``max_mtu`` Interface Maximum MTU value ”h]”(jê)�”}”(hŒ ``max_mtu``”h]”jð)�”}”(hjôh]”hŒmax_mtu”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‰hjîubj)�”}”(hhh]”jl)�”}”(hŒInterface Maximum MTU value”h]”hŒInterface Maximum MTU value”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M‰hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M‰hjáóubjä)�”}”(hŒ!``type`` Interface hardware type ”h]”(jê)�”}”(hŒ``type``”h]”jð)�”}”(hj-h]”hŒtype”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŠhj'ubj)�”}”(hhh]”jl)�”}”(hŒInterface hardware type”h]”hŒInterface hardware type”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jBh´MŠhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jBh´MŠhjáóubjä)�”}”(hŒ2``min_header_len`` Minimum hardware header length ”h]”(jê)�”}”(hŒ``min_header_len``”h]”jð)�”}”(hjfh]”hŒmin_header_len”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŒhj`ubj)�”}”(hhh]”jl)�”}”(hŒMinimum hardware header length”h]”hŒMinimum hardware header length”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{h´MŒhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{h´MŒhjáóubjä)�”}”(hŒ<``name_assign_type`` network interface name assignment type ”h]”(jê)�”}”(hŒ``name_assign_type``”h]”jð)�”}”(hjŸh]”hŒname_assign_type”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¢hj™ubj)�”}”(hhh]”jl)�”}”(hŒ&network interface name assignment type”h]”hŒ&network interface name assignment type”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´h´M¢hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´h´M¢hjáóubjä)�”}”(hŒ*``group`` The group the device belongs to ”h]”(jê)�”}”(hŒ ``group``”h]”jð)�”}”(hjØh]”hŒgroup”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MchjÒubj)�”}”(hhh]”jl)�”}”(hŒThe group the device belongs to”h]”hŒThe group the device belongs to”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jíh´Mchjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jíh´Mchjáóubjä)�”}”(hŒW``stats`` Statistics struct, which was left as a legacy, use rtnl_link_stats64 instead ”h]”(jê)�”}”(hŒ ``stats``”h]”jð)�”}”(hjh]”hŒstats”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mfhj ubj)�”}”(hhh]”jl)�”}”(hŒLStatistics struct, which was left as a legacy, use rtnl_link_stats64 instead”h]”hŒLStatistics struct, which was left as a legacy, use rtnl_link_stats64 instead”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mehj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j&h´Mfhjáóubjä)�”}”(hŒD``core_stats`` core networking counters, do not use this in drivers ”h]”(jê)�”}”(hŒ``core_stats``”h]”jð)�”}”(hjKh]”hŒ core_stats”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MihjEubj)�”}”(hhh]”jl)�”}”(hŒ4core networking counters, do not use this in drivers”h]”hŒ4core networking counters, do not use this in drivers”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`h´Mihjáóubjä)�”}”(hŒ=``carrier_up_count`` Number of times the carrier has been up ”h]”(jê)�”}”(hŒ``carrier_up_count``”h]”jð)�”}”(hj…h]”hŒcarrier_up_count”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mjhjubj)�”}”(hhh]”jl)�”}”(hŒ'Number of times the carrier has been up”h]”hŒ'Number of times the carrier has been up”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jšh´Mjhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšh´Mjhjáóubjä)�”}”(hŒA``carrier_down_count`` Number of times the carrier has been down ”h]”(jê)�”}”(hŒ``carrier_down_count``”h]”jð)�”}”(hj¾h]”hŒcarrier_down_count”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mkhj¸ubj)�”}”(hhh]”jl)�”}”(hŒ)Number of times the carrier has been down”h]”hŒ)Number of times the carrier has been down”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓh´MkhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓh´Mkhjáóubjä)�”}”(hŒ}``wireless_handlers`` List of functions to handle Wireless Extensions, instead of ioctl, see for details. ”h]”(jê)�”}”(hŒ``wireless_handlers``”h]”jð)�”}”(hj÷h]”hŒwireless_handlers”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mohjñubj)�”}”(hhh]”jl)�”}”(hŒfList of functions to handle Wireless Extensions, instead of ioctl, see for details.”h]”hŒfList of functions to handle Wireless Extensions, instead of ioctl, see for details.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mmhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Mohjáóubjä)�”}”(hŒ&``ethtool_ops`` Management operations ”h]”(jê)�”}”(hŒ``ethtool_ops``”h]”jð)�”}”(hj1h]”hŒ ethtool_ops”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Muhj+ubj)�”}”(hhh]”jl)�”}”(hŒManagement operations”h]”hŒManagement operations”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jFh´MuhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jFh´Muhjáóubjä)�”}”(hŒ0``l3mdev_ops`` Layer 3 master device operations ”h]”(jê)�”}”(hŒ``l3mdev_ops``”h]”jð)�”}”(hjjh]”hŒ l3mdev_ops”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mvhjdubj)�”}”(hhh]”jl)�”}”(hŒ Layer 3 master device operations”h]”hŒ Layer 3 master device operations”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mvhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mvhjáóubjä)�”}”(hŒn``ndisc_ops`` Includes callbacks for different IPv6 neighbour discovery handling. Necessary for e.g. 6LoWPAN. ”h]”(jê)�”}”(hŒ ``ndisc_ops``”h]”jð)�”}”(hj£h]”hŒ ndisc_ops”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mxhj�ubj)�”}”(hhh]”jl)�”}”(hŒ_Includes callbacks for different IPv6 neighbour discovery handling. Necessary for e.g. 6LoWPAN.”h]”hŒ_Includes callbacks for different IPv6 neighbour discovery handling. Necessary for e.g. 6LoWPAN.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mwhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸h´Mxhjáóubjä)�”}”(hŒ2``xfrmdev_ops`` Transformation offload operations ”h]”(jê)�”}”(hŒ``xfrmdev_ops``”h]”jð)�”}”(hjÝh]”hŒ xfrmdev_ops”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Myhj×ubj)�”}”(hhh]”jl)�”}”(hŒ!Transformation offload operations”h]”hŒ!Transformation offload operations”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jòh´Myhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jòh´Myhjáóubjä)�”}”(hŒ;``tlsdev_ops`` Transport Layer Security offload operations ”h]”(jê)�”}”(hŒ``tlsdev_ops``”h]”jð)�”}”(hjh]”hŒ tlsdev_ops”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mzhjubj)�”}”(hhh]”jl)�”}”(hŒ+Transport Layer Security offload operations”h]”hŒ+Transport Layer Security offload operations”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+h´Mzhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+h´Mzhjáóubjä)�”}”(hŒ ``operstate`` RFC2863 operstate ”h]”(jê)�”}”(hŒ ``operstate``”h]”jð)�”}”(hjOh]”hŒ operstate”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MƒhjIubj)�”}”(hhh]”jl)�”}”(hŒRFC2863 operstate”h]”hŒRFC2863 operstate”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdh´Mƒhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdh´Mƒhjáóubjä)�”}”(hŒ*``link_mode`` Mapping policy to operstate ”h]”(jê)�”}”(hŒ ``link_mode``”h]”jð)�”}”(hjˆh]”hŒ link_mode”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M„hj‚ubj)�”}”(hhh]”jl)�”}”(hŒMapping policy to operstate”h]”hŒMapping policy to operstate”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´M„hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´M„hjáóubjä)�”}”(hŒ$``if_port`` Selectable AUI, TP, ... ”h]”(jê)�”}”(hŒ ``if_port``”h]”jð)�”}”(hjÁh]”hŒif_port”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M…hj»ubj)�”}”(hhh]”jl)�”}”(hŒSelectable AUI, TP, ...”h]”hŒSelectable AUI, TP, ...”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖh´M…hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖh´M…hjáóubjä)�”}”(hŒ``dma`` DMA channel ”h]”(jê)�”}”(hŒ``dma``”h]”jð)�”}”(hjúh]”hŒdma”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M†hjôubj)�”}”(hhh]”jl)�”}”(hŒ DMA channel”h]”hŒ DMA channel”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M†hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M†hjáóubjä)�”}”(hŒ#``perm_addr`` Permanent hw address ”h]”(jê)�”}”(hŒ ``perm_addr``”h]”jð)�”}”(hj3h]”hŒ perm_addr”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M–hj-ubj)�”}”(hhh]”jl)�”}”(hŒPermanent hw address”h]”hŒPermanent hw address”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHh´M–hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHh´M–hjáóubjä)�”}”(hŒ0``addr_assign_type`` Hw address assignment type ”h]”(jê)�”}”(hŒ``addr_assign_type``”h]”jð)�”}”(hjlh]”hŒaddr_assign_type”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M—hjfubj)�”}”(hhh]”jl)�”}”(hŒHw address assignment type”h]”hŒHw address assignment type”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´M—hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´M—hjáóubjä)�”}”(hŒ%``addr_len`` Hardware address length ”h]”(jê)�”}”(hŒ ``addr_len``”h]”jð)�”}”(hj¥h]”hŒaddr_len”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M˜hjŸubj)�”}”(hhh]”jl)�”}”(hŒHardware address length”h]”hŒHardware address length”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jºh´M˜hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jºh´M˜hjáóubjä)�”}”(hŒ6``upper_level`` Maximum depth level of upper devices. ”h]”(jê)�”}”(hŒ``upper_level``”h]”jð)�”}”(hjÞh]”hŒ upper_level”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M™hjØubj)�”}”(hhh]”jl)�”}”(hŒ%Maximum depth level of upper devices.”h]”hŒ%Maximum depth level of upper devices.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóh´M™hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jóh´M™hjáóubjä)�”}”(hŒ6``lower_level`` Maximum depth level of lower devices. ”h]”(jê)�”}”(hŒ``lower_level``”h]”jð)�”}”(hjh]”hŒ lower_level”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mšhjubj)�”}”(hhh]”jl)�”}”(hŒ%Maximum depth level of lower devices.”h]”hŒ%Maximum depth level of lower devices.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,h´Mšhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,h´Mšhjáóubjä)�”}”(hŒ"``threaded`` napi threaded state. ”h]”(jê)�”}”(hŒ ``threaded``”h]”jð)�”}”(hjPh]”hŒthreaded”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M›hjJubj)�”}”(hhh]”jl)�”}”(hŒnapi threaded state.”h]”hŒnapi threaded state.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jeh´M›hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jeh´M›hjáóubjä)�”}”(hŒ)``neigh_priv_len`` Used in neigh_alloc() ”h]”(jê)�”}”(hŒ``neigh_priv_len``”h]”jð)�”}”(hj‰h]”hŒneigh_priv_len”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mœhjƒubj)�”}”(hhh]”jl)�”}”(hŒUsed in neigh_alloc()”h]”hŒUsed in neigh_alloc()”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jžh´MœhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jžh´Mœhjáóubjä)�”}”(hŒP``dev_id`` Used to differentiate devices that share the same link layer address ”h]”(jê)�”}”(hŒ ``dev_id``”h]”jð)�”}”(hjÂh]”hŒdev_id”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mžhj¼ubj)�”}”(hhh]”jl)�”}”(hŒDUsed to differentiate devices that share the same link layer address”h]”hŒDUsed to differentiate devices that share the same link layer address”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j×h´Mžhjáóubjä)�”}”(hŒH``dev_port`` Used to differentiate devices that share the same function ”h]”(jê)�”}”(hŒ ``dev_port``”h]”jð)�”}”(hjüh]”hŒdev_port”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjöubj)�”}”(hhh]”jl)�”}”(hŒ:Used to differentiate devices that share the same function”h]”hŒ:Used to differentiate devices that share the same function”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŸhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M hjáóubjä)�”}”(hŒ``irq`` Device IRQ number ”h]”(jê)�”}”(hŒ``irq``”h]”jð)�”}”(hj6 h]”hŒirq”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MDhj0 ubj)�”}”(hhh]”jl)�”}”(hŒDevice IRQ number”h]”hŒDevice IRQ number”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jK h´MDhjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jK h´MDhjáóubjä)�”}”(hŒ/``priv_len`` Size of the ->priv flexible array ”h]”(jê)�”}”(hŒ ``priv_len``”h]”jð)�”}”(hjo h]”hŒpriv_len”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hji ubj)�”}”(hhh]”jl)�”}”(hŒ!Size of the ->priv flexible array”h]”hŒ!Size of the ->priv flexible array”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„ h´M�hj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„ h´M�hjáóubjä)�”}”(hŒ2``addr_list_lock`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ``addr_list_lock``”h]”jð)�”}”(hj¨ h]”hŒaddr_list_lock”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¡hj¢ ubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½ h´M¡hj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½ h´M¡hjáóubjä)�”}”(hŒ``uc`` unicast mac addresses ”h]”(jê)�”}”(hŒ``uc``”h]”jð)�”}”(hjá h]”hŒuc”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¯hjÛ ubj)�”}”(hhh]”jl)�”}”(hŒunicast mac addresses”h]”hŒunicast mac addresses”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jö h´M¯hj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jö h´M¯hjáóubjä)�”}”(hŒ``mc`` multicast mac addresses ”h]”(jê)�”}”(hŒ``mc``”h]”jð)�”}”(hj h]”hŒmc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M°hj ubj)�”}”(hhh]”jl)�”}”(hŒmulticast mac addresses”h]”hŒmulticast mac addresses”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/ h´M°hj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/ h´M°hjáóubjä)�”}”(hŒ*``dev_addrs`` list of device hw addresses ”h]”(jê)�”}”(hŒ ``dev_addrs``”h]”jð)�”}”(hjS h]”hŒ dev_addrs”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M±hjM ubj)�”}”(hhh]”jl)�”}”(hŒlist of device hw addresses”h]”hŒlist of device hw addresses”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh h´M±hji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh h´M±hjáóubjä)�”}”(hŒ>``queues_kset`` Group of all Kobjects in the Tx and RX queues ”h]”(jê)�”}”(hŒ``queues_kset``”h]”jð)�”}”(hjŒ h]”hŒ queues_kset”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M²hj† ubj)�”}”(hhh]”jl)�”}”(hŒ-Group of all Kobjects in the Tx and RX queues”h]”hŒ-Group of all Kobjects in the Tx and RX queues”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¡ h´M²hj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¡ h´M²hjáóubjä)�”}”(hŒi``unlink_list`` As netif_addr_lock() can be called recursively, keep a list of interfaces to be deleted. ”h]”(jê)�”}”(hŒ``unlink_list``”h]”jð)�”}”(hjÅ h]”hŒ unlink_list”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MPhj¿ ubj)�”}”(hhh]”jl)�”}”(hŒXAs netif_addr_lock() can be called recursively, keep a list of interfaces to be deleted.”h]”hŒXAs netif_addr_lock() can be called recursively, keep a list of interfaces to be deleted.”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MOhjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÚ h´MPhjáóubjä)�”}”(hŒ€``promiscuity`` Number of times the NIC is told to work in promiscuous mode; if it becomes 0 the NIC will exit promiscuous mode ”h]”(jê)�”}”(hŒ``promiscuity``”h]”jð)�”}”(hjÿ h]”hŒ promiscuity”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mµhjù ubj)�”}”(hhh]”jl)�”}”(hŒoNumber of times the NIC is told to work in promiscuous mode; if it becomes 0 the NIC will exit promiscuous mode”h]”hŒoNumber of times the NIC is told to work in promiscuous mode; if it becomes 0 the NIC will exit promiscuous mode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M³hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Mµhjáóubjä)�”}”(hŒ<``allmulti`` Counter, enables or disables allmulticast mode ”h]”(jê)�”}”(hŒ ``allmulti``”h]”jð)�”}”(hj9 h]”hŒallmulti”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¶hj3 ubj)�”}”(hhh]”jl)�”}”(hŒ.Counter, enables or disables allmulticast mode”h]”hŒ.Counter, enables or disables allmulticast mode”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jN h´M¶hjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jN h´M¶hjáóubjä)�”}”(hŒ¸``uc_promisc`` Counter that indicates promiscuous mode has been enabled due to the need to listen to additional unicast addresses in a device that does not implement ndo_set_rx_mode() ”h]”(jê)�”}”(hŒ``uc_promisc``”h]”jð)�”}”(hjr h]”hŒ uc_promisc”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¦hjl ubj)�”}”(hhh]”jl)�”}”(hŒ¨Counter that indicates promiscuous mode has been enabled due to the need to listen to additional unicast addresses in a device that does not implement ndo_set_rx_mode()”h]”hŒ¨Counter that indicates promiscuous mode has been enabled due to the need to listen to additional unicast addresses in a device that does not implement ndo_set_rx_mode()”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M£hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡ h´M¦hjáóubjä)�”}”(hŒ:``work_node`` List entry for async netdev_work processing ”h]”(jê)�”}”(hŒ ``work_node``”h]”jð)�”}”(hj¬ h]”hŒ work_node”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M§hj¦ ubj)�”}”(hhh]”jl)�”}”(hŒ+List entry for async netdev_work processing”h]”hŒ+List entry for async netdev_work processing”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ h´M§hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ h´M§hjáóubjä)�”}”(hŒ8``work_tracker`` Refcount tracker for async netdev_work ”h]”(jê)�”}”(hŒ``work_tracker``”h]”jð)�”}”(hjå h]”hŒ work_tracker”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjã ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¨hjß ubj)�”}”(hhh]”jl)�”}”(hŒ&Refcount tracker for async netdev_work”h]”hŒ&Refcount tracker for async netdev_work”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jú h´M¨hjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jú h´M¨hjáóubjä)�”}”(hŒd``work_pending`` Driver-defined pending netdev_work, passed to ndo_work() (see netdev_work_sched()) ”h]”(jê)�”}”(hŒ``work_pending``”h]”jð)�”}”(hj h]”hŒ work_pending”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mªhj ubj)�”}”(hhh]”jl)�”}”(hŒRDriver-defined pending netdev_work, passed to ndo_work() (see netdev_work_sched())”h]”hŒRDriver-defined pending netdev_work, passed to ndo_work() (see netdev_work_sched())”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M©hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3 h´Mªhjáóubjä)�”}”(hŒG``work_core_pending`` Core-defined pending netdev_work (NETDEV_WORK_*) ”h]”(jê)�”}”(hŒ``work_core_pending``”h]”jð)�”}”(hjX h]”hŒwork_core_pending”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M«hjR ubj)�”}”(hhh]”jl)�”}”(hŒ0Core-defined pending netdev_work (NETDEV_WORK_*)”h]”hŒ0Core-defined pending netdev_work (NETDEV_WORK_*)”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jm h´M«hjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jm h´M«hjáóubjä)�”}”(hŒB``rx_mode_addr_cache`` Recycled snapshot entries for rx_mode work ”h]”(jê)�”}”(hŒ``rx_mode_addr_cache``”h]”jð)�”}”(hj‘ h]”hŒrx_mode_addr_cache”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¬hj‹ ubj)�”}”(hhh]”jl)�”}”(hŒ*Recycled snapshot entries for rx_mode work”h]”hŒ*Recycled snapshot entries for rx_mode work”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦ h´M¬hj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦ h´M¬hjáóubjä)�”}”(hŒH``rx_mode_retry_timer`` Timer that re-queues rx_mode work after failure ”h]”(jê)�”}”(hŒ``rx_mode_retry_timer``”h]”jð)�”}”(hjÊ h]”hŒrx_mode_retry_timer”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M­hjÄ ubj)�”}”(hhh]”jl)�”}”(hŒ/Timer that re-queues rx_mode work after failure”h]”hŒ/Timer that re-queues rx_mode work after failure”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jß h´M­hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jß h´M­hjáóubjä)�”}”(hŒH``rx_mode_retry_count`` Number of consecutive retries already scheduled ”h]”(jê)�”}”(hŒ``rx_mode_retry_count``”h]”jð)�”}”(hj h]”hŒrx_mode_retry_count”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M®hjý ubj)�”}”(hhh]”jl)�”}”(hŒ/Number of consecutive retries already scheduled”h]”hŒ/Number of consecutive retries already scheduled”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M®hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M®hjáóubjä)�”}”(hŒS``nested_level`` Used as a parameter of spin_lock_nested() of dev->addr_list_lock. ”h]”(jê)�”}”(hŒ``nested_level``”h]”jð)�”}”(hj< h]”hŒ nested_level”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MNhj6 ubj)�”}”(hhh]”jl)�”}”(hŒAUsed as a parameter of spin_lock_nested() of dev->addr_list_lock.”h]”hŒAUsed as a parameter of spin_lock_nested() of dev->addr_list_lock.”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MMhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQ h´MNhjáóubjä)�”}”(hŒ``ip_ptr`` IPv4 specific data ”h]”(jê)�”}”(hŒ ``ip_ptr``”h]”jð)�”}”(hjv h]”hŒip_ptr”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M»hjp ubj)�”}”(hhh]”jl)�”}”(hŒIPv4 specific data”h]”hŒIPv4 specific data”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹ h´M»hjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹ h´M»hjáóubjä)�”}”(hŒ5``fib_nh_head`` nexthops associated with this netdev ”h]”(jê)�”}”(hŒ``fib_nh_head``”h]”jð)�”}”(hj¯ h]”hŒ fib_nh_head”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MH hj© ubj)�”}”(hhh]”jl)�”}”(hŒ$nexthops associated with this netdev”h]”hŒ$nexthops associated with this netdev”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄ h´MH hjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj© ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄ h´MH hjáóubjä)�”}”(hŒ``vlan_info`` VLAN info ”h]”(jê)�”}”(hŒ ``vlan_info``”h]”jð)�”}”(hjè h]”hŒ vlan_info”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjæ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¸hjâ ubj)�”}”(hhh]”jl)�”}”(hŒ VLAN info”h]”hŒ VLAN info”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jý h´M¸hjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jý h´M¸hjáóubjä)�”}”(hŒ``dsa_ptr`` dsa specific data ”h]”(jê)�”}”(hŒ ``dsa_ptr``”h]”jð)�”}”(hj!h]”hŒdsa_ptr”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¹hjubj)�”}”(hhh]”jl)�”}”(hŒdsa specific data”h]”hŒdsa specific data”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6h´M¹hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6h´M¹hjáóubjä)�”}”(hŒ ``tipc_ptr`` TIPC specific data ”h]”(jê)�”}”(hŒ ``tipc_ptr``”h]”jð)�”}”(hjZh]”hŒtipc_ptr”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MºhjTubj)�”}”(hhh]”jl)�”}”(hŒTIPC specific data”h]”hŒTIPC specific data”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³joh´Mºhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³joh´Mºhjáóubjä)�”}”(hŒG``ieee80211_ptr`` IEEE 802.11 specific data, assign before registering ”h]”(jê)�”}”(hŒ``ieee80211_ptr``”h]”jð)�”}”(hj“h]”hŒ ieee80211_ptr”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M½hj�ubj)�”}”(hhh]”jl)�”}”(hŒ4IEEE 802.11 specific data, assign before registering”h]”hŒ4IEEE 802.11 specific data, assign before registering”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨h´M½hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨h´M½hjáóubjä)�”}”(hŒW``ieee802154_ptr`` IEEE 802.15.4 low-rate Wireless Personal Area Network device struct ”h]”(jê)�”}”(hŒ``ieee802154_ptr``”h]”jð)�”}”(hjÌh]”hŒieee802154_ptr”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¿hjÆubj)�”}”(hhh]”jl)�”}”(hŒCIEEE 802.15.4 low-rate Wireless Personal Area Network device struct”h]”hŒCIEEE 802.15.4 low-rate Wireless Personal Area Network device struct”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¾hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáh´M¿hjáóubjä)�”}”(hŒ%``mpls_ptr`` mpls_dev struct pointer ”h]”(jê)�”}”(hŒ ``mpls_ptr``”h]”jð)�”}”(hjh]”hŒmpls_ptr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÀhjubj)�”}”(hhh]”jl)�”}”(hŒmpls_dev struct pointer”h]”hŒmpls_dev struct pointer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MÀhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MÀhjáóubjä)�”}”(hŒ ``mctp_ptr`` MCTP specific data ”h]”(jê)�”}”(hŒ ``mctp_ptr``”h]”jð)�”}”(hj?h]”hŒmctp_ptr”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÁhj9ubj)�”}”(hhh]”jl)�”}”(hŒMCTP specific data”h]”hŒMCTP specific data”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jTh´MÁhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jTh´MÁhjáóubjä)�”}”(hŒ9``psp_dev`` PSP crypto device registered for this netdev ”h]”(jê)�”}”(hŒ ``psp_dev``”h]”jð)�”}”(hjxh]”hŒpsp_dev”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÂhjrubj)�”}”(hhh]”jl)�”}”(hŒ,PSP crypto device registered for this netdev”h]”hŒ,PSP crypto device registered for this netdev”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´MÂhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´MÂhjáóubjä)�”}”(hŒI``dev_addr`` Hw address (before bcast, because most packets are unicast) ”h]”(jê)�”}”(hŒ ``dev_addr``”h]”jð)�”}”(hj±h]”hŒdev_addr”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÅhj«ubj)�”}”(hhh]”jl)�”}”(hŒ;Hw address (before bcast, because most packets are unicast)”h]”hŒ;Hw address (before bcast, because most packets are unicast)”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÄhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÆh´MÅhjáóubjä)�”}”(hŒJ``num_rx_queues`` Number of RX queues allocated at register_netdev() time ”h]”(jê)�”}”(hŒ``num_rx_queues``”h]”jð)�”}”(hjëh]”hŒ num_rx_queues”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÉhjåubj)�”}”(hhh]”jl)�”}”(hŒ7Number of RX queues allocated at register_netdev() time”h]”hŒ7Number of RX queues allocated at register_netdev() time”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÈhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MÉhjáóubjä)�”}”(hŒT``xdp_zc_max_segs`` Maximum number of segments supported by AF_XDP zero copy driver ”h]”(jê)�”}”(hŒ``xdp_zc_max_segs``”h]”jð)�”}”(hj%h]”hŒxdp_zc_max_segs”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MVhjubj)�”}”(hhh]”jl)�”}”(hŒ?Maximum number of segments supported by AF_XDP zero copy driver”h]”hŒ?Maximum number of segments supported by AF_XDP zero copy driver”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MUhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:h´MVhjáóubjä)�”}”(hŒ1``ingress_queue`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ``ingress_queue``”h]”jð)�”}”(hj_h]”hŒ ingress_queue”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÐhjYubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jth´MÐhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jth´MÐhjáóubjä)�”}”(hŒB``nf_hooks_ingress`` netfilter hooks executed for ingress packets ”h]”(jê)�”}”(hŒ``nf_hooks_ingress``”h]”jð)�”}”(hj˜h]”hŒnf_hooks_ingress”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÑhj’ubj)�”}”(hhh]”jl)�”}”(hŒ,netfilter hooks executed for ingress packets”h]”hŒ,netfilter hooks executed for ingress packets”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­h´MÑhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­h´MÑhjáóubjä)�”}”(hŒ``broadcast`` hw bcast address ”h]”(jê)�”}”(hŒ ``broadcast``”h]”jð)�”}”(hjÑh]”hŒ broadcast”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÒhjËubj)�”}”(hhh]”jl)�”}”(hŒhw bcast address”h]”hŒhw bcast address”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæh´MÒhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæh´MÒhjáóubjä)�”}”(hŒ¶``rx_cpu_rmap`` CPU reverse-mapping for RX completion interrupts, indexed by RX queue number. Assigned by driver. This must only be set if the ndo_rx_flow_steer operation is defined ”h]”(jê)�”}”(hŒ``rx_cpu_rmap``”h]”jð)�”}”(hj h]”hŒ rx_cpu_rmap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M×hjubj)�”}”(hhh]”jl)�”}”(hŒ¥CPU reverse-mapping for RX completion interrupts, indexed by RX queue number. Assigned by driver. This must only be set if the ndo_rx_flow_steer operation is defined”h]”hŒ¥CPU reverse-mapping for RX completion interrupts, indexed by RX queue number. Assigned by driver. This must only be set if the ndo_rx_flow_steer operation is defined”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÔhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M×hjáóubjä)�”}”(hŒ(``index_hlist`` Device index hash chain ”h]”(jê)�”}”(hŒ``index_hlist``”h]”jð)�”}”(hjDh]”hŒ index_hlist”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MØhj>ubj)�”}”(hhh]”jl)�”}”(hŒDevice index hash chain”h]”hŒDevice index hash chain”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jYh´MØhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYh´MØhjáóubjä)�”}”(hŒJ``num_tx_queues`` Number of TX queues allocated at alloc_netdev_mq() time ”h]”(jê)�”}”(hŒ``num_tx_queues``”h]”jð)�”}”(hj}h]”hŒ num_tx_queues”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÛhjwubj)�”}”(hhh]”jl)�”}”(hŒ7Number of TX queues allocated at alloc_netdev_mq() time”h]”hŒ7Number of TX queues allocated at alloc_netdev_mq() time”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’h´MÛhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’h´MÛhjáóubjä)�”}”(hŒ2``qdisc`` Root qdisc from userspace point of view ”h]”(jê)�”}”(hŒ ``qdisc``”h]”jð)�”}”(hj¶h]”hŒqdisc”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÝhj°ubj)�”}”(hhh]”jl)�”}”(hŒ'Root qdisc from userspace point of view”h]”hŒ'Root qdisc from userspace point of view”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËh´MÝhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËh´MÝhjáóubjä)�”}”(hŒ.``tx_queue_len`` Max frames per queue allowed ”h]”(jê)�”}”(hŒ``tx_queue_len``”h]”jð)�”}”(hjïh]”hŒ tx_queue_len”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÞhjéubj)�”}”(hhh]”jl)�”}”(hŒMax frames per queue allowed”h]”hŒMax frames per queue allowed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MÞhjáóubjä)�”}”(hŒ2``tx_global_lock`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ``tx_global_lock``”h]”jð)�”}”(hj(h]”hŒtx_global_lock”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mßhj"ubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=h´Mßhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=h´Mßhjáóubjä)�”}”(hŒ$``xdp_bulkq`` XDP device bulk queue ”h]”(jê)�”}”(hŒ ``xdp_bulkq``”h]”jð)�”}”(hjah]”hŒ xdp_bulkq”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Màhj[ubj)�”}”(hhh]”jl)�”}”(hŒXDP device bulk queue”h]”hŒXDP device bulk queue”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvh´Màhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvh´Màhjáóubjä)�”}”(hŒ ``qdisc_hash`` qdisc hash table ”h]”(jê)�”}”(hŒ``qdisc_hash``”h]”jð)�”}”(hjšh]”hŒ qdisc_hash”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mæhj”ubj)�”}”(hhh]”jl)�”}”(hŒqdisc hash table”h]”hŒqdisc hash table”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯h´Mæhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯h´Mæhjáóubjä)�”}”(hŒ"``watchdog_timer`` List of timers ”h]”(jê)�”}”(hŒ``watchdog_timer``”h]”jð)�”}”(hjÓh]”hŒwatchdog_timer”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MëhjÍubj)�”}”(hhh]”jl)�”}”(hŒList of timers”h]”hŒList of timers”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèh´Mëhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèh´Mëhjáóubjä)�”}”(hŒ\``watchdog_timeo`` Represents the timeout that is used by the watchdog (see dev_watchdog()) ”h]”(jê)�”}”(hŒ``watchdog_timeo``”h]”jð)�”}”(hj h]”hŒwatchdog_timeo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mèhjubj)�”}”(hhh]”jl)�”}”(hŒHRepresents the timeout that is used by the watchdog (see dev_watchdog())”h]”hŒHRepresents the timeout that is used by the watchdog (see dev_watchdog())”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mçhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!h´Mèhjáóubjä)�”}”(hŒ,``watchdog_lock`` protect watchdog_ref_held ”h]”(jê)�”}”(hŒ``watchdog_lock``”h]”jð)�”}”(hjFh]”hŒ watchdog_lock”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Méhj@ubj)�”}”(hhh]”jl)�”}”(hŒprotect watchdog_ref_held”h]”hŒprotect watchdog_ref_held”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j[h´Méhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[h´Méhjáóubjä)�”}”(hŒ@``watchdog_ref_held`` True if the watchdog device ref is taken. ”h]”(jê)�”}”(hŒ``watchdog_ref_held``”h]”jð)�”}”(hjh]”hŒwatchdog_ref_held”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mêhjyubj)�”}”(hhh]”jl)�”}”(hŒ)True if the watchdog device ref is taken.”h]”hŒ)True if the watchdog device ref is taken.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”h´Mêhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”h´Mêhjáóubjä)�”}”(hŒ=``proto_down_reason`` reason a netdev interface is held down ”h]”(jê)�”}”(hŒ``proto_down_reason``”h]”jð)�”}”(hj¸h]”hŒproto_down_reason”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Míhj²ubj)�”}”(hhh]”jl)�”}”(hŒ&reason a netdev interface is held down”h]”hŒ&reason a netdev interface is held down”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍh´MíhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍh´Míhjáóubjä)�”}”(hŒ*``todo_list`` Delayed register/unregister ”h]”(jê)�”}”(hŒ ``todo_list``”h]”jð)�”}”(hjñh]”hŒ todo_list”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mñhjëubj)�”}”(hhh]”jl)�”}”(hŒDelayed register/unregister”h]”hŒDelayed register/unregister”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mñhjáóubjä)�”}”(hŒ4``pcpu_refcnt`` Number of references to this device ”h]”(jê)�”}”(hŒ``pcpu_refcnt``”h]”jð)�”}”(hj*h]”hŒ pcpu_refcnt”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mîhj$ubj)�”}”(hhh]”jl)�”}”(hŒ#Number of references to this device”h]”hŒ#Number of references to this device”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?h´Mîhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?h´Mîhjáóubjä)�”}”(hŒ3``dev_refcnt`` Number of references to this device ”h]”(jê)�”}”(hŒ``dev_refcnt``”h]”jð)�”}”(hjch]”hŒ dev_refcnt”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mïhj]ubj)�”}”(hhh]”jl)�”}”(hŒ#Number of references to this device”h]”hŒ#Number of references to this device”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxh´Mïhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxh´Mïhjáóubjä)�”}”(hŒK``refcnt_tracker`` Tracker directory for tracked references to this device ”h]”(jê)�”}”(hŒ``refcnt_tracker``”h]”jð)�”}”(hjœh]”hŒrefcnt_tracker”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mðhj–ubj)�”}”(hhh]”jl)�”}”(hŒ7Tracker directory for tracked references to this device”h]”hŒ7Tracker directory for tracked references to this device”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±h´Mðhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±h´Mðhjáóubjä)�”}”(hŒ3``link_watch_list`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ``link_watch_list``”h]”jð)�”}”(hjÕh]”hŒlink_watch_list”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MòhjÏubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêh´Mòhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêh´Mòhjáóubjä)�”}”(hŒ0``reg_state`` Register/unregister state machine ”h]”(jê)�”}”(hŒ ``reg_state``”h]”jð)�”}”(hjh]”hŒ reg_state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Môhjubj)�”}”(hhh]”jl)�”}”(hŒ!Register/unregister state machine”h]”hŒ!Register/unregister state machine”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#h´Môhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#h´Môhjáóubjä)�”}”(hŒ*``dismantle`` Device is going to be freed ”h]”(jê)�”}”(hŒ ``dismantle``”h]”jð)�”}”(hjGh]”hŒ dismantle”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MõhjAubj)�”}”(hhh]”jl)�”}”(hŒDevice is going to be freed”h]”hŒDevice is going to be freed”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\h´Mõhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\h´Mõhjáóubjä)�”}”(hŒ>``moving_ns`` device is changing netns, protected by **lock** ”h]”(jê)�”}”(hŒ ``moving_ns``”h]”jð)�”}”(hj€h]”hŒ moving_ns”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M  hjzubj)�”}”(hhh]”jl)�”}”(hŒ/device is changing netns, protected by **lock**”h]”(hŒ'device is changing netns, protected by ”…”�”}”(hj™h²hh³Nh´Nubj›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•h´M  hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•h´M  hjáóubjä)�”}”(hŒA``rtnl_link_initializing`` Device being created, suppress events ”h]”(jê)�”}”(hŒ``rtnl_link_initializing``”h]”jð)�”}”(hjÇh]”hŒrtnl_link_initializing”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¢ hjÁubj)�”}”(hhh]”jl)�”}”(hŒ%Device being created, suppress events”h]”hŒ%Device being created, suppress events”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜh´M¢ hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜh´M¢ hjáóubjä)�”}”(hŒ=``needs_free_netdev`` Should unregister perform free_netdev? ”h]”(jê)�”}”(hŒ``needs_free_netdev``”h]”jð)�”}”(hjh]”hŒneeds_free_netdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Möhjúubj)�”}”(hhh]”jl)�”}”(hŒ&Should unregister perform free_netdev?”h]”hŒ&Should unregister perform free_netdev?”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Möhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Möhjáóubjä)�”}”(hŒ+``priv_destructor`` Called from unregister ”h]”(jê)�”}”(hŒ``priv_destructor``”h]”jð)�”}”(hj9h]”hŒpriv_destructor”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M÷hj3ubj)�”}”(hhh]”jl)�”}”(hŒCalled from unregister”h]”hŒCalled from unregister”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNh´M÷hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNh´M÷hjáóubjä)�”}”(hŒ``ml_priv`` Mid-layer private ”h]”(jê)�”}”(hŒ ``ml_priv``”h]”jð)�”}”(hjrh]”hŒml_priv”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mühjlubj)�”}”(hhh]”jl)�”}”(hŒMid-layer private”h]”hŒMid-layer private”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡h´Mühjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡h´Mühjáóubjä)�”}”(hŒ(``ml_priv_type`` Mid-layer private type ”h]”(jê)�”}”(hŒ``ml_priv_type``”h]”jð)�”}”(hj«h]”hŒ ml_priv_type”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mýhj¥ubj)�”}”(hhh]”jl)�”}”(hŒMid-layer private type”h]”hŒMid-layer private type”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀh´MýhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀh´Mýhjáóubjä)�”}”(hŒ``garp_port`` GARP ”h]”(jê)�”}”(hŒ ``garp_port``”h]”jð)�”}”(hjäh]”hŒ garp_port”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjÞubj)�”}”(hhh]”jl)�”}”(hŒGARP”h]”hŒGARP”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jùh´Mhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jùh´Mhjáóubjä)�”}”(hŒ``mrp_port`` MRP ”h]”(jê)�”}”(hŒ ``mrp_port``”h]”jð)�”}”(hjh]”hŒmrp_port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”•h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒMRP”h]”hŒMRP”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2h´Mhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2h´Mhjáóubjä)�”}”(hŒ$``dm_private`` Drop monitor private ”h]”(jê)�”}”(hŒ``dm_private``”h]”jð)�”}”(hjVh]”hŒ dm_private”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjPubj)�”}”(hhh]”jl)�”}”(hŒDrop monitor private”h]”hŒDrop monitor private”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jkh´M hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jkh´M hjáóubjä)�”}”(hŒ``dev`` Class/net/name entry ”h]”(jê)�”}”(hŒ``dev``”h]”jð)�”}”(hj�h]”hŒdev”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj‰ubj)�”}”(hhh]”jl)�”}”(hŒClass/net/name entry”h]”hŒClass/net/name entry”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤h´M hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤h´M hjáóubjä)�”}”(hŒQ``sysfs_groups`` Space for optional device, statistics and wireless sysfs groups ”h]”(jê)�”}”(hŒ``sysfs_groups``”h]”jð)�”}”(hjÈh]”hŒ sysfs_groups”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjÂubj)�”}”(hhh]”jl)�”}”(hŒ?Space for optional device, statistics and wireless sysfs groups”h]”hŒ?Space for optional device, statistics and wireless sysfs groups”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝh´Mhjáóubjä)�”}”(hŒD``sysfs_rx_queue_group`` Space for optional per-rx queue attributes ”h]”(jê)�”}”(hŒ``sysfs_rx_queue_group``”h]”jð)�”}”(hjh]”hŒsysfs_rx_queue_group”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjüubj)�”}”(hhh]”jl)�”}”(hŒ*Space for optional per-rx queue attributes”h]”hŒ*Space for optional per-rx queue attributes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhjáóubjä)�”}”(hŒ ``rtnl_link_ops`` Rtnl_link_ops ”h]”(jê)�”}”(hŒ``rtnl_link_ops``”h]”jð)�”}”(hj;h]”hŒ rtnl_link_ops”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj5ubj)�”}”(hhh]”jl)�”}”(hŒ Rtnl_link_ops”h]”hŒ Rtnl_link_ops”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jPh´MhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jPh´Mhjáóubjä)�”}”(hŒ5``stat_ops`` Optional ops for queue-aware statistics ”h]”(jê)�”}”(hŒ ``stat_ops``”h]”jð)�”}”(hjth]”hŒstat_ops”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjnubj)�”}”(hhh]”jl)�”}”(hŒ'Optional ops for queue-aware statistics”h]”hŒ'Optional ops for queue-aware statistics”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‰h´MhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰h´Mhjáóubjä)�”}”(hŒ5``queue_mgmt_ops`` Optional ops for queue management ”h]”(jê)�”}”(hŒ``queue_mgmt_ops``”h]”jð)�”}”(hj­h]”hŒqueue_mgmt_ops”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj§ubj)�”}”(hhh]”jl)�”}”(hŒ!Optional ops for queue management”h]”hŒ!Optional ops for queue management”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂh´MhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂh´Mhjáóubjä)�”}”(hŒE``tso_max_size`` Device (as in HW) limit on the max TSO request size ”h]”(jê)�”}”(hŒ``tso_max_size``”h]”jð)�”}”(hjæh]”hŒ tso_max_size”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjàubj)�”}”(hhh]”jl)�”}”(hŒ3Device (as in HW) limit on the max TSO request size”h]”hŒ3Device (as in HW) limit on the max TSO request size”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jûh´Mhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jûh´Mhjáóubjä)�”}”(hŒF``tso_max_segs`` Device (as in HW) limit on the max TSO segment count ”h]”(jê)�”}”(hŒ``tso_max_segs``”h]”jð)�”}”(hjh]”hŒ tso_max_segs”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjubj)�”}”(hhh]”jl)�”}”(hŒ4Device (as in HW) limit on the max TSO segment count”h]”hŒ4Device (as in HW) limit on the max TSO segment count”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4h´Mhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4h´Mhjáóubjä)�”}”(hŒ/``dcbnl_ops`` Data Center Bridging netlink ops ”h]”(jê)�”}”(hŒ ``dcbnl_ops``”h]”jð)�”}”(hjXh]”hŒ dcbnl_ops”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjRubj)�”}”(hhh]”jl)�”}”(hŒ Data Center Bridging netlink ops”h]”hŒ Data Center Bridging netlink ops”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jmh´Mhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmh´Mhjáóubjä)�”}”(hŒ/``prio_tc_map`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ``prio_tc_map``”h]”jð)�”}”(hj‘h]”hŒ prio_tc_map”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj‹ubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦h´M hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦h´M hjáóubjä)�”}”(hŒ5``fcoe_ddp_xid`` Max exchange id for FCoE LRO by ddp ”h]”(jê)�”}”(hŒ``fcoe_ddp_xid``”h]”jð)�”}”(hjÊh]”hŒ fcoe_ddp_xid”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M"hjÄubj)�”}”(hhh]”jl)�”}”(hŒ#Max exchange id for FCoE LRO by ddp”h]”hŒ#Max exchange id for FCoE LRO by ddp”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jßh´M"hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßh´M"hjáóubjä)�”}”(hŒ+``priomap`` XXX: need comments on this one ”h]”(jê)�”}”(hŒ ``priomap``”h]”jð)�”}”(hjh]”hŒpriomap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M$hjýubj)�”}”(hhh]”jl)�”}”(hŒXXX: need comments on this one”h]”hŒXXX: need comments on this one”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M$hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M$hjáóubjä)�”}”(hŒ<``link_topo`` Physical link topology tracking attached PHYs ”h]”(jê)�”}”(hŒ ``link_topo``”h]”jð)�”}”(hj<h]”hŒ link_topo”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M%hj6ubj)�”}”(hhh]”jl)�”}”(hŒ-Physical link topology tracking attached PHYs”h]”hŒ-Physical link topology tracking attached PHYs”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQh´M%hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQh´M%hjáóubjä)�”}”(hŒG``phydev`` Physical device may attach itself for hardware timestamping ”h]”(jê)�”}”(hŒ ``phydev``”h]”jð)�”}”(hjuh]”hŒphydev”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M'hjoubj)�”}”(hhh]”jl)�”}”(hŒ;Physical device may attach itself for hardware timestamping”h]”hŒ;Physical device may attach itself for hardware timestamping”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M&hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠh´M'hjáóubjä)�”}”(hŒC``sfp_bus`` attached :c:type:`struct sfp_bus ` structure. ”h]”(jê)�”}”(hŒ ``sfp_bus``”h]”jð)�”}”(hj¯h]”hŒsfp_bus”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M(hj©ubj)�”}”(hhh]”jl)�”}”(hŒ6attached :c:type:`struct sfp_bus ` structure.”h]”(hŒ attached ”…”�”}”(hjÈh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjÒh]”hŒstruct sfp_bus”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÐubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³jÄh´M(hjÈubhŒ structure.”…”�”}”(hjÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄh´M(hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄh´M(hjáóubjä)�”}”(hŒH``qdisc_tx_busylock`` lockdep class annotating Qdisc->busylock spinlock ”h]”(jê)�”}”(hŒ``qdisc_tx_busylock``”h]”jð)�”}”(hj h]”hŒqdisc_tx_busylock”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M*hjubj)�”}”(hhh]”jl)�”}”(hŒ1lockdep class annotating Qdisc->busylock spinlock”h]”hŒ1lockdep class annotating Qdisc->busylock spinlock”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M*hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M*hjáóubjä)�”}”(hŒƒ``proto_down`` protocol port state information can be sent to the switch driver and used to set the phys state of the switch port. ”h]”(jê)�”}”(hŒ``proto_down``”h]”jð)�”}”(hjDh]”hŒ proto_down”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M.hj>ubj)�”}”(hhh]”jl)�”}”(hŒsprotocol port state information can be sent to the switch driver and used to set the phys state of the switch port.”h]”hŒsprotocol port state information can be sent to the switch driver and used to set the phys state of the switch port.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M,hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYh´M.hjáóubjä)�”}”(hŒÿ``irq_affinity_auto`` driver wants the core to store and re-assign the IRQ affinity. Set by netif_enable_irq_affinity(), then the driver must create a persistent napi by netif_napi_add_config() and finally bind the napi to IRQ (via netif_napi_set_irq()). ”h]”(jê)�”}”(hŒ``irq_affinity_auto``”h]”jð)�”}”(hj~h]”hŒirq_affinity_auto”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4hjxubj)�”}”(hhh]”jl)�”}”(hŒèdriver wants the core to store and re-assign the IRQ affinity. Set by netif_enable_irq_affinity(), then the driver must create a persistent napi by netif_napi_add_config() and finally bind the napi to IRQ (via netif_napi_set_irq()).”h]”hŒèdriver wants the core to store and re-assign the IRQ affinity. Set by netif_enable_irq_affinity(), then the driver must create a persistent napi by netif_napi_add_config() and finally bind the napi to IRQ (via netif_napi_set_irq()).”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M0hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“h´M4hjáóubjä)�”}”(hŒl``rx_cpu_rmap_auto`` driver wants the core to manage the ARFS rmap. Set by calling netif_enable_cpu_rmap(). ”h]”(jê)�”}”(hŒ``rx_cpu_rmap_auto``”h]”jð)�”}”(hj¸h]”hŒrx_cpu_rmap_auto”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M7hj²ubj)�”}”(hhh]”jl)�”}”(hŒVdriver wants the core to manage the ARFS rmap. Set by calling netif_enable_cpu_rmap().”h]”hŒVdriver wants the core to manage the ARFS rmap. Set by calling netif_enable_cpu_rmap().”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M6hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍh´M7hjáóubjä)�”}”(hŒ«``see_all_hwtstamp_requests`` device wants to see calls to ndo_hwtstamp_set() for all timestamp requests regardless of source, even if those aren't HWTSTAMP_SOURCE_NETDEV ”h]”(jê)�”}”(hŒ``see_all_hwtstamp_requests``”h]”jð)�”}”(hjòh]”hŒsee_all_hwtstamp_requests”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M<hjìubj)�”}”(hhh]”jl)�”}”(hŒŒdevice wants to see calls to ndo_hwtstamp_set() for all timestamp requests regardless of source, even if those aren't HWTSTAMP_SOURCE_NETDEV”h]”hŒŽdevice wants to see calls to ndo_hwtstamp_set() for all timestamp requests regardless of source, even if those aren’t HWTSTAMP_SOURCE_NETDEV”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M<hjáóubjä)�”}”(hŒJ``change_proto_down`` device supports setting carrier via IFLA_PROTO_DOWN ”h]”(jê)�”}”(hŒ``change_proto_down``”h]”jð)�”}”(hj,h]”hŒchange_proto_down”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M=hj&ubj)�”}”(hhh]”jl)�”}”(hŒ3device supports setting carrier via IFLA_PROTO_DOWN”h]”hŒ3device supports setting carrier via IFLA_PROTO_DOWN”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jAh´M=hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jAh´M=hjáóubjä)�”}”(hŒ>``netns_immutable`` interface can't change network namespaces ”h]”(jê)�”}”(hŒ``netns_immutable``”h]”jð)�”}”(hjeh]”hŒnetns_immutable”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M>hj_ubj)�”}”(hhh]”jl)�”}”(hŒ)interface can't change network namespaces”h]”hŒ+interface can’t change network namespaces”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jzh´M>hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jzh´M>hjáóubjä)�”}”(hŒ:``fcoe_mtu`` device supports maximum FCoE MTU, 2158 bytes ”h]”(jê)�”}”(hŒ ``fcoe_mtu``”h]”jð)�”}”(hjžh]”hŒfcoe_mtu”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M?hj˜ubj)�”}”(hhh]”jl)�”}”(hŒ,device supports maximum FCoE MTU, 2158 bytes”h]”hŒ,device supports maximum FCoE MTU, 2158 bytes”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³h´M?hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³h´M?hjáóubjä)�”}”(hŒƒ``net_notifier_list`` List of per-net netdev notifier block that follow this device when it is moved to another network namespace. ”h]”(jê)�”}”(hŒ``net_notifier_list``”h]”jð)�”}”(hj×h]”hŒnet_notifier_list”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MChjÑubj)�”}”(hhh]”jl)�”}”(hŒlList of per-net netdev notifier block that follow this device when it is moved to another network namespace.”h]”hŒlList of per-net netdev notifier block that follow this device when it is moved to another network namespace.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MAhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jìh´MChjáóubjä)�”}”(hŒ%``macsec_ops`` MACsec offloading ops ”h]”(jê)�”}”(hŒ``macsec_ops``”h]”jð)�”}”(hjh]”hŒ macsec_ops”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MEhj ubj)�”}”(hhh]”jl)�”}”(hŒMACsec offloading ops”h]”hŒMACsec offloading ops”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j&h´MEhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j&h´MEhjáóubjä)�”}”(hŒf``udp_tunnel_nic_info`` static structure describing the UDP tunnel offload capabilities of the device ”h]”(jê)�”}”(hŒ``udp_tunnel_nic_info``”h]”jð)�”}”(hjJh]”hŒudp_tunnel_nic_info”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MHhjDubj)�”}”(hhh]”jl)�”}”(hŒMstatic structure describing the UDP tunnel offload capabilities of the device”h]”hŒMstatic structure describing the UDP tunnel offload capabilities of the device”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MGhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j_h´MHhjáóubjä)�”}”(hŒ,``udp_tunnel_nic`` UDP tunnel offload state ”h]”(jê)�”}”(hŒ``udp_tunnel_nic``”h]”jð)�”}”(hj„h]”hŒudp_tunnel_nic”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MIhj~ubj)�”}”(hhh]”jl)�”}”(hŒUDP tunnel offload state”h]”hŒUDP tunnel offload state”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™h´MIhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™h´MIhjáóubjä)�”}”(hŒ/``cfg`` net_device queue-related configuration ”h]”(jê)�”}”(hŒ``cfg``”h]”jð)�”}”(hj½h]”hŒcfg”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mï hj·ubj)�”}”(hhh]”jl)�”}”(hŒ&net_device queue-related configuration”h]”hŒ&net_device queue-related configuration”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒh´Mï hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒh´Mï hjáóubjä)�”}”(hŒÀ``cfg_pending`` same as **cfg** but when device is being actively reconfigured includes any changes to the configuration requested by the user, but which may or may not be rejected. ”h]”(jê)�”}”(hŒ``cfg_pending``”h]”jð)�”}”(hjöh]”hŒ cfg_pending”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mô hjðubj)�”}”(hhh]”jß)�”}”(hhh]”jä)�”}”(hŒ¦same as **cfg** but when device is being actively reconfigured includes any changes to the configuration requested by the user, but which may or may not be rejected. ”h]”(jê)�”}”(hŒ1same as **cfg** but when device is being actively”h]”(hŒsame as ”…”�”}”(hjh²hh³Nh´Nubj›)�”}”(hŒ**cfg**”h]”hŒcfg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubhŒ" but when device is being actively”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³j h´Mô hjubj)�”}”(hhh]”jl)�”}”(hŒsreconfigured includes any changes to the configuration requested by the user, but which may or may not be rejected.”h]”hŒsreconfigured includes any changes to the configuration requested by the user, but which may or may not be rejected.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mó hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Mô hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Mô hjáóubjä)�”}”(hŒ"``ethtool`` ethtool related state ”h]”(jê)�”}”(hŒ ``ethtool``”h]”jð)�”}”(hjlh]”hŒethtool”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MJhjfubj)�”}”(hhh]”jl)�”}”(hŒethtool related state”h]”hŒethtool related state”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´MJhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´MJhjáóubjä)�”}”(hŒ7``xdp_state`` stores info on attached XDP BPF programs ”h]”(jê)�”}”(hŒ ``xdp_state``”h]”jð)�”}”(hj¥h]”hŒ xdp_state”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MKhjŸubj)�”}”(hhh]”jl)�”}”(hŒ(stores info on attached XDP BPF programs”h]”hŒ(stores info on attached XDP BPF programs”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jºh´MKhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jºh´MKhjáóubjä)�”}”(hŒ3``xsk_pools`` assigned AF_XDP pools, ops protected ”h]”(jê)�”}”(hŒ ``xsk_pools``”h]”jð)�”}”(hjÞh]”hŒ xsk_pools”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mý hjØubj)�”}”(hhh]”jl)�”}”(hŒ$assigned AF_XDP pools, ops protected”h]”hŒ$assigned AF_XDP pools, ops protected”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóh´Mý hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jóh´Mý hjáóubjä)�”}”(hŒA``dev_addr_shadow`` Copy of **dev_addr** to catch direct writes. ”h]”(jê)�”}”(hŒ``dev_addr_shadow``”h]”jð)�”}”(hjh]”hŒdev_addr_shadow”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MXhjubj)�”}”(hhh]”jl)�”}”(hŒ,Copy of **dev_addr** to catch direct writes.”h]”(hŒCopy of ”…”�”}”(hj0h²hh³Nh´Nubj›)�”}”(hŒ **dev_addr**”h]”hŒdev_addr”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0ubhŒ to catch direct writes.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,h´MXhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,h´MXhjáóubjä)�”}”(hŒ>``linkwatch_dev_tracker`` refcount tracker used by linkwatch. ”h]”(jê)�”}”(hŒ``linkwatch_dev_tracker``”h]”jð)�”}”(hjbh]”hŒlinkwatch_dev_tracker”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MYhj\ubj)�”}”(hhh]”jl)�”}”(hŒ#refcount tracker used by linkwatch.”h]”hŒ#refcount tracker used by linkwatch.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwh´MYhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwh´MYhjáóubjä)�”}”(hŒ<``watchdog_dev_tracker`` refcount tracker used by watchdog. ”h]”(jê)�”}”(hŒ``watchdog_dev_tracker``”h]”jð)�”}”(hj›h]”hŒwatchdog_dev_tracker”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MZhj•ubj)�”}”(hhh]”jl)�”}”(hŒ"refcount tracker used by watchdog.”h]”hŒ"refcount tracker used by watchdog.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°h´MZhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°h´MZhjáóubjä)�”}”(hŒG``dev_registered_tracker`` tracker for reference held while registered ”h]”(jê)�”}”(hŒ``dev_registered_tracker``”h]”jð)�”}”(hjÔh]”hŒdev_registered_tracker”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M\hjÎubj)�”}”(hhh]”jl)�”}”(hŒ+tracker for reference held while registered”h]”hŒ+tracker for reference held while registered”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M[hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéh´M\hjáóubjä)�”}”(hŒ6``offload_xstats_l3`` L3 HW stats for this netdevice. ”h]”(jê)�”}”(hŒ``offload_xstats_l3``”h]”jð)�”}”(hj h]”hŒoffload_xstats_l3”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M]hj ubj)�”}”(hhh]”jl)�”}”(hŒL3 HW stats for this netdevice.”h]”hŒL3 HW stats for this netdevice.”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j# h´M]hj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j# h´M]hjáóubjä)�”}”(hŒÑ``devlink_port`` Pointer to related devlink port structure. Assigned by a driver before netdev registration using SET_NETDEV_DEVLINK_PORT macro. This pointer is static during the time netdevice is registered. ”h]”(jê)�”}”(hŒ``devlink_port``”h]”jð)�”}”(hjG h]”hŒ devlink_port”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MbhjA ubj)�”}”(hhh]”jl)�”}”(hŒ¿Pointer to related devlink port structure. Assigned by a driver before netdev registration using SET_NETDEV_DEVLINK_PORT macro. This pointer is static during the time netdevice is registered.”h]”hŒ¿Pointer to related devlink port structure. Assigned by a driver before netdev registration using SET_NETDEV_DEVLINK_PORT macro. This pointer is static during the time netdevice is registered.”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M_hj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\ h´Mbhjáóubjä)�”}”(hŒ```dpll_pin`` Pointer to the SyncE source pin of a DPLL subsystem, where the clock is recovered. ”h]”(jê)�”}”(hŒ ``dpll_pin``”h]”jð)�”}”(hj� h]”hŒdpll_pin”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mehj{ ubj)�”}”(hhh]”jl)�”}”(hŒRPointer to the SyncE source pin of a DPLL subsystem, where the clock is recovered.”h]”hŒRPointer to the SyncE source pin of a DPLL subsystem, where the clock is recovered.”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mdhj— ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j– h´Mehjáóubjä)�”}”(hŒ5``page_pools`` page pools created for this netdevice ”h]”(jê)�”}”(hŒ``page_pools``”h]”jð)�”}”(hj» h]”hŒ page_pools”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjµ ubj)�”}”(hhh]”jl)�”}”(hŒ%page pools created for this netdevice”h]”hŒ%page pools created for this netdevice”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐ h´M hjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐ h´M hjáóubjä)�”}”(hŒ@``irq_moder`` dim parameters used if IS_ENABLED(CONFIG_DIMLIB). ”h]”(jê)�”}”(hŒ ``irq_moder``”h]”jð)�”}”(hjô h]”hŒ irq_moder”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjî ubj)�”}”(hhh]”jl)�”}”(hŒ1dim parameters used if IS_ENABLED(CONFIG_DIMLIB).”h]”hŒ1dim parameters used if IS_ENABLED(CONFIG_DIMLIB).”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j !h´M hj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j !h´M hjáóubjä)�”}”(hŒ@``max_pacing_offload_horizon`` max EDT offload horizon in nsec. ”h]”(jê)�”}”(hŒ``max_pacing_offload_horizon``”h]”jð)�”}”(hj-!h]”hŒmax_pacing_offload_horizon”…”�”}”(hj/!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mghj'!ubj)�”}”(hhh]”jl)�”}”(hŒ max EDT offload horizon in nsec.”h]”hŒ max EDT offload horizon in nsec.”…”�”}”(hjF!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jB!h´MghjC!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jB!h´Mghjáóubjä)�”}”(hŒQ``napi_config`` An array of napi_config structures containing per-NAPI settings. ”h]”(jê)�”}”(hŒ``napi_config``”h]”jð)�”}”(hjf!h]”hŒ napi_config”…”�”}”(hjh!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjd!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mihj`!ubj)�”}”(hhh]”jl)�”}”(hŒ@An array of napi_config structures containing per-NAPI settings.”h]”hŒ@An array of napi_config structures containing per-NAPI settings.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhhj|!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{!h´Mihjáóubjä)�”}”(hŒk``num_napi_configs`` number of allocated NAPI config structs, always >= max(num_rx_queues, num_tx_queues). ”h]”(jê)�”}”(hŒ``num_napi_configs``”h]”jð)�”}”(hj !h]”hŒnum_napi_configs”…”�”}”(hj¢!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mkhjš!ubj)�”}”(hhh]”jl)�”}”(hŒUnumber of allocated NAPI config structs, always >= max(num_rx_queues, num_tx_queues).”h]”hŒUnumber of allocated NAPI config structs, always >= max(num_rx_queues, num_tx_queues).”…”�”}”(hj¹!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mjhj¶!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµ!h´Mkhjáóubjä)�”}”(hŒq``napi_defer_hard_irqs`` If not zero, provides a counter that would allow to avoid NIC hard IRQ, on busy queues. ”h]”(jê)�”}”(hŒ``napi_defer_hard_irqs``”h]”jð)�”}”(hjÚ!h]”hŒnapi_defer_hard_irqs”…”�”}”(hjÜ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjØ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MnhjÔ!ubj)�”}”(hhh]”jl)�”}”(hŒWIf not zero, provides a counter that would allow to avoid NIC hard IRQ, on busy queues.”h]”hŒWIf not zero, provides a counter that would allow to avoid NIC hard IRQ, on busy queues.”…”�”}”(hjó!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mmhjð!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jï!h´Mnhjáóubjä)�”}”(hŒ4``gro_flush_timeout`` timeout for GRO layer in NAPI ”h]”(jê)�”}”(hŒ``gro_flush_timeout``”h]”jð)�”}”(hj"h]”hŒgro_flush_timeout”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mlhj"ubj)�”}”(hhh]”jl)�”}”(hŒtimeout for GRO layer in NAPI”h]”hŒtimeout for GRO layer in NAPI”…”�”}”(hj-"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)"h´Mlhj*"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)"h´Mlhjáóubjä)�”}”(hŒÎ``up`` copy of **state**'s IFF_UP, but safe to read with just **lock**. May report false negatives while the device is being opened or closed (**lock** does not protect .ndo_open, or .ndo_close). ”h]”(jê)�”}”(hŒ``up``”h]”jð)�”}”(hjM"h]”hŒup”…”�”}”(hjO"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjK"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjG"ubj)�”}”(hhh]”jß)�”}”(hhh]”jä)�”}”(hŒ½copy of **state**'s IFF_UP, but safe to read with just **lock**. May report false negatives while the device is being opened or closed (**lock** does not protect .ndo_open, or .ndo_close). ”h]”(jê)�”}”(hŒ@copy of **state**'s IFF_UP, but safe to read with just **lock**.”h]”(hŒcopy of ”…”�”}”(hjm"h²hh³Nh´Nubj›)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hju"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjm"ubhŒ(’s IFF_UP, but safe to read with just ”…”�”}”(hjm"h²hh³Nh´Nubj›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hj‡"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjm"ubhŒ.”…”�”}”(hjm"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³jb"h´M hji"ubj)�”}”(hhh]”jl)�”}”(hŒ{May report false negatives while the device is being opened or closed (**lock** does not protect .ndo_open, or .ndo_close).”h]”(hŒGMay report false negatives while the device is being opened or closed (”…”�”}”(hj¢"h²hh³Nh´Nubj›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hjª"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢"ubhŒ, does not protect .ndo_open, or .ndo_close).”…”�”}”(hj¢"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjŸ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb"h´M hjf"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjc"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb"h´M hjáóubjä)�”}”(hŒh``request_ops_lock`` request the core to run all **netdev_ops** and **ethtool_ops** under the **lock**. ”h]”(jê)�”}”(hŒ``request_ops_lock``”h]”jð)�”}”(hjç"h]”hŒrequest_ops_lock”…”�”}”(hjé"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjå"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M# hjá"ubj)�”}”(hhh]”jl)�”}”(hŒRrequest the core to run all **netdev_ops** and **ethtool_ops** under the **lock**.”h]”(hŒrequest the core to run all ”…”�”}”(hj#h²hh³Nh´Nubj›)�”}”(hŒ**netdev_ops**”h]”hŒ netdev_ops”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#ubhŒ and ”…”�”}”(hj#h²hh³Nh´Nubj›)�”}”(hŒ**ethtool_ops**”h]”hŒ ethtool_ops”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#ubhŒ under the ”…”�”}”(hj#h²hh³Nh´Nubj›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hj,#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#ubhŒ.”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M" hjý"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jü"h´M# hjáóubjä)�”}”(hX—``lock`` netdev-scope lock, protects a small selection of fields. Should always be taken using netdev_lock() / netdev_unlock() helpers. Drivers are free to use it for other protection. For the drivers that implement shaper or queue API, the scope of this lock is expanded to cover most ndo/queue/ethtool/sysfs operations. Drivers may opt-in to this behavior by setting **request_ops_lock**. **lock** protection mixes with rtnl_lock in multiple ways, fields are either: - simply protected by the instance **lock**; - double protected - writers hold both locks, readers hold either; - ops protected - protected by the lock held around the NDOs and other callbacks, that is the instance lock on devices for which netdev_need_ops_lock() returns true, otherwise by rtnl_lock; - double ops protected - always protected by rtnl_lock but for devices for which netdev_need_ops_lock() returns true - also the instance lock. Simply protects: **gro_flush_timeout**, **napi_defer_hard_irqs**, **napi_list**, **net_shaper_hierarchy**, **reg_state**, **threaded** Double protects: **up**, **moving_ns**, **nd_net**, **xdp_features** Ops protects: **cfg**, **cfg_pending**, **ethtool**, **hwprov** Double ops protects: **real_num_rx_queues**, **real_num_tx_queues** Also protects some fields in: struct napi_struct, struct netdev_queue, struct netdev_rx_queue Ordering: - take after rtnl_lock - for the case of netdev queue leasing, the netdev-scope lock is taken for both the virtual and the physical device; to prevent deadlocks, the virtual device's lock must always be acquired before the physical device's (see netdev_nl_queue_create_doit) ”h]”(jê)�”}”(hŒ``lock``”h]”jð)�”}”(hjW#h]”hŒlock”…”�”}”(hjY#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjU#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MW hjQ#ubj)�”}”(hhh]”(jl)�”}”(hŒ¯netdev-scope lock, protects a small selection of fields. Should always be taken using netdev_lock() / netdev_unlock() helpers. Drivers are free to use it for other protection.”h]”hŒ¯netdev-scope lock, protects a small selection of fields. Should always be taken using netdev_lock() / netdev_unlock() helpers. Drivers are free to use it for other protection.”…”�”}”(hjp#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M( hjm#ubjl)�”}”(hŒÍFor the drivers that implement shaper or queue API, the scope of this lock is expanded to cover most ndo/queue/ethtool/sysfs operations. Drivers may opt-in to this behavior by setting **request_ops_lock**.”h]”(hŒ¸For the drivers that implement shaper or queue API, the scope of this lock is expanded to cover most ndo/queue/ethtool/sysfs operations. Drivers may opt-in to this behavior by setting ”…”�”}”(hj#h²hh³Nh´Nubj›)�”}”(hŒ**request_ops_lock**”h]”hŒrequest_ops_lock”…”�”}”(hj‡#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#ubhŒ.”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M, hjm#ubjl)�”}”(hŒM**lock** protection mixes with rtnl_lock in multiple ways, fields are either:”h]”(j›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hj¤#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj #ubhŒE protection mixes with rtnl_lock in multiple ways, fields are either:”…”�”}”(hj #h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M1 hjm#ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ+simply protected by the instance **lock**; ”h]”jl)�”}”(hŒ*simply protected by the instance **lock**;”h]”(hŒ!simply protected by the instance ”…”�”}”(hjÄ#h²hh³Nh´Nubj›)�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hjÌ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÄ#ubhŒ;”…”�”}”(hjÄ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4 hjÀ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj½#ubjH[)�”}”(hŒAdouble protected - writers hold both locks, readers hold either; ”h]”jl)�”}”(hŒ@double protected - writers hold both locks, readers hold either;”h]”hŒ@double protected - writers hold both locks, readers hold either;”…”�”}”(hjï#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M6 hjë#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj½#ubjH[)�”}”(hŒ¼ops protected - protected by the lock held around the NDOs and other callbacks, that is the instance lock on devices for which netdev_need_ops_lock() returns true, otherwise by rtnl_lock; ”h]”jl)�”}”(hŒ»ops protected - protected by the lock held around the NDOs and other callbacks, that is the instance lock on devices for which netdev_need_ops_lock() returns true, otherwise by rtnl_lock;”h]”hŒ»ops protected - protected by the lock held around the NDOs and other callbacks, that is the instance lock on devices for which netdev_need_ops_lock() returns true, otherwise by rtnl_lock;”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M8 hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj½#ubjH[)�”}”(hŒ�double ops protected - always protected by rtnl_lock but for devices for which netdev_need_ops_lock() returns true - also the instance lock. ”h]”jl)�”}”(hŒŒdouble ops protected - always protected by rtnl_lock but for devices for which netdev_need_ops_lock() returns true - also the instance lock.”h]”hŒŒdouble ops protected - always protected by rtnl_lock but for devices for which netdev_need_ops_lock() returns true - also the instance lock.”…”�”}”(hj!$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M< hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj½#ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jä#h´M4 hjm#ubjß)�”}”(hhh]”(jä)�”}”(hŒ‡Simply protects: **gro_flush_timeout**, **napi_defer_hard_irqs**, **napi_list**, **net_shaper_hierarchy**, **reg_state**, **threaded** ”h]”(jê)�”}”(hŒSimply protects:”h]”hŒSimply protects:”…”�”}”(hjC$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MB hj?$ubj)�”}”(hhh]”jl)�”}”(hŒu**gro_flush_timeout**, **napi_defer_hard_irqs**, **napi_list**, **net_shaper_hierarchy**, **reg_state**, **threaded**”h]”(j›)�”}”(hŒ**gro_flush_timeout**”h]”hŒgro_flush_timeout”…”�”}”(hjY$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU$ubhŒ, ”…”�”}”(hjU$h²hh³Nh´Nubj›)�”}”(hŒ**napi_defer_hard_irqs**”h]”hŒnapi_defer_hard_irqs”…”�”}”(hjk$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU$ubhŒ, ”…”�”}”hjU$sbj›)�”}”(hŒ **napi_list**”h]”hŒ napi_list”…”�”}”(hj}$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU$ubhŒ, ”…”�”}”(hjU$h²hh³Nh´Nubj›)�”}”(hŒ**net_shaper_hierarchy**”h]”hŒnet_shaper_hierarchy”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU$ubhŒ, ”…”�”}”hjU$sbj›)�”}”(hŒ **reg_state**”h]”hŒ reg_state”…”�”}”(hj¡$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU$ubhŒ, ”…”�”}”hjU$sbj›)�”}”(hŒ **threaded**”h]”hŒthreaded”…”�”}”(hj³$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MA hjR$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQ$h´MB hj<$ubjä)�”}”(hŒEDouble protects: **up**, **moving_ns**, **nd_net**, **xdp_features** ”h]”(jê)�”}”(hŒDouble protects:”h]”hŒDouble protects:”…”�”}”(hjØ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´ME hjÔ$ubj)�”}”(hhh]”jl)�”}”(hŒ3**up**, **moving_ns**, **nd_net**, **xdp_features**”h]”(j›)�”}”(hŒ**up**”h]”hŒup”…”�”}”(hjî$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê$ubhŒ, ”…”�”}”(hjê$h²hh³Nh´Nubj›)�”}”(hŒ **moving_ns**”h]”hŒ moving_ns”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê$ubhŒ, ”…”�”}”hjê$sbj›)�”}”(hŒ **nd_net**”h]”hŒnd_net”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê$ubhŒ, ”…”�”}”hjê$sbj›)�”}”(hŒ**xdp_features**”h]”hŒ xdp_features”…”�”}”(hj$%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæ$h´ME hjç$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæ$h´ME hj<$ubjä)�”}”(hŒ@Ops protects: **cfg**, **cfg_pending**, **ethtool**, **hwprov** ”h]”(jê)�”}”(hŒ Ops protects:”h]”hŒ Ops protects:”…”�”}”(hjH%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MH hjD%ubj)�”}”(hhh]”jl)�”}”(hŒ1**cfg**, **cfg_pending**, **ethtool**, **hwprov**”h]”(j›)�”}”(hŒ**cfg**”h]”hŒcfg”…”�”}”(hj^%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZ%ubhŒ, ”…”�”}”(hjZ%h²hh³Nh´Nubj›)�”}”(hŒ**cfg_pending**”h]”hŒ cfg_pending”…”�”}”(hjp%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZ%ubhŒ, ”…”�”}”hjZ%sbj›)�”}”(hŒ **ethtool**”h]”hŒethtool”…”�”}”(hj‚%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZ%ubhŒ, ”…”�”}”hjZ%sbj›)�”}”(hŒ **hwprov**”h]”hŒhwprov”…”�”}”(hj”%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jV%h´MH hjW%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jV%h´MH hj<$ubjä)�”}”(hŒDDouble ops protects: **real_num_rx_queues**, **real_num_tx_queues** ”h]”(jê)�”}”(hŒDouble ops protects:”h]”hŒDouble ops protects:”…”�”}”(hj¸%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MK hj´%ubj)�”}”(hhh]”jl)�”}”(hŒ.**real_num_rx_queues**, **real_num_tx_queues**”h]”(j›)�”}”(hŒ**real_num_rx_queues**”h]”hŒreal_num_rx_queues”…”�”}”(hjÎ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊ%ubhŒ, ”…”�”}”(hjÊ%h²hh³Nh´Nubj›)�”}”(hŒ**real_num_tx_queues**”h]”hŒreal_num_tx_queues”…”�”}”(hjà%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÆ%h´MK hjÇ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÆ%h´MK hj<$ubjä)�”}”(hŒ^Also protects some fields in: struct napi_struct, struct netdev_queue, struct netdev_rx_queue ”h]”(jê)�”}”(hŒAlso protects some fields in:”h]”hŒAlso protects some fields in:”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MN hj&ubj)�”}”(hhh]”jl)�”}”(hŒ?struct napi_struct, struct netdev_queue, struct netdev_rx_queue”h]”hŒ?struct napi_struct, struct netdev_queue, struct netdev_rx_queue”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j&h´MN hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j&h´MN hj<$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjm#ubjl)�”}”(hŒ Ordering:”h]”hŒ Ordering:”…”�”}”(hj6&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MP hjm#ubjC[)�”}”(hhh]”(jH[)�”}”(hŒtake after rtnl_lock ”h]”jl)�”}”(hŒtake after rtnl_lock”h]”hŒtake after rtnl_lock”…”�”}”(hjL&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MR hjH&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjE&ubjH[)�”}”(hŒúfor the case of netdev queue leasing, the netdev-scope lock is taken for both the virtual and the physical device; to prevent deadlocks, the virtual device's lock must always be acquired before the physical device's (see netdev_nl_queue_create_doit) ”h]”jl)�”}”(hŒùfor the case of netdev queue leasing, the netdev-scope lock is taken for both the virtual and the physical device; to prevent deadlocks, the virtual device's lock must always be acquired before the physical device's (see netdev_nl_queue_create_doit)”h]”hŒýfor the case of netdev queue leasing, the netdev-scope lock is taken for both the virtual and the physical device; to prevent deadlocks, the virtual device’s lock must always be acquired before the physical device’s (see netdev_nl_queue_create_doit)”…”�”}”(hje&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MT hja&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjE&ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jZ&h´MR hjm#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jl#h´MW hjáóubjä)�”}”(hŒ```net_shaper_hierarchy`` data tracking the current shaper status see include/net/net_shapers.h ”h]”(jê)�”}”(hŒ``net_shaper_hierarchy``”h]”jð)�”}”(hj’&h]”hŒnet_shaper_hierarchy”…”�”}”(hj”&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M^ hjŒ&ubj)�”}”(hhh]”jß)�”}”(hhh]”jä)�”}”(hŒFdata tracking the current shaper status see include/net/net_shapers.h ”h]”(jê)�”}”(hŒ'data tracking the current shaper status”h]”hŒ'data tracking the current shaper status”…”�”}”(hj²&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³j§&h´M^ hj®&ubj)�”}”(hhh]”jl)�”}”(hŒsee include/net/net_shapers.h”h]”hŒsee include/net/net_shapers.h”…”�”}”(hjÃ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§&h´M^ hjÀ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§&h´M^ hj«&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§&h´M^ hjáóubjä)�”}”(hŒb``neighbours`` List heads pointing to this device's neighbours' dev_list, one per address-family. ”h]”(jê)�”}”(hŒ``neighbours``”h]”jð)�”}”(hjõ&h]”hŒ neighbours”…”�”}”(hj÷&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjó&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mqhjï&ubj)�”}”(hhh]”jl)�”}”(hŒRList heads pointing to this device's neighbours' dev_list, one per address-family.”h]”hŒVList heads pointing to this device’s neighbours’ dev_list, one per address-family.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mphj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjï&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j 'h´Mqhjáóubjä)�”}”(hŒD``hwprov`` Tracks which PTP performs hardware packet time stamping. ”h]”(jê)�”}”(hŒ ``hwprov``”h]”jð)�”}”(hj/'h]”hŒhwprov”…”�”}”(hj1'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mrhj)'ubj)�”}”(hhh]”jl)�”}”(hŒ8Tracks which PTP performs hardware packet time stamping.”h]”hŒ8Tracks which PTP performs hardware packet time stamping.”…”�”}”(hjH'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jD'h´MrhjE'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jD'h´Mrhjáóubjä)�”}”(hŒ/``priv`` Flexible array containing private data”h]”(jê)�”}”(hŒ``priv``”h]”jð)�”}”(hjh'h]”hŒpriv”…”�”}”(hjj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjf'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hjb'ubj)�”}”(hhh]”jl)�”}”(hŒ&Flexible array containing private data”h]”hŒ&Flexible array containing private data”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‚hj~'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}'h´M�hjáóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj™óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj«'h]”hŒ Description”…”�”}”(hj­'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M…hj�Âh²hubjÒ)�”}”(hXActually, this whole structure is a big mistake. It mixes I/O data with strictly "high-level" data, and it has to know about almost every data structure used in the INET module. interface address info: FIXME: cleanup struct net_device such that network protocol info moves out. ”h]”(jl)�”}”(hŒ²Actually, this whole structure is a big mistake. It mixes I/O data with strictly "high-level" data, and it has to know about almost every data structure used in the INET module.”h]”hŒ¶Actually, this whole structure is a big mistake. It mixes I/O data with strictly “high-levelâ€� data, and it has to know about almost every data structure used in the INET module.”…”�”}”(hjÅ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M-hjÁ'ubjl)�”}”(hŒinterface address info:”h]”hŒinterface address info:”…”�”}”(hjÔ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M2hjÁ'ubjl)�”}”(hŒKFIXME: cleanup struct net_device such that network protocol info moves out.”h]”hŒKFIXME: cleanup struct net_device such that network protocol info moves out.”…”�”}”(hjã'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M5hjÁ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÓ'h´M-hj�Âh²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetdev_priv (C function)”Œ c.netdev_priv”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void * netdev_priv (const struct net_device *dev)”h]”j )�”}”(hŒ/void *netdev_priv(const struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj (h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj (h²hh³j(h´M ubj )�”}”(hj h]”hŒ*”…”�”}”(hj.(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj (h²hh³j(h´M ubj3)�”}”(hŒ netdev_priv”h]”j9)�”}”(hŒ netdev_priv”h]”hŒ netdev_priv”…”�”}”(hj?(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;(ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj (h²hh³j(h´M ubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj[(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW(ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjv(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW(ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj”(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–(Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jA(sbŒ c.netdev_priv”†”asbuh1hhjW(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW(ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjW(ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÏ(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjW(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjS(ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj (h²hh³j(h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj (h²hh³j(h´M ubah}”(h]”j(ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j(h´M hj(h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"access network device private data”h]”hŒ"access network device private data”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjö(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj(h²hh³j(h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j)jŒj)j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒs**Parameters** ``const struct net_device *dev`` network device **Description** Get network device private data”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj)h]”hŒ Parameters”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj)ubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hj:)h]”hŒconst struct net_device *dev”…”�”}”(hj<)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj4)ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjS)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jO)h´M hjP)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jO)h´M hj1)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj)ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hju)h]”hŒ Description”…”�”}”(hjw)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjs)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj)ubjl)�”}”(hŒGet network device private data”h]”hŒGet network device private data”…”�”}”(hj‹)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetdev_from_priv (C function)”Œc.netdev_from_priv”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7struct net_device * netdev_from_priv (const void *priv)”h]”j )�”}”(hŒ5struct net_device *netdev_from_priv(const void *priv)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjº)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶)h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M! ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶)h²hh³jÇ)h´M! ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÙ)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖ)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÛ)Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œnetdev_from_priv”sbŒc.netdev_from_priv”†”asbuh1hhj¶)h²hh³jÇ)h´M! ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶)h²hh³jÇ)h´M! ubj )�”}”(hj h]”hŒ*”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶)h²hh³jÇ)h´M! ubj3)�”}”(hŒnetdev_from_priv”h]”j9)�”}”(hj÷)h]”hŒnetdev_from_priv”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶)h²hh³jÇ)h´M! ubj¡ )�”}”(hŒ(const void *priv)”h]”j§ )�”}”(hŒconst void *priv”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj4*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0*ubjM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjO*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj0*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]*•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0*ubj )�”}”(hj h]”hŒ*”…”�”}”(hjk*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj0*ubj9)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjx*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,*ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶)h²hh³jÇ)h´M! ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj²)h²hh³jÇ)h´M! ubah}”(h]”j­)ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÇ)h´M! hj¯)h²hubjg)�”}”(hhh]”jl)�”}”(hŒget network device from priv”h]”hŒget network device from priv”…”�”}”(hj¢*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M! hjŸ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯)h²hh³jÇ)h´M! ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jº*jŒjº*j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒt**Parameters** ``const void *priv`` network device private data **Return** net_device to which **priv** belongs”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÄ*h]”hŒ Parameters”…”�”}”(hjÆ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M% hj¾*ubjß)�”}”(hhh]”jä)�”}”(hŒ1``const void *priv`` network device private data ”h]”(jê)�”}”(hŒ``const void *priv``”h]”jð)�”}”(hjã*h]”hŒconst void *priv”…”�”}”(hjå*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjá*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M" hjÝ*ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device private data”h]”hŒnetwork device private data”…”�”}”(hjü*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jø*h´M" hjù*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jø*h´M" hjÚ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¾*ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj+h]”hŒReturn”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M$ hj¾*ubjl)�”}”(hŒ$net_device to which **priv** belongs”h]”(hŒnet_device to which ”…”�”}”(hj4+h²hh³Nh´Nubj›)�”}”(hŒ**priv**”h]”hŒpriv”…”�”}”(hj<+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4+ubhŒ belongs”…”�”}”(hj4+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M$ hj¾*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_napi_add (C function)”Œc.netif_napi_add”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒnvoid netif_napi_add (struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct *, int))”h]”j )�”}”(hŒlvoid netif_napi_add(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct*, int))”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hju+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjq+h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mi ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq+h²hh³jƒ+h´Mi ubj3)�”}”(hŒnetif_napi_add”h]”j9)�”}”(hŒnetif_napi_add”h]”hŒnetif_napi_add”…”�”}”(hj–+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’+ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjq+h²hh³jƒ+h´Mi ubj¡ )�”}”(hŒY(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct*, int))”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj²+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®+ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÐ+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÒ+Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j˜+sbŒc.netif_napi_add”†”asbuh1hhj®+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®+ubj )�”}”(hj h]”hŒ*”…”�”}”(hjþ+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj®+ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª+ubj§ )�”}”(hŒstruct napi_struct *napi”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj$,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ,ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjB,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jD,Œmodname”NŒ classname”Njå jè )�”}”jë ]”jì+Œc.netif_napi_add”†”asbuh1hhj ,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ,ubj )�”}”(hj h]”hŒ*”…”�”}”(hjn,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ,ubj9)�”}”(hŒnapi”h]”hŒnapi”…”�”}”(hj{,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª+ubj§ )�”}”(hŒ%int (*poll)(struct napi_struct*, int)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj”,h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�,ubj )�”}”(hjh]”hŒ(”…”�”}”(hj°,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�,ubj )�”}”(hj h]”hŒ*”…”�”}”(hj½,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�,ubj9)�”}”(hŒpoll”h]”hŒpoll”…”�”}”(hjÊ,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�,ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjØ,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�,ubj )�”}”(hjh]”hŒ(”…”�”}”(hjå,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�,ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjò,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�,ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj -ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j-Œmodname”NŒ classname”Njå jè )�”}”jë ]”jì+Œc.netif_napi_add”†”asbuh1hhj�,ubj )�”}”(hj h]”hŒ*”…”�”}”(hj.-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�,ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hj;-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�,ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjV-h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�,ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjd-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjª+ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjq+h²hh³jƒ+h´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjm+h²hh³jƒ+h´Mi ubah}”(h]”jh+ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jƒ+h´Mi hjj+h²hubjg)�”}”(hhh]”jl)�”}”(hŒinitialize a NAPI context”h]”hŒinitialize a NAPI context”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mi hjŠ-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjj+h²hh³jƒ+h´Mi ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¥-jŒj¥-j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX0**Parameters** ``struct net_device *dev`` network device ``struct napi_struct *napi`` NAPI context ``int (*poll)(struct napi_struct *, int)`` polling function **Description** netif_napi_add() must be used to initialize a NAPI context prior to calling *any* of the other NAPI-related functions.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¯-h]”hŒ Parameters”…”�”}”(hj±-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj­-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mm hj©-ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÎ-h]”hŒstruct net_device *dev”…”�”}”(hjÐ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mj hjÈ-ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjç-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jã-h´Mj hjä-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jã-h´Mj hjÅ-ubjä)�”}”(hŒ*``struct napi_struct *napi`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *napi``”h]”jð)�”}”(hj.h]”hŒstruct napi_struct *napi”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mk hj.ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.h´Mk hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.h´Mk hjÅ-ubjä)�”}”(hŒ<``int (*poll)(struct napi_struct *, int)`` polling function ”h]”(jê)�”}”(hŒ*``int (*poll)(struct napi_struct *, int)``”h]”jð)�”}”(hj@.h]”hŒ&int (*poll)(struct napi_struct *, int)”…”�”}”(hjB.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Ml hj:.ubj)�”}”(hhh]”jl)�”}”(hŒpolling function”h]”hŒpolling function”…”�”}”(hjY.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jU.h´Ml hjV.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jU.h´Ml hjÅ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj©-ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj{.h]”hŒ Description”…”�”}”(hj}.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjy.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mn hj©-ubjl)�”}”(hŒvnetif_napi_add() must be used to initialize a NAPI context prior to calling *any* of the other NAPI-related functions.”h]”(hŒLnetif_napi_add() must be used to initialize a NAPI context prior to calling ”…”�”}”(hj‘.h²hh³Nh´NubjÑ‹)�”}”(hŒ*any*”h]”hŒany”…”�”}”(hj™.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jЋhj‘.ubhŒ% of the other NAPI-related functions.”…”�”}”(hj‘.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mm hj©-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"netif_napi_add_config (C function)”Œc.netif_napi_add_config”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ€void netif_napi_add_config (struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct *, int), int index)”h]”j )�”}”(hŒ~void netif_napi_add_config(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct*, int), int index)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÒ.h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÎ.h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M“ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÎ.h²hh³jà.h´M“ ubj3)�”}”(hŒnetif_napi_add_config”h]”j9)�”}”(hŒnetif_napi_add_config”h]”hŒnetif_napi_add_config”…”�”}”(hjó.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï.ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÎ.h²hh³jà.h´M“ ubj¡ )�”}”(hŒd(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct*, int), int index)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj /ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj /ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj-/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j//Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jõ.sbŒc.netif_napi_add_config”†”asbuh1hhj /ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj /ubj )�”}”(hj h]”hŒ*”…”�”}”(hj[/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj /ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjh/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj /ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/ubj§ )�”}”(hŒstruct napi_struct *napi”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}/ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjŸ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¡/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jI/Œc.netif_napi_add_config”†”asbuh1hhj}/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}/ubj )�”}”(hj h]”hŒ*”…”�”}”(hjË/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}/ubj9)�”}”(hŒnapi”h]”hŒnapi”…”�”}”(hjØ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/ubj§ )�”}”(hŒ%int (*poll)(struct napi_struct*, int)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjñ/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjí/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjí/ubj )�”}”(hjh]”hŒ(”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjí/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjí/ubj9)�”}”(hŒpoll”h]”hŒpoll”…”�”}”(hj'0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjí/ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj50h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjí/ubj )�”}”(hjh]”hŒ(”…”�”}”(hjB0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjí/ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjí/ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjm0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jo0Œmodname”NŒ classname”Njå jè )�”}”jë ]”jI/Œc.netif_napi_add_config”†”asbuh1hhjí/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjí/ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hj˜0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjí/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjí/ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj³0h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjí/ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjÁ0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjí/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/ubj§ )�”}”(hŒ int index”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÙ0h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÕ0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕ0ubj9)�”}”(hŒindex”h]”hŒindex”…”�”}”(hjõ0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÎ.h²hh³jà.h´M“ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÊ.h²hh³jà.h´M“ ubah}”(h]”jÅ.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jà.h´M“ hjÇ.h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0initialize a NAPI context with persistent config”h]”hŒ0initialize a NAPI context with persistent config”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M“ hj1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÇ.h²hh³jà.h´M“ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j71jŒj71j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÇ**Parameters** ``struct net_device *dev`` network device ``struct napi_struct *napi`` NAPI context ``int (*poll)(struct napi_struct *, int)`` polling function ``int index`` the NAPI index”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjA1h]”hŒ Parameters”…”�”}”(hjC1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M— hj;1ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj`1h]”hŒstruct net_device *dev”…”�”}”(hjb1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M” hjZ1ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjy1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ju1h´M” hjv1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ju1h´M” hjW1ubjä)�”}”(hŒ*``struct napi_struct *napi`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *napi``”h]”jð)�”}”(hj™1h]”hŒstruct napi_struct *napi”…”�”}”(hj›1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M• hj“1ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hj²1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j®1h´M• hj¯1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j®1h´M• hjW1ubjä)�”}”(hŒ<``int (*poll)(struct napi_struct *, int)`` polling function ”h]”(jê)�”}”(hŒ*``int (*poll)(struct napi_struct *, int)``”h]”jð)�”}”(hjÒ1h]”hŒ&int (*poll)(struct napi_struct *, int)”…”�”}”(hjÔ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M– hjÌ1ubj)�”}”(hhh]”jl)�”}”(hŒpolling function”h]”hŒpolling function”…”�”}”(hjë1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jç1h´M– hjè1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jç1h´M– hjW1ubjä)�”}”(hŒ``int index`` the NAPI index”h]”(jê)�”}”(hŒ ``int index``”h]”jð)�”}”(hj 2h]”hŒ int index”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj 2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M˜ hj2ubj)�”}”(hhh]”jl)�”}”(hŒthe NAPI index”h]”hŒthe NAPI index”…”�”}”(hj$2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M— hj!2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j 2h´M˜ hjW1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj;1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_napi_add_tx (C function)”Œc.netif_napi_add_tx”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒqvoid netif_napi_add_tx (struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct *, int))”h]”j )�”}”(hŒovoid netif_napi_add_tx(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct*, int))”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hje2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hja2h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M£ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja2h²hh³js2h´M£ ubj3)�”}”(hŒnetif_napi_add_tx”h]”j9)�”}”(hŒnetif_napi_add_tx”h]”hŒnetif_napi_add_tx”…”�”}”(hj†2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚2ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hja2h²hh³js2h´M£ ubj¡ )�”}”(hŒY(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct*, int))”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¢2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž2ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÀ2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÂ2Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jˆ2sbŒc.netif_napi_add_tx”†”asbuh1hhjž2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž2ubj )�”}”(hj h]”hŒ*”…”�”}”(hjî2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjž2ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjû2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjš2ubj§ )�”}”(hŒstruct napi_struct *napi”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj23h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j43Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÜ2Œc.netif_napi_add_tx”†”asbuh1hhj3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ubj )�”}”(hj h]”hŒ*”…”�”}”(hj^3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj3ubj9)�”}”(hŒnapi”h]”hŒnapi”…”�”}”(hjk3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjš2ubj§ )�”}”(hŒ%int (*poll)(struct napi_struct*, int)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj„3h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj€3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€3ubj )�”}”(hjh]”hŒ(”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€3ubj )�”}”(hj h]”hŒ*”…”�”}”(hj­3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€3ubj9)�”}”(hŒpoll”h]”hŒpoll”…”�”}”(hjº3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€3ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjÈ3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€3ubj )�”}”(hjh]”hŒ(”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€3ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjâ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€3ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j4Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÜ2Œc.netif_napi_add_tx”†”asbuh1hhj€3ubj )�”}”(hj h]”hŒ*”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€3ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hj+4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj84h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€3ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjF4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj€3ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjT4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjš2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hja2h²hh³js2h´M£ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj]2h²hh³js2h´M£ ubah}”(h]”jX2ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³js2h´M£ hjZ2h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0initialize a NAPI context to be used for Tx only”h]”hŒ0initialize a NAPI context to be used for Tx only”…”�”}”(hj}4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M£ hjz4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjZ2h²hh³js2h´M£ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j•4jŒj•4j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXm**Parameters** ``struct net_device *dev`` network device ``struct napi_struct *napi`` NAPI context ``int (*poll)(struct napi_struct *, int)`` polling function **Description** This variant of netif_napi_add() should be used from drivers using NAPI to exclusively poll a TX queue. This will avoid we add it into napi_hash[], thus polluting this hash table.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŸ4h]”hŒ Parameters”…”�”}”(hj¡4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M§ hj™4ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj¾4h]”hŒstruct net_device *dev”…”�”}”(hjÀ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¤ hj¸4ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj×4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓ4h´M¤ hjÔ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓ4h´M¤ hjµ4ubjä)�”}”(hŒ*``struct napi_struct *napi`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *napi``”h]”jð)�”}”(hj÷4h]”hŒstruct napi_struct *napi”…”�”}”(hjù4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¥ hjñ4ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j 5h´M¥ hj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j 5h´M¥ hjµ4ubjä)�”}”(hŒ<``int (*poll)(struct napi_struct *, int)`` polling function ”h]”(jê)�”}”(hŒ*``int (*poll)(struct napi_struct *, int)``”h]”jð)�”}”(hj05h]”hŒ&int (*poll)(struct napi_struct *, int)”…”�”}”(hj25h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¦ hj*5ubj)�”}”(hhh]”jl)�”}”(hŒpolling function”h]”hŒpolling function”…”�”}”(hjI5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jE5h´M¦ hjF5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jE5h´M¦ hjµ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj™4ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjk5h]”hŒ Description”…”�”}”(hjm5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhji5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¨ hj™4ubjl)�”}”(hŒ³This variant of netif_napi_add() should be used from drivers using NAPI to exclusively poll a TX queue. This will avoid we add it into napi_hash[], thus polluting this hash table.”h]”hŒ³This variant of netif_napi_add() should be used from drivers using NAPI to exclusively poll a TX queue. This will avoid we add it into napi_hash[], thus polluting this hash table.”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M§ hj™4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__netif_napi_del (C function)”Œc.__netif_napi_del”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void __netif_napi_del (struct napi_struct *napi)”h]”j )�”}”(hŒ/void __netif_napi_del(struct napi_struct *napi)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¬5h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¶ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬5h²hh³j¾5h´M¶ ubj3)�”}”(hŒ__netif_napi_del”h]”j9)�”}”(hŒ__netif_napi_del”h]”hŒ__netif_napi_del”…”�”}”(hjÑ5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍ5ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¬5h²hh³j¾5h´M¶ ubj¡ )�”}”(hŒ(struct napi_struct *napi)”h]”j§ )�”}”(hŒstruct napi_struct *napi”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjí5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé5ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j 6Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÓ5sbŒc.__netif_napi_del”†”asbuh1hhjé5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé5ubj )�”}”(hj h]”hŒ*”…”�”}”(hj96h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjé5ubj9)�”}”(hŒnapi”h]”hŒnapi”…”�”}”(hjF6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjå5ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¬5h²hh³j¾5h´M¶ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨5h²hh³j¾5h´M¶ ubah}”(h]”j£5ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¾5h´M¶ hj¥5h²hubjg)�”}”(hhh]”jl)�”}”(hŒremove a NAPI context”h]”hŒremove a NAPI context”…”�”}”(hjp6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¶ hjm6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥5h²hh³j¾5h´M¶ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jˆ6jŒjˆ6j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX **Parameters** ``struct napi_struct *napi`` NAPI context **Description** Warning: caller must observe RCU grace period before freeing memory containing **napi**. Drivers might want to call this helper to combine all the needed RCU grace periods into a single one.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj’6h]”hŒ Parameters”…”�”}”(hj”6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mº hjŒ6ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct napi_struct *napi`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *napi``”h]”jð)�”}”(hj±6h]”hŒstruct napi_struct *napi”…”�”}”(hj³6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M· hj«6ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hjÊ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÆ6h´M· hjÇ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÆ6h´M· hj¨6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŒ6ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjì6h]”hŒ Description”…”�”}”(hjî6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¹ hjŒ6ubjl)�”}”(hŒ¾Warning: caller must observe RCU grace period before freeing memory containing **napi**. Drivers might want to call this helper to combine all the needed RCU grace periods into a single one.”h]”(hŒOWarning: caller must observe RCU grace period before freeing memory containing ”…”�”}”(hj7h²hh³Nh´Nubj›)�”}”(hŒ**napi**”h]”hŒnapi”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7ubhŒg. Drivers might want to call this helper to combine all the needed RCU grace periods into a single one.”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¸ hjŒ6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_napi_del (C function)”Œc.netif_napi_del”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void netif_napi_del (struct napi_struct *napi)”h]”j )�”}”(hŒ-void netif_napi_del(struct napi_struct *napi)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjC7h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj?7h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MË ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?7h²hh³jQ7h´MË ubj3)�”}”(hŒnetif_napi_del”h]”j9)�”}”(hŒnetif_napi_del”h]”hŒnetif_napi_del”…”�”}”(hjd7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`7ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj?7h²hh³jQ7h´MË ubj¡ )�”}”(hŒ(struct napi_struct *napi)”h]”j§ )�”}”(hŒstruct napi_struct *napi”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj€7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|7ubh)�”}”(hhh]”j9)�”}”(hŒ napi_struct”h]”hŒ napi_struct”…”�”}”(hjž7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j 7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jf7sbŒc.netif_napi_del”†”asbuh1hhj|7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|7ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj|7ubj9)�”}”(hŒnapi”h]”hŒnapi”…”�”}”(hjÙ7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjx7ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj?7h²hh³jQ7h´MË ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj;7h²hh³jQ7h´MË ubah}”(h]”j67ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQ7h´MË hj87h²hubjg)�”}”(hhh]”jl)�”}”(hŒremove a NAPI context”h]”hŒremove a NAPI context”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MË hj8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj87h²hh³jQ7h´MË ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j8jŒj8j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ˜**Parameters** ``struct napi_struct *napi`` NAPI context **Description** netif_napi_del() removes a NAPI context from the network device NAPI list”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%8h]”hŒ Parameters”…”�”}”(hj'8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÏ hj8ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct napi_struct *napi`` NAPI context ”h]”(jê)�”}”(hŒ``struct napi_struct *napi``”h]”jð)�”}”(hjD8h]”hŒstruct napi_struct *napi”…”�”}”(hjF8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÌ hj>8ubj)�”}”(hhh]”jl)�”}”(hŒ NAPI context”h]”hŒ NAPI context”…”�”}”(hj]8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY8h´MÌ hjZ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY8h´MÌ hj;8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj8h]”hŒ Description”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÎ hj8ubjÒ)�”}”(hŒInetif_napi_del() removes a NAPI context from the network device NAPI list”h]”jl)�”}”(hj—8h]”hŒInetif_napi_del() removes a NAPI context from the network device NAPI list”…”�”}”(hj™8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÍ hj•8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j¦8h´MÍ hj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_start_queue (C function)”Œc.netif_start_queue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void netif_start_queue (struct net_device *dev)”h]”j )�”}”(hŒ.void netif_start_queue(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍ8h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÉ8h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉ8h²hh³jÛ8h´M°ubj3)�”}”(hŒnetif_start_queue”h]”j9)�”}”(hŒnetif_start_queue”h]”hŒnetif_start_queue”…”�”}”(hjî8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjê8ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÉ8h²hh³jÛ8h´M°ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj(9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j*9Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jð8sbŒc.netif_start_queue”†”asbuh1hhj9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9ubj )�”}”(hj h]”hŒ*”…”�”}”(hjV9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjc9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÉ8h²hh³jÛ8h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÅ8h²hh³jÛ8h´M°ubah}”(h]”jÀ8ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÛ8h´M°hjÂ8h²hubjg)�”}”(hhh]”jl)�”}”(hŒallow transmit”h]”hŒallow transmit”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M°hjŠ9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÂ8h²hh³jÛ8h´M°ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¥9jŒj¥9j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ‘**Parameters** ``struct net_device *dev`` network device **Description** Allow upper layers to call the device hard_start_xmit routine.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¯9h]”hŒ Parameters”…”�”}”(hj±9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj­9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M´hj©9ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÎ9h]”hŒstruct net_device *dev”…”�”}”(hjÐ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M±hjÈ9ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjç9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jã9h´M±hjä9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jã9h´M±hjÅ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj©9ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj :h]”hŒ Description”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M³hj©9ubjÒ)�”}”(hŒ>Allow upper layers to call the device hard_start_xmit routine.”h]”jl)�”}”(hj!:h]”hŒ>Allow upper layers to call the device hard_start_xmit routine.”…”�”}”(hj#:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M²hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j0:h´M²hj©9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_wake_queue (C function)”Œc.netif_wake_queue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void netif_wake_queue (struct net_device *dev)”h]”j )�”}”(hŒ-void netif_wake_queue(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjW:h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjS:h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjS:h²hh³je:h´MÇubj3)�”}”(hŒnetif_wake_queue”h]”j9)�”}”(hŒnetif_wake_queue”h]”hŒnetif_wake_queue”…”�”}”(hjx:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt:ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjS:h²hh³je:h´MÇubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj”:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�:ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj²:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j´:Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jz:sbŒc.netif_wake_queue”†”asbuh1hhj�:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�:ubj )�”}”(hj h]”hŒ*”…”�”}”(hjà:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�:ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjí:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŒ:ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjS:h²hh³je:h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjO:h²hh³je:h´MÇubah}”(h]”jJ:ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³je:h´MÇhjL:h²hubjg)�”}”(hhh]”jl)�”}”(hŒrestart transmit”h]”hŒrestart transmit”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÇhj;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjL:h²hh³je:h´MÇubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j/;jŒj/;j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÓ**Parameters** ``struct net_device *dev`` network device **Description** Allow upper layers to call the device hard_start_xmit routine. Used for flow control when transmit resources are available.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj9;h]”hŒ Parameters”…”�”}”(hj;;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MËhj3;ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjX;h]”hŒstruct net_device *dev”…”�”}”(hjZ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjV;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÈhjR;ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjq;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jm;h´MÈhjn;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jm;h´MÈhjO;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj3;ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj“;h]”hŒ Description”…”�”}”(hj•;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÊhj3;ubjÒ)�”}”(hŒ{Allow upper layers to call the device hard_start_xmit routine. Used for flow control when transmit resources are available.”h]”jl)�”}”(hŒ{Allow upper layers to call the device hard_start_xmit routine. Used for flow control when transmit resources are available.”h]”hŒ{Allow upper layers to call the device hard_start_xmit routine. Used for flow control when transmit resources are available.”…”�”}”(hj­;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÉhj©;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j»;h´MÉhj3;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_stop_queue (C function)”Œc.netif_stop_queue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void netif_stop_queue (struct net_device *dev)”h]”j )�”}”(hŒ-void netif_stop_queue(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâ;h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞ;h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Méubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞ;h²hh³jð;h´Méubj3)�”}”(hŒnetif_stop_queue”h]”j9)�”}”(hŒnetif_stop_queue”h]”hŒnetif_stop_queue”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿ;ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÞ;h²hh³jð;h´Méubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj=<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j?<Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j<sbŒc.netif_stop_queue”†”asbuh1hhj<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<ubj )�”}”(hj h]”hŒ*”…”�”}”(hjk<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj<ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÞ;h²hh³jð;h´Méubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÚ;h²hh³jð;h´Méubah}”(h]”jÕ;ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jð;h´Méhj×;h²hubjg)�”}”(hhh]”jl)�”}”(hŒstop transmitted packets”h]”hŒstop transmitted packets”…”�”}”(hj¢<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MéhjŸ<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj×;h²hh³jð;h´Méubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jº<jŒjº<j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÔ**Parameters** ``struct net_device *dev`` network device **Description** Stop upper layers calling the device hard_start_xmit routine. Used for flow control when transmit resources are unavailable.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÄ<h]”hŒ Parameters”…”�”}”(hjÆ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Míhj¾<ubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjã<h]”hŒstruct net_device *dev”…”�”}”(hjå<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjá<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MêhjÝ<ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjü<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jø<h´Mêhjù<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jø<h´MêhjÚ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¾<ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj=h]”hŒ Description”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mìhj¾<ubjÒ)�”}”(hŒ|Stop upper layers calling the device hard_start_xmit routine. Used for flow control when transmit resources are unavailable.”h]”jl)�”}”(hŒ|Stop upper layers calling the device hard_start_xmit routine. Used for flow control when transmit resources are unavailable.”h]”hŒ|Stop upper layers calling the device hard_start_xmit routine. Used for flow control when transmit resources are unavailable.”…”�”}”(hj8=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mëhj4=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jF=h´Mëhj¾<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_queue_stopped (C function)”Œc.netif_queue_stopped”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool netif_queue_stopped (const struct net_device *dev)”h]”j )�”}”(hŒ6bool netif_queue_stopped(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjm=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hji=h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Müubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hji=h²hh³jz=h´Müubj3)�”}”(hŒnetif_queue_stopped”h]”j9)�”}”(hŒnetif_queue_stopped”h]”hŒnetif_queue_stopped”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰=ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hji=h²hh³jz=h´Müubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj©=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥=ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÄ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥=ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjâ=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjß=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jä=Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�=sbŒc.netif_queue_stopped”†”asbuh1hhj¥=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥=ubj )�”}”(hj h]”hŒ*”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¥=ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¡=ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hji=h²hh³jz=h´Müubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhje=h²hh³jz=h´Müubah}”(h]”j`=ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jz=h´Mühjb=h²hubjg)�”}”(hhh]”jl)�”}”(hŒ%test if transmit queue is flowblocked”h]”hŒ%test if transmit queue is flowblocked”…”�”}”(hjG>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MühjD>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjb=h²hh³jz=h´Müubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_>jŒj_>j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ–**Parameters** ``const struct net_device *dev`` network device **Description** Test if transmit queue on device is currently unable to send.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hji>h]”hŒ Parameters”…”�”}”(hjk>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjg>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjc>ubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjˆ>h]”hŒconst struct net_device *dev”…”�”}”(hjŠ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mýhj‚>ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj¡>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�>h´Mýhjž>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�>h´Mýhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjc>ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÃ>h]”hŒ Description”…”�”}”(hjÅ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mÿhjc>ubjÒ)�”}”(hŒ=Test if transmit queue on device is currently unable to send.”h]”jl)�”}”(hjÛ>h]”hŒ=Test if transmit queue on device is currently unable to send.”…”�”}”(hjÝ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MþhjÙ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jê>h´Mþhjc>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ+netdev_queue_set_dql_min_limit (C function)”Œ c.netdev_queue_set_dql_min_limit”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\void netdev_queue_set_dql_min_limit (struct netdev_queue *dev_queue, unsigned int min_limit)”h]”j )�”}”(hŒ[void netdev_queue_set_dql_min_limit(struct netdev_queue *dev_queue, unsigned int min_limit)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ?h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ?h²hh³j?h´Mubj3)�”}”(hŒnetdev_queue_set_dql_min_limit”h]”j9)�”}”(hŒnetdev_queue_set_dql_min_limit”h]”hŒnetdev_queue_set_dql_min_limit”…”�”}”(hj2?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.?ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj ?h²hh³j?h´Mubj¡ )�”}”(hŒ8(struct netdev_queue *dev_queue, unsigned int min_limit)”h]”(j§ )�”}”(hŒstruct netdev_queue *dev_queue”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjN?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ?ubh)�”}”(hhh]”j9)�”}”(hŒ netdev_queue”h]”hŒ netdev_queue”…”�”}”(hjl?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jn?Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4?sbŒ c.netdev_queue_set_dql_min_limit”†”asbuh1hhjJ?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJ?ubj )�”}”(hj h]”hŒ*”…”�”}”(hjš?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJ?ubj9)�”}”(hŒ dev_queue”h]”hŒ dev_queue”…”�”}”(hj§?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjF?ubj§ )�”}”(hŒunsigned int min_limit”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÀ?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼?ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÜ?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼?ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼?ubj9)�”}”(hŒ min_limit”h]”hŒ min_limit”…”�”}”(hjø?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjF?ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj ?h²hh³j?h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ?h²hh³j?h´Mubah}”(h]”j?ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j?h´Mhj?h²hubjg)�”}”(hhh]”jl)�”}”(hŒset dql minimum limit”h]”hŒset dql minimum limit”…”�”}”(hj"@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?h²hh³j?h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j:@jŒj:@j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXR**Parameters** ``struct netdev_queue *dev_queue`` pointer to transmit queue ``unsigned int min_limit`` dql minimum limit **Description** Forces xmit_more() to return true until the minimum threshold defined by **min_limit** is reached (or until the tx queue is empty). Warning: to be use with care, misuse will impact the latency.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjD@h]”hŒ Parameters”…”�”}”(hjF@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjB@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj>@ubjß)�”}”(hhh]”(jä)�”}”(hŒ=``struct netdev_queue *dev_queue`` pointer to transmit queue ”h]”(jê)�”}”(hŒ"``struct netdev_queue *dev_queue``”h]”jð)�”}”(hjc@h]”hŒstruct netdev_queue *dev_queue”…”�”}”(hje@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhja@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj]@ubj)�”}”(hhh]”jl)�”}”(hŒpointer to transmit queue”h]”hŒpointer to transmit queue”…”�”}”(hj|@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jx@h´Mhjy@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jx@h´MhjZ@ubjä)�”}”(hŒ-``unsigned int min_limit`` dql minimum limit ”h]”(jê)�”}”(hŒ``unsigned int min_limit``”h]”jð)�”}”(hjœ@h]”hŒunsigned int min_limit”…”�”}”(hjž@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjš@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj–@ubj)�”}”(hhh]”jl)�”}”(hŒdql minimum limit”h]”hŒdql minimum limit”…”�”}”(hjµ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±@h´Mhj²@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±@h´MhjZ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj>@ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj×@h]”hŒ Description”…”�”}”(hjÙ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj>@ubjl)�”}”(hŒÁForces xmit_more() to return true until the minimum threshold defined by **min_limit** is reached (or until the tx queue is empty). Warning: to be use with care, misuse will impact the latency.”h]”(hŒIForces xmit_more() to return true until the minimum threshold defined by ”…”�”}”(hjí@h²hh³Nh´Nubj›)�”}”(hŒ **min_limit**”h]”hŒ min_limit”…”�”}”(hjõ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjí@ubhŒk is reached (or until the tx queue is empty). Warning: to be use with care, misuse will impact the latency.”…”�”}”(hjí@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj>@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ-netdev_txq_bql_enqueue_prefetchw (C function)”Œ"c.netdev_txq_bql_enqueue_prefetchw”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFvoid netdev_txq_bql_enqueue_prefetchw (struct netdev_queue *dev_queue)”h]”j )�”}”(hŒEvoid netdev_txq_bql_enqueue_prefetchw(struct netdev_queue *dev_queue)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.Ah²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj*Ah²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Ah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”u•h1j!hj*Ah²hh³jDh´MPubj3)�”}”(hŒnetdev_tx_sent_queue”h]”j9)�”}”(hŒnetdev_tx_sent_queue”h]”hŒnetdev_tx_sent_queue”…”�”}”(hjQDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMDubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj,Dh²hh³j>Dh´MPubj¡ )�”}”(hŒ4(struct netdev_queue *dev_queue, unsigned int bytes)”h]”(j§ )�”}”(hŒstruct netdev_queue *dev_queue”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjmDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjiDubh)�”}”(hhh]”j9)�”}”(hŒ netdev_queue”h]”hŒ netdev_queue”…”�”}”(hj‹Dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�DŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jSDsbŒc.netdev_tx_sent_queue”†”asbuh1hhjiDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Dh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjiDubj )�”}”(hj h]”hŒ*”…”�”}”(hj¹Dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjiDubj9)�”}”(hŒ dev_queue”h]”hŒ dev_queue”…”�”}”(hjÆDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjeDubj§ )�”}”(hŒunsigned int bytes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjßDh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÛDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíDh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛDubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjûDh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÛDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛDubj9)�”}”(hŒbytes”h]”hŒbytes”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjeDubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj,Dh²hh³j>Dh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj(Dh²hh³j>Dh´MPubah}”(h]”j#Dah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j>Dh´MPhj%Dh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5report the number of bytes queued to a given tx queue”h]”hŒ5report the number of bytes queued to a given tx queue”…”�”}”(hjAEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MPhj>Eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj%Dh²hh³j>Dh´MPubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jYEjŒjYEj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXº**Parameters** ``struct netdev_queue *dev_queue`` network device queue ``unsigned int bytes`` number of bytes queued to the device queue **Description** Report the number of bytes queued for sending/completion to the network device hardware queue. **bytes** should be a good approximation and should exactly match netdev_completed_queue() **bytes**. This is typically called once per packet, from ndo_start_xmit().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjcEh]”hŒ Parameters”…”�”}”(hjeEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjaEubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MThj]Eubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct netdev_queue *dev_queue`` network device queue ”h]”(jê)�”}”(hŒ"``struct netdev_queue *dev_queue``”h]”jð)�”}”(hj‚Eh]”hŒstruct netdev_queue *dev_queue”…”�”}”(hj„Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MQhj|Eubj)�”}”(hhh]”jl)�”}”(hŒnetwork device queue”h]”hŒnetwork device queue”…”�”}”(hj›Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—Eh´MQhj˜Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—Eh´MQhjyEubjä)�”}”(hŒB``unsigned int bytes`` number of bytes queued to the device queue ”h]”(jê)�”}”(hŒ``unsigned int bytes``”h]”jð)�”}”(hj»Eh]”hŒunsigned int bytes”…”�”}”(hj½Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MRhjµEubj)�”}”(hhh]”jl)�”}”(hŒ*number of bytes queued to the device queue”h]”hŒ*number of bytes queued to the device queue”…”�”}”(hjÔEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐEh´MRhjÑEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐEh´MRhjyEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj]Eubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjöEh]”hŒ Description”…”�”}”(hjøEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjôEubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MThj]EubjÒ)�”}”(hXReport the number of bytes queued for sending/completion to the network device hardware queue. **bytes** should be a good approximation and should exactly match netdev_completed_queue() **bytes**. This is typically called once per packet, from ndo_start_xmit().”h]”jl)�”}”(hXReport the number of bytes queued for sending/completion to the network device hardware queue. **bytes** should be a good approximation and should exactly match netdev_completed_queue() **bytes**. This is typically called once per packet, from ndo_start_xmit().”h]”(hŒ_Report the number of bytes queued for sending/completion to the network device hardware queue. ”…”�”}”(hjFh²hh³Nh´Nubj›)�”}”(hŒ **bytes**”h]”hŒbytes”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjFubhŒR should be a good approximation and should exactly match netdev_completed_queue() ”…”�”}”(hjFh²hh³Nh´Nubj›)�”}”(hŒ **bytes**”h]”hŒbytes”…”�”}”(hj*Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjFubhŒB. This is typically called once per packet, from ndo_start_xmit().”…”�”}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MShj Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jBFh´MShj]Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetdev_sent_queue (C function)”Œc.netdev_sent_queue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCvoid netdev_sent_queue (struct net_device *dev, unsigned int bytes)”h]”j )�”}”(hŒBvoid netdev_sent_queue(struct net_device *dev, unsigned int bytes)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjiFh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjeFh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxFh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeFh²hh³jwFh´MŒubj3)�”}”(hŒnetdev_sent_queue”h]”j9)�”}”(hŒnetdev_sent_queue”h]”hŒnetdev_sent_queue”…”�”}”(hjŠFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†Fubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjeFh²hh³jwFh´MŒubj¡ )�”}”(hŒ,(struct net_device *dev, unsigned int bytes)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢Fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢Fubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÄFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆFŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŒFsbŒc.netdev_sent_queue”†”asbuh1hhj¢Fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäFh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢Fubj )�”}”(hj h]”hŒ*”…”�”}”(hjòFh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢Fubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÿFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžFubj§ )�”}”(hŒunsigned int bytes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj4Gh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGubj9)�”}”(hŒbytes”h]”hŒbytes”…”�”}”(hjPGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžFubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjeFh²hh³jwFh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjaFh²hh³jwFh´MŒubah}”(h]”j\Fah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jwFh´MŒhj^Fh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-report the number of bytes queued to hardware”h]”hŒ-report the number of bytes queued to hardware”…”�”}”(hjzGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŒhjwGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^Fh²hh³jwFh´MŒubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j’GjŒj’Gj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX·**Parameters** ``struct net_device *dev`` network device ``unsigned int bytes`` number of bytes queued to the hardware device queue **Description** Report the number of bytes queued for sending/completion to the network device hardware queue#0. **bytes** should be a good approximation and should exactly match netdev_completed_queue() **bytes**. This is typically called once per packet, from ndo_start_xmit().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjœGh]”hŒ Parameters”…”�”}”(hjžGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšGubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hj–Gubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj»Gh]”hŒstruct net_device *dev”…”�”}”(hj½Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hjµGubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjÔGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐGh´M�hjÑGubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐGh´M�hj²Gubjä)�”}”(hŒK``unsigned int bytes`` number of bytes queued to the hardware device queue ”h]”(jê)�”}”(hŒ``unsigned int bytes``”h]”jð)�”}”(hjôGh]”hŒunsigned int bytes”…”�”}”(hjöGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòGubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŽhjîGubj)�”}”(hhh]”jl)�”}”(hŒ3number of bytes queued to the hardware device queue”h]”hŒ3number of bytes queued to the hardware device queue”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Hh´MŽhj Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Hh´MŽhj²Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–Gubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj/Hh]”hŒ Description”…”�”}”(hj1Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hj–GubjÒ)�”}”(hXReport the number of bytes queued for sending/completion to the network device hardware queue#0. **bytes** should be a good approximation and should exactly match netdev_completed_queue() **bytes**. This is typically called once per packet, from ndo_start_xmit().”h]”jl)�”}”(hXReport the number of bytes queued for sending/completion to the network device hardware queue#0. **bytes** should be a good approximation and should exactly match netdev_completed_queue() **bytes**. This is typically called once per packet, from ndo_start_xmit().”h]”(hŒaReport the number of bytes queued for sending/completion to the network device hardware queue#0. ”…”�”}”(hjIHh²hh³Nh´Nubj›)�”}”(hŒ **bytes**”h]”hŒbytes”…”�”}”(hjQHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjIHubhŒR should be a good approximation and should exactly match netdev_completed_queue() ”…”�”}”(hjIHh²hh³Nh´Nubj›)�”}”(hŒ **bytes**”h]”hŒbytes”…”�”}”(hjcHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjIHubhŒB. This is typically called once per packet, from ndo_start_xmit().”…”�”}”(hjIHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hjEHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j{Hh´M�hj–Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&netdev_tx_completed_queue (C function)”Œc.netdev_tx_completed_queue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒfvoid netdev_tx_completed_queue (struct netdev_queue *dev_queue, unsigned int pkts, unsigned int bytes)”h]”j )�”}”(hŒevoid netdev_tx_completed_queue(struct netdev_queue *dev_queue, unsigned int pkts, unsigned int bytes)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢Hh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjžHh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžHh²hh³j°Hh´M£ubj3)�”}”(hŒnetdev_tx_completed_queue”h]”j9)�”}”(hŒnetdev_tx_completed_queue”h]”hŒnetdev_tx_completed_queue”…”�”}”(hjÃHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿Hubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjžHh²hh³j°Hh´M£ubj¡ )�”}”(hŒG(struct netdev_queue *dev_queue, unsigned int pkts, unsigned int bytes)”h]”(j§ )�”}”(hŒstruct netdev_queue *dev_queue”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjßHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìHh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛHubh)�”}”(hhh]”j9)�”}”(hŒ netdev_queue”h]”hŒ netdev_queue”…”�”}”(hjýHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿHŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÅHsbŒc.netdev_tx_completed_queue”†”asbuh1hhjÛHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛHubj )�”}”(hj h]”hŒ*”…”�”}”(hj+Ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÛHubj9)�”}”(hŒ dev_queue”h]”hŒ dev_queue”…”�”}”(hj8Ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj×Hubj§ )�”}”(hŒunsigned int pkts”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjQIh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjMIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMIubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjmIh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjMIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMIubj9)�”}”(hŒpkts”h]”hŒpkts”…”�”}”(hj‰Ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj×Hubj§ )�”}”(hŒunsigned int bytes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¢Ih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjžIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžIubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¾Ih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjžIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžIubj9)�”}”(hŒbytes”h]”hŒbytes”…”�”}”(hjÚIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj×Hubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjžHh²hh³j°Hh´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjšHh²hh³j°Hh´M£ubah}”(h]”j•Hah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j°Hh´M£hj—Hh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0report number of packets/bytes at TX completion.”h]”hŒ0report number of packets/bytes at TX completion.”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M£hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj—Hh²hh³j°Hh´M£ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jJjŒjJj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXs**Parameters** ``struct netdev_queue *dev_queue`` network device queue ``unsigned int pkts`` number of packets (currently ignored) ``unsigned int bytes`` number of bytes dequeued from the device queue **Description** Must be called at most once per TX completion round (and not per individual packet), so that BQL can adjust its limits appropriately.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj&Jh]”hŒ Parameters”…”�”}”(hj(Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M§hj Jubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct netdev_queue *dev_queue`` network device queue ”h]”(jê)�”}”(hŒ"``struct netdev_queue *dev_queue``”h]”jð)�”}”(hjEJh]”hŒstruct netdev_queue *dev_queue”…”�”}”(hjGJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjCJubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¤hj?Jubj)�”}”(hhh]”jl)�”}”(hŒnetwork device queue”h]”hŒnetwork device queue”…”�”}”(hj^Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZJh´M¤hj[Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZJh´M¤hj= number of device tx queues, otherwise returns the originally passed tx queue index.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÃRh]”hŒ Parameters”…”�”}”(hjÅRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁRubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M÷hj½Rubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjâRh]”hŒstruct net_device *dev”…”�”}”(hjäRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjàRubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MôhjÜRubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjûRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j÷Rh´MôhjøRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j÷Rh´MôhjÙRubjä)�”}”(hŒ)``u16 queue_index`` given tx queue index ”h]”(jê)�”}”(hŒ``u16 queue_index``”h]”jð)�”}”(hjSh]”hŒu16 queue_index”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MõhjSubj)�”}”(hhh]”jl)�”}”(hŒgiven tx queue index”h]”hŒgiven tx queue index”…”�”}”(hj4Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j0Sh´Mõhj1Subah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j0Sh´MõhjÙRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj½Rubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjVSh]”hŒ Description”…”�”}”(hjXSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjTSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M÷hj½RubjÒ)�”}”(hŒxReturns 0 if given tx queue index >= number of device tx queues, otherwise returns the originally passed tx queue index.”h]”jl)�”}”(hŒxReturns 0 if given tx queue index >= number of device tx queues, otherwise returns the originally passed tx queue index.”h]”hŒxReturns 0 if given tx queue index >= number of device tx queues, otherwise returns the originally passed tx queue index.”…”�”}”(hjpSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MöhjlSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j~Sh´Möhj½Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_running (C function)”Œc.netif_running”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool netif_running (const struct net_device *dev)”h]”j )�”}”(hŒ0bool netif_running(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¥Sh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡Sh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡Sh²hh³j²Sh´Mubj3)�”}”(hŒ netif_running”h]”j9)�”}”(hŒ netif_running”h]”hŒ netif_running”…”�”}”(hjÅSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁSubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡Sh²hh³j²Sh´Mubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjáSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝSubj)�”}”(hjh]”hŒstruct”…”�”}”(hjüSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝSubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jTŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÇSsbŒc.netif_running”†”asbuh1hhjÝSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝSubj )�”}”(hj h]”hŒ*”…”�”}”(hjHTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝSubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjUTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙSubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡Sh²hh³j²Sh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�Sh²hh³j²Sh´Mubah}”(h]”j˜Sah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j²Sh´MhjšSh²hubjg)�”}”(hhh]”jl)�”}”(hŒ test if up”h]”hŒ test if up”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj|Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšSh²hh³j²Sh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j—TjŒj—Tj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ€**Parameters** ``const struct net_device *dev`` network device **Description** Test if the device has been brought up.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¡Th]”hŒ Parameters”…”�”}”(hj£Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸTubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj›Tubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjÀTh]”hŒconst struct net_device *dev”…”�”}”(hjÂTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjºTubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjÙTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕTh´MhjÖTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕTh´Mhj·Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj›Tubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjûTh]”hŒ Description”…”�”}”(hjýTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjùTubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj›TubjÒ)�”}”(hŒ'Test if the device has been brought up.”h]”jl)�”}”(hjUh]”hŒ'Test if the device has been brought up.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j"Uh´M hj›Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!netif_start_subqueue (C function)”Œc.netif_start_subqueue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCvoid netif_start_subqueue (struct net_device *dev, u16 queue_index)”h]”j )�”}”(hŒBvoid netif_start_subqueue(struct net_device *dev, u16 queue_index)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjIUh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjEUh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEUh²hh³jWUh´Mubj3)�”}”(hŒnetif_start_subqueue”h]”j9)�”}”(hŒnetif_start_subqueue”h]”hŒnetif_start_subqueue”…”�”}”(hjjUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfUubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjEUh²hh³jWUh´Mubj¡ )�”}”(hŒ)(struct net_device *dev, u16 queue_index)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj†Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Uubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¤Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¦UŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jlUsbŒc.netif_start_subqueue”†”asbuh1hhj‚Uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚Uubj )�”}”(hj h]”hŒ*”…”�”}”(hjÒUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‚Uubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjßUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~Uubj§ )�”}”(hŒu16 queue_index”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjûUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jýUŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÀUŒc.netif_start_subqueue”†”asbuh1hhjôUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôUubj9)�”}”(hŒ queue_index”h]”hŒ queue_index”…”�”}”(hj'Vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~Uubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjEUh²hh³jWUh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjAUh²hh³jWUh´Mubah}”(h]”jUh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!allow sending packets on subqueue”h]”hŒ!allow sending packets on subqueue”…”�”}”(hjQVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjNVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj>Uh²hh³jWUh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jiVjŒjiVj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¿**Parameters** ``struct net_device *dev`` network device ``u16 queue_index`` sub queue index **Description** Start individual transmit queue of a device with multiple transmit queues.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjsVh]”hŒ Parameters”…”�”}”(hjuVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjqVubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjmVubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj’Vh]”hŒstruct net_device *dev”…”�”}”(hj”Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjŒVubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj«Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§Vh´Mhj¨Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§Vh´Mhj‰Vubjä)�”}”(hŒ$``u16 queue_index`` sub queue index ”h]”(jê)�”}”(hŒ``u16 queue_index``”h]”jð)�”}”(hjËVh]”hŒu16 queue_index”…”�”}”(hjÍVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjÅVubj)�”}”(hhh]”jl)�”}”(hŒsub queue index”h]”hŒsub queue index”…”�”}”(hjäVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jàVh´MhjáVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jàVh´Mhj‰Vubeh}”(h]”h ]”h"• ]”h$]”h&]”uh1jÞhjmVubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjWh]”hŒ Description”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjmVubjl)�”}”(hŒJStart individual transmit queue of a device with multiple transmit queues.”h]”hŒJStart individual transmit queue of a device with multiple transmit queues.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjmVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_stop_subqueue (C function)”Œc.netif_stop_subqueue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBvoid netif_stop_subqueue (struct net_device *dev, u16 queue_index)”h]”j )�”}”(hŒAvoid netif_stop_subqueue(struct net_device *dev, u16 queue_index)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjKWh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjGWh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGWh²hh³jYWh´M'ubj3)�”}”(hŒnetif_stop_subqueue”h]”j9)�”}”(hŒnetif_stop_subqueue”h]”hŒnetif_stop_subqueue”…”�”}”(hjlWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhWubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjGWh²hh³jYWh´M'ubj¡ )�”}”(hŒ)(struct net_device *dev, u16 queue_index)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjˆWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„Wubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¦Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¨WŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jnWsbŒc.netif_stop_subqueue”†”asbuh1hhj„Wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„Wubj )�”}”(hj h]”hŒ*”…”�”}”(hjÔWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj„Wubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjáWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€Wubj§ )�”}”(hŒu16 queue_index”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjýWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿWŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÂWŒc.netif_stop_subqueue”†”asbuh1hhjöWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöWubj9)�”}”(hŒ queue_index”h]”hŒ queue_index”…”�”}”(hj)Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€Wubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjGWh²hh³jYWh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjCWh²hh³jYWh´M'ubah}”(h]”j>Wah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jYWh´M'hj@Wh²hubjg)�”}”(hhh]”jl)�”}”(hŒ stop sending packets on subqueue”h]”hŒ stop sending packets on subqueue”…”�”}”(hjSXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M'hjPXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj@Wh²hh³jYWh´M'ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jkXjŒjkXj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¾**Parameters** ``struct net_device *dev`` network device ``u16 queue_index`` sub queue index **Description** Stop individual transmit queue of a device with multiple transmit queues.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjuXh]”hŒ Parameters”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsXubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M+hjoXubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj”Xh]”hŒstruct net_device *dev”…”�”}”(hj–Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M(hjŽXubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj­Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©Xh´M(hjªXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©Xh´M(hj‹Xubjä)�”}”(hŒ$``u16 queue_index`` sub queue index ”h]”(jê)�”}”(hŒ``u16 queue_index``”h]”jð)�”}”(hjÍXh]”hŒu16 queue_index”…”�”}”(hjÏXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M)hjÇXubj)�”}”(hhh]”jl)�”}”(hŒsub queue index”h]”hŒsub queue index”…”�”}”(hjæXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâXh´M)hjãXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâXh´M)hj‹Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjoXubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjYh]”hŒ Description”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M+hjoXubjl)�”}”(hŒIStop individual transmit queue of a device with multiple transmit queues.”h]”hŒIStop individual transmit queue of a device with multiple transmit queues.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M*hjoXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%__netif_subqueue_stopped (C function)”Œc.__netif_subqueue_stopped”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMbool __netif_subqueue_stopped (const struct net_device *dev, u16 queue_index)”h]”j )�”}”(hŒLbool __netif_subqueue_stopped(const struct net_device *dev, u16 queue_index)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjMYh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjIYh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIYh²hh³jZYh´M4ubj3)�”}”(hŒ__netif_subqueue_stopped”h]”j9)�”}”(hŒ__netif_subqueue_stopped”h]”hŒ__netif_subqueue_stopped”…”�”}”(hjmYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiYubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjIYh²hh³jZYh´M4ubj¡ )�”}”(hŒ/(const struct net_device *dev, u16 queue_index)”h]”(j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj‰Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…Yubj)�”}”(hjh]”hŒstruct”…”�”}”(hj¤Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…Yubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÂYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿Yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÄYŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já joYsbŒc.__netif_subqueue_stopped”†”asbuh1hhj…Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…Yubj )�”}”(hj h]”hŒ*”…”�”}”(hjðYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj…Yubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjýYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…Yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�Yubj§ )�”}”(hŒu16 queue_index”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÞYŒc.__netif_subqueue_stopped”†”asbuh1hhjZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZubj9)�”}”(hŒ queue_index”h]”hŒ queue_index”…”�”}”(hjEZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�Yubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjIYh²hh³jZYh´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjEYh²hh³jZYh´M4ubah}”(h]”j@Yah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jZYh´M4hjBYh²hubjg)�”}”(hhh]”jl)�”}”(hŒtest status of subqueue”h]”hŒtest status of subqueue”…”�”}”(hjoZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4hjlZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjBYh²hh³jZYh´M4ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‡ZjŒj‡Zj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÅ**Parameters** ``const struct net_device *dev`` network device ``u16 queue_index`` sub queue index **Description** Check individual transmit queue of a device with multiple transmit queues.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‘Zh]”hŒ Parameters”…”�”}”(hj“Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M8hj‹Zubjß)�”}”(hhh]”(jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hj°Zh]”hŒconst struct net_device *dev”…”�”}”(hj²Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M5hjªZubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjÉZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÅZh´M5hjÆZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÅZh´M5hj§Zubjä)�”}”(hŒ$``u16 queue_index`` sub queue index ”h]”(jê)�”}”(hŒ``u16 queue_index``”h]”jð)�”}”(hjéZh]”hŒu16 queue_index”…”�”}”(hjëZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjçZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M6hjãZubj)�”}”(hhh]”jl)�”}”(hŒsub queue index”h]”hŒsub queue index”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþZh´M6hjÿZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþZh´M6hj§Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‹Zubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj$[h]”hŒ Description”…”�”}”(hj&[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj"[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M8hj‹Zubjl)�”}”(hŒJCheck individual transmit queue of a device with multiple transmit queues.”h]”hŒJCheck individual transmit queue of a device with multiple transmit queues.”…”�”}”(hj:[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M7hj‹Zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netif_subqueue_stopped (C function)”Œc.netif_subqueue_stopped”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒObool netif_subqueue_stopped (const struct net_device *dev, struct sk_buff *skb)”h]”j )�”}”(hŒNbool netif_subqueue_stopped(const struct net_device *dev, struct sk_buff *skb)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hji[h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hje[h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje[h²hh³jv[h´MCubj3)�”}”(hŒnetif_subqueue_stopped”h]”j9)�”}”(hŒnetif_subqueue_stopped”h]”hŒnetif_subqueue_stopped”…”�”}”(hj‰[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…[ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hje[h²hh³jv[h´MCubj¡ )�”}”(hŒ3(const struct net_device *dev, struct sk_buff *skb)”h]”(j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¥[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡[ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÀ[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡[ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÞ[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛ[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jà[Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‹[sbŒc.netif_subqueue_stopped”†”asbuh1hhj¡[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡[ubj )�”}”(hj h]”hŒ*”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¡[ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�[ubj§ )�”}”(hŒstruct sk_buff *skb”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj2\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.\ubh)�”}”(hhh]”j9)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjP\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jR\Œmodname”NŒ classname”Njå jè )�”}”jë ]”jú[Œc.netif_subqueue_stopped”†”asbuh1hhj.\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.\ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj.\ubj9)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj‰\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�[ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hje[h²hh³jv[h´MCubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhja[h²hh³jv[h´MCubah}”(h]”j\[ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jv[h´MChj^[h²hubjg)�”}”(hhh]”jl)�”}”(hŒtest status of subqueue”h]”hŒtest status of subqueue”…”�”}”(hj³\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MChj°\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^[h²hh³jv[h´MCubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jË\jŒjË\j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÒ**Parameters** ``const struct net_device *dev`` network device ``struct sk_buff *skb`` sub queue buffer pointer **Description** Check individual transmit queue of a device with multiple transmit queues.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÕ\h]”hŒ Parameters”…”�”}”(hj×\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MGhjÏ\ubjß)�”}”(hhh]”(jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjô\h]”hŒconst struct net_device *dev”…”�”}”(hjö\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MDhjî\ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ]h´MDhj ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ]h´MDhjë\ubjä)�”}”(hŒ1``struct sk_buff *skb`` sub queue buffer pointer ”h]”(jê)�”}”(hŒ``struct sk_buff *skb``”h]”jð)�”}”(hj-]h]”hŒstruct sk_buff *skb”…”�”}”(hj/]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MEhj']ubj)�”}”(hhh]”jl)�”}”(hŒsub queue buffer pointer”h]”hŒsub queue buffer pointer”…”�”}”(hjF]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jB]h´MEhjC]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj']ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jB]h´MEhjë\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÏ\ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]h]”hŒ Description”…”�”}”(hjj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjf]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MGhjÏ\ubjl)�”}”(hŒJCheck individual transmit queue of a device with multiple transmit queues.”h]”hŒJCheck individual transmit queue of a device with multiple transmit queues.”…”�”}”(hj~]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MFhjÏ\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_wake_subqueue (C function)”Œc.netif_wake_subqueue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBvoid netif_wake_subqueue (struct net_device *dev, u16 queue_index)”h]”j )�”}”(hŒAvoid netif_wake_subqueue(struct net_device *dev, u16 queue_index)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj­]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj©]h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©]h²hh³j»]h´MPubj3)�”}”(hŒnetif_wake_subqueue”h]”j9)�”}”(hŒnetif_wake_subqueue”h]”hŒnetif_wake_subqueue”…”�”}”(hjÎ]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ]ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj©]h²hh³j»]h´MPubj¡ )�”}”(hŒ)(struct net_device *dev, u16 queue_index)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjê]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ]ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ^Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÐ]sbŒc.netif_wake_subqueue”†”asbuh1hhjæ]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ]ubj )�”}”(hj h]”hŒ*”…”�”}”(hj6^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjæ]ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjC^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ]ubj§ )�”}”(hŒu16 queue_index”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj_^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ja^Œmodname”NŒ classname”Njå jè )�”}”jë ]”j$^Œc.netif_wake_subqueue”†”asbuh1hhjX^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjX^ubj9)�”}”(hŒ queue_index”h]”hŒ queue_index”…”�”}”(hj‹^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâ]ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj©]h²hh³j»]h´MPubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¥]h²hh³j»]h´MPubah}”(h]”j ]ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j»]h´MPhj¢]h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!allow sending packets on subqueue”h]”hŒ!allow sending packets on subqueue”…”�”}”(hjµ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MPhj²^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢]h²hh³j»]h´MPubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÍ^jŒjÍ^j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒÀ**Parameters** ``struct net_device *dev`` network device ``u16 queue_index`` sub queue index **Description** Resume individual transmit queue of a device with multiple transmit queues.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj×^h]”hŒ Parameters”…”�”}”(hjÙ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MThjÑ^ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjö^h]”hŒstruct net_device *dev”…”�”}”(hjø^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjô^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MQhjð^ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j _h´MQhj _ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j _h´MQhjí^ubjä)�”}”(hŒ$``u16 queue_index`` sub queue index ”h]”(jê)�”}”(hŒ``u16 queue_index``”h]”jð)�”}”(hj/_h]”hŒu16 queue_index”…”�”}”(hj1_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MRhj)_ubj)�”}”(hhh]”jl)�”}”(hŒsub queue index”h]”hŒsub queue index”…”�”}”(hjH_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jD_h´MRhjE_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jD_h´MRhjí^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÑ^ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjj_h]”hŒ Description”…”�”}”(hjl_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjh_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MThjÑ^ubjl)�”}”(hŒKResume individual transmit queue of a device with multiple transmit queues.”h]”hŒKResume individual transmit queue of a device with multiple transmit queues.”…”�”}”(hj€_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MShjÑ^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!netif_attr_test_mask (C function)”Œc.netif_attr_test_mask”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\bool netif_attr_test_mask (unsigned long j, const unsigned long *mask, unsigned int nr_bits)”h]”j )�”}”(hŒ[bool netif_attr_test_mask(unsigned long j, const unsigned long *mask, unsigned int nr_bits)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¯_h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj«_h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj«_h²hh³j¼_h´Mdubj3)�”}”(hŒnetif_attr_test_mask”h]”j9)�”}”(hŒnetif_attr_test_mask”h]”hŒnetif_attr_test_mask”…”�”}”(hjÏ_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjË_ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj«_h²hh³j¼_h´Mdubj¡ )�”}”(hŒB(unsigned long j, const unsigned long *mask, unsigned int nr_bits)”h]”(j§ )�”}”(hŒunsigned long j”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjë_h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjç_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç_ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjç_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç_ubj9)�”}”(hŒj”h]”hŒj”…”�”}”(hj#`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã_ubj§ )�”}”(hŒconst unsigned long *mask”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj<`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj8`ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjW`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj8`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj8`ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjs`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj8`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj8`ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj8`ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjœ`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã_ubj§ )�”}”(hŒunsigned int nr_bits”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjµ`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj±`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±`ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÑ`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj±`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±`ubj9)�”}”(hŒnr_bits”h]”hŒnr_bits”…”�”}”(hjí`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã_ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj«_h²hh³j¼_h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj§_h²hh³j¼_h´Mdubah}”(h]”j¢_ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¼_h´Mdhj¤_h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Test a CPU or Rx queue set in a mask”h]”hŒ$Test a CPU or Rx queue set in a mask”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mdhjah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¤_h²hh³j¼_h´Mdubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j/ajŒj/aj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX **Parameters** ``unsigned long j`` CPU/Rx queue index ``const unsigned long *mask`` bitmask of all cpus/rx queues ``unsigned int nr_bits`` number of bits in the bitmask **Description** Test if a CPU or Rx queue index is set in a mask of all CPU/Rx queues.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj9ah]”hŒ Parameters”…”�”}”(hj;ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7aubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhhj3aubjß)�”}”(hhh]”(jä)�”}”(hŒ'``unsigned long j`` CPU/Rx queue index ”h]”(jê)�”}”(hŒ``unsigned long j``”h]”jð)�”}”(hjXah]”hŒunsigned long j”…”�”}”(hjZah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MehjRaubj)�”}”(hhh]”jl)�”}”(hŒCPU/Rx queue index”h]”hŒCPU/Rx queue index”…”�”}”(hjqah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jmah´Mehjnaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmah´MehjOaubjä)�”}”(hŒ<``const unsigned long *mask`` bitmask of all cpus/rx queues ”h]”(jê)�”}”(hŒ``const unsigned long *mask``”h]”jð)�”}”(hj‘ah]”hŒconst unsigned long *mask”…”�”}”(hj“ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�aubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mfhj‹aubj)�”}”(hhh]”jl)�”}”(hŒbitmask of all cpus/rx queues”h]”hŒbitmask of all cpus/rx queues”…”�”}”(hjªah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦ah´Mfhj§aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦ah´MfhjOaubjä)�”}”(hŒ7``unsigned int nr_bits`` number of bits in the bitmask ”h]”(jê)�”}”(hŒ``unsigned int nr_bits``”h]”jð)�”}”(hjÊah]”hŒunsigned int nr_bits”…”�”}”(hjÌah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MghjÄaubj)�”}”(hhh]”jl)�”}”(hŒnumber of bits in the bitmask”h]”hŒnumber of bits in the bitmask”…”�”}”(hjãah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jßah´Mghjàaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßah´MghjOaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj3aubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjbh]”hŒ Description”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mihj3aubjl)�”}”(hŒFTest if a CPU or Rx queue index is set in a mask of all CPU/Rx queues.”h]”hŒFTest if a CPU or Rx queue index is set in a mask of all CPU/Rx queues.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhhj3aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#netif_attr_test_online (C function)”Œc.netif_attr_test_online”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒebool netif_attr_test_online (unsigned long j, const unsigned long *online_mask, unsigned int nr_bits)”h]”j )�”}”(hŒdbool netif_attr_test_online(unsigned long j, const unsigned long *online_mask, unsigned int nr_bits)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjJbh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjFbh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFbh²hh³jWbh´Mtubj3)�”}”(hŒnetif_attr_test_online”h]”j9)�”}”(hŒnetif_attr_test_online”h]”hŒnetif_attr_test_online”…”�”}”(hjjbh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfbubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjFbh²hh³jWbh´Mtubj¡ )�”}”(hŒI(unsigned long j, const unsigned long *online_mask, unsigned int nr_bits)”h]”(j§ )�”}”(hŒunsigned long j”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj†bh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚bubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚bubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¢bh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚bubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚bubj9)�”}”(hj%`h]”hŒj”…”�”}”(hj¾bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~bubj§ )�”}”(hŒ const unsigned long *online_mask”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjÖbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒbubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjñbh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÒbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒbubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÒbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒbubj )�”}”(hj h]”hŒ*”…”�”}”(hj)ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÒbubj9)�”}”(hŒ online_mask”h]”hŒ online_mask”…”�”}”(hj6ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~bubj§ )�”}”(hŒunsigned int nr_bits”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjOch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKcubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjkch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjych²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKcubj9)�”}”(hŒnr_bits”h]”hŒnr_bits”…”�”}”(hj‡ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj~bubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjFbh²hh³jWbh´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjBbh²hh³jWbh´Mtubah}”(h]”j=bah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jWbh´Mthj?bh²hubjg)�”}”(hhh]”jl)�”}”(hŒTest for online CPU/Rx queue”h]”hŒTest for online CPU/Rx queue”…”�”}”(hj±ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mthj®ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?bh²hh³jWbh´Mtubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÉcjŒjÉcj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒô**Parameters** ``unsigned long j`` CPU/Rx queue index ``const unsigned long *online_mask`` bitmask for CPUs/Rx queues that are online ``unsigned int nr_bits`` number of bits in the bitmask **Return** true if a CPU/Rx queue is online.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÓch]”hŒ Parameters”…”�”}”(hjÕch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÑcubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MxhjÍcubjß)�”}”(hhh]”(jä)�”}”(hŒ'``unsigned long j`` CPU/Rx queue index ”h]”(jê)�”}”(hŒ``unsigned long j``”h]”jð)�”}”(hjòch]”hŒunsigned long j”…”�”}”(hjôch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðcubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Muhjìcubj)�”}”(hhh]”jl)�”}”(hŒCPU/Rx queue index”h]”hŒCPU/Rx queue index”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdh´Muhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdh´Muhjécubjä)�”}”(hŒP``const unsigned long *online_mask`` bitmask for CPUs/Rx queues that are online ”h]”(jê)�”}”(hŒ$``const unsigned long *online_mask``”h]”jð)�”}”(hj+dh]”hŒ const unsigned long *online_mask”…”�”}”(hj-dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)dubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mvhj%dubj)�”}”(hhh]”jl)�”}”(hŒ*bitmask for CPUs/Rx queues that are online”h]”hŒ*bitmask for CPUs/Rx queues that are online”…”�”}”(hjDdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@dh´MvhjAdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@dh´Mvhjécubjä)�”}”(hŒ7``unsigned int nr_bits`` number of bits in the bitmask ”h]”(jê)�”}”(hŒ``unsigned int nr_bits``”h]”jð)�”}”(hjddh]”hŒunsigned int nr_bits”…”�”}”(hjfdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjbdubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mwhj^dubj)�”}”(hhh]”jl)�”}”(hŒnumber of bits in the bitmask”h]”hŒnumber of bits in the bitmask”…”�”}”(hj}dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jydh´Mwhjzdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jydh´Mwhjécubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÍcubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjŸdh]”hŒReturn”…”�”}”(hj¡dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�dubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MyhjÍcubjl)�”}”(hŒ!true if a CPU/Rx queue is online.”h]”hŒ!true if a CPU/Rx queue is online.”…”�”}”(hjµdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MyhjÍcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_attrmask_next (C function)”Œc.netif_attrmask_next”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYunsigned int netif_attrmask_next (int n, const unsigned long *srcp, unsigned int nr_bits)”h]”j )�”}”(hŒXunsigned int netif_attrmask_next(int n, const unsigned long *srcp, unsigned int nr_bits)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjädh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàdh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjódh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàdh²hh³jòdh´MˆubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàdh²hh³jòdh´Mˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàdh²hh³jòdh´Mˆubj3)�”}”(hŒnetif_attrmask_next”h]”j9)�”}”(hŒnetif_attrmask_next”h]”hŒnetif_attrmask_next”…”�”}”(hj!eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjàdh²hh³jòdh´Mˆubj¡ )�”}”(hŒ8(int n, const unsigned long *srcp, unsigned int nr_bits)”h]”(j§ )�”}”(hŒint n”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj=eh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj9eubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9eubj9)�”}”(hjDh]”hŒn”…”�”}”(hjYeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj5eubj§ )�”}”(hŒconst unsigned long *srcp”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjqeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmeubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŒeh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjmeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmeubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¨eh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjmeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmeubj )�”}”(hj h]”hŒ*”…”�”}”(hjÄeh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjmeubj9)�”}”(hŒsrcp”h]”hŒsrcp”…”�”}”(hjÑeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj5eubj§ )�”}”(hŒunsigned int nr_bits”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjêeh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjæeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæeubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjæeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæeubj9)�”}”(hŒnr_bits”h]”hŒnr_bits”…”�”}”(hj"fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj5eubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjàdh²hh³jòdh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÜdh²hh³jòdh´Mˆubah}”(h]”j×dah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jòdh´MˆhjÙdh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1get the next CPU/Rx queue in a cpu/Rx queues mask”h]”hŒ1get the next CPU/Rx queue in a cpu/Rx queues mask”…”�”}”(hjLfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MˆhjIfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÙdh²hh³jòdh´Mˆubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jdfjŒjdfj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``int n`` CPU/Rx queue index ``const unsigned long *srcp`` the cpumask/Rx queue mask pointer ``unsigned int nr_bits`` number of bits in the bitmask **Return** next (after n) CPU/Rx queue index in the mask; >= nr_bits if no further CPUs/Rx queues set.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjnfh]”hŒ Parameters”…”�”}”(hjpfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjlfubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŒhjhfubjß)�”}”(hhh]”(jä)�”}”(hŒ``int n`` CPU/Rx queue index ”h]”(jê)�”}”(hŒ ``int n``”h]”jð)�”}”(hj�fh]”hŒint n”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹fubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‰hj‡fubj)�”}”(hhh]”jl)�”}”(hŒCPU/Rx queue index”h]”hŒCPU/Rx queue index”…”�”}”(hj¦fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¢fh´M‰hj£fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢fh´M‰hj„fubjä)�”}”(hŒ@``const unsigned long *srcp`` the cpumask/Rx queue mask pointer ”h]”(jê)�”}”(hŒ``const unsigned long *srcp``”h]”jð)�”}”(hjÆfh]”hŒconst unsigned long *srcp”…”�”}”(hjÈfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŠhjÀfubj)�”}”(hhh]”jl)�”}”(hŒ!the cpumask/Rx queue mask pointer”h]”hŒ!the cpumask/Rx queue mask pointer”…”�”}”(hjßfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛfh´MŠhjÜfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛfh´MŠhj„fubjä)�”}”(hŒ7``unsigned int nr_bits`` number of bits in the bitmask ”h]”(jê)�”}”(hŒ``unsigned int nr_bits``”h]”jð)�”}”(hjÿfh]”hŒunsigned int nr_bits”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjýfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‹hjùfubj)�”}”(hhh]”jl)�”}”(hŒnumber of bits in the bitmask”h]”hŒnumber of bits in the bitmask”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jgh´M‹hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgh´M‹hj„fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjhfubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj:gh]”hŒReturn”…”�”}”(hj= nr_bits if no further CPUs/Rx queues set.”h]”hŒ[next (after n) CPU/Rx queue index in the mask; >= nr_bits if no further CPUs/Rx queues set.”…”�”}”(hjPgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hjhfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$netif_attrmask_next_and (C function)”Œc.netif_attrmask_next_and”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒqint netif_attrmask_next_and (int n, const unsigned long *src1p, const unsigned long *src2p, unsigned int nr_bits)”h]”j )�”}”(hŒpint netif_attrmask_next_and(int n, const unsigned long *src1p, const unsigned long *src2p, unsigned int nr_bits)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj{gh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽgh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{gh²hh³j�gh´Mžubj3)�”}”(hŒnetif_attrmask_next_and”h]”j9)�”}”(hŒnetif_attrmask_next_and”h]”hŒnetif_attrmask_next_and”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœgubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj{gh²hh³j�gh´Mžubj¡ )�”}”(hŒU(int n, const unsigned long *src1p, const unsigned long *src2p, unsigned int nr_bits)”h]”(j§ )�”}”(hŒint n”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¼gh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¸gubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊgh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸gubj9)�”}”(hjDh]”hŒn”…”�”}”(hjØgh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´gubj§ )�”}”(hŒconst unsigned long *src1p”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjðgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýgh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìgubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìgubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj'hh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìgubj )�”}”(hj h]”hŒ*”…”�”}”(hjChh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjìgubj9)�”}”(hŒsrc1p”h]”hŒsrc1p”…”�”}”(hjPhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´gubj§ )�”}”(hŒconst unsigned long *src2p”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjihh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjehubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjehubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj„hh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjehubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjehubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjehubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjehubj )�”}”(hj h]”hŒ*”…”�”}”(hj¼hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjehubj9)�”}”(hŒsrc2p”h]”hŒsrc2p”…”�”}”(hjÉhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjehubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´gubj§ )�”}”(hŒunsigned int nr_bits”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjâhh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞhubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞhubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjþhh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞhubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞhubj9)�”}”(hŒnr_bits”h]”hŒnr_bits”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj´gubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj{gh²hh³j�gh´Mžubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjwgh²hh³j�gh´Mžubah}”(h]”jrgah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�gh´Mžhjtgh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.get the next CPU/Rx queue in \*src1p & \*src2p”h]”hŒ.get the next CPU/Rx queue in *src1p & *src2p”…”�”}”(hjDih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MžhjAih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjtgh²hh³j�gh´Mžubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j\ijŒj\ij�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXp**Parameters** ``int n`` CPU/Rx queue index ``const unsigned long *src1p`` the first CPUs/Rx queues mask pointer ``const unsigned long *src2p`` the second CPUs/Rx queues mask pointer ``unsigned int nr_bits`` number of bits in the bitmask **Return** next (after n) CPU/Rx queue index set in both masks; >= nr_bits if no further CPUs/Rx queues set in both.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjfih]”hŒ Parameters”…”�”}”(hjhih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdiubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¢hj`iubjß)�”}”(hhh]”(jä)�”}”(hŒ``int n`` CPU/Rx queue index ”h]”(jê)�”}”(hŒ ``int n``”h]”jð)�”}”(hj…ih]”hŒint n”…”�”}”(hj‡ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒiubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŸhjiubj)�”}”(hhh]”jl)�”}”(hŒCPU/Rx queue index”h]”hŒCPU/Rx queue index”…”�”}”(hjžih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jših´MŸhj›iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jših´MŸhj|iubjä)�”}”(hŒE``const unsigned long *src1p`` the first CPUs/Rx queues mask pointer ”h]”(jê)�”}”(hŒ``const unsigned long *src1p``”h]”jð)�”}”(hj¾ih]”hŒconst unsigned long *src1p”…”�”}”(hjÀih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼iubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj¸iubj)�”}”(hhh]”jl)�”}”(hŒ%the first CPUs/Rx queues mask pointer”h]”hŒ%the first CPUs/Rx queues mask pointer”…”�”}”(hj×ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓih´M hjÔiubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓih´M hj|iubjä)�”}”(hŒF``const unsigned long *src2p`` the second CPUs/Rx queues mask pointer ”h]”(jê)�”}”(hŒ``const unsigned long *src2p``”h]”jð)�”}”(hj÷ih]”hŒconst unsigned long *src2p”…”�”}”(hjùih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõiubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¡hjñiubj)�”}”(hhh]”jl)�”}”(hŒ&the second CPUs/Rx queues mask pointer”h]”hŒ&the second CPUs/Rx queues mask pointer”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j jh´M¡hj jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j jh´M¡hj|iubjä)�”}”(hŒ7``unsigned int nr_bits`` number of bits in the bitmask ”h]”(jê)�”}”(hŒ``unsigned int nr_bits``”h]”jð)�”}”(hj0jh]”hŒunsigned int nr_bits”…”�”}”(hj2jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.jubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¢hj*jubj)�”}”(hhh]”jl)�”}”(hŒnumber of bits in the bitmask”h]”hŒnumber of bits in the bitmask”…”�”}”(hjIjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jEjh´M¢hjFjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEjh´M¢hj|iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj`iubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjkjh]”hŒReturn”…”�”}”(hjmjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjijubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¤hj`iubjl)�”}”(hŒinext (after n) CPU/Rx queue index set in both masks; >= nr_bits if no further CPUs/Rx queues set in both.”h]”hŒinext (after n) CPU/Rx queue index set in both masks; >= nr_bits if no further CPUs/Rx queues set in both.”…”�”}”(hj�jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¤hj`iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ netif_is_multiqueue (C function)”Œc.netif_is_multiqueue”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool netif_is_multiqueue (const struct net_device *dev)”h]”j )�”}”(hŒ6bool netif_is_multiqueue(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj°jh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¬jh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬jh²hh³j½jh´MÉubj3)�”}”(hŒnetif_is_multiqueue”h]”j9)�”}”(hŒnetif_is_multiqueue”h]”hŒnetif_is_multiqueue”…”�”}”(hjÐjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¬jh²hh³j½jh´MÉubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjìjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèjubj)�”}”(hjh]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèjubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj%kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j'kŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÒjsbŒc.netif_is_multiqueue”†”asbuh1hhjèjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèjubj )�”}”(hj h]”hŒ*”…”�”}”(hjSkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjèjubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj`kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjäjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¬jh²hh³j½jh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨jh²hh³j½jh´MÉubah}”(h]”j£jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j½jh´MÉhj¥jh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+test if device has multiple transmit queues”h]”hŒ+test if device has multiple transmit queues”…”�”}”(hjŠkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÉhj‡kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥jh²hh³j½jh´MÉubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¢kjŒj¢kj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ€**Parameters** ``const struct net_device *dev`` network device **Description** Check if device has multiple transmit queues”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¬kh]”hŒ Parameters”…”�”}”(hj®kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjªkubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÍhj¦kubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjËkh]”hŒconst struct net_device *dev”…”�”}”(hjÍkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉkubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÊhjÅkubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjäkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jàkh´MÊhjákubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jàkh´MÊhjÂkubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¦kubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjlh]”hŒ Description”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MÌhj¦kubjl)�”}”(hŒ,Check if device has multiple transmit queues”h]”hŒ,Check if device has multiple transmit queues”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MËhj¦kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_hold (C function)”Œ c.dev_hold”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&void dev_hold (struct net_device *dev)”h]”j )�”}”(hŒ%void dev_hold(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjKlh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjGlh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGlh²hh³jYlh´Mõubj3)�”}”(hŒdev_hold”h]”j9)�”}”(hŒdev_hold”h]”hŒdev_hold”…”�”}”(hjllh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhlubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjGlh²hh³jYlh´Mõubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjˆlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„lubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„lubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¦lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¨lŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jnlsbŒ c.dev_hold”†”asbuh1hhj„lubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„lubj )�”}”(hj h]”hŒ*”…”�”}”(hjÔlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj„lubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjálh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj€lubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjGlh²hh³jYlh´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjClh²hh³jYlh´Mõubah}”(h]”j>lah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jYlh´Mõhj@lh²hubjg)�”}”(hhh]”jl)�”}”(hŒget reference to device”h]”hŒget reference to device”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mõhjmh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj@lh²hh³jYlh´Mõubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j#mjŒj#mj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¤**Parameters** ``struct net_device *dev`` network device **Description** Hold reference to device to keep it from being freed. Try using netdev_hold() instead.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj-mh]”hŒ Parameters”…”�”}”(hj/mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+mubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mùhj'mubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjLmh]”hŒstruct net_device *dev”…”�”}”(hjNmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJmubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MöhjFmubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjemh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jamh´Möhjbmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jamh´MöhjCmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'mubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‡mh]”hŒ Description”…”�”}”(hj‰mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…mubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Møhj'mubjl)�”}”(hŒVHold reference to device to keep it from being freed. Try using netdev_hold() instead.”h]”hŒVHold reference to device to keep it from being freed. Try using netdev_hold() instead.”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M÷hj'mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒdev_put (C function)”Œ c.dev_put”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ%void dev_put (struct net_device *dev)”h]”j )�”}”(hŒ$void dev_put(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌmh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÈmh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈmh²hh³jÚmh´Mubj3)�”}”(hŒdev_put”h]”j9)�”}”(hŒdev_put”h]”hŒdev_put”…”�”}”(hjímh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjémubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÈmh²hh³jÚmh´Mubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”•}”(hj'nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)nŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jïmsbŒ c.dev_put”†”asbuh1hhjnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjnubj )�”}”(hj h]”hŒ*”…”�”}”(hjUnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjnubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjbnh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÈmh²hh³jÚmh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÄmh²hh³jÚmh´Mubah}”(h]”j¿mah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÚmh´MhjÁmh²hubjg)�”}”(hhh]”jl)�”}”(hŒrelease reference to device”h]”hŒrelease reference to device”…”�”}”(hjŒnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj‰nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÁmh²hh³jÚmh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¤njŒj¤nj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¢**Parameters** ``struct net_device *dev`` network device **Description** Release reference to device to allow it to be freed. Try using netdev_put() instead.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj®nh]”hŒ Parameters”…”�”}”(hj°nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¬nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj¨nubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÍnh]”hŒstruct net_device *dev”…”�”}”(hjÏnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MhjÇnubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjænh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jânh´Mhjãnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jânh´MhjÄnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjoh]”hŒ Description”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj¨nubjl)�”}”(hŒTRelease reference to device to allow it to be freed. Try using netdev_put() instead.”h]”hŒTRelease reference to device to allow it to be freed. Try using netdev_put() instead.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj¨nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒlinkwatch_sync_dev (C function)”Œc.linkwatch_sync_dev”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void linkwatch_sync_dev (struct net_device *dev)”h]”j )�”}”(hŒ/void linkwatch_sync_dev(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjMoh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjIoh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIoh²hh³j[oh´M(ubj3)�”}”(hŒlinkwatch_sync_dev”h]”j9)�”}”(hŒlinkwatch_sync_dev”h]”hŒlinkwatch_sync_dev”…”�”}”(hjnoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjjoubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjIoh²hh³j[oh´M(ubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŠoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†oubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¨oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jªoŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jposbŒc.linkwatch_sync_dev”†”asbuh1hhj†oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†oubj )�”}”(hj h]”hŒ*”…”�”}”(hjÖoh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj†oubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjãoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‚oubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjIoh²hh³j[oh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjEoh²hh³j[oh´M(ubah}”(h]”j@oah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j[oh´M(hjBoh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#sync linkwatch for the given device”h]”hŒ#sync linkwatch for the given device”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M(hj ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjBoh²hh³j[oh´M(ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j%pjŒj%pj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ¼**Parameters** ``struct net_device *dev`` network device to sync linkwatch for **Description** Sync linkwatch for the given device, removing it from the pending work list (if queued).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj/ph]”hŒ Parameters”…”�”}”(hj1ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-pubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M,hj)pubjß)�”}”(hhh]”jä)�”}”(hŒ@``struct net_device *dev`` network device to sync linkwatch for ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjNph]”hŒstruct net_device *dev”…”�”}”(hjPph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M)hjHpubj)�”}”(hhh]”jl)�”}”(hŒ$network device to sync linkwatch for”h]”hŒ$network device to sync linkwatch for”…”�”}”(hjgph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jcph´M)hjdpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jcph´M)hjEpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj)pubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‰ph]”hŒ Description”…”�”}”(hj‹ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡pubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M+hj)pubjl)�”}”(hŒXSync linkwatch for the given device, removing it from the pending work list (if queued).”h]”hŒXSync linkwatch for the given device, removing it from the pending work list (if queued).”…”�”}”(hjŸph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M*hj)pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_carrier_ok (C function)”Œc.netif_carrier_ok”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4bool netif_carrier_ok (const struct net_device *dev)”h]”j )�”}”(hŒ3bool netif_carrier_ok(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÎph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÊph²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊph²hh³jÛph´M2ubj3)�”}”(hŒnetif_carrier_ok”h]”j9)�”}”(hŒnetif_carrier_ok”h]”hŒnetif_carrier_ok”…”�”}”(hjîph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêpubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÊph²hh³jÛph´M2ubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqubj)�”}”(hjh]”hŒstruct”…”�”}”(hj%qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjCqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jEqŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jðpsbŒc.netif_carrier_ok”†”asbuh1hhjqubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqubj )�”}”(hj h]”hŒ*”…”�”}”(hjqqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjqubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj~qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjqubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÊph²hh³jÛph´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÆph²hh³jÛph´M2ubah}”(h]”jÁpah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÛph´M2hjÃph²hubjg)�”}”(hhh]”jl)�”}”(hŒtest if carrier present”h]”hŒtest if carrier present”…”�”}”(hj¨qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M2hj¥qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÃph²hh³jÛph´M2ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÀqjŒjÀqj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒy**Parameters** ``const struct net_device *dev`` network device **Description** Check if carrier is present on device”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÊqh]”hŒ Parameters”…”�”}”(hjÌqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈqubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M6hjÄqubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjéqh]”hŒconst struct net_device *dev”…”�”}”(hjëqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjçqubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M3hjãqubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþqh´M3hjÿqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþqh´M3hjàqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄqubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj$rh]”hŒ Description”…”�”}”(hj&rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj"rubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M5hjÄqubjl)�”}”(hŒ%Check if carrier is present on device”h]”hŒ%Check if carrier is present on device”…”�”}”(hj:rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M4hjÄqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_dormant_on (C function)”Œc.netif_dormant_on”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void netif_dormant_on (struct net_device *dev)”h]”j )�”}”(hŒ-void netif_dormant_on(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjirh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjerh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjerh²hh³jwrh´MEubj3)�”}”(hŒnetif_dormant_on”h]”j9)�”}”(hŒnetif_dormant_on”h]”hŒnetif_dormant_on”…”�”}”(hjŠrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†rubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjerh²hh³jwrh´MEubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢rubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÄrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆrŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŒrsbŒc.netif_dormant_on”†”asbuh1hhj¢rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjärh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢rubj )�”}”(hj h]”hŒ*”…”�”}”(hjòrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢rubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÿrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžrubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjerh²hh³jwrh´MEubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjarh²hh³jwrh´MEubah}”(h]”j\rah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jwrh´MEhj^rh²hubjg)�”}”(hhh]”jl)�”}”(hŒmark device as dormant.”h]”hŒmark device as dormant.”…”�”}”(hj)sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MEhj&sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^rh²hh³jwrh´MEubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jAsjŒjAsj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXÀ**Parameters** ``struct net_device *dev`` network device **Description** Mark device as dormant (as per RFC2863). The dormant state indicates that the relevant interface is not actually in a condition to pass packets (i.e., it is not 'up') but is in a "pending" state, waiting for some external event. For "on- demand" interfaces, this new state identifies the situation where the interface is waiting for events to place it in the up state.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjKsh]”hŒ Parameters”…”�”}”(hjMsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjIsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MIhjEsubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjjsh]”hŒstruct net_device *dev”…”�”}”(hjlsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhsubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MFhjdsubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjƒsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsh´MFhj€subah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsh´MFhjasubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjEsubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¥sh]”hŒ Description”…”�”}”(hj§sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj£subah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MHhjEsubjl)�”}”(hŒ(Mark device as dormant (as per RFC2863).”h]”hŒ(Mark device as dormant (as per RFC2863).”…”�”}”(hj»sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MGhjEsubjl)�”}”(hXHThe dormant state indicates that the relevant interface is not actually in a condition to pass packets (i.e., it is not 'up') but is in a "pending" state, waiting for some external event. For "on- demand" interfaces, this new state identifies the situation where the interface is waiting for events to place it in the up state.”h]”hXTThe dormant state indicates that the relevant interface is not actually in a condition to pass packets (i.e., it is not ‘up’) but is in a “pendingâ€� state, waiting for some external event. For “on- demandâ€� interfaces, this new state identifies the situation where the interface is waiting for events to place it in the up state.”…”�”}”(hjÊsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MIhjEsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_dormant_off (C function)”Œc.netif_dormant_off”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void netif_dormant_off (struct net_device *dev)”h]”j )�”}”(hŒ.void netif_dormant_off(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjùsh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõsh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõsh²hh³jth´MWubj3)�”}”(hŒnetif_dormant_off”h]”j9)�”}”(hŒnetif_dormant_off”h]”hŒnetif_dormant_off”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjõsh²hh³jth´MWubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj6th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2tubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjTth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jVtŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jtsbŒc.netif_dormant_off”†”asbuh1hhj2tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2tubj )�”}”(hj h]”hŒ*”…”�”}”(hj‚th²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj2tubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj.tubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjõsh²hh³jth´MWubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjñsh²hh³jth´MWubah}”(h]”jìsah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jth´MWhjîsh²hubjg)�”}”(hhh]”jl)�”}”(hŒset device as not dormant.”h]”hŒset device as not dormant.”…”�”}”(hj¹th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MWhj¶th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjîsh²hh³jth´MWubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÑtjŒjÑtj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒm**Parameters** ``struct net_device *dev`` network device **Description** Device is not in dormant state.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÛth]”hŒ Parameters”…”�”}”(hjÝth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙtubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M[hjÕtubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjúth]”hŒstruct net_device *dev”…”�”}”(hjüth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøtubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MXhjôtubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³juh´MXhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³juh´MXhjñtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕtubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj5uh]”hŒ Description”…”�”}”(hj7uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3uubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MZhjÕtubjl)�”}”(hŒDevice is not in dormant state.”h]”hŒDevice is not in dormant state.”…”�”}”(hjKuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MYhjÕtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_dormant (C function)”Œc.netif_dormant”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool netif_dormant (const struct net_device *dev)”h]”j )�”}”(hŒ0bool netif_dormant(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjzuh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjvuh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvuh²hh³j‡uh´Mcubj3)�”}”(hŒ netif_dormant”h]”j9)�”}”(hŒ netif_dormant”h]”hŒ netif_dormant”…”�”}”(hjšuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–uubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjvuh²hh³j‡uh´Mcubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¶uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²uubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÑuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²uubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjïuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñuŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jœusbŒc.netif_dormant”†”asbuh1hhj²uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²uubj )�”}”(hj h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj²uubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj*vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®uubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjvuh²hh³j‡uh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjruh²hh³j‡uh´Mcubah}”(h]”jmuah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‡uh´Mchjouh²hubjg)�”}”(hhh]”jl)�”}”(hŒtest if device is dormant”h]”hŒtest if device is dormant”…”�”}”(hjTvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MchjQvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjouh²hh³j‡uh´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jlvjŒjlvj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒo**Parameters** ``const struct net_device *dev`` network device **Description** Check if device is dormant.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvvh]”hŒ Parameters”…”�”}”(hjxvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mghjpvubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hj•vh]”hŒconst struct net_device *dev”…”�”}”(hj—vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mdhj�vubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj®vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªvh´Mdhj«vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªvh´MdhjŒvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpvubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÐvh]”hŒ Description”…”�”}”(hjÒvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mfhjpvubjl)�”}”(hŒCheck if device is dormant.”h]”hŒCheck if device is dormant.”…”�”}”(hjævh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mehjpvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_testing_on (C function)”Œc.netif_testing_on”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void netif_testing_on (struct net_device *dev)”h]”j )�”}”(hŒ-void netif_testing_on(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjwh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Moubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwh²hh³j#wh´Moubj3)�”}”(hŒnetif_testing_on”h]”j9)�”}”(hŒnetif_testing_on”h]”hŒnetif_testing_on”…”�”}”(hj6wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2wubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjwh²hh³j#wh´Moubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjRwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNwubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjpwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jrwŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j8wsbŒc.netif_testing_on”†”asbuh1hhjNwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNwubj )�”}”(hj h]”hŒ*”…”�”}”(hjžwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjNwubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj«wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjJwubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjwh²hh³j#wh´Moubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj wh²hh³j#wh´Moubah}”(h]”jwah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j#wh´Mohj wh²hubjg)�”}”(hhh]”jl)�”}”(hŒmark device as under test.”h]”hŒmark device as under test.”…”�”}”(hjÕwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MohjÒwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj wh²hh³j#wh´Moubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jíwjŒjíwj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX4**Parameters** ``struct net_device *dev`` network device **Description** Mark device as under test (as per RFC2863). The testing state indicates that some test(s) must be performed on the interface. After completion, of the test, the interface state will change to up, dormant, or down, as appropriate.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj÷wh]”hŒ Parameters”…”�”}”(hjùwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjõwubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mshjñwubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjxh]”hŒstruct net_device *dev”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mphjxubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj/xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+xh´Mphj,xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+xh´Mphj xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjñwubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjQxh]”hŒ Description”…”�”}”(hjSxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mrhjñwubjl)�”}”(hŒ+Mark device as under test (as per RFC2863).”h]”hŒ+Mark device as under test (as per RFC2863).”…”�”}”(hjgxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mqhjñwubjl)�”}”(hŒ¹The testing state indicates that some test(s) must be performed on the interface. After completion, of the test, the interface state will change to up, dormant, or down, as appropriate.”h]”hŒ¹The testing state indicates that some test(s) must be performed on the interface. After completion, of the test, the interface state will change to up, dormant, or down, as appropriate.”…”�”}”(hjvxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mshjñwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_testing_off (C function)”Œc.netif_testing_off”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void netif_testing_off (struct net_device *dev)”h]”j )�”}”(hŒ.void netif_testing_off(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥xh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡xh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡xh²hh³j³xh´Mubj3)�”}”(hŒnetif_testing_off”h]”j9)�”}”(hŒnetif_testing_off”h]”hŒnetif_testing_off”…”�”}”(hjÆxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂxubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡xh²hh³j³xh´Mubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞxubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÈxsbŒc.netif_testing_off”†”asbuh1hhjÞxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞxubj )�”}”(hj h]”hŒ*”…”�”}”(hj.yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÞxubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj;yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚxubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡xh²hh³j³xh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�xh²hh³j³xh´Mubah}”(h]”j˜xah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j³xh´Mhjšxh²hubjg)�”}”(hhh]”jl)�”}”(hŒset device as not under test.”h]”hŒset device as not under test.”…”�”}”(hjeyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhjbyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšxh²hh³j³xh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j}yjŒj}yj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒm**Parameters** ``struct net_device *dev`` network device **Description** Device is not in testing state.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‡yh]”hŒ Parameters”…”�”}”(hj‰yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…yubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mƒhj�yubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj¦yh]”hŒstruct net_device *dev”…”�”}”(hj¨yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤yubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M€hj yubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj¿yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»yh´M€hj¼yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»yh´M€hj�yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�yubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjáyh]”hŒ Description”…”�”}”(hjãyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjßyubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‚hj�yubjl)�”}”(hŒDevice is not in testing state.”h]”hŒDevice is not in testing state.”…”�”}”(hj÷yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hj�yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_testing (C function)”Œc.netif_testing”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool netif_testing (const struct net_device *dev)”h]”j )�”}”(hŒ0bool netif_testing(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj&zh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"zh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"zh²hh³j3zh´M‹ubj3)�”}”(hŒ netif_testing”h]”j9)�”}”(hŒ netif_testing”h]”hŒ netif_testing”…”�”}”(hjFzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBzubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj"zh²hh³j3zh´M‹ubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjbzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjozh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^zubj)�”}”(hjh]”hŒstruct”…”�”}”(hj}zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^zubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj›zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�zŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jHzsbŒc.netif_testing”†”asbuh1hhj^zubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^zubj )�”}”(hj h]”hŒ*”…”�”}”(hjÉzh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^zubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÖzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZzubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj"zh²hh³j3zh´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjzh²hh³j3zh´M‹ubah}”(h]”jzah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j3zh´M‹hjzh²hubjg)�”}”(hhh]”jl)�”}”(hŒtest if device is under test”h]”hŒtest if device is under test”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M‹hjýzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjzh²hh³j3zh´M‹ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j{jŒj{j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒq**Parameters** ``const struct net_device *dev`` network device **Description** Check if device is under test”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj"{h]”hŒ Parameters”…”�”}”(hj${h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj {ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hj{ubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjA{h]”hŒconst struct net_device *dev”…”�”}”(hjC{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŒhj;{ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjZ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jV{h´MŒhjW{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jV{h´MŒhj8{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj{ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj|{h]”hŒ Description”…”�”}”(hj~{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjz{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MŽhj{ubjl)�”}”(hŒCheck if device is under test”h]”hŒCheck if device is under test”…”�”}”(hj’{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M�hj{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_oper_up (C function)”Œc.netif_oper_up”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool netif_oper_up (const struct net_device *dev)”h]”j )�”}”(hŒ0bool netif_oper_up(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÁ{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj½{h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½{h²hh³jÎ{h´M—ubj3)�”}”(hŒ netif_oper_up”h]”j9)�”}”(hŒ netif_oper_up”h]”hŒ netif_oper_up”…”�”}”(hjá{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ{ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj½{h²hh³jÎ{h´M—ubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjý{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù{ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù{ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj6|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j8|Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jã{sbŒc.netif_oper_up”†”asbuh1hhjù{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù{ubj )�”}”(hj h]”hŒ*”…”�”}”(hjd|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjù{ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjq|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõ{ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj½{h²hh³jÎ{h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¹{h²hh³jÎ{h´M—ubah}”(h]”j´{ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÎ{h´M—hj¶{h²hubjg)�”}”(hhh]”jl)�”}”(hŒtest if device is operational”h]”hŒtest if device is operational”…”�”}”(hj›|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M—hj˜|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶{h²hh³jÎ{h´M—ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j³|jŒj³|j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒs**Parameters** ``const struct net_device *dev`` network device **Description** Check if carrier is operational”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj½|h]”hŒ Parameters”…”�”}”(hj¿|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj»|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M›hj·|ubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjÜ|h]”hŒconst struct net_device *dev”…”�”}”(hjÞ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M˜hjÖ|ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjõ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñ|h´M˜hjò|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñ|h´M˜hjÓ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj·|ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj}h]”hŒ Description”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mšhj·|ubjl)�”}”(hŒCheck if carrier is operational”h]”hŒCheck if carrier is operational”…”�”}”(hj-}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M™hj·|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!netif_device_present (C function)”Œc.netif_device_present”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8bool netif_device_present (const struct net_device *dev)”h]”j )�”}”(hŒ7bool netif_device_present(const struct net_device *dev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj\}h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjX}h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjX}h²hh³ji}h´M¥ubj3)�”}”(hŒnetif_device_present”h]”j9)�”}”(hŒnetif_device_present”h]”hŒnetif_device_present”…”�”}”(hj|}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx}ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjX}h²hh³ji}h´M¥ubj¡ )�”}”(hŒ(const struct net_device *dev)”h]”j§ )�”}”(hŒconst struct net_device *dev”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj˜}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”}ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj³}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”}ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÑ}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎ}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÓ}Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j~}sbŒc.netif_device_present”†”asbuh1hhj”}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”}ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÿ}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj”}ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�}ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjX}h²hh³ji}h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjT}h²hh³ji}h´M¥ubah}”(h]”jO}ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³ji}h´M¥hjQ}h²hubjg)�”}”(hhh]”jl)�”}”(hŒis device available or removed”h]”hŒis device available or removed”…”�”}”(hj6~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¥hj3~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjQ}h²hh³ji}h´M¥ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jN~jŒjN~j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒ…**Parameters** ``const struct net_device *dev`` network device **Description** Check if device has not been removed from system.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjX~h]”hŒ Parameters”…”�”}”(hjZ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjV~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M©hjR~ubjß)�”}”(hhh]”jä)�”}”(hŒ0``const struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ ``const struct net_device *dev``”h]”jð)�”}”(hjw~h]”hŒconst struct net_device *dev”…”�”}”(hjy~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhju~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¦hjq~ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒ~h´M¦hj�~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒ~h´M¦hjn~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjR~ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj²~h]”hŒ Description”…”�”}”(hj´~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M¨hjR~ubjl)�”}”(hŒ1Check if device has not been removed from system.”h]”hŒ1Check if device has not been removed from system.”…”�”}”(hjÈ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M§hjR~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnetif_tx_lock (C function)”Œc.netif_tx_lock”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+void netif_tx_lock (struct net_device *dev)”h]”j )�”}”(hŒ*void netif_tx_lock(struct net_device *dev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj÷~h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjó~h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjó~h²hh³jh´MKubj3)�”}”(hŒ netif_tx_lock”h]”j9)�”}”(hŒ netif_tx_lock”h]”hŒ netif_tx_lock”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjó~h²hh³jh´MKubj¡ )�”}”(hŒ(struct net_device *dev)”h]”j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jTŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.netif_tx_lock”†”asbuh1hhj0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0ubj )�”}”(hj h]”hŒ*”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj0ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjó~h²hh³jh´MKubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjï~h²hh³jh´MKubah}”(h]”jê~ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´MKhjì~h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!grab network device transmit lock”h]”hŒ!grab network device transmit lock”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MKhj´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjì~h²hh³jh´MKubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÏjŒjÏj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hŒn**Parameters** ``struct net_device *dev`` network device **Description** Get network device transmit lock”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÙh]”hŒ Parameters”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MOhjÓubjß)�”}”(hhh]”jä)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjøh]”hŒstruct net_device *dev”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MLhjòubj)�”}”(hhh]”jl)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j €h´MLhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j €h´MLhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÓubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj3€h]”hŒ Description”…”�”}”(hj5€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MNhjÓubjl)�”}”(hŒ Get network device transmit lock”h]”hŒ Get network device transmit lock”…”�”}”(hjI€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MMhjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_uc_sync (C function)”Œc.__dev_uc_sync”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒžint __dev_uc_sync (struct net_device *dev, int (*sync)(struct net_device *, const unsigned char *), int (*unsync)(struct net_device *, const unsigned char *))”h]”j )�”}”(hŒ™int __dev_uc_sync(struct net_device *dev, int (*sync)(struct net_device*, const unsigned char*), int (*unsync)(struct net_device*, const unsigned char*))”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjx€h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjt€h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjt€h²hh³j†€h´Mubj3)�”}”(hŒ __dev_uc_sync”h]”j9)�”}”(hŒ __dev_uc_sync”h]”hŒ __dev_uc_sync”…”�”}”(hj™€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•€ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjt€h²hh³j†€h´Mubj¡ )�”}”(hŒˆ(struct net_device *dev, int (*sync)(struct net_device*, const unsigned char*), int (*unsync)(struct net_device*, const unsigned char*))”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjµ€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±€ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÓ€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjЀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÕ€Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j›€sbŒc.__dev_uc_sync”†”asbuh1hhj±€ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó€h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±€ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj±€ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj­€ubj§ )�”}”(hŒ5int (*sync)(struct net_device*, const unsigned char*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj'�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj#�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#�ubj )�”}”(hjh]”hŒ(”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjP�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubj9)�”}”(hŒsync”h]”hŒsync”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#�ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubj )�”}”(hjh]”hŒ(”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#�ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj �ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¥�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jc.__dev_uc_sync”†”asbuh1hhj#�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#�ubj)�”}”(hj® h]”hŒconst”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#�ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj#�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#�ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj#�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj.‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj;‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj­€ubj§ )�”}”(hŒ7int (*unsync)(struct net_device*, const unsigned char*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjS‚h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjO‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hja‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO‚ubj )�”}”(hjh]”hŒ(”…”�”}”(hjo‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubj9)�”}”(hŒunsync”h]”hŒunsync”…”�”}”(hj‰‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjO‚ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj—‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubj )�”}”(hjh]”hŒ(”…”�”}”(hj¤‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj±‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO‚ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÏ‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌ‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑ‚Œmodname”NŒ classname”Njå jè )�”}”jë ]”jc.__dev_uc_sync”†”asbuh1hhjO‚ubj )�”}”(hj h]”hŒ*”…”�”}”(hjí‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjú‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO‚ubj)�”}”(hj® h]”hŒconst”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO‚ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj0ƒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjO‚ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO‚ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjLƒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjO‚ubj )�”}”(hj h]”hŒ*”…”�”}”(hjZƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjgƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjO‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj­€ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjt€h²hh³j†€h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjp€h²hh³j†€h´Mubah}”(h]”jk€ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j†€h´Mhjm€h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Synchronize device's unicast list”h]”hŒ#Synchronize device’s unicast list”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj�ƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjm€h²hh³j†€h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¨ƒjŒj¨ƒj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXƒ**Parameters** ``struct net_device *dev`` device to sync ``int (*sync)(struct net_device *, const unsigned char *)`` function to call if address should be added ``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed **Description** Add newly added addresses to the interface, and release addresses that have been deleted.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj²ƒh]”hŒ Parameters”…”�”}”(hj´ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj¬ƒubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` device to sync ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjуh]”hŒstruct net_device *dev”…”�”}”(hjÓƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjσubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj˃ubj)�”}”(hhh]”jl)�”}”(hŒdevice to sync”h]”hŒdevice to sync”…”�”}”(hjêƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæƒh´Mhjçƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˃ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæƒh´Mhjȃubjä)�”}”(hŒh``int (*sync)(struct net_device *, const unsigned char *)`` function to call if address should be added ”h]”(jê)�”}”(hŒ;``int (*sync)(struct net_device *, const unsigned char *)``”h]”jð)�”}”(hj „h]”hŒ7int (*sync)(struct net_device *, const unsigned char *)”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj„ubj)�”}”(hhh]”jl)�”}”(hŒ+function to call if address should be added”h]”hŒ+function to call if address should be added”…”�”}”(hj#„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„h´Mhj „ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„h´Mhjȃubjä)�”}”(hŒl``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed ”h]”(jê)�”}”(hŒ=``int (*unsync)(struct net_device *, const unsigned char *)``”h]”jð)�”}”(hjC„h]”hŒ9int (*unsync)(struct net_device *, const unsigned char *)”…”�”}”(hjE„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjA„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj=„ubj)�”}”(hhh]”jl)�”}”(hŒ-function to call if address should be removed”h]”hŒ-function to call if address should be removed”…”�”}”(hj\„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jX„h´MhjY„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jX„h´Mhjȃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¬ƒubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj~„h]”hŒ Description”…”�”}”(hj€„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj|„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M hj¬ƒubjÒ)�”}”(hŒYAdd newly added addresses to the interface, and release addresses that have been deleted.”h]”jl)�”}”(hŒYAdd newly added addresses to the interface, and release addresses that have been deleted.”h]”hŒYAdd newly added addresses to the interface, and release addresses that have been deleted.”…”�”}”(hj˜„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´Mhj”„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j¦„h´Mhj¬ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_uc_unsync (C function)”Œc.__dev_uc_unsync”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒhvoid __dev_uc_unsync (struct net_device *dev, int (*unsync)(struct net_device *, const unsigned char *))”h]”j )�”•}”(hŒevoid __dev_uc_unsync(struct net_device *dev, int (*unsync)(struct net_device*, const unsigned char*))”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍ„h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÉ„h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉ„h²hh³jÛ„h´M-ubj3)�”}”(hŒ__dev_uc_unsync”h]”j9)�”}”(hŒ__dev_uc_unsync”h]”hŒ__dev_uc_unsync”…”�”}”(hjî„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjê„ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÉ„h²hh³jÛ„h´M-ubj¡ )�”}”(hŒQ(struct net_device *dev, int (*unsync)(struct net_device*, const unsigned char*))”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj(…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j*…Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jð„sbŒc.__dev_uc_unsync”†”asbuh1hhj…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…ubj )�”}”(hj h]”hŒ*”…”�”}”(hjV…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj…ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjc…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…ubj§ )�”}”(hŒ7int (*unsync)(struct net_device*, const unsigned char*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj|…h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjx…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx…ubj )�”}”(hjh]”hŒ(”…”�”}”(hj˜…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubj9)�”}”(hŒunsync”h]”hŒunsync”…”�”}”(hj²…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx…ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjÀ…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubj )�”}”(hjh]”hŒ(”…”�”}”(hjÍ…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjÚ…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjx…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx…ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjø…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jú…Œmodname”NŒ classname”Njå jè )�”}”jë ]”jD…Œc.__dev_uc_unsync”†”asbuh1hhjx…ubj )�”}”(hj h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hj#†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx…ubj)�”}”(hj® h]”hŒconst”…”�”}”(hj>†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjx…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx…ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjY†h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjx…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg†h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx…ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hju†h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjx…ubj )�”}”(hj h]”hŒ*”…”�”}”(hjƒ†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj�†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÉ„h²hh³jÛ„h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÅ„h²hh³jÛ„h´M-ubah}”(h]”jÀ„ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÛ„h´M-hj„h²hubjg)�”}”(hhh]”jl)�”}”(hŒ)Remove synchronized addresses from device”h]”hŒ)Remove synchronized addresses from device”…”�”}”(hj¹†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M-hj¶†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj„h²hh³jÛ„h´M-ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jцjŒjцj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` device to sync ``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed **Description** Remove all addresses that were added to the device by dev_uc_sync().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÛ†h]”hŒ Parameters”…”�”}”(hj݆h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M1hjÕ†ubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` device to sync ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjú†h]”hŒstruct net_device *dev”…”�”}”(hjü†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjø†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M.hjô†ubj)�”}”(hhh]”jl)�”}”(hŒdevice to sync”h]”hŒdevice to sync”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡h´M.hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjô†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡h´M.hjñ†ubjä)�”}”(hŒl``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed ”h]”(jê)�”}”(hŒ=``int (*unsync)(struct net_device *, const unsigned char *)``”h]”jð)�”}”(hj3‡h]”hŒ9int (*unsync)(struct net_device *, const unsigned char *)”…”�”}”(hj5‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M/hj-‡ubj)�”}”(hhh]”jl)�”}”(hŒ-function to call if address should be removed”h]”hŒ-function to call if address should be removed”…”�”}”(hjL‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jH‡h´M/hjI‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jH‡h´M/hjñ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕ†ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjn‡h]”hŒ Description”…”�”}”(hjp‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjl‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M1hjÕ†ubjÒ)�”}”(hŒDRemove all addresses that were added to the device by dev_uc_sync().”h]”jl)�”}”(hj†‡h]”hŒDRemove all addresses that were added to the device by dev_uc_sync().”…”�”}”(hjˆ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M0hj„‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³j•‡h´M0hjÕ†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_mc_sync (C function)”Œc.__dev_mc_sync”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒžint __dev_mc_sync (struct net_device *dev, int (*sync)(struct net_device *, const unsigned char *), int (*unsync)(struct net_device *, const unsigned char *))”h]”j )�”}”(hŒ™int __dev_mc_sync(struct net_device *dev, int (*sync)(struct net_device*, const unsigned char*), int (*unsync)(struct net_device*, const unsigned char*))”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¼‡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¸‡h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸‡h²hh³jʇh´MHubj3)�”}”(hŒ __dev_mc_sync”h]”j9)�”}”(hŒ __dev_mc_sync”h]”hŒ __dev_mc_sync”…”�”}”(hj݇h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ‡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¸‡h²hh³jʇh´MHubj¡ )�”}”(hŒˆ(struct net_device *dev, int (*sync)(struct net_device*, const unsigned char*), int (*unsync)(struct net_device*, const unsigned char*))”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjù‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõ‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ‡ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jˆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j߇sbŒc.__dev_mc_sync”†”asbuh1hhjõ‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7ˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ‡ubj )�”}”(hj h]”hŒ*”…”�”}”(hjEˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõ‡ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjRˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjñ‡ubj§ )�”}”(hŒ5int (*sync)(struct net_device*, const unsigned char*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjkˆh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjgˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgˆubj )�”}”(hjh]”hŒ(”…”�”}”(hj‡ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubj )�”}”(hj h]”hŒ*”…”�”}”(hj”ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubj9)�”}”(hŒsync”h]”hŒsync”…”�”}”(hj¡ˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgˆubj )�”}”(hjEh]”hŒ)”…”�”}”(hj¯ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubj )�”}”(hjh]”hŒ(”…”�”}”(hj¼ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubj)�”}”(hjh]”hŒstruct”…”�”}”(hjɈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖˆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgˆubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjçˆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j鈌modname”NŒ classname”Njå jè )�”}”jë ]”j3ˆŒc.__dev_mc_sync”†”asbuh1hhjgˆubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubj )�”}”(hjm„h]”hŒ,”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgˆubj)�”}”(hj® h]”hŒconst”…”�”}”(hj-‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgˆubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjH‰h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjgˆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgˆubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjd‰h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjgˆubj )�”}”(hj h]”hŒ*”…”�”}”(hjr‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubj )�”}”(hjEh]”hŒ)”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjñ‡ubj§ )�”}”(hŒ7int (*unsync)(struct net_device*, const unsigned char*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj—‰h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“‰ubj )�”}”(hjh]”hŒ(”…”�”}”(hj³‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÀ‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubj9)�”}”(hŒunsync”h]”hŒunsync”…”�”}”(hj͉h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“‰ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjÛ‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubj )�”}”(hjh]”hŒ(”…”�”}”(hjè‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjõ‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“‰ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŠŒmodname”NŒ classname”Njå jè )�”}”jë ]”j3ˆŒc.__dev_mc_sync”†”asbuh1hhj“‰ubj )�”}”(hj h]”hŒ*”…”�”}”(hj1Šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubj )�”}”(hjm„h]”hŒ,”…”�”}”(hj>Šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“‰ubj)�”}”(hj® h]”hŒconst”…”�”}”(hjYŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“‰ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjtŠh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“‰ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj“‰ubj )�”}”(hj h]”hŒ*”…”�”}”(hjžŠh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj«Šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj“‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjñ‡ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¸‡h²hh³jʇh´MHubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj´‡h²hh³jʇh´MHubah}”(h]”j¯‡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jʇh´MHhj±‡h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Synchronize device's multicast list”h]”hŒ%Synchronize device’s multicast list”…”�”}”(hjÔŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MHhjÑŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj±‡h²hh³jʇh´MHubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jìŠjŒjìŠj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXƒ**Parameters** ``struct net_device *dev`` device to sync ``int (*sync)(struct net_device *, const unsigned char *)`` function to call if address should be added ``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed **Description** Add newly added addresses to the interface, and release addresses that have been deleted.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjöŠh]”hŒ Parameters”…”�”}”(hjøŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjôŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MLhjðŠubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` device to sync ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj‹h]”hŒstruct net_device *dev”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MIhj‹ubj)�”}”(hhh]”jl)�”}”(hŒdevice to sync”h]”hŒdevice to sync”…”�”}”(hj.‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*‹h´MIhj+‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*‹h´MIhj ‹ubjä)�”}”(hŒh``int (*sync)(struct net_device *, const unsigned char *)`` function to call if address should be added ”h]”(jê)�”}”(hŒ;``int (*sync)(struct net_device *, const unsigned char *)``”h]”jð)�”}”(hjN‹h]”hŒ7int (*sync)(struct net_device *, const unsigned char *)”…”�”}”(hjP‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MJhjH‹ubj)�”}”(hhh]”jl)�”}”(hŒ+function to call if address should be added”h]”hŒ+function to call if address should be added”…”�”}”(hjg‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc‹h´MJhjd‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc‹h´MJhj ‹ubjä)�”}”(hŒl``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed ”h]”(jê)�”}”(hŒ=``int (*unsync)(struct net_device *, const unsigned char *)``”h]”jð)�”}”(hj‡‹h]”hŒ9int (*unsync)(struct net_device *, const unsigned char *)”…”�”}”(hj‰‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MKhj�‹ubj)�”}”(hhh]”jl)�”}”(hŒ-function to call if address should be removed”h]”hŒ-function to call if address should be removed”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœ‹h´MKhj�‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœ‹h´MKhj ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjðŠubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‹h]”hŒ Description”…”�”}”(hjÄ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MMhjðŠubjÒ)�”}”(hŒYAdd newly added addresses to the interface, and release addresses that have been deleted.”h]”jl)�”}”(hŒYAdd newly added addresses to the interface, and release addresses that have been deleted.”h]”hŒYAdd newly added addresses to the interface, and release addresses that have been deleted.”…”�”}”(hjÜ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MLhjØ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jê‹h´MLhjðŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__dev_mc_unsync (C function)”Œc.__dev_mc_unsync”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒhvoid __dev_mc_unsync (struct net_device *dev, int (*unsync)(struct net_device *, const unsigned char *))”h]”j )�”}”(hŒevoid __dev_mc_unsync(struct net_device *dev, int (*unsync)(struct net_device*, const unsigned char*))”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj Œh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Œh²hh³jŒh´MZubj3)�”}”(hŒ__dev_mc_unsync”h]”j9)�”}”(hŒ__dev_mc_unsync”h]”hŒ__dev_mc_unsync”…”�”}”(hj2Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.Œubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj Œh²hh³jŒh´MZubj¡ )�”}”(hŒQ(struct net_device *dev, int (*unsync)(struct net_device*, const unsigned char*))”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjNŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJŒubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjlŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jnŒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4ŒsbŒc.__dev_mc_unsync”†”asbuh1hhjJŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJŒubj )�”}”(hj h]”hŒ*”…”�”}”(hjšŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJŒubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj§Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFŒubj§ )�”}”(hŒ7int (*unsync)(struct net_device*, const unsigned char*)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÀŒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼Œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Œubj )�”}”(hjh]”hŒ(”…”�”}”(hjÜŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubj )�”}”(hj h]”hŒ*”…”�”}”(hjéŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubj9)�”}”(hŒunsync”h]”hŒunsync”…”�”}”(hjöŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Œubj )�”}”(hjEh]”hŒ)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubj )�”}”(hjh]”hŒ(”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubj)�”}”(hjh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼Œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Œubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj<�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j>�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jˆŒŒc.__dev_mc_unsync”†”asbuh1hhj¼Œubj )�”}”(hj h]”hŒ*”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubj )�”}”(hjm„h]”hŒ,”…”�”}”(hjg�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Œubj)�”}”(hj® h]”hŒconst”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼Œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ŒubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼Œubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ŒubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼Œubj )�”}”(hj h]”hŒ*”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubj )�”}”(hjEh]”hŒ)”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj Œh²hh³jŒh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj Œh²hh³jŒh´MZubah}”(h]”jŒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŒh´MZhjŒh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)Remove synchronized addresses from device”h]”hŒ)Remove synchronized addresses from device”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´MZhjú�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŒh²hh³jŒh´MZubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŽjŒjŽj�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` device to sync ``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed **Description** Remove all addresses that were added to the device by dev_mc_sync().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŽh]”hŒ Parameters”…”�”}”(hj!Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M^hjŽubjß)�”}”(hhh]”(jä)�”}”(hŒ*``struct net_device *dev`` device to sync ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj>Žh]”hŒstruct net_device *dev”…”�”}”(hj@Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M[hj8Žubj)�”}”(hhh]”jl)�”}”(hŒdevice to sync”h]”hŒdevice to sync”…”�”}”(hjWŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jSŽh´M[hjTŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jSŽh´M[hj5Žubjä)�”}”(hŒl``int (*unsync)(struct net_device *, const unsigned char *)`` function to call if address should be removed ”h]”(jê)�”}”(hŒ=``int (*unsync)(struct net_device *, const unsigned char *)``”h]”jð)�”}”(hjwŽh]”hŒ9int (*unsync)(struct net_device *, const unsigned char *)”…”�”}”(hjyŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M\hjqŽubj)�”}”(hhh]”jl)�”}”(hŒ-function to call if address should be removed”h]”hŒ-function to call if address should be removed”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒŽh´M\hj�Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒŽh´M\hj5Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŽubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj²Žh]”hŒ Description”…”�”}”(hj´Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M^hjŽubjÒ)�”}”(hŒDRemove all addresses that were added to the device by dev_mc_sync().”h]”jl)�”}”(hjÊŽh]”hŒDRemove all addresses that were added to the device by dev_mc_sync().”…”�”}”(hjÌŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:104: ./include/linux/netdevice.h”h´M]hjÈŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÙŽh´M]hjŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnet_shaper (C struct)”Œ c.net_shaper”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ net_shaper”h]”j )�”}”(hŒstruct net_shaper”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüŽh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjüŽh²hh³j �h´Kubj3)�”}”(hŒ net_shaper”h]”j9)�”}”(hjúŽh]”hŒ net_shaper”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjüŽh²hh³j �h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjøŽh²hh³j �h´Kubah}”(h]”jóŽah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j �h´KhjõŽh²hubjg)�”}”(hhh]”jl)�”}”(hŒMrepresents a shaping node on the NIC H/W zeroed field are considered not set.”h]”hŒMrepresents a shaping node on the NIC H/W zeroed field are considered not set.”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K!hj?�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjõŽh²hh³j �h´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jZ�jŒjZ�j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXÊ**Definition**:: struct net_shaper { struct net_shaper_handle parent; struct net_shaper_handle handle; enum net_shaper_metric metric; u64 bw_min; u64 bw_max; u64 burst; u32 priority; u32 weight; }; **Members** ``parent`` Unique identifier for the shaper parent, usually implied ``handle`` Unique identifier for this shaper ``metric`` Specify if the rate limits refers to PPS or BPS ``bw_min`` Minimum guaranteed rate for this shaper ``bw_max`` Maximum peak rate allowed for this shaper ``burst`` Maximum burst for the peek rate of this shaper ``priority`` Scheduling priority for this shaper ``weight`` Scheduling weight for this shaper”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjb�ubhŒ:”…”�”}”(hjb�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K%hj^�ubj¶)�”}”(hŒÔstruct net_shaper { struct net_shaper_handle parent; struct net_shaper_handle handle; enum net_shaper_metric metric; u64 bw_min; u64 bw_max; u64 burst; u32 priority; u32 weight; };”h]”hŒÔstruct net_shaper { struct net_shaper_handle parent; struct net_shaper_handle handle; enum net_shaper_metric metric; u64 bw_min; u64 bw_max; u64 burst; u32 priority; u32 weight; };”…”�”}”hj�sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K'hj^�ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj��h]”hŒMembers”…”�”}”(hj’�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŽ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K2hj^�ubjß)�”}”(hhh]”(jä)�”}”(hŒD``parent`` Unique identifier for the shaper parent, usually implied ”h]”(jê)�”}”(hŒ ``parent``”h]”jð)�”}”(hj¯�h]”hŒparent”…”�”}”(hj±�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K$hj©�ubj)�”}”(hhh]”jl)�”}”(hŒ8Unique identifier for the shaper parent, usually implied”h]”hŒ8Unique identifier for the shaper parent, usually implied”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄ�h´K$hjÅ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄ�h´K$hj¦�ubjä)�”}”(hŒ-``handle`` Unique identifier for this shaper ”h]”(jê)�”}”(hŒ ``handle``”h]”jð)�”}”(hjè�h]”hŒhandle”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjæ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K%hjâ�ubj)�”}”(hhh]”jl)�”}”(hŒ!Unique identifier for this shaper”h]”hŒ!Unique identifier for this shaper”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jý�h´K%hjþ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jý�h´K%hj¦�ubjä)�”}”(hŒ;``metric`` Specify if the rate limits refers to PPS or BPS ”h]”(jê)�”}”(hŒ ``metric``”h]”jð)�”}”(hj!�h]”hŒmetric”…”�”}”(hj#�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K&hj�ubj)�”}”(hhh]”jl)�”}”(hŒ/Specify if the rate limits refers to PPS or BPS”h]”hŒ/Specify if the rate limits refers to PPS or BPS”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6�h´K&hj7�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6�h´K&hj¦�ubjä)�”}”(hŒ3``bw_min`` Minimum guaranteed rate for this shaper ”h]”(jê)�”}”(hŒ ``bw_min``”h]”jð)�”}”(hjZ�h]”hŒbw_min”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjX�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K'hjT�ubj)�”}”(hhh]”jl)�”}”(hŒ'Minimum guaranteed rate for this shaper”h]”hŒ'Minimum guaranteed rate for this shaper”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jo�h´K'hjp�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jo�h´K'hj¦�ubjä)�”}”(hŒ5``bw_max`` Maximum peak rate allowed for this shaper ”h]”(jê)�”}”(hŒ ``bw_max``”h]”jð)�”}”(hj“�h]”hŒbw_max”…”�”}”(hj•�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K(hj��ubj)�”}”(hhh]”jl)�”}”(hŒ)Maximum peak rate allowed for this shaper”h]”hŒ)Maximum peak rate allowed for this shaper”…”�”}”(hj¬�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨�h´K(hj©�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj��ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨�h´K(hj¦�ubjä)�”}”(hŒ9``burst`` Maximum burst for the peek rate of this shaper ”h]”(jê)�”}”(hŒ ``burst``”h]”jð)�”}”(hjÌ�h]”hŒburst”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K)hjÆ�ubj)�”}”(hhh]”jl)�”}”(hŒ.Maximum burst for the peek rate of this shaper”h]”hŒ.Maximum burst for the peek rate of this shaper”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³já�h´K)hjâ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³já�h´K)hj¦�ubjä)�”}”(hŒ1``priority`` Scheduling priority for this shaper ”h]”(jê)�”}”(hŒ ``priority``”h]”jð)�”}”(hj‘h]”hŒpriority”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K*hjÿ�ubj)�”}”(hhh]”jl)�”}”(hŒ#Scheduling priority for this shaper”h]”hŒ#Scheduling priority for this shaper”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‘h´K*hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‘h´K*hj¦�ubjä)�”}”(hŒ,``weight`` Scheduling weight for this shaper”h]”(jê)�”}”(hŒ ``weight``”h]”jð)�”}”(hj>‘h]”hŒweight”…”�”}”(hj@‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K*hj8‘ubj)�”}”(hhh]”jl)�”}”(hŒ!Scheduling weight for this shaper”h]”hŒ!Scheduling weight for this shaper”…”�”}”(hjW‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K+hjT‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jS‘h´K*hj¦�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj^�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒnet_shaper_ops (C struct)”Œc.net_shaper_ops”hNt”auh1híhj�Âh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒnet_shaper_ops”h]”j )�”}”(hŒstruct net_shaper_ops”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj˜‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”‘h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”‘h²hh³j¥‘h´K1ubj3)�”}”(hŒnet_shaper_ops”h]”j9)�”}”(hj’‘h]”hŒnet_shaper_ops”…”�”}”(hj¸‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´‘ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj”‘h²hh³j¥‘h´K1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�‘h²hh³j¥‘h´K1ubah}”(h]”j‹‘ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¥‘h´K1hj�‘h²hubjg)�”}”(hhh]”jl)�”}”(hŒ Operations on device H/W shapers”h]”hŒ Operations on device H/W shapers”…”�”}”(hjÚ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K=hjבh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�‘h²hh³j¥‘h´K1ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jò‘jŒjò‘j�‰jމj�‰uh1hþh²hhj�Âh³Nh´Nubj‘)�”}”(hXT**Definition**:: struct net_shaper_ops { int (*group)(struct net_shaper_binding *binding, int leaves_count, const struct net_shaper *leaves, const struct net_shaper *node, struct netlink_ext_ack *extack); int (*set)(struct net_shaper_binding *binding, const struct net_shaper *shaper, struct netlink_ext_ack *extack); int (*delete)(struct net_shaper_binding *binding, const struct net_shaper_handle *handle, struct netlink_ext_ack *extack); void (*capabilities)(struct net_shaper_binding *binding, enum net_shaper_scope scope, unsigned long *cap); }; **Members** ``group`` create a scheduling group or add leaves Nest the **leaves** shapers identified under the **node** shaper. All the shapers belong to the device specified by **binding**. The **leaves** array's size is specified by **leaves_count**. **node** and **leaves** may or may not already exist (see the "Implicit creation" note). If **node** already exists, the **leaves** should be *added* to its children. In this case, the **leaves** array only holds new/modified leaves, not the full list. Re-parenting **leaves** is implemented by a **group** call on a new parent. There's no explicit call to remove the children from the old parent. ``set`` Updates the specified shaper Updates or creates the **shaper** on the device specified by **binding**. ``delete`` Removes the specified shaper Removes the shaper configuration as identified by the given **handle** on the device specified by **binding**, restoring the default behavior. Note that a **delete** call on a NET_SHAPER_SCOPE_QUEUE shaper also implicitly removes the associated queue from the scheduling hierarchy. The driver must take care of that step. **delete** calls on NET_SHAPER_SCOPE_NODE should not require any implicit re-parenting in the driver as core will re-parent the leaves first, before deleting the SCOPE_NODE shaper. ``capabilities`` get the shaper features supported by the device Fills the bitmask **cap** with the supported capabilities for the specified **scope** and device specified by **binding**.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjþ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjú‘ubhŒ:”…”�”}”(hjú‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KAhjö‘ubj¶)�”}”(hX%struct net_shaper_ops { int (*group)(struct net_shaper_binding *binding, int leaves_count, const struct net_shaper *leaves, const struct net_shaper *node, struct netlink_ext_ack *extack); int (*set)(struct net_shaper_binding *binding, const struct net_shaper *shaper, struct netlink_ext_ack *extack); int (*delete)(struct net_shaper_binding *binding, const struct net_shaper_handle *handle, struct netlink_ext_ack *extack); void (*capabilities)(struct net_shaper_binding *binding, enum net_shaper_scope scope, unsigned long *cap); };”h]”hX%struct net_shaper_ops { int (*group)(struct net_shaper_binding *binding, int leaves_count, const struct net_shaper *leaves, const struct net_shaper *node, struct netlink_ext_ack *extack); int (*set)(struct net_shaper_binding *binding, const struct net_shaper *shaper, struct netlink_ext_ack *extack); int (*delete)(struct net_shaper_binding *binding, const struct net_shaper_handle *handle, struct netlink_ext_ack *extack); void (*capabilities)(struct net_shaper_binding *binding, enum net_shaper_scope scope, unsigned long *cap); };”…”�”}”hj’sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KChjö‘ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj(’h]”hŒMembers”…”�”}”(hj*’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KJhjö‘ubjß)�”}”(hhh]”(jä)�”}”(hX‚``group`` create a scheduling group or add leaves Nest the **leaves** shapers identified under the **node** shaper. All the shapers belong to the device specified by **binding**. The **leaves** array's size is specified by **leaves_count**. **node** and **leaves** may or may not already exist (see the "Implicit creation" note). If **node** already exists, the **leaves** should be *added* to its children. In this case, the **leaves** array only holds new/modified leaves, not the full list. Re-parenting **leaves** is implemented by a **group** call on a new parent. There's no explicit call to remove the children from the old parent. ”h]”(jê)�”}”(hŒ ``group``”h]”jð)�”}”(hjG’h]”hŒgroup”…”�”}”(hjI’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KuhjA’ubj)�”}”(hhh]”(jl)�”}”(hŒ'create a scheduling group or add leaves”h]”hŒ'create a scheduling group or add leaves”…”�”}”(hj`’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´Kihj]’ubjl)�”}”(hŒ¾Nest the **leaves** shapers identified under the **node** shaper. All the shapers belong to the device specified by **binding**. The **leaves** array's size is specified by **leaves_count**.”h]”(hŒ Nest the ”…”�”}”(hjo’h²hh³Nh´Nubj›)�”}”(hŒ **leaves**”h]”hŒleaves”…”�”}”(hjw’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjo’ubhŒ shapers identified under the ”…”�”}”(hjo’h²hh³Nh´Nubj›)�”}”(hŒ**node**”h]”hŒnode”…”�”}”(hj‰’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjo’ubhŒ; shaper. All the shapers belong to the device specified by ”…”�”}”(hjo’h²hh³Nh´Nubj›)�”}”(hŒ **binding**”h]”hŒbinding”…”�”}”(hj›’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjo’ubhŒ. The ”…”�”}”(hjo’h²hh³Nh´Nubj›)�”}”(hŒ **leaves**”h]”hŒleaves”…”�”}”(hj­’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjo’ubhŒ array’s size is specified by ”…”�”}”(hjo’h²hh³Nh´Nubj›)�”}”(hŒ**leaves_count**”h]”hŒ leaves_count”…”�”}”(hj¿’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjo’ubhŒ.”…”�”}”(hjo’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´Kkhj]’ubjl)�”}”(hŒü**node** and **leaves** may or may not already exist (see the "Implicit creation" note). If **node** already exists, the **leaves** should be *added* to its children. In this case, the **leaves** array only holds new/modified leaves, not the full list.”h]”(j›)�”}”(hŒ**node**”h]”hŒnode”…”�”}”(hjÜ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ’ubhŒ and ”…”�”}”(hjØ’h²hh³Nh´Nubj›)�”}”(hŒ **leaves**”h]”hŒleaves”…”�”}”(hjî’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ’ubhŒI may or may not already exist (see the “Implicit creationâ€� note). If ”…”�”}”(hjØ’h²hh³Nh´Nubj›)�”}”(hŒ**node**”h]”hŒnode”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ’ubhŒ already exists, the ”…”�”}”(hjØ’h²hh³Nh´Nubj›)�”}”(hŒ **leaves**”h]”hŒleaves”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ’ubhŒ should be ”…”�”}”(hjØ’h²hh³Nh´NubjÑ‹)�”}”(hŒ*added*”h]”hŒadded”…”�”}”(hj$“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jЋhjØ’ubhŒ$ to its children. In this case, the ”…”�”}”(hjØ’h²hh³Nh´Nubj›)�”}”(hŒ **leaves**”h]”hŒleaves”…”�”}”(hj6“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ’ubhŒ9 array only holds new/modified leaves, not the full list.”…”�”}”(hjØ’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´Kohj]’ubjl)�”}”(hŒ�Re-parenting **leaves** is implemented by a **group** call on a new parent. There's no explicit call to remove the children from the old parent.”h]”(hŒ Re-parenting ”…”�”}”(hjO“h²hh³Nh´Nubj›)�”}”(hŒ **leaves**”h]”hŒleaves”…”�”}”(hjW“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjO“ubhŒ is implemented by a ”…”�”}”(hjO“h²hh³Nh´Nubj›)�”}”(hŒ **group**”h]”hŒgroup”…”�”}”(hji“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjO“ubhŒ] call on a new parent. There’s no explicit call to remove the children from the old parent.”…”�”}”(hjO“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´Kthj]’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjA’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\’h´Kuhj>’ubjä)�”}”(hŒp``set`` Updates the specified shaper Updates or creates the **shaper** on the device specified by **binding**. ”h]”(jê)�”}”(hŒ``set``”h]”jð)�”}”(hj”“h]”hŒset”…”�”}”(hj–“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KhjŽ“ubj)�”}”(hhh]”(jl)�”}”(hŒUpdates the specified shaper”h]”hŒUpdates the specified shaper”…”�”}”(hj­“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K}hjª“ubjl)�”}”(hŒIUpdates or creates the **shaper** on the device specified by **binding**.”h]”(hŒUpdates or creates the ”…”�”}”(hj¼“h²hh³Nh´Nubj›)�”}”(hŒ **shaper**”h]”hŒshaper”…”�”}”(hjÄ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼“ubhŒ on the device specified by ”…”�”}”(hj¼“h²hh³Nh´Nubj›)�”}”(hŒ **binding**”h]”hŒbinding”…”�”}”(hjÖ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼“ubhŒ.”…”�”}”(hj¼“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©“h´Khjª“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©“h´Khj>’ubjä)�”}”(hX!``delete`` Removes the specified shaper Removes the shaper configuration as identified by the given **handle** on the device specified by **binding**, restoring the default behavior. Note that a **delete** call on a NET_SHAPER_SCOPE_QUEUE shaper also implicitly removes the associated queue from the scheduling hierarchy. The driver must take care of that step. **delete** calls on NET_SHAPER_SCOPE_NODE should not require any implicit re-parenting in the driver as core will re-parent the leaves first, before deleting the SCOPE_NODE shaper. ”h]”(jê)�”}”(hŒ ``delete``”h]”jð)�”}”(hj”h]”hŒdelete”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K�hjú“ubj)�”}”(hhh]”(jl)�”}”(hŒRemoves the specified shaper”h]”hŒRemoves the specified shaper”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K†hj”ubjl)�”}”(hŒŽRemoves the shaper configuration as identified by the given **handle** on the device specified by **binding**, restoring the default behavior.”h]”(hŒ’ubjä)�”}”(hŒ¼``capabilities`` get the shaper features supported by the device Fills the bitmask **cap** with the supported capabilities for the specified **scope** and device specified by **binding**.”h]”(jê)�”}”(hŒ``capabilities``”h]”jð)�”}”(hj ”h]”hŒ capabilities”…”�”}”(hj¢”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K™hjš”ubj)�”}”(hhh]”(jl)�”}”(hŒ/get the shaper features supported by the device”h]”hŒ/get the shaper features supported by the device”…”�”}”(hj¹”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K—hj¶”ubjl)�”}”(hŒzFills the bitmask **cap** with the supported capabilities for the specified **scope** and device specified by **binding**.”h]”(hŒFills the bitmask ”…”�”}”(hjÈ”h²hh³Nh´Nubj›)�”}”(hŒ**cap**”h]”hŒcap”…”�”}”(hjДh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈ”ubhŒ3 with the supported capabilities for the specified ”…”�”}”(hjÈ”h²hh³Nh´Nubj›)�”}”(hŒ **scope**”h]”hŒscope”…”�”}”(hjâ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈ”ubhŒ and device specified by ”…”�”}”(hjÈ”h²hh³Nh´Nubj›)�”}”(hŒ **binding**”h]”hŒbinding”…”�”}”(hjô”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈ”ubhŒ.”…”�”}”(hjÈ”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµ”h´K™hj¶”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjš”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµ”h´K™hj>’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjö‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj�Âh²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj'•h]”hŒ Description”…”�”}”(hj)•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K�hj�Âh²hubjl)�”}”(hXJThe operations applies to either net_device and devlink objects. The initial shaping configuration at device initialization is empty: does not constraint the rate in any way. The network core keeps track of the applied user-configuration in the net_device or devlink structure. The operations are serialized via a per device lock.”h]”hXJThe operations applies to either net_device and devlink objects. The initial shaping configuration at device initialization is empty: does not constraint the rate in any way. The network core keeps track of the applied user-configuration in the net_device or devlink structure. The operations are serialized via a per device lock.”…”�”}”(hj=•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K>hj�Âh²hubjl)�”}”(hŒUDevice not supporting any kind of nesting should not provide the **group** operation.”h]”(hŒADevice not supporting any kind of nesting should not provide the ”…”�”}”(hjL•h²hh³Nh´Nubj›)�”}”(hŒ **group**”h]”hŒgroup”…”�”}”(hjT•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjL•ubhŒ operation.”…”�”}”(hjL•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KEhj�Âh²hubjl)�”}”(hŒyEach shaper is uniquely identified within the device with a 'handle' comprising the shaper scope and a scope-specific id.”h]”hŒ}Each shaper is uniquely identified within the device with a ‘handle’ comprising the shaper scope and a scope-specific id.”…”�”}”(hjm•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KHhj�Âh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒDriver ops vs uAPI”h]”hŒDriver ops vs uAPI”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj|•h³Nh´Nubjl)�”}”(hX;Members of the driver ops mirror the Netlink uAPI but driver calls do not map 1:1 to user calls. Drivers need to be careful when assuming that calls disallowed at the uAPI level will never be made at the driver level. The shaper core performs automatic reparenting and cleanup, generating additional calls. Notably:”h]”hX;Members of the driver ops mirror the Netlink uAPI but driver calls do not map 1:1 to user calls. Drivers need to be careful when assuming that calls disallowed at the uAPI level will never be made at the driver level. The shaper core performs automatic reparenting and cleanup, generating additional calls. Notably:”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KMhj|•ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ‚**group** calls in the driver facing API may have nodes as leaves (user is only allowed to construct groups with queues as leaves)”h]”jl)�”}”(hŒ‚**group** calls in the driver facing API may have nodes as leaves (user is only allowed to construct groups with queues as leaves)”h]”(j›)�”}”(hŒ **group**”h]”hŒgroup”…”�”}”(hj§•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj£•ubhŒy calls in the driver facing API may have nodes as leaves (user is only allowed to construct groups with queues as leaves)”…”�”}”(hj£•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KShjŸ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjœ•ubjH[)�”}”(hŒ‹**group** calls may update leaf's parent if the parent is about to be removed (re-parenting nodes explicitly is not supported in the uAPI) ”h]”jl)�”}”(hŒŠ**group** calls may update leaf's parent if the parent is about to be removed (re-parenting nodes explicitly is not supported in the uAPI)”h]”(j›)�”}”(hŒ **group**”h]”hŒgroup”…”�”}”(hjΕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊ•ubhŒƒ calls may update leaf’s parent if the parent is about to be removed (re-parenting nodes explicitly is not supported in the uAPI)”…”�”}”(hjÊ•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KUhjÆ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjœ•ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³j¿•h´KShj|•ubeh}”(h]”Œdriver-ops-vs-uapi”ah ]”h"]”Œdriver ops vs uapi”ah$]”h&]”uh1hµhj�Âh²hh³Nh´Nubh¶)�”}”(hhh]”(h»)�”}”(hŒImplicit creation”h]”hŒImplicit creation”…”�”}”(hjþ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjû•h³Nh´Nubjl)�”}”(hXShapers are created implicitly, meaning that **set** and **group** operations are called both for existing and new shapers. The driver has to infer whether the operation is an update or a creation by tracking the handles. Removal of shapers is explicit and done with a **delete** call.”h]”(hŒ-Shapers are created implicitly, meaning that ”…”�”}”(hj –h²hh³Nh´Nubj›)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj –ubhŒ and ”…”�”}”(hj –h²hh³Nh´Nubj›)�”}”(hŒ **group**”h]”hŒgroup”…”�”}”(hj&–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj –ubhŒË operations are called both for existing and new shapers. The driver has to infer whether the operation is an update or a creation by tracking the handles. Removal of shapers is explicit and done with a ”…”�”}”(hj –h²hh³Nh´Nubj›)�”}”(hŒ **delete**”h]”hŒdelete”…”�”}”(hj8–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj –ubhŒ call.”…”�”}”(hj –h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´KZhjû•ubjl)�”}”(hXThe **set** operation implicitly creates NET_SHAPER_SCOPE_NETDEV and NET_SHAPER_SCOPE_QUEUE shapers. The **group** operation implicitly creates NET_SHAPER_SCOPE_NETDEV and NET_SHAPER_SCOPE_NODE shapers (the group shaper itself), as well as NET_SHAPER_SCOPE_QUEUE shapers (leaves).”h]”(hŒThe ”…”�”}”(hjQ–h²hh³Nh´Nubj›)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjY–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjQ–ubhŒ^ operation implicitly creates NET_SHAPER_SCOPE_NETDEV and NET_SHAPER_SCOPE_QUEUE shapers. The ”…”�”}”(hjQ–h²hh³Nh´Nubj›)�”}”(hŒ **group**”h]”hŒgroup”…”�”}”(hjk–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjQ–ubhŒ¦ operation implicitly creates NET_SHAPER_SCOPE_NETDEV and NET_SHAPER_SCOPE_NODE shapers (the group shaper itself), as well as NET_SHAPER_SCOPE_QUEUE shapers (leaves).”…”�”}”(hjQ–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒY/var/lib/git/docbuild/linux/Documentation/networking/kapi:107: ./include/net/net_shaper.h”h´K_hjû•ubeh}”(h]”Œimplicit-creation”ah ]”h"]”Œimplicit creation”ah$]”h&]”uh1hµhj�Âh²hh³Nh´Nubeh}”(h]”Œdriver-support”ah ]”h"]”Œdriver support”ah$]”h&]”uh1hµhj~Âh²hh³hÊh´KZubh¶)�”}”(hhh]”(h»)�”}”(hŒ PHY Support”h]”hŒ PHY Support”…”�”}”(hj—–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj”–h²hh³hÊh´Koubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_print_status (C function)”Œc.phy_print_status”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void phy_print_status (struct phy_device *phydev)”h]”j )�”}”(hŒ0void phy_print_status(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¾–h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjº–h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Ktubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjº–h²hh³jÌ–h´Ktubj3)�”}”(hŒphy_print_status”h]”j9)�”}”(hŒphy_print_status”h]”hŒphy_print_status”…”�”}”(hjß–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛ–ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjº–h²hh³jÌ–h´Ktubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjû–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷–ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j—Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já já–sbŒc.phy_print_status”†”asbuh1hhj÷–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷–ubj )�”}”(hj h]”hŒ*”…”�”}”(hjG—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj÷–ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjT—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjó–ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjº–h²hh³jÌ–h´Ktubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¶–h²hh³jÌ–h´Ktubah}”(h]”j±–ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÌ–h´Kthj³–h²hubjg)�”}”(hhh]”jl)�”}”(hŒ8Convenience function to print out the current phy status”h]”hŒ8Convenience function to print out the current phy status”…”�”}”(hj~—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kthj{—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj³–h²hh³jÌ–h´Ktubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j–—jŒj–—j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj —h]”hŒ Parameters”…”�”}”(hj¢—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjž—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kxhjš—ubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj¿—h]”hŒstruct phy_device *phydev”…”�”}”(hjÁ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kzhj¹—ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjØ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KuhjÕ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔ—h´Kzhj¶—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjš—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_get_rate_matching (C function)”Œc.phy_get_rate_matching”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒLint phy_get_rate_matching (struct phy_device *phydev, phy_interface_t iface)”h]”j )�”}”(hŒKint phy_get_rate_matching(struct phy_device *phydev, phy_interface_t iface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj˜h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜h²hh³j'˜h´K‡ubj3)�”}”(hŒphy_get_rate_matching”h]”j9)�”}”(hŒphy_get_rate_matching”h]”hŒphy_get_rate_matching”…”�”}”(hj:˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6˜ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj˜h²hh³j'˜h´K‡ubj¡ )�”}”(hŒ2(struct phy_device *phydev, phy_interface_t iface)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjV˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR˜ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjt˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jv˜Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j<˜sbŒc.phy_get_rate_matching”†”asbuh1hhjR˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR˜ub•j )�”}”(hj h]”hŒ*”…”�”}”(hj¢˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjR˜ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj¯˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjR˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjN˜ubj§ )�”}”(hŒphy_interface_t iface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj˘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjȘubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j͘Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�˜Œc.phy_get_rate_matching”†”asbuh1hhjĘubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjĘubj9)�”}”(hŒiface”h]”hŒiface”…”�”}”(hj÷˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjĘubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjN˜ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj˜h²hh³j'˜h´K‡ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj˜h²hh³j'˜h´K‡ubah}”(h]”j ˜ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j'˜h´K‡hj˜h²hubjg)�”}”(hhh]”jl)�”}”(hŒ'determine if rate matching is supported”h]”hŒ'determine if rate matching is supported”…”�”}”(hj!™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K‡hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj˜h²hh³j'˜h´K‡ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j9™jŒj9™j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX½**Parameters** ``struct phy_device *phydev`` The phy device to return rate matching for ``phy_interface_t iface`` The interface mode to use **Description** This determines the type of rate matching (if any) that **phy** supports using **iface**. **iface** may be ``PHY_INTERFACE_MODE_NA`` to determine if any interface supports rate matching. **Return** The type of rate matching **phy** supports for **iface**, or ``RATE_MATCH_NONE``.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjC™h]”hŒ Parameters”…”�”}”(hjE™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjA™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K‹hj=™ubjß)�”}”(hhh]”(jä)�”}”(hŒI``struct phy_device *phydev`` The phy device to return rate matching for ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjb™h]”hŒstruct phy_device *phydev”…”�”}”(hjd™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kˆhj\™ubj)�”}”(hhh]”jl)�”}”(hŒ*The phy device to return rate matching for”h]”hŒ*The phy device to return rate matching for”…”�”}”(hj{™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jw™h´Kˆhjx™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jw™h´KˆhjY™ubjä)�”}”(hŒ4``phy_interface_t iface`` The interface mode to use ”h]”(jê)�”}”(hŒ``phy_interface_t iface``”h]”jð)�”}”(hj›™h]”hŒphy_interface_t iface”…”�”}”(hj�™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K‰hj•™ubj)�”}”(hhh]”jl)�”}”(hŒThe interface mode to use”h]”hŒThe interface mode to use”…”�”}”(hj´™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°™h´K‰hj±™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°™h´K‰hjY™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj=™ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÖ™h]”hŒ Description”…”�”}”(hjØ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÔ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K‹hj=™ubjl)�”}”(hŒºThis determines the type of rate matching (if any) that **phy** supports using **iface**. **iface** may be ``PHY_INTERFACE_MODE_NA`` to determine if any interface supports rate matching.”h]”(hŒ8This determines the type of rate matching (if any) that ”…”�”}”(hjì™h²hh³Nh´Nubj›)�”}”(hŒ**phy**”h]”hŒphy”…”�”}”(hjô™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjì™ubhŒ supports using ”…”�”}”(hjì™h²hh³Nh´Nubj›)�”}”(hŒ **iface**”h]”hŒiface”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjì™ubhŒ. ”…”�”}”(hjì™h²hh³Nh´Nubj›)�”}”(hŒ **iface**”h]”hŒiface”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjì™ubhŒ may be ”…”�”}”(hjì™h²hh³Nh´Nubjð)�”}”(hŒ``PHY_INTERFACE_MODE_NA``”h]”hŒPHY_INTERFACE_MODE_NA”…”�”}”(hj*šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjì™ubhŒ6 to determine if any interface supports rate matching.”…”�”}”(hjì™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KŠhj=™ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjEšh]”hŒReturn”…”�”}”(hjGšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjCšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KŽhj=™ubjl)�”}”(hŒQThe type of rate matching **phy** supports for **iface**, or ``RATE_MATCH_NONE``.”h]”(hŒThe type of rate matching ”…”�”}”(hj[šh²hh³Nh´Nubj›)�”}”(hŒ**phy**”h]”hŒphy”…”�”}”(hjcšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[šubhŒ supports for ”…”�”}”(hj[šh²hh³Nh´Nubj›)�”}”(hŒ **iface**”h]”hŒiface”…”�”}”(hjušh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[šubhŒ, or ”…”�”}”(hj[šh²hh³Nh´Nubjð)�”}”(hŒ``RATE_MATCH_NONE``”h]”hŒRATE_MATCH_NONE”…”�”}”(hj‡šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[šubhŒ.”…”�”}”(hj[šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K�hj=™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_restart_aneg (C function)”Œc.phy_restart_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0int phy_restart_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ/int phy_restart_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÀšh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¼šh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏšh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼šh²hh³jΚh´K²ubj3)�”}”(hŒphy_restart_aneg”h]”j9)�”}”(hŒphy_restart_aneg”h]”hŒphy_restart_aneg”…”�”}”(hjášh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝšubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¼šh²hh³jΚh´K²ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjýšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùšubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jãšsbŒc.phy_restart_aneg”†”asbuh1hhjùšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjùšubj )�”}”(hj h]”hŒ*”…”�”}”(hjI›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjùšubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjV›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjõšubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¼šh²hh³jΚh´K²ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¸šh²hh³jΚh´K²ubah}”(h]”j³šah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jΚh´K²hjµšh²hubjg)�”}”(hhh]”jl)�”}”(hŒrestart auto-negotiation”h]”hŒrestart auto-negotiation”…”�”}”(hj€›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K²hj}›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjµšh²hh³jΚh´K²ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j˜›jŒj˜›j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒº**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Restart the autonegotiation on **phydev**. Returns >= 0 on success or negative errno on error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¢›h]”hŒ Parameters”…”�”}”(hj¤›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K¶hjœ›ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÁ›h]”hŒstruct phy_device *phydev”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K³hj»›ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjÚ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖ›h´K³hj×›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖ›h´K³hj¸›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjœ›ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjü›h]”hŒ Description”…”�”}”(hjþ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjú›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kµhjœ›ubjl)�”}”(hŒ_Restart the autonegotiation on **phydev**. Returns >= 0 on success or negative errno on error.”h]”(hŒRestart the autonegotiation on ”…”�”}”(hjœh²hh³Nh´Nubj›)�”}”(hŒ **phydev**”h]”hŒphydev”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœubhŒ6. Returns >= 0 on success or negative errno on error.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´K´hjœ›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_aneg_done (C function)”Œc.phy_aneg_done”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-int phy_aneg_done (struct phy_device *phydev)”h]”j )�”}”(hŒ,int phy_aneg_done(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjSœh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjOœh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOœh²hh³jaœh´KÆubj3)�”}”(hŒ phy_aneg_done”h]”j9)�”}”(hŒ phy_aneg_done”h]”hŒ phy_aneg_done”…”�”}”(hjtœh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpœubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjOœh²hh³jaœh´KÆubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒœubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒœubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj®œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°œŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jvœsbŒc.phy_aneg_done”†”asbuh1hhjŒœubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒœubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜœh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒœubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjéœh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆœubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjOœh²hh³jaœh´KÆubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjKœh²hh³jaœh´KÆubah}”(h]”jFœah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jaœh´KÆhjHœh²hubjg)�”}”(hhh]”jl)�”}”(hŒreturn auto-negotiation status”h]”hŒreturn auto-negotiation status”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KÆhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjHœh²hh³jaœh´KÆubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j+�jŒj+�j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒê**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Return the auto-negotiation status from this **phydev** Returns > 0 on success or < 0 on error. 0 means that auto-negotiation is still pending.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj5�h]”hŒ Parameters”…”�”}”(hj7�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KÊhj/�ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjT�h]”hŒstruct phy_device *phydev”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KÇhjN�ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ji�h´KÇhjj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji�h´KÇhjK�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj��h]”hŒ Description”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KÉhj/�ubjl)�”}”(hŒ�Return the auto-negotiation status from this **phydev** Returns > 0 on success or < 0 on error. 0 means that auto-negotiation is still pending.”h]”(hŒ-Return the auto-negotiation status from this ”…”�”}”(hj¥�h²hh³Nh´Nubj›)�”}”(hŒ **phydev**”h]”hŒphydev”…”�”}”(hj­�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥�ubhŒX Returns > 0 on success or < 0 on error. 0 means that auto-negotiation is still pending.”…”�”}”(hj¥�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KÉhj/�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_check_valid (C function)”Œc.phy_check_valid”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEbool phy_check_valid (int speed, int duplex, unsigned long *features)”h]”j )�”}”(hŒDbool phy_check_valid(int speed, int duplex, unsigned long *features)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjæ�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjâ�h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâ�h²hh³jó�h´Kêubj3)�”}”(hŒphy_check_valid”h]”j9)�”}”(hŒphy_check_valid”h]”hŒphy_check_valid”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjâ�h²hh³jó�h´Kêubj¡ )�”}”(hŒ0(int speed, int duplex, unsigned long *features)”h]”(j§ )�”}”(hŒ int speed”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj"žh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžubj9)�”}”(hŒspeed”h]”hŒspeed”…”�”}”(hj>žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžubj§ )�”}”(hŒ int duplex”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjWžh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjSžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hježh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSžubj9)�”}”(hŒduplex”h]”hŒduplex”…”�”}”(hjsžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžubj§ )�”}”(hŒunsigned long *features”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŒžh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjˆžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆžubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¨žh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjˆžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆžubj )�”}”(hj h]”hŒ*”…”�”}”(hjÄžh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjˆžubj9)�”}”(hŒfeatures”h]”hŒfeatures”…”�”}”(hjÑžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjâ�h²hh³jó�h´Kêubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÞ�h²hh³jó�h´Kêubah}”(h]”jÙ�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jó�h´KêhjÛ�h²hubjg)�”}”(hhh]”jl)�”}”(hŒScheck if there is a valid PHY setting which matches speed, duplex, and feature mask”h]”hŒScheck if there is a valid PHY setting which matches speed, duplex, and feature mask”…”�”}”(hjûžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kêhjøžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÛ�h²hh³jó�h´Kêubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŸjŒjŸj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÙ**Parameters** ``int speed`` speed to match ``int duplex`` duplex to match ``unsigned long *features`` A mask of the valid settings **Description** Returns true if there is a valid setting, false otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŸh]”hŒ Parameters”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KîhjŸubjß)�”}”(hhh]”(jä)�”}”(hŒ``int speed`` speed to match ”h]”(jê)�”}”(hŒ ``int speed``”h]”jð)�”}”(hj<Ÿh]”hŒ int speed”…”�”}”(hj>Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kìhj6Ÿubj)�”}”(hhh]”jl)�”}”(hŒspeed to match”h]”hŒspeed to match”…”�”}”(hjUŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQŸh´KìhjRŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQŸh´Kìhj3Ÿubjä)�”}”(hŒ``int duplex`` duplex to match ”h]”(jê)�”}”(hŒ``int duplex``”h]”jð)�”}”(hjuŸh]”hŒ int duplex”…”�”}”(hjwŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjsŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KíhjoŸubj)�”}”(hhh]”jl)�”}”(hŒduplex to match”h]”hŒduplex to match”…”�”}”(hjŽŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠŸh´Kíhj‹Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠŸh´Kíhj3Ÿubjä)�”}”(hŒ9``unsigned long *features`` A mask of the valid settings ”h]”(jê)�”}”(hŒ``unsigned long *features``”h]”jð)�”}”(hj®Ÿh]”hŒunsigned long *features”…”�”}”(hj°Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Kîhj¨Ÿubj)�”}”(hhh]”jl)�”}”(hŒA mask of the valid settings”h]”hŒA mask of the valid settings”…”�”}”(hjÇŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jßh´KîhjÄŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßh´Kîhj3Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŸubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjéŸh]”hŒ Description”…”�”}”(hjëŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjçŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KðhjŸubjl)�”}”(hŒ:Returns true if there is a valid setting, false otherwise.”h]”hŒ:Returns true if there is a valid setting, false otherwise.”…”�”}”(hjÿŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´KðhjŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_mii_ioctl (C function)”Œc.phy_mii_ioctl”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒIint phy_mii_ioctl (struct phy_device *phydev, struct ifreq *ifr, int cmd)”h]”j )�”}”(hŒHint phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj* h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj* h²hh³j< h´M-ubj3)�”}”(hŒ phy_mii_ioctl”h]”j9)�”}”(hŒ phy_mii_ioctl”h]”hŒ phy_mii_ioctl”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj* h²hh³j< h´M-ubj¡ )�”}”(hŒ7(struct phy_device *phydev, struct ifreq *ifr, int cmd)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj† ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jQ sbŒc.phy_mii_ioctl”†”asbuh1hhjg ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg ubj )�”}”(hj h]”hŒ*”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjg ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjg ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjc ubj§ )�”}”(hŒstruct ifreq *ifr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ ubh)�”}”(hhh]”j9)�”}”(hŒifreq”h]”hŒifreq”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jý Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¥ Œc.phy_mii_ioctl”†”asbuh1hhjÙ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj'¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÙ ubj9)�”}”(hŒifr”h]”hŒifr”…”�”}”(hj4¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjc ubj§ )�”}”(hŒint cmd”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjM¡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjI¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjI¡ubj9)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hji¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjc ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj* h²hh³j< h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj& h²hh³j< h´M-ubah}”(h]”j! ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j< h´M-hj# h²hubjg)�”}”(hhh]”jl)�”}”(hŒgeneric PHY MII ioctl interface”h]”hŒgeneric PHY MII ioctl interface”…”�”}”(hj“¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M-hj�¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj# h²hh³j< h´M-ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j«¡jŒj«¡j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX\**Parameters** ``struct phy_device *phydev`` the phy_device struct ``struct ifreq *ifr`` :c:type:`struct ifreq ` for socket ioctl's ``int cmd`` ioctl cmd to execute **Description** Note that this function is currently incompatible with the PHYCONTROL layer. It changes registers without regard to current state. Use at own risk.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjµ¡h]”hŒ Parameters”…”�”}”(hj·¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M1hj¯¡ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÔ¡h]”hŒstruct phy_device *phydev”…”�”}”(hjÖ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M.hjΡubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjí¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jé¡h´M.hjê¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjΡubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jé¡h´M.hjË¡ubjä)�”}”(hŒH``struct ifreq *ifr`` :c:type:`struct ifreq ` for socket ioctl's ”h]”(jê)�”}”(hŒ``struct ifreq *ifr``”h]”jð)�”}”(hj ¢h]”hŒstruct ifreq *ifr”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M/hj¢ubj)�”}”(hhh]”jl)�”}”(hŒ1:c:type:`struct ifreq ` for socket ioctl's”h]”(h)�”}”(hŒ:c:type:`struct ifreq `”h]”jð)�”}”(hj,¢h]”hŒ struct ifreq”…”�”}”(hj.¢h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj*¢ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œifreq”uh1hh³j"¢h´M/hj&¢ubhŒ for socket ioctl’s”…”�”}”(hj&¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"¢h´M/hj#¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j"¢h´M/hjË¡ubjä)�”}”(hŒ!``int cmd`` ioctl cmd to execute ”h]”(jê)�”}”(hŒ ``int cmd``”h]”jð)�”}”(hje¢h]”hŒint cmd”…”�”}”(hjg¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjc¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M0hj_¢ubj)�”}”(hhh]”jl)�”}”(hŒioctl cmd to execute”h]”hŒioctl cmd to execute”…”�”}”(hj~¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jz¢h´M0hj{¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jz¢h´M0hjË¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯¡ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj ¢h]”hŒ Description”…”�”}”(hj¢¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjž¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M2hj¯¡ubjl)�”}”(hŒ•Note that this function is currently incompatible with the PHYCONTROL layer. It changes registers without regard to current state. Use at own risk.”h]”hŒ•Note that this function is currently incompatible with the PHYCONTROL layer. It changes registers without regard to current state. Use at own risk.”…”�”}”(hj¶¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M1hj¯¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_do_ioctl (C function)”Œc.phy_do_ioctl”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEint phy_do_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd)”h]”j )�”}”(hŒDint phy_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjå¢h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjá¢h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjá¢h²hh³jó¢h´M²ubj3)�”}”(hŒ phy_do_ioctl”h]”j9)�”}”(hŒ phy_do_ioctl”h]”hŒ phy_do_ioctl”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjá¢h²hh³jó¢h´M²ubj¡ )�”}”(hŒ4(struct net_device *dev, struct ifreq *ifr, int cmd)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj"£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj@£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jB£Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j£sbŒc.phy_do_ioctl”†”asbuh1hhj£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£ubj )�”}”(hj h]”hŒ*”…”�”}”(hjn£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj£ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj{£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£ubj§ )�”}”(hŒstruct ifreq *ifr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj”£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�£ubh)�”}”(hhh]”j9)�”}”(hŒifreq”h]”hŒifreq”…”�”}”(hj²£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j´£Œmodname”NŒ classname”Njå jè )�”}”jë ]”j\£Œc.phy_do_ioctl”†”asbuh1hhj�£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjУh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�£ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÞ£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�£ubj9)�”}”(hŒifr”h]”hŒifr”…”�”}”(hjë£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£ubj§ )�”}”(hŒint cmd”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤ubj9)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjá¢h²hh³jó¢h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÝ¢h²hh³jó¢h´M²ubah}”(h]”jØ¢ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jó¢h´M²hjÚ¢h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$generic ndo_eth_ioctl implementation”h]”hŒ$generic ndo_eth_ioctl implementation”…”�”}”(hjJ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M²hjG¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÚ¢h²hh³jó¢h´M²ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jb¤jŒjb¤j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ±**Parameters** ``struct net_device *dev`` the net_device struct ``struct ifreq *ifr`` :c:type:`struct ifreq ` for socket ioctl's ``int cmd`` ioctl cmd to execute”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjl¤h]”hŒ Parameters”…”�”}”(hjn¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M¶hjf¤ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net_device *dev`` the net_device struct ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj‹¤h]”hŒstruct net_device *dev”…”�”}”(hj�¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M³hj…¤ubj)�”}”(hhh]”jl)�”}”(hŒthe net_device struct”h]”hŒthe net_device struct”…”�”}”(hj¤¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ¤h´M³hj¡¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ¤h´M³hj‚¤ubjä)�”}”(hŒH``struct ifreq *ifr`` :c:type:`struct ifreq ` for socket ioctl's ”h]”(jê)�”}”(hŒ``struct ifreq *ifr``”h]”jð)�”}”(hjĤh]”hŒstruct ifreq *ifr”…”�”}”(hjƤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M´hj¾¤ubj)�”}”(hhh]”jl)�”}”(hŒ1:c:type:`struct ifreq ` for socket ioctl's”h]”(h)�”}”(hŒ:c:type:`struct ifreq `”h]”jð)�”}”(hjã¤h]”hŒ struct ifreq”…”�”}”(hjå¤h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjá¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œifreq”uh1hh³jÙ¤h´M´hjݤubhŒ for socket ioctl’s”…”�”}”(hjݤh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÙ¤h´M´hjÚ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙ¤h´M´hj‚¤ubjä)�”}”(hŒ ``int cmd`` ioctl cmd to execute”h]”(jê)�”}”(hŒ ``int cmd``”h]”jð)�”}”(hj¥h]”hŒint cmd”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M¶hj¥ubj)�”}”(hhh]”jl)�”}”(hŒioctl cmd to execute”h]”hŒioctl cmd to execute”…”�”}”(hj5¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mµhj2¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1¥h´M¶hj‚¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjf¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_do_ioctl_running (C function)”Œc.phy_do_ioctl_running”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint phy_do_ioctl_running (struct net_device *dev, struct ifreq *ifr, int cmd)”h]”j )�”}”(hŒLint phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjv¥h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjr¥h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjr¥h²hh³j„¥h´MÁubj3)�”}”(hŒphy_do_ioctl_running”h]”j9)�”}”(hŒphy_do_ioctl_running”h]”hŒphy_do_ioctl_running”…”�”}”(hj—¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“¥ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjr¥h²hh³j„¥h´MÁubj¡ )�”}”(hŒ4(struct net_device *dev, struct ifreq *ifr, int cmd)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj³¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯¥ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÑ¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎ¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÓ¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j™¥sbŒc.phy_do_ioctl_running”†”asbuh1hhj¯¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯¥ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÿ¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¯¥ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj«¥ubj§ )�”}”(hŒstruct ifreq *ifr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj%¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!¦ubh)�”}”(hhh]”j9)�”}”(hŒifreq”h]”hŒifreq”…”�”}”(hjC¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jE¦Œmodname”NŒ classname”Njå jè )�”}”jë ]”jí¥Œc.phy_do_ioctl_running”†”asbuh1hhj!¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hja¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hjo¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!¦ubj9)�”}”(hŒifr”h]”hŒifr”…”�”}”(hj|¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj«¥ubj§ )�”}”(hŒint cmd”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj•¦h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‘¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘¦ubj9)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj±¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj«¥ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjr¥h²hh³j„¥h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjn¥h²hh³j„¥h´MÁubah}”(h]”ji¥ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j„¥h´MÁhjk¥h²hubjg)�”}”(hhh]”jl)�”}”(hŒ3generic ndo_eth_ioctl implementation but test first”h]”hŒ3generic ndo_eth_ioctl implementation but test first”…”�”}”(hjÛ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÁhjئh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjk¥h²hh³j„¥h´MÁubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jó¦jŒjó¦j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` the net_device struct ``struct ifreq *ifr`` :c:type:`struct ifreq ` for socket ioctl's ``int cmd`` ioctl cmd to execute **Description** Same as phy_do_ioctl, but ensures that net_device is running before handling the ioctl.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjý¦h]”hŒ Parameters”…”�”}”(hjÿ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjû¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÅhj÷¦ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct net_device *dev`` the net_device struct ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj§h]”hŒstruct net_device *dev”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÃhj§ubj)�”}”(hhh]”jl)�”}”(hŒthe net_device struct”h]”hŒthe net_device struct”…”�”}”(hj5§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1§h´MÃhj2§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1§h´MÃhj§ubjä)�”}”(hŒH``struct ifreq *ifr`` :c:type:`struct ifreq ` for socket ioctl's ”h]”(jê)�”}”(hŒ``struct ifreq *ifr``”h]”jð)�”}”(hjU§h]”hŒstruct ifreq *ifr”…”�”}”(hjW§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjS§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÄhjO§ubj)�”}”(hhh]”jl)�”}”(hŒ1:c:type:`struct ifreq ` for socket ioctl's”h]”(h)�”}”(hŒ:c:type:`struct ifreq `”h]”jð)�”}”(hjt§h]”hŒ struct ifreq”…”�”}”(hjv§h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjr§ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œifreq”uh1hh³jj§h´MÄhjn§ubhŒ for socket ioctl’s”…”�”}”(hjn§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jj§h´MÄhjk§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jj§h´MÄhj§ubjä)�”}”(hŒ!``int cmd`` ioctl cmd to execute ”h]”(jê)�”}”(hŒ ``int cmd``”h]”jð)�”}”(hj­§h]”hŒint cmd”…”�”}”(hj¯§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÅhj§§ubj)�”}”(hhh]”jl)�”}”(hŒioctl cmd to execute”h]”hŒioctl cmd to execute”…”�”}”(hjƧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§h´MÅhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§h´MÅhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷¦ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjè§h]”hŒ Description”…”�”}”(hjê§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÇhj÷¦ubjl)�”}”(hŒWSame as phy_do_ioctl, but ensures that net_device is running before handling the ioctl.”h]”hŒWSame as phy_do_ioctl, but ensures that net_device is running before handling the ioctl.”…”�”}”(hjþ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÆhj÷¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_trigger_machine (C function)”Œc.phy_trigger_machine”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4void phy_trigger_machine (struct phy_device *phydev)”h]”j )�”}”(hŒ3void phy_trigger_machine(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-¨h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)¨h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)¨h²hh³j;¨h´M ubj3)�”}”(hŒphy_trigger_machine”h]”j9)�”}”(hŒphy_trigger_machine”h]”hŒphy_trigger_machine”…”�”}”(hjN¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ¨ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj)¨h²hh³j;¨h´M ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjj¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjf¨ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjˆ¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jЍŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jP¨sbŒc.phy_trigger_machine”†”asbuh1hhjf¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjf¨ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¶¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjf¨ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjf¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjb¨ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj)¨h²hh³j;¨h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj%¨h²hh³j;¨h´M ubah}”(h]”j ¨ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j;¨h´M hj"¨h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Trigger the state machine to run now”h]”hŒ$Trigger the state machine to run now”…”�”}”(hjí¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M hjê¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj"¨h²hh³j;¨h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©jŒj©j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj©h]”hŒ Parameters”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj ©ubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj.©h]”hŒstruct phy_device *phydev”…”�”}”(hj0©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj(©ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjG©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M hjD©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jC©h´Mhj%©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phy_ethtool_get_strings (C function)”Œc.phy_ethtool_get_strings”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAint phy_ethtool_get_strings (struct phy_device *phydev, u8 *data)”h]”j )�”}”(hŒ@int phy_ethtool_get_strings(struct phy_device *phydev, u8 *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjˆ©h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„©h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„©h²hh³j–©h´M ubj3)�”}”(hŒphy_ethtool_get_strings”h]”j9)�”}”(hŒphy_ethtool_get_strings”h]”hŒphy_ethtool_get_strings”…”�”}”(hj©©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥©ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj„©h²hh³j–©h´M ubj¡ )�”}”(hŒ%(struct phy_device *phydev, u8 *data)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÅ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁ©ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjã©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j婌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j«©sbŒc.phy_ethtool_get_strings”†”asbuh1hhjÁ©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁ©ubj )�”}”(hj h]”hŒ*”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÁ©ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj½©ubj§ )�”}”(hŒu8 *data”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj:ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j<ªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÿ©Œc.phy_ethtool_get_strings”†”asbuh1hhj3ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ªubj )�”}”(hj h]”hŒ*”…”�”}”(hjfªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj3ªubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjsªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj½©ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj„©h²hh³j–©h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj€©h²hh³j–©h´M ubah}”(h]”j{©ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j–©h´M hj}©h²hubjg)�”}”(hhh]”jl)�”}”(hŒGet the statistic counter names”h]”hŒGet the statistic counter names”…”�”}”(hj�ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M hjšªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj}©h²hh³j–©h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jµªjŒjµªj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒn**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u8 *data`` Where to put the strings”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¿ªh]”hŒ Parameters”…”�”}”(hjÁªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M$hj¹ªubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÞªh]”hŒstruct phy_device *phydev”…”�”}”(hjàªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjܪubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M"hjتubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj÷ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóªh´M"hjôªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjتubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jóªh´M"hjÕªubjä)�”}”(hŒ%``u8 *data`` Where to put the strings”h]”(jê)�”}”(hŒ ``u8 *data``”h]”jð)�”}”(hj«h]”hŒu8 *data”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M$hj«ubj)�”}”(hhh]”jl)�”}”(hŒWhere to put the strings”h]”hŒWhere to put the strings”…”�”}”(hj0«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M#hj-«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,«h´M$hjÕªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phy_ethtool_get_sset_count (C function)”Œc.phy_ethtool_get_sset_count”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:int phy_ethtool_get_sset_count (struct phy_device *phydev)”h]”j )�”}”(hŒ9int phy_ethtool_get_sset_count(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjq«h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjm«h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjm«h²hh³j«h´M3ubj3)�”}”(hŒphy_ethtool_get_sset_count”h]”j9)�”}”(hŒphy_ethtool_get_sset_count”h]”hŒphy_ethtool_get_sset_count”…”�”}”(hj’«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽ«ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjm«h²hh³j«h´M3ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj®«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjª«ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÌ«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉ«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jΫŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j”«sbŒc.phy_ethtool_get_sset_count”†”asbuh1hhjª«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì«h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjª«ubj )�”}”(hj h]”hŒ*”…”�”}”(hjú«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjª«ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjª«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¦«ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjm«h²hh³j«h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhji«h²hh³j«h´M3ubah}”(h]”jd«ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j«h´M3hjf«h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Get the number of statistic counters”h]”hŒ$Get the number of statistic counters”…”�”}”(hj1¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M3hj.¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjf«h²hh³j«h´M3ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jI¬jŒjI¬j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjS¬h]”hŒ Parameters”…”�”}”(hjU¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjQ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M7hjM¬ubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjr¬h]”hŒstruct phy_device *phydev”…”�”}”(hjt¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjp¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M9hjl¬ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj‹¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M5hjˆ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡¬h´M9hji¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjM¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_ethtool_get_stats (C function)”Œc.phy_ethtool_get_stats”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ]int phy_ethtool_get_stats (struct phy_device *phydev, struct ethtool_stats *stats, u64 *data)”h]”j )�”}”(hŒ\int phy_ethtool_get_stats(struct phy_device *phydev, struct ethtool_stats *stats, u64 *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj̬h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjȬh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjȬh²hh³jÚ¬h´MMubj3)�”}”(hŒphy_ethtool_get_stats”h]”j9)�”}”(hŒphy_ethtool_get_stats”h]”hŒphy_ethtool_get_stats”…”�”}”(hjí¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé¬ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjȬh²hh³jÚ¬h´MMubj¡ )�”}”(hŒC(struct phy_device *phydev, struct ethtool_stats *stats, u64 *data)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj'­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)­Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jï¬sbŒc.phy_ethtool_get_stats”†”asbuh1hhj­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­ubj )�”}”(hj h]”hŒ*”…”�”}”(hjU­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj­ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjb­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj­ubj§ )�”}”(hŒstruct ethtool_stats *stats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj{­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjw­ubh)�”}”(hhh]”j9)�”}”(hŒ ethtool_stats”h]”hŒ ethtool_stats”…”�”}”(hj™­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›­Œmodname”NŒ classname”Njå jè )�”}”jë ]”jC­Œc.phy_ethtool_get_stats”†”asbuh1hhjw­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjw­ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÅ­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjw­ubj9)�”}”(hŒstats”h]”hŒstats”…”�”}”(hjÒ­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjw­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj­ubj§ )�”}”(hŒ u64 *data”h]”(h)�”}”(hhh]”j9)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjî­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjë­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jð­Œmodname”NŒ classname”Njå jè )�”}”jë ]”jC­Œc.phy_ethtool_get_stats”†”asbuh1hhjç­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç­ubj )�”}”(hj h]”hŒ*”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjç­ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj'®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj­ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjȬh²hh³jÚ¬h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjĬh²hh³jÚ¬h´MMubah}”(h]”j¿¬ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÚ¬h´MMhjÁ¬h²hubjg)�”}”(hhh]”jl)�”}”(hŒGet the statistic counters”h]”hŒGet the statistic counters”…”�”}”(hjQ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MMhjN®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÁ¬h²hh³jÚ¬h´MMubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹ji®jŒji®j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒª**Parameters** ``struct phy_device *phydev`` the phy_device struct ``struct ethtool_stats *stats`` What counters to get ``u64 *data`` Where to store the counters”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjs®h]”hŒ Parameters”…”�”}”(hju®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MQhjm®ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj’®h]”hŒstruct phy_device *phydev”…”�”}”(hj”®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MOhjŒ®ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj«®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§®h´MOhj¨®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§®h´MOhj‰®ubjä)�”}”(hŒ5``struct ethtool_stats *stats`` What counters to get ”h]”(jê)�”}”(hŒ``struct ethtool_stats *stats``”h]”jð)�”}”(hjË®h]”hŒstruct ethtool_stats *stats”…”�”}”(hjÍ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÉ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MPhjÅ®ubj)�”}”(hhh]”jl)�”}”(hŒWhat counters to get”h]”hŒWhat counters to get”…”�”}”(hjä®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jà®h´MPhjá®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jà®h´MPhj‰®ubjä)�”}”(hŒ)``u64 *data`` Where to store the counters”h]”(jê)�”}”(hŒ ``u64 *data``”h]”jð)�”}”(hj¯h]”hŒ u64 *data”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MRhjþ®ubj)�”}”(hhh]”jl)�”}”(hŒWhere to store the counters”h]”hŒWhere to store the counters”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MQhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯h´MRhj‰®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjm®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_start_cable_test (C function)”Œc.phy_start_cable_test”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒTint phy_start_cable_test (struct phy_device *phydev, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒSint phy_start_cable_test(struct phy_device *phydev, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj^¯h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjZ¯h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZ¯h²hh³jl¯h´MMubj3)�”}”(hŒphy_start_cable_test”h]”j9)�”}”(hŒphy_start_cable_test”h]”hŒphy_start_cable_test”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{¯ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjZ¯h²hh³jl¯h´MMubj¡ )�”}”(hŒ;(struct phy_device *phydev, struct netlink_ext_ack *extack)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj›¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—¯ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj¹¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8•hj¶¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»¯Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�¯sbŒc.phy_start_cable_test”†”asbuh1hhj—¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—¯ubj )�”}”(hj h]”hŒ*”…”�”}”(hjç¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—¯ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjô¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“¯ubj§ )�”}”(hŒstruct netlink_ext_ack *extack”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj °ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj °ubh)�”}”(hhh]”j9)�”}”(hŒnetlink_ext_ack”h]”hŒnetlink_ext_ack”…”�”}”(hj+°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j-°Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÕ¯Œc.phy_start_cable_test”†”asbuh1hhj °ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj °ubj )�”}”(hj h]”hŒ*”…”�”}”(hjW°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj °ubj9)�”}”(hŒextack”h]”hŒextack”…”�”}”(hjd°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj °ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“¯ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjZ¯h²hh³jl¯h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjV¯h²hh³jl¯h´MMubah}”(h]”jQ¯ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jl¯h´MMhjS¯h²hubjg)�”}”(hhh]”jl)�”}”(hŒStart a cable test”h]”hŒStart a cable test”…”�”}”(hjްh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MMhj‹°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjS¯h²hh³jl¯h´MMubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¦°jŒj¦°j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ–**Parameters** ``struct phy_device *phydev`` the phy_device struct ``struct netlink_ext_ack *extack`` extack for reporting useful error messages”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj°°h]”hŒ Parameters”…”�”}”(hj²°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj®°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MQhjª°ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjϰh]”hŒstruct phy_device *phydev”…”�”}”(hjѰh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjͰubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MOhjɰubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjè°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jä°h´MOhjå°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjɰubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jä°h´MOhjưubjä)�”}”(hŒM``struct netlink_ext_ack *extack`` extack for reporting useful error messages”h]”(jê)�”}”(hŒ"``struct netlink_ext_ack *extack``”h]”jð)�”}”(hj±h]”hŒstruct netlink_ext_ack *extack”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MQhj±ubj)�”}”(hhh]”jl)�”}”(hŒ*extack for reporting useful error messages”h]”hŒ*extack for reporting useful error messages”…”�”}”(hj!±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MPhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±h´MQhjưubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjª°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phy_start_cable_test_tdr (C function)”Œc.phy_start_cable_test_tdr”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ}int phy_start_cable_test_tdr (struct phy_device *phydev, struct netlink_ext_ack *extack, const struct phy_tdr_config *config)”h]”j )�”}”(hŒ|int phy_start_cable_test_tdr(struct phy_device *phydev, struct netlink_ext_ack *extack, const struct phy_tdr_config *config)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjb±h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj^±h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^±h²hh³jp±h´M’ubj3)�”}”(hŒphy_start_cable_test_tdr”h]”j9)�”}”(hŒphy_start_cable_test_tdr”h]”hŒphy_start_cable_test_tdr”…”�”}”(hjƒ±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj^±h²hh³jp±h´M’ubj¡ )�”}”(hŒ`(struct phy_device *phydev, struct netlink_ext_ack *extack, const struct phy_tdr_config *config)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŸ±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›±ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj½±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjº±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¿±Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j…±sbŒc.phy_start_cable_test_tdr”†”asbuh1hhj›±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjݱh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›±ubj )�”}”(hj h]”hŒ*”…”�”}”(hjë±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj›±ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjø±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj—±ubj§ )�”}”(hŒstruct netlink_ext_ack *extack”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ²ubh)�”}”(hhh]”j9)�”}”(hŒnetlink_ext_ack”h]”hŒnetlink_ext_ack”…”�”}”(hj/²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1²Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÙ±Œc.phy_start_cable_test_tdr”†”asbuh1hhj ²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ²ubj )�”}”(hj h]”hŒ*”…”�”}”(hj[²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ²ubj9)�”}”(hŒextack”h]”hŒextack”…”�”}”(hjh²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj—±ubj§ )�”}”(hŒ#const struct phy_tdr_config *config”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj޲h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}²ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjœ²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}²ubh)�”}”(hhh]”j9)�”}”(hŒphy_tdr_config”h]”hŒphy_tdr_config”…”�”}”(hjº²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¼²Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÙ±Œc.phy_start_cable_test_tdr”†”asbuh1hhj}²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjزh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}²ubj )�”}”(hj h]”hŒ*”…”�”}”(hjæ²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}²ubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjó²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj—±ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj^±h²hh³jp±h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjZ±h²hh³jp±h´M’ubah}”(h]”jU±ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jp±h´M’hjW±h²hubjg)�”}”(hhh]”jl)�”}”(hŒStart a raw TDR cable test”h]”hŒStart a raw TDR cable test”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M’hj³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjW±h²hh³jp±h´M’ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j5³jŒj5³j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒâ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``struct netlink_ext_ack *extack`` extack for reporting useful error messages ``const struct phy_tdr_config *config`` Configuration of the test to run”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj?³h]”hŒ Parameters”…”�”}”(hjA³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj=³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M–hj9³ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj^³h]”hŒstruct phy_device *phydev”…”�”}”(hj`³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M”hjX³ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjw³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³js³h´M”hjt³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³js³h´M”hjU³ubjä)�”}”(hŒN``struct netlink_ext_ack *extack`` extack for reporting useful error messages ”h]”(jê)�”}”(hŒ"``struct netlink_ext_ack *extack``”h]”jð)�”}”(hj—³h]”hŒstruct netlink_ext_ack *extack”…”�”}”(hj™³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M•hj‘³ubj)�”}”(hhh]”jl)�”}”(hŒ*extack for reporting useful error messages”h]”hŒ*extack for reporting useful error messages”…”�”}”(hj°³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬³h´M•hj­³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬³h´M•hjU³ubjä)�”}”(hŒH``const struct phy_tdr_config *config`` Configuration of the test to run”h]”(jê)�”}”(hŒ'``const struct phy_tdr_config *config``”h]”jð)�”}”(hjгh]”hŒ#const struct phy_tdr_config *config”…”�”}”(hjÒ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjγubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M—hjʳubj)�”}”(hhh]”jl)�”}”(hŒ Configuration of the test to run”h]”hŒ Configuration of the test to run”…”�”}”(hjé³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M–hjæ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjʳubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jå³h´M—hjU³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj9³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_inband_caps (C function)”Œc.phy_inband_caps”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSunsigned int phy_inband_caps (struct phy_device *phydev, phy_interface_t interface)”h]”j )�”}”(hŒRunsigned int phy_inband_caps(struct phy_device *phydev, phy_interface_t interface)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj*´h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj&´h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&´h²hh³j8´h´MubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjG´h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj&´h²hh³j8´h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&´h²hh³j8´h´Mubj3)�”}”(hŒphy_inband_caps”h]”j9)�”}”(hŒphy_inband_caps”h]”hŒphy_inband_caps”…”�”}”(hjg´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc´ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj&´h²hh³j8´h´Mubj¡ )�”}”(hŒ6(struct phy_device *phydev, phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjƒ´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj¡´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j£´Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já ji´sbŒc.phy_inband_caps”†”asbuh1hhj´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÏ´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj´ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÜ´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{´ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjø´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jú´Œmodname”NŒ classname”Njå jè )�”}”jë ]”j½´Œc.phy_inband_caps”†”asbuh1hhjñ´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñ´ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hj$µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{´ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj&´h²hh³j8´h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj"´h²hh³j8´h´Mubah}”(h]”j´ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j8´h´Mhj´h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2query which in-band signalling modes are supported”h]”hŒ2query which in-band signalling modes are supported”…”�”}”(hjNµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MhjKµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj´h²hh³j8´h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jfµjŒjfµj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``phy_interface_t interface`` the interface mode for the PHY **Description** Returns zero if it is unknown what in-band signalling is supported by the PHY (e.g. because the PHY driver doesn't implement the method.) Otherwise, returns a bit mask of the LINK_INBAND_* values from :c:type:`enum link_inband_signalling ` to describe which inband modes are supported by the PHY for this interface mode.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjpµh]”hŒ Parameters”…”�”}”(hjrµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjnµubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhjjµubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj�µh]”hŒstruct phy_device *phydev”…”�”}”(hj‘µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�µubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj‰µubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hj¨µh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hj²µh]”hŒstruct phy_device”…”�”}”(hj´µh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj°µubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³j¤µh´Mhj¨µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤µh´Mhj¥µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤µh´Mhj†µubjä)�”}”(hŒ=``phy_interface_t interface`` the interface mode for the PHY ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjçµh]”hŒphy_interface_t interface”…”�”}”(hjéµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjåµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhjáµubj)�”}”(hhh]”jl)�”}”(hŒthe interface mode for the PHY”h]”hŒthe interface mode for the PHY”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüµh´Mhjýµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjáµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jüµh´Mhj†µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjjµubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj"¶h]”hŒ Description”…”�”}”(hj$¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhjjµubjl)�”}”(hXXReturns zero if it is unknown what in-band signalling is supported by the PHY (e.g. because the PHY driver doesn't implement the method.) Otherwise, returns a bit mask of the LINK_INBAND_* values from :c:type:`enum link_inband_signalling ` to describe which inband modes are supported by the PHY for this interface mode.”h]”(hŒËReturns zero if it is unknown what in-band signalling is supported by the PHY (e.g. because the PHY driver doesn’t implement the method.) Otherwise, returns a bit mask of the LINK_INBAND_* values from ”…”�”}”(hj8¶h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`enum link_inband_signalling `”h]”jð)�”}”(hjB¶h]”hŒenum link_inband_signalling”…”�”}”(hjD¶h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj@¶ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œlink_inband_signalling”uh1hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj8¶ubhŒQ to describe which inband modes are supported by the PHY for this interface mode.”…”�”}”(hj8¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j_¶h´Mhjjµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_config_inband (C function)”Œc.phy_config_inband”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEint phy_config_inband (struct phy_device *phydev, unsigned int modes)”h]”j )�”}”(hŒDint phy_config_inband(struct phy_device *phydev, unsigned int modes)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjжh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj†¶h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†¶h²hh³j˜¶h´M'ubj3)�”}”(hŒphy_config_inband”h]”j9)�”}”(hŒphy_config_inband”h]”hŒphy_config_inband”…”�”}”(hj«¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§¶ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj†¶h²hh³j˜¶h´M'ubj¡ )�”}”(hŒ/(struct phy_device *phydev, unsigned int modes)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjǶh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjå¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jç¶Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j­¶sbŒc.phy_config_inband”†”asbuh1hhjöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöubj )�”}”(hj h]”hŒ*”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjöubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿¶ubj§ )�”}”(hŒunsigned int modes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj9·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5·ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjU·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5·ubj9)�”}”(hŒmodes”h]”hŒmodes”…”�”}”(hjq·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿¶ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj†¶h²hh³j˜¶h´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‚¶h²hh³j˜¶h´M'ubah}”(h]”j}¶ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j˜¶h´M'hj¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒ&configure the desired PHY in-band mode”h]”hŒ&configure the desired PHY in-band mode”…”�”}”(hj›·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M'hj˜·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶h²hh³j˜¶h´M'ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j³·jŒj³·j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX"**Parameters** ``struct phy_device *phydev`` the phy_device struct ``unsigned int modes`` in-band modes to configure **Description** disables, enables or enables-with-bypass in-band signalling between the PHY and host system. **Return** zero on success, or negative errno value.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj½·h]”hŒ Parameters”…”�”}”(hj¿·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj»·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M+hj··ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÜ·h]”hŒstruct phy_device *phydev”…”�”}”(hjÞ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M(hjÖ·ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjõ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñ·h´M(hjò·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñ·h´M(hjÓ·ubjä)�”}”(hŒ2``unsigned int modes`` in-band modes to configure ”h]”(jê)�”}”(hŒ``unsigned int modes``”h]”jð)�”}”(hj¸h]”hŒunsigned int modes”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M)hj¸ubj)�”}”(hhh]”jl)�”}”(hŒin-band modes to configure”h]”hŒin-band modes to configure”…”�”}”(hj.¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*¸h´M)hj+¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*¸h´M)hjÓ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj··ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjP¸h]”hŒ Description”…”�”}”(hjR¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjN¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M+hj··ubjß)�”}”(hhh]”jä)�”}”(hŒ]disables, enables or enables-with-bypass in-band signalling between the PHY and host system. ”h]”(jê)�”}”(hŒ;disables, enables or enables-with-bypass in-band signalling”h]”hŒ;disables, enables or enables-with-bypass in-band signalling”…”�”}”(hjm¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M,hji¸ubj)�”}”(hhh]”jl)�”}”(hŒ between the PHY and host system.”h]”hŒ between the PHY and host system.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{¸h´M,hj|¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{¸h´M,hjf¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj··ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj¡¸h]”hŒReturn”…”�”}”(hj£¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M.hj··ubjl)�”}”(hŒ)zero on success, or negative errno value.”h]”hŒ)zero on success, or negative errno value.”…”�”}”(hj·¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M.hj··ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ_phy_start_aneg (C function)”Œc._phy_start_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/int _phy_start_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ.int _phy_start_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjæ¸h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjâ¸h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâ¸h²hh³jô¸h´MCubj3)�”}”(hŒ_phy_start_aneg”h]”j9)�”}”(hŒ_phy_start_aneg”h]”hŒ_phy_start_aneg”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjâ¸h²hh³jô¸h´MCubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj#¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjA¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jC¹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j ¹sbŒc._phy_start_aneg”†”asbuh1hhj¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hja¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjo¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¹ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj|¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¹ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjâ¸h²hh³jô¸h´MCubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÞ¸h²hh³jô¸h´MCubah}”(h]”jÙ¸ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jô¸h´MChjÛ¸h²hubjg)�”}”(hhh]”jl)�”}”(hŒ*start auto-negotiation for this PHY device”h]”hŒ*start auto-negotiation for this PHY device”…”�”}”(hj¦¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MChj£¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÛ¸h²hh³jô¸h´MCubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¾¹jŒj¾¹j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX>**Parameters** ``struct phy_device *phydev`` the phy_device struct **Description** Sanitizes the settings (if we're not autonegotiating them), and then calls the driver's config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjȹh]”hŒ Parameters”…”�”}”(hjʹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƹubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MGhj¹ubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjç¹h]”hŒstruct phy_device *phydev”…”�”}”(hjé¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjå¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MDhjá¹ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jü¹h´MDhjý¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jü¹h´MDhjÞ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj"ºh]”hŒ Description”…”�”}”(hj$ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MFhj¹ubjß)�”}”(hhh]”jä)�”}”(hŒàSanitizes the settings (if we're not autonegotiating them), and then calls the driver's config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”h]”(jê)�”}”(hŒ4Sanitizes the settings (if we're not autonegotiating”h]”hŒ6Sanitizes the settings (if we’re not autonegotiating”…”�”}”(hj?ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MHhj;ºubj)�”}”(hhh]”jl)�”}”(hŒ«them), and then calls the driver's config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”h]”hŒ­them), and then calls the driver’s config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”…”�”}”(hjQºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MGhjNºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jMºh´MHhj8ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_start_aneg (C function)”Œc.phy_start_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.int phy_start_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ-int phy_start_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj’ºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽºh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡ºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽºh²hh³j ºh´Mcubj3)�”}”(hŒphy_start_aneg”h]”j9)�”}”(hŒphy_start_aneg”h]”hŒphy_start_aneg”…”�”}”(hj³ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯ºubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŽºh²hh³j ºh´Mcubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjϺh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˺ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܺh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˺ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjíºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jﺌmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jµºsbŒc.phy_start_aneg”†”asbuh1hhj˺ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj »h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˺ubj )�”}”(hj h]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj˺ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj(»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˺ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjǺubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŽºh²hh³j ºh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŠºh²hh³j ºh´Mcubah}”(h]”j…ºah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j ºh´Mchj‡ºh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*start auto-negotiation for this PHY device”h]”hŒ*start auto-negotiation for this PHY device”…”�”}”(hjR»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MchjO»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡ºh²hh³j ºh´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jj»jŒjj»j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX>**Parameters** ``struct phy_device *phydev`` the phy_device struct **Description** Sanitizes the settings (if we're not autonegotiating them), and then calls the driver's config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjt»h]”hŒ Parameters”…”�”}”(hjv»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjr»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mghjn»ubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj“»h]”hŒstruct phy_device *phydev”…”�”}”(hj•»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mdhj�»ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj¬»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨»h´Mdhj©»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨»h´MdhjŠ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjn»ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjλh]”hŒ Description”…”�”}”(hjлh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mfhjn»ubjß)�”}”(hhh]”jä)�”}”(hŒàSanitizes the settings (if we're not autonegotiating them), and then calls the driver's config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”h]”(jê)�”}”(hŒ4Sanitizes the settings (if we're not autonegotiating”h]”hŒ6Sanitizes the settings (if we’re not autonegotiating”…”�”}”(hjë»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhhjç»ubj)�”}”(hhh]”jl)�”}”(hŒ«them), and then calls the driver's config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”h]”hŒ­them), and then calls the driver’s config_aneg function. If the PHYCONTROL Layer is operating, we change the state to reflect the beginning of Auto-negotiation or forcing.”…”�”}”(hjý»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mghjú»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jù»h´Mhhjä»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjn»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_speed_down (C function)”Œc.phy_speed_down”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9int phy_speed_down (struct phy_device *phydev, bool sync)”h]”j )�”}”(hŒ8int phy_speed_down(struct phy_device *phydev, bool sync)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj>¼h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj:¼h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:¼h²hh³jL¼h´MÇubj3)�”}”(hŒphy_speed_down”h]”j9)�”}”(hŒphy_speed_down”h]”hŒphy_speed_down”…”�”}”(hj_¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[¼ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj:¼h²hh³jL¼h´MÇubj¡ )�”}”(hŒ&(struct phy_device *phydev, bool sync)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj{¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjw¼ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj™¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›¼Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já ja¼sbŒc.phy_speed_down”†”asbuh1hhjw¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjw¼ubj )�”}”(hj h]”hŒ*”…”�”}”(hjǼh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjw¼ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÔ¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjw¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjs¼ubj§ )�”}”(hŒ bool sync”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjí¼h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjé¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé¼ubj9)�”}”(hŒsync”h]”hŒsync”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjs¼ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj:¼h²hh³jL¼h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj6¼h²hh³jL¼h´MÇubah}”(h]”j1¼ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jL¼h´MÇhj3¼h²hubjg)�”}”(hhh]”jl)�”}”(hŒ9set speed to lowest speed supported by both link partners”h]”hŒ9set speed to lowest speed supported by both link partners”…”�”}”(hj2½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÇhj/½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj3¼h²hh³jL¼h´MÇubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jJ½jŒjJ½j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXõ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``bool sync`` perform action synchronously **Description** Typically used to save energy when waiting for a WoL packet WARNING: Setting sync to false may cause the system being unable to suspend in case the PHY generates an interrupt when finishing the autonegotiation. This interrupt may wake up the system immediately after suspend. Therefore use sync = false only if you're sure it's safe with the respective network chip.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjT½h]”hŒ Parameters”…”�”}”(hjV½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjR½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MËhjN½ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjs½h]”hŒstruct phy_device *phydev”…”�”}”(hju½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjq½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÈhjm½ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjŒ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆ½h´MÈhj‰½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjm½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆ½h´MÈhjj½ubjä)�”}”(hŒ+``bool sync`` perform action synchronously ”h]”(jê)�”}”(hŒ ``bool sync``”h]”jð)�”}”(hj¬½h]”hŒ bool sync”…”�”}”(hj®½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÉhj¦½ubj)�”}”(hhh]”jl)�”}”(hŒperform action synchronously”h]”hŒperform action synchronously”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ½h´MÉhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ½h´MÉhjj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjN½ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjç½h]”hŒ Description”…”�”}”(hjé½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjå½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MËhjN½ubjl)�”}”(hŒ;Typically used to save energy when waiting for a WoL packet”h]”hŒ;Typically used to save energy when waiting for a WoL packet”…”�”}”(hjý½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MËhjN½ubjl)�”}”(hX2WARNING: Setting sync to false may cause the system being unable to suspend in case the PHY generates an interrupt when finishing the autonegotiation. This interrupt may wake up the system immediately after suspend. Therefore use sync = false only if you're sure it's safe with the respective network chip.”h]”hX6WARNING: Setting sync to false may cause the system being unable to suspend in case the PHY generates an interrupt when finishing the autonegotiation. This interrupt may wake up the system immediately after suspend. Therefore use sync = false only if you’re sure it’s safe with the respective network chip.”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÍhjN½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_speed_up (C function)”Œc.phy_speed_up”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,int phy_speed_up (struct phy_device *phydev)”h]”j )�”}”(hŒ+int phy_speed_up(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj;¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj7¾h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7¾h²hh³jI¾h´M÷ubj3)�”}”(hŒ phy_speed_up”h]”j9)�”}”(hŒ phy_speed_up”h]”hŒ phy_speed_up”…”�”}”(hj\¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX¾ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj7¾h²hh³jI¾h´M÷ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjx¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjt¾ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj–¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j˜¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j^¾sbŒc.phy_speed_up”†”asbuh1hhjt¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjt¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hjľh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjt¾ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjѾh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjp¾ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj7¾h²hh³jI¾h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj3¾h²hh³jI¾h´M÷ubah}”(h]”j.¾ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jI¾h´M÷hj0¾h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1(re)set advertised speeds to all supported speeds”h]”hŒ1(re)set advertised speeds to all supported speeds”…”�”}”(hjû¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M÷hjø¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj0¾h²hh³jI¾h´M÷ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¿jŒj¿j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒƒ**Parameters** ``struct phy_device *phydev`` the phy_device struct **Description** Used to revert the effect of phy_speed_down”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¿h]”hŒ Parameters”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mûhj¿ubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj<¿h]”hŒstruct phy_device *phydev”…”�”}”(hj>¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Møhj6¿ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjU¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQ¿h´MøhjR¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQ¿h´Møhj3¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjw¿h]”hŒ Description”…”�”}”(hjy¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhju¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Múhj¿ubjl)�”}”(hŒ+Used to revert the effect of phy_speed_down”h]”hŒ+Used to revert the effect of phy_speed_down”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Múhj¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_start_machine (C function)”Œc.phy_start_machine”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2void phy_start_machine (struct phy_device *phydev)”h]”j )�”}”(hŒ1void phy_start_machine(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼¿h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¸¿h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸¿h²hh³jÊ¿h´Mubj3)�”}”(hŒphy_start_machine”h]”j9)�”}”(hŒphy_start_machine”h]”hŒphy_start_machine”…”�”}”(hjÝ¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ¿ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¸¿h²hh³jÊ¿h´Mubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjù¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõ¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ¿ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÀŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jß¿sbŒc.phy_start_machine”†”asbuh1hhjõ¿ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ¿ubj )�”}”(hj h]”hŒ*”…”�”}”(hjEÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõ¿ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjRÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjñ¿ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¸¿h²hh³jÊ¿h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj´¿h²hh³jÊ¿h´Mubah}”(h]”j¯¿ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÊ¿h´Mhj±¿h²hubjg)�”}”(hhh]”jl)�”}”(hŒ start PHY state machine tracking”h]”hŒ start PHY state machine tracking”…”�”}”(hj|Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MhjyÀh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj±¿h²hh³jÊ¿h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j”ÀjŒj”Àj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXg**Parameters** ``struct phy_device *phydev`` the phy_device struct **Description** The PHY infrastructure can run a state machine which tracks whether the PHY is starting up, negotiating, etc. This function starts the delayed workqueue which tracks the state of the PHY. If you want to maintain your own state machine, do not call this function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjžÀh]”hŒ Parameters”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj˜Àubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj½Àh]”hŒstruct phy_device *phydev”…”�”}”(hj¿Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj·Àubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjÖÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒÀh´MhjÓÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒÀh´Mhj´Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj˜Àubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjøÀh]”hŒ Description”…”�”}”(hjúÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj˜Àubjß)�”}”(hhh]”jä)�”}”(hXThe PHY infrastructure can run a state machine which tracks whether the PHY is starting up, negotiating, etc. This function starts the delayed workqueue which tracks the state of the PHY. If you want to maintain your own state machine, do not call this function.”h]”(jê)�”}”(hŒ.The PHY infrastructure can run a state machine”h]”hŒ.The PHY infrastructure can run a state machine”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MhjÁubj)�”}”(hhh]”jl)�”}”(hŒØwhich tracks whether the PHY is starting up, negotiating, etc. This function starts the delayed workqueue which tracks the state of the PHY. If you want to maintain your own state machine, do not call this function.”h]”hŒØwhich tracks whether the PHY is starting up, negotiating, etc. This function starts the delayed workqueue which tracks the state of the PHY. If you want to maintain your own state machine, do not call this function.”…”�”}”(hj'Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj$Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Áh´MhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj˜Àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_error (C function)”Œ c.phy_error”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*void phy_error (struct phy_device *phydev)”h]”j )�”}”(hŒ)void phy_error(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjhÁh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjdÁh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdÁh²hh³jvÁh´MMubj3)�”}”(hŒ phy_error”h]”j9)�”}”(hŒ phy_error”h]”hŒ phy_error”…”�”}”(hj‰Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…Áubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjdÁh²hh³jvÁh´MMubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¥Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Áubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡Áubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÃÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÅÁŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‹ÁsbŒ c.phy_error”†”asbuh1hhj¡Áubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡Áubj )�”}”(hj h]”hŒ*”…”�”}”(hjñÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¡Áubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjþÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�Áubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjdÁh²hh³jvÁh´MMubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj`Áh²hh³jvÁh´MMubah}”(h]”j[Áah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jvÁh´MMhj]Áh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%enter ERROR state for this PHY device”h]”hŒ%enter ERROR state for this PHY device”…”�”}”(hj(Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MMhj%Âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj]Áh²hh³jvÁh´MMubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j@ÂjŒj@Âj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒó**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Moves the PHY to the ERROR state in response to a read or write error, and tells the controller the link is down. Must be called with phydev->lock held.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjJÂh]”hŒ Parameters”…”�”}”(hjLÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjHÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MQhjDÂubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjiÂh]”hŒstruct phy_device *phydev”…”�”}”(hjkÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MNhjcÂubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj‚Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~Âh´MNhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~Âh´MNhj`Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjDÂubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¤Âh]”hŒ Description”…”�”}”(hj¦Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MPhjDÂubjl)�”}”(hŒ˜Moves the PHY to the ERROR state in response to a read or write error, and tells the controller the link is down. Must be called with phydev->lock held.”h]”hŒ˜Moves the PHY to the ERROR state in response to a read or write error, and tells the controller the link is down. Must be called with phydev->lock held.”…”�”}”(hjºÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MOhjDÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_request_interrupt (C function)”Œc.phy_request_interrupt”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void phy_request_interrupt (struct phy_device *phydev)”h]”j )�”}”(hŒ5void phy_request_interrupt(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjéÂh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjåÂh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÀubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåÂh²hh³j÷Âh´MÀubj3)�”}”(hŒphy_request_interrupt”h]”j9)�”}”(hŒphy_request_interrupt”h]”hŒphy_request_interrupt”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjåÂh²hh³j÷Âh´MÀubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj&Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"Ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Ãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"Ãubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjDÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjAÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jFÃŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j ÃsbŒc.phy_request_interrupt”†”asbuh1hhj"Ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"Ãubj )�”}”(hj h]”hŒ*”…”�”}”(hjrÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj"Ãubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÃubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjåÂh²hh³j÷Âh´MÀubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjáÂh²hh³j÷Âh´MÀubah}”(h]”jÜÂah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j÷Âh´MÀhjÞÂh²hubjg)�”}”(hhh]”jl)�”}”(hŒ-request and enable interrupt for a PHY device”h]”hŒ-request and enable interrupt for a PHY device”…”�”}”(hj©Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÀhj¦Ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÞÂh²hh³j÷Âh´MÀubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÁÃjŒjÁÃj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒò**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Request and enable the interrupt for the given PHY. If this fails, then we set irq to PHY_POLL. This should only be called with a valid IRQ number.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjËÃh]”hŒ Parameters”…”�”}”(hjÍÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÉÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÄhjÅÃubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjêÃh]”hŒstruct phy_device *phydev”…”�”}”(hjìÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjèÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÁhjäÃubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿÃh´MÁhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿÃh´MÁhjáÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÅÃubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj%Äh]”hŒ Description”…”�”}”(hj'Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÃhjÅÃubjß)�”}”(hhh]”jä)�”}”(hŒ“Request and enable the interrupt for the given PHY. If this fails, then we set irq to PHY_POLL. This should only be called with a valid IRQ number.”h]”(jê)�”}”(hŒ3Request and enable the interrupt for the given PHY.”h]”hŒ3Request and enable the interrupt for the given PHY.”…”�”}”(hjBÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÄhj>Äubj)�”}”(hhh]”jl)�”}”(hŒ_If this fails, then we set irq to PHY_POLL. This should only be called with a valid IRQ number.”h]”hŒ_If this fails, then we set irq to PHY_POLL. This should only be called with a valid IRQ number.”…”�”}”(hjTÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jPÄh´MÄhjQÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jPÄh´MÄhj;Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÅÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_free_interrupt (C function)”Œc.phy_free_interrupt”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void phy_free_interrupt (struct phy_device *phydev)”h]”j )�”}”(hŒ2void phy_free_interrupt(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”Äh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�Äh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÝubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�Äh²hh³j¢Äh´MÝubj3)�”}”(hŒphy_free_interrupt”h]”j9)�”}”(hŒphy_free_interrupt”h]”hŒphy_free_interrupt”…”�”}”(hjµÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±Äubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�Äh²hh³j¢Äh´MÝubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍÄubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍÄubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjïÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8•hjìÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñÄŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·ÄsbŒc.phy_free_interrupt”†”asbuh1hhjÍÄubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍÄubj )�”}”(hj h]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍÄubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj*Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉÄubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�Äh²hh³j¢Äh´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒÄh²hh³j¢Äh´MÝubah}”(h]”j‡Äah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢Äh´MÝhj‰Äh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+disable and free interrupt for a PHY device”h]”hŒ+disable and free interrupt for a PHY device”…”�”}”(hjTÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÝhjQÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰Äh²hh³j¢Äh´MÝubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jlÅjŒjlÅj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÂ**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Disable and free the interrupt for the given PHY. This should only be called with a valid IRQ number.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvÅh]”hŒ Parameters”…”�”}”(hjxÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MáhjpÅubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj•Åh]”hŒstruct phy_device *phydev”…”�”}”(hj—Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÞhj�Åubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj®Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªÅh´MÞhj«Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªÅh´MÞhjŒÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpÅubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÐÅh]”hŒ Description”…”�”}”(hjÒÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MàhjpÅubjß)�”}”(hhh]”jä)�”}”(hŒeDisable and free the interrupt for the given PHY. This should only be called with a valid IRQ number.”h]”(jê)�”}”(hŒ1Disable and free the interrupt for the given PHY.”h]”hŒ1Disable and free the interrupt for the given PHY.”…”�”}”(hjíÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MàhjéÅubj)�”}”(hhh]”jl)�”}”(hŒ3This should only be called with a valid IRQ number.”h]”hŒ3This should only be called with a valid IRQ number.”…”�”}”(hjÿÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MáhjüÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jûÅh´MàhjæÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_stop (C function)”Œ c.phy_stop”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)void phy_stop (struct phy_device *phydev)”h]”j )�”}”(hŒ(void phy_stop(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj@Æh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj<Æh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<Æh²hh³jNÆh´M{ubj3)�”}”(hŒphy_stop”h]”j9)�”}”(hŒphy_stop”h]”hŒphy_stop”…”�”}”(hjaÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]Æubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj<Æh²hh³jNÆh´M{ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj}Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjyÆubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj›Æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�ÆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jcÆsbŒ c.phy_stop”†”asbuh1hhjyÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjyÆubj )�”}”(hj h]”hŒ*”…”�”}”(hjÉÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjyÆubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÖÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjuÆubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj<Æh²hh³jNÆh´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj8Æh²hh³jNÆh´M{ubah}”(h]”j3Æah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jNÆh´M{hj5Æh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5Bring down the PHY link, and stop checking the status”h]”hŒ5Bring down the PHY link, and stop checking the status”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M{hjýÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj5Æh²hh³jNÆh´M{ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÇjŒjÇj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj"Çh]”hŒ Parameters”…”�”}”(hj$Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MhjÇubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjAÇh]”hŒstruct phy_device *phydev”…”�”}”(hjCÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M�hj;Çubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjZÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M|hjWÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVÇh´M�hj8Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_start (C function)”Œ c.phy_start”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*void phy_start (struct phy_device *phydev)”h]”j )�”}”(hŒ)void phy_start(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj›Çh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj—Çh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—Çh²hh³j©Çh´M§ubj3)�”}”(hŒ phy_start”h]”j9)�”}”(hŒ phy_start”h]”hŒ phy_start”…”�”}”(hj¼Çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸Çubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj—Çh²hh³j©Çh´M§ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjØÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåÇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔÇubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjöÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jøÇŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¾ÇsbŒ c.phy_start”†”asbuh1hhjÔÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔÇubj )�”}”(hj h]”hŒ*”…”�”}”(hj$Èh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÔÇubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj1Èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÐÇubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj—Çh²hh³j©Çh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj“Çh²hh³j©Çh´M§ubah}”(h]”jŽÇah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j©Çh´M§hj�Çh²hubjg)�”}”(hhh]”jl)�”}”(hŒstart or restart a PHY device”h]”hŒstart or restart a PHY device”…”�”}”(hj[Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M§hjXÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�Çh²hh³j©Çh´M§ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jsÈjŒjsÈj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXF**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Indicates the attached device's readiness to handle PHY-related work. Used during startup to start the PHY, and after a call to phy_stop() to resume operation. Also used to indicate the MDIO bus has cleared an error condition.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj}Èh]”hŒ Parameters”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M«hjwÈubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjœÈh]”hŒstruct phy_device *phydev”…”�”}”(hjžÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M¨hj–Èubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjµÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±Èh´M¨hj²Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±Èh´M¨hj“Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjwÈubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj×Èh]”hŒ Description”…”�”}”(hjÙÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MªhjwÈubjß)�”}”(hhh]”jä)�”}”(hŒãIndicates the attached device's readiness to handle PHY-related work. Used during startup to start the PHY, and after a call to phy_stop() to resume operation. Also used to indicate the MDIO bus has cleared an error condition.”h]”(jê)�”}”(hŒ,Indicates the attached device's readiness to”h]”hŒ.Indicates the attached device’s readiness to”…”�”}”(hjôÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M­hjðÈubj)�”}”(hhh]”jl)�”}”(hŒ¶handle PHY-related work. Used during startup to start the PHY, and after a call to phy_stop() to resume operation. Also used to indicate the MDIO bus has cleared an error condition.”h]”hŒ¶handle PHY-related work. Used during startup to start the PHY, and after a call to phy_stop() to resume operation. Also used to indicate the MDIO bus has cleared an error condition.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M«hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉh´M­hjíÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjwÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_mac_interrupt (C function)”Œc.phy_mac_interrupt”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2void phy_mac_interrupt (struct phy_device *phydev)”h]”j )�”}”(hŒ1void phy_mac_interrupt(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjGÉh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjCÉh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjCÉh²hh³jUÉh´MÉubj3)�”}”(hŒphy_mac_interrupt”h]”j9)�”}”(hŒphy_mac_interrupt”h]”hŒphy_mac_interrupt”…”�”}”(hjhÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdÉubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjCÉh²hh³jUÉh´MÉubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj„Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€Éubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj¢Éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¤ÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jjÉsbŒc.phy_mac_interrupt”†”asbuh1hhj€Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€Éubj )�”}”(hj h]”hŒ*”…”�”}”(hjÐÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€Éubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÝÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj|Éubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjCÉh²hh³jUÉh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj?Éh²hh³jUÉh´MÉubah}”(h]”j:Éah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jUÉh´MÉhj<Éh²hubjg)�”}”(hhh]”jl)�”}”(hŒMAC says the link has changed”h]”hŒMAC says the link has changed”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÉhjÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj<Éh²hh³jUÉh´MÉubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÊjŒjÊj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒè**Parameters** ``struct phy_device *phydev`` phy_device struct with changed link **Description** The MAC layer is able to indicate there has been a change in the PHY link status. Trigger the state machine and work a work queue.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj)Êh]”hŒ Parameters”…”�”}”(hj+Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÍhj#Êubjß)�”}”(hhh]”jä)�”}”(hŒB``struct phy_device *phydev`` phy_device struct with changed link ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjHÊh]”hŒstruct phy_device *phydev”…”�”}”(hjJÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjFÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÊhjBÊubj)�”}”(hhh]”jl)�”}”(hŒ#phy_device struct with changed link”h]”hŒ#phy_device struct with changed link”…”�”}”(hjaÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]Êh´MÊhj^Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]Êh´MÊhj?Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj#Êubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjƒÊh]”hŒ Description”…”�”}”(hj…Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÌhj#Êubjl)�”}”(hŒ‚The MAC layer is able to indicate there has been a change in the PHY link status. Trigger the state machine and work a work queue.”h]”hŒ‚The MAC layer is able to indicate there has been a change in the PHY link status. Trigger the state machine and work a work queue.”…”�”}”(hj™Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MËhj#Êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_loopback (C function)”Œc.phy_loopback”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDint phy_loopback (struct phy_device *phydev, bool enable, int speed)”h]”j )�”}”(hŒCint phy_loopback(struct phy_device *phydev, bool enable, int speed)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÈÊh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÄÊh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄÊh²hh³jÖÊh´M×ubj3)�”}”(hŒ phy_loopback”h]”j9)�”}”(hŒ phy_loopback”h]”hŒ phy_loopback”…”�”}”(hjéÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåÊubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÄÊh²hh³jÖÊh´M×ubj¡ )�”}”(hŒ3(struct phy_device *phydev, bool enable, int speed)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj#Ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j%ËŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jëÊsbŒc.phy_loopback”†”asbuh1hhjËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCËh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËubj )�”}”(hj h]”hŒ*”…”�”}”(hjQËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj^Ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýÊubj§ )�”}”(hŒ bool enable”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjwËh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjsËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsËubj9)�”}”(hŒenable”h]”hŒenable”…”�”}”(hj’Ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýÊubj§ )�”}”(hŒ int speed”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj«Ëh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj§Ëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§Ëubj9)�”}”(hŒspeed”h]”hŒspeed”…”�”}”(hjÇËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýÊubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÄÊh²hh³jÖÊh´M×ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÀÊh²hh³jÖÊh´M×ubah}”(h]”j»Êah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÖÊh´M×hj½Êh²hubjg)�”}”(hhh]”jl)�”}”(hŒConfigure loopback mode of PHY”h]”hŒConfigure loopback mode of PHY”…”�”}”(hjñËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M×hjîËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½Êh²hh³jÖÊh´M×ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j ÌjŒj Ìj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXO**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool enable`` enable or disable loopback mode ``int speed`` enable loopback mode with speed **Description** Configure loopback mode of PHY and signal link down and link up if speed is changing. **Return** 0 on success, negative error code on failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÌh]”hŒ Parameters”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÛhj Ìubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj2Ìh]”hŒstruct phy_device *phydev”…”�”}”(hj4Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MØhj,Ìubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjKÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jGÌh´MØhjHÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGÌh´MØhj)Ìubjä)�”}”(hŒ0``bool enable`` enable or disable loopback mode ”h]”(jê)�”}”(hŒ``bool enable``”h]”jð)�”}”(hjkÌh]”hŒ bool enable”…”�”}”(hjmÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjiÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÙhjeÌubj)�”}”(hhh]”jl)�”}”(hŒenable or disable loopback mode”h]”hŒenable or disable loopback mode”…”�”}”(hj„Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€Ìh´MÙhj�Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€Ìh´MÙhj)Ìubjä)�”}”(hŒ.``int speed`` enable loopback mode with speed ”h]”(jê)�”}”(hŒ ``int speed``”h]”jð)�”}”(hj¤Ìh]”hŒ int speed”…”�”}”(hj¦Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÚhjžÌubj)�”}”(hhh]”jl)�”}”(hŒenable loopback mode with speed”h]”hŒenable loopback mode with speed”…”�”}”(hj½Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹Ìh´MÚhjºÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹Ìh´MÚhj)Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Ìubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjßÌh]”hŒ Description”…”�”}”(hjáÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÝÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÜhj Ìubjl)�”}”(hŒUConfigure loopback mode of PHY and signal link down and link up if speed is changing.”h]”hŒUConfigure loopback mode of PHY and signal link down and link up if speed is changing.”…”�”}”(hjõÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÛhj Ìubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÍh]”hŒReturn”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÞhj Ìubjl)�”}”(hŒ-0 on success, negative error code on failure.”h]”hŒ-0 on success, negative error code on failure.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mßhj Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*phy_eee_tx_clock_stop_capable (C function)”Œc.phy_eee_tx_clock_stop_capable”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=int phy_eee_tx_clock_stop_capable (struct phy_device *phydev)”h]”j )�”}”(hŒÍah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jYÍh´M.hj@Íh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*indicate whether the MAC can stop tx clock”h]”hŒ*indicate whether the MAC can stop tx clock”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M.hjÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj@Íh²hh³jYÍh´M.ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j#ÎjŒj#Îj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Indicate whether the MAC can disable the transmit xMII clock while in LPI state. Returns 1 if the MAC may stop the transmit clock, 0 if the MAC must not stop the transmit clock, or negative error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj-Îh]”hŒ Parameters”…”�”}”(hj/Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M2hj'Îubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjLÎh]”hŒstruct phy_device *phydev”…”�”}”(hjNÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M/hjFÎubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjeÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jaÎh´M/hjbÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jaÎh´M/hjCÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'Îubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‡Îh]”hŒ Description”…”�”}”(hj‰Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M1hj'Îubjl)�”}”(hŒÄIndicate whether the MAC can disable the transmit xMII clock while in LPI state. Returns 1 if the MAC may stop the transmit clock, 0 if the MAC must not stop the transmit clock, or negative error.”h]”hŒÄIndicate whether the MAC can disable the transmit xMII clock while in LPI state. Returns 1 if the MAC may stop the transmit clock, 0 if the MAC must not stop the transmit clock, or negative error.”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M0hj'Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_eee_rx_clock_stop (C function)”Œc.phy_eee_rx_clock_stop”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKint phy_eee_rx_clock_stop (struct phy_device *phydev, bool clk_stop_enable)”h]”j )�”}”(hŒJint phy_eee_rx_clock_stop(struct phy_device *phydev, bool clk_stop_enable)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÌÎh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÈÎh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÎh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈÎh²hh³jÚÎh´MBubj3)�”}”(hŒphy_eee_rx_clock_stop”h]”j9)�”}”(hŒphy_eee_rx_clock_stop”h]”hŒphy_eee_rx_clock_stop”…”�”}”(hjíÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéÎubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÈÎh²hh³jÚÎh´MBubj¡ )�”}”(hŒ1(struct phy_device *phydev, bool clk_stop_enable)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj'Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)ÏŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jïÎsbŒc.phy_eee_rx_clock_stop”†”asbuh1hhjÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏubj )�”}”(hj h]”hŒ*”…”�”}”(hjUÏh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÏubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjbÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏubj§ )�”}”(hŒbool clk_stop_enable”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj{Ïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjwÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwÏubj9)�”}”(hŒclk_stop_enable”h]”hŒclk_stop_enable”…”�”}”(hj–Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÈÎh²hh³jÚÎh´MBubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÄÎh²hh³jÚÎh´MBubah}”(h]”j¿Îah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÚÎh´MBhjÁÎh²hubjg)�”}”(hhh]”jl)�”}”(hŒ"configure PHY receive clock in LPI”h]”hŒ"configure PHY receive clock in LPI”…”�”}”(hjÀÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MBhj½Ïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÁÎh²hh³jÚÎh´MBubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jØÏjŒjØÏj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXP**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool clk_stop_enable`` flag to indicate whether the clock can be stopped **Description** Configure whether the PHY can disable its receive clock during LPI mode, See IEEE 802.3 sections 22.2.2.2, 35.2.2.10, and 45.2.3.1.4. **Return** 0 or negative error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjâÏh]”hŒ Parameters”…”�”}”(hjäÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MFhjÜÏubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÐh]”hŒstruct phy_device *phydev”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MChjûÏubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐh´MChjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐh´MChjøÏubjä)�”}”(hŒK``bool clk_stop_enable`` flag to indicate whether the clock can be stopped ”h]”(jê)�”}”(hŒ``bool clk_stop_enable``”h]”jð)�”}”(hj:Ðh]”hŒbool clk_stop_enable”…”�”}”(hj<Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MDhj4Ðubj)�”}”(hhh]”jl)�”}”(hŒ1flag to indicate whether the clock can be stopped”h]”hŒ1flag to indicate whether the clock can be stopped”…”�”}”(hjSÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jOÐh´MDhjPÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOÐh´MDhjøÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÜÏubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjuÐh]”hŒ Description”…”�”}”(hjwÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MFhjÜÏubjl)�”}”(hŒ…Configure whether the PHY can disable its receive clock during LPI mode, See IEEE 802.3 sections 22.2.2.2, 35.2.2.10, and 45.2.3.1.4.”h]”hŒ…Configure whether the PHY can disable its receive clock during LPI mode, See IEEE 802.3 sections 22.2.2.2, 35.2.2.10, and 45.2.3.1.4.”…”�”}”(hj‹Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MEhjÜÏubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjœÐh]”hŒReturn”…”�”}”(hjžÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MHhjÜÏubjl)�”}”(hŒ0 or negative error.”h]”hŒ0 or negative error.”…”�”}”(hj²Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MIhjÜÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_init_eee (C function)”Œc.phy_init_eee”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBint phy_init_eee (struct phy_device *phydev, bool clk_stop_enable)”h]”j )�”}”(hŒAint phy_init_eee(struct phy_device *phydev, bool clk_stop_enable)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjáÐh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÝÐh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝÐh²hh³jïÐh´MWubj3)�”}”(hŒ phy_init_eee”h]”j9)�”}”(hŒ phy_init_eee”h]”hŒ phy_init_eee”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþÐubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÝÐh²hh³jïÐh´MWubj¡ )�”}”(hŒ1(struct phy_device *phydev, bool clk_stop_enable)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj<Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9Ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j>ÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÑsbŒc.phy_init_eee”†”asbuh1hhjÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑubj )�”}”(hj h]”hŒ*”…”�”}”(hjjÑh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÑubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjwÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑubj§ )�”}”(hŒbool clk_stop_enable”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj�Ñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŒÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒÑubj9)�”}”(hŒclk_stop_enable”h]”hŒclk_stop_enable”…”�”}”(hj«Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÑubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÝÐh²hh³jïÐh´MWubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÙÐh²hh³jïÐh´MWubah}”(h]”jÔÐah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jïÐh´MWhjÖÐh²hubjg)�”}”(hhh]”jl)�”}”(hŒinit and check the EEE feature”h]”hŒinit and check the EEE feature”…”�”}”(hjÕÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MWhjÒÑh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÖÐh²hh³jïÐh´MWubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jíÑjŒjíÑj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX]**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool clk_stop_enable`` PHY may stop the clock during LPI **Description** it checks if the Energy-Efficient Ethernet (EEE) is supported by looking at the MMD registers 3.20 and 7.60/61 and it programs the MMD register 3.0 setting the "Clock stop enable" bit if required.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj÷Ñh]”hŒ Parameters”…”�”}”(hjùÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjõÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M[hjñÑubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÒh]”hŒstruct phy_device *phydev”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MXhjÒubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj/Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+Òh´MXhj,Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+Òh´MXhj Òubjä)�”}”(hŒ;``bool clk_stop_enable`` PHY may stop the clock during LPI ”h]”(jê)�”}”(hŒ``bool clk_stop_enable``”h]”jð)�”}”(hjOÒh]”hŒbool clk_stop_enable”…”�”}”(hjQÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MYhjIÒubj)�”}”(hhh]”jl)�”}”(hŒ!PHY may stop the clock during LPI”h]”hŒ!PHY may stop the clock during LPI”…”�”}”(hjhÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdÒh´MYhjeÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdÒh´MYhj Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjñÑubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŠÒh]”hŒ Description”…”�”}”(hjŒÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M[hjñÑubjl)�”}”(hŒÄit checks if the Energy-Efficient Ethernet (EEE) is supported by looking at the MMD registers 3.20 and 7.60/61 and it programs the MMD register 3.0 setting the "Clock stop enable" bit if required.”h]”hŒÈit checks if the Energy-Efficient Ethernet (EEE) is supported by looking at the MMD registers 3.20 and 7.60/61 and it programs the MMD register 3.0 setting the “Clock stop enableâ€� bit if required.”…”�”}”(hj Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M[hjñÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_get_eee_err (C function)”Œc.phy_get_eee_err”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/int phy_get_eee_err (struct phy_device *phydev)”h]”j )�”}”(hŒ.int phy_get_eee_err(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÏÒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjËÒh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Muubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞÒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËÒh²hh³jÝÒh´Muubj3)�”}”(hŒphy_get_eee_err”h]”j9)�”}”(hŒphy_get_eee_err”h]”hŒphy_get_eee_err”…”�”}”(hjðÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìÒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjËÒh²hh³jÝÒh´Muubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj*Óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j,ÓŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jòÒsbŒc.phy_get_eee_err”†”asbuh1hhjÓubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJÓh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓubj )�”}”(hj h]”hŒ*”…”�”}”(hjXÓh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÓubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjeÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÓubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjËÒh²hh³jÝÒh´Muubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÇÒh²hh³jÝÒh´Muubah}”(h]”jÂÒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÝÒh´MuhjÄÒh²hubjg)�”}”(hhh]”jl)�”}”(hŒreport the EEE wake error count”h]”hŒreport the EEE wake error count”…”�”}”(hj�Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MuhjŒÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÄÒh²hh³jÝÒh´Muubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j§ÓjŒj§Ój�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ¸**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** it is to report the number of time where the PHY failed to complete its normal wake sequence.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj±Óh]”hŒ Parameters”…”�”}”(hj³Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Myhj«Óubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÐÓh]”hŒstruct phy_device *phydev”…”�”}”(hjÒÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MvhjÊÓubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjéÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåÓh´MvhjæÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåÓh´MvhjÇÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj«Óubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj Ôh]”hŒ Description”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mxhj«Óubjl)�”}”(hŒ]it is to report the number of time where the PHY failed to complete its normal wake sequence.”h]”hŒ]it is to report the number of time where the PHY failed to complete its normal wake sequence.”…”�”}”(hj!Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mxhj«Óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_ethtool_get_eee (C function)”Œc.phy_ethtool_get_eee”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint phy_ethtool_get_eee (struct phy_device *phydev, struct ethtool_keee *data)”h]”j )�”}”(hŒMint phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_keee *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjPÔh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjLÔh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLÔh²hh³j^Ôh´M‹ubj3)�”}”(hŒphy_ethtool_get_eee”h]”j9)�”}”(hŒphy_ethtool_get_eee”h]”hŒphy_ethtool_get_eee”…”�”}”(hjqÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmÔubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjLÔh²hh³j^Ôh´M‹ubj¡ )�”}”(hŒ6(struct phy_device *phydev, struct ethtool_keee *data)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰Ôubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj«Ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­ÔŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsÔsbŒc.phy_ethtool_get_eee”†”asbuh1hhj‰Ôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰Ôubj )�”}”(hj h]”hŒ*”…”�”}”(hjÙÔh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‰Ôubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjæÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…Ôubj§ )�”}”(hŒstruct ethtool_keee *data”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÿÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûÔubh)�”}”(hhh]”j9)�”}”(hŒ ethtool_keee”h]”hŒ ethtool_keee”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÕŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÇÔŒc.phy_ethtool_get_eee”†”asbuh1hhjûÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûÔubj )�”}”(hj h]”hŒ*”…”�”}”(hjIÕh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjûÔubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjVÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…Ôubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjLÔh²hh³j^Ôh´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjHÔh²hh³j^Ôh´M‹ubah}”(h]”jCÔah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j^Ôh´M‹hjEÔh²hubjg)�”}”(hhh]”jl)�”}”(hŒget EEE supported and status”h]”hŒget EEE supported and status”…”�”}”(hj€Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M‹hj}Õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjEÔh²hh³j^Ôh´M‹ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j˜ÕjŒj˜Õj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÏ**Parameters** ``struct phy_device *phydev`` target phy_device struct ``struct ethtool_keee *data`` ethtool_keee data **Description** get the current EEE settings, filling in all members of **data**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¢Õh]”hŒ Parameters”…”�”}”(hj¤Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M�hjœÕubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÁÕh]”hŒstruct phy_device *phydev”…”�”}”(hjÃÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MŒhj»Õubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjÚÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖÕh´MŒhj×Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖÕh´MŒhj¸Õubjä)�”}”(hŒ0``struct ethtool_keee *data`` ethtool_keee data ”h]”(jê)�”}”(hŒ``struct ethtool_keee *data``”h]”jð)�”}”(hjúÕh]”hŒstruct ethtool_keee *data”…”�”}”(hjüÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M�hjôÕubj)�”}”(hhh]”jl)�”}”(hŒethtool_keee data”h]”hŒethtool_keee data”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖh´M�hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖh´M�hj¸Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjœÕubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj5Öh]”hŒ Description”…”�”}”(hj7Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M�hjœÕubjl)�”}”(hŒAget the current EEE settings, filling in all members of **data**.”h]”(hŒ8get the current EEE settings, filling in all members of ”…”�”}”(hjKÖh²hh³Nh´Nubj›)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjSÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjKÖubhŒ.”…”�”}”(hjKÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M�hjœÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_ethtool_set_eee (C function)”Œc.phy_ethtool_set_eee”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint phy_ethtool_set_eee (struct phy_device *phydev, struct ethtool_keee *data)”h]”j )�”}”(hŒMint phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_keee *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjŒÖh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjˆÖh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆÖh²hh³jšÖh´MÆubj3)�”}”(hŒphy_ethtool_set_eee”h]”j9)�”}”(hŒphy_ethtool_set_eee”h]”hŒphy_ethtool_set_eee”…”�”}”(hj­Öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©Öubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjˆÖh²hh³jšÖh´MÆubj¡ )�”}”(hŒ6(struct phy_device *phydev, struct ethtool_keee *data)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÉÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅÖubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjçÖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jéÖŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¯ÖsbŒc.phy_ethtool_set_eee”†”asbuh1hhjÅÖubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅÖubj )�”}”(hj h]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÅÖubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj"×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÁÖubj§ )�”}”(hŒstruct ethtool_keee *data”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj;×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7×ubh)�”}”(hhh]”j9)�”}”(hŒ ethtool_keee”h]”hŒ ethtool_keee”…”�”}”(hjY×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjV×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j[׌modname”NŒ classname”Njå jè )�”}”jë ]”j׌c.phy_ethtool_set_eee”†”asbuh1hhj7×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7×ubj )�”}”(hj h]”hŒ*”…”�”}”(hj…×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj7×ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj’×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÁÖubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjˆÖh²hh³jšÖh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj„Öh²hh³jšÖh´MÆubah}”(h]”jÖah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jšÖh´MÆhj�Öh²hubjg)�”}”(hhh]”jl)�”}”(hŒset EEE supported and status”h]”hŒset EEE supported and status”…”�”}”(hj¼×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÆhj¹×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�Öh²hh³jšÖh´MÆubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÔ×jŒjÔ×j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ¾**Parameters** ``struct phy_device *phydev`` target phy_device struct ``struct ethtool_keee *data`` ethtool_keee data **Description** it is to program the Advertisement EEE register.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÞ×h]”hŒ Parameters”…”�”}”(hjà×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÊhjØ×ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjý×h]”hŒstruct phy_device *phydev”…”�”}”(hjÿ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjû×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÇhj÷×ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØh´MÇhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØh´MÇhjô×ubjä)�”}”(hŒ0``struct ethtool_keee *data`` ethtool_keee data ”h]”(jê)�”}”(hŒ``struct ethtool_keee *data``”h]”jð)�”}”(hj6Øh]”hŒstruct ethtool_keee *data”…”�”}”(hj8Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÈhj0Øubj)�”}”(hhh]”jl)�”}”(hŒethtool_keee data”h]”hŒethtool_keee data”…”�”}”(hjOØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKØh´MÈhjLØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKØh´MÈhjô×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjØ×ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjqØh]”hŒ Description”…”�”}”(hjsØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoØubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÊhjØ×ubjl)�”}”(hŒ0it is to program the Advertisement EEE register.”h]”hŒ0it is to program the Advertisement EEE register.”…”�”}”(hj‡Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÊhjØ×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_ethtool_set_wol (C function)”Œc.phy_ethtool_set_wol”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPint phy_ethtool_set_wol (struct phy_device *phydev, struct ethtool_wolinfo *wol)”h]”j )�”}”(hŒOint phy_ethtool_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¶Øh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj²Øh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅØh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²Øh²hh³jÄØh´Mæubj3)�”}”(hŒphy_ethtool_set_wol”h]”j9)�”}”(hŒphy_ethtool_set_wol”h]”hŒphy_ethtool_set_wol”…”�”}”(hjרh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓØubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj²Øh²hh³jÄØh´Mæubj¡ )�”}”(hŒ8(struct phy_device *phydev, struct ethtool_wolinfo *wol)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjóØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïØubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÙŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÙØsbŒc.phy_ethtool_set_wol”†”asbuh1hhjïØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïØubj )�”}”(hj h]”hŒ*”…”�”}”(hj?Ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjïØubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjLÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjëØubj§ )�”}”(hŒstruct ethtool_wolinfo *wol”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjeÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÙh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaÙubh)�”}”(hhh]”j9)�”}”(hŒethtool_wolinfo”h]”hŒethtool_wolinfo”…”�”}”(hjƒÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€Ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j…ÙŒmodname”NŒ classname”Njå jè )�”}”jë ]”j-ÙŒc.phy_ethtool_set_wol”†”asbuh1hhjaÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjaÙubj )�”}”(hj h]”hŒ*”…”�”}”(hj¯Ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjaÙubj9)�”}”(hŒwol”h]”hŒwol”…”�”}”(hj¼Ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjëØubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj²Øh²hh³jÄØh´Mæubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj®Øh²hh³jÄØh´Mæubah}”(h]”j©Øah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÄØh´Mæhj«Øh²hubjg)�”}”(hhh]”jl)�”}”(hŒConfigure Wake On LAN”h]”hŒConfigure Wake On LAN”…”�”}”(hjæÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MæhjãÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj«Øh²hh³jÄØh´Mæubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jþÙjŒjþÙj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒƒ**Parameters** ``struct phy_device *phydev`` target phy_device struct ``struct ethtool_wolinfo *wol`` Configuration requested”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÚh]”hŒ Parameters”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MêhjÚubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj'Úh]”hŒstruct phy_device *phydev”…”�”}”(hj)Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mèhj!Úubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj@Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j<Úh´Mèhj=Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j<Úh´MèhjÚubjä)�”}”(hŒ7``struct ethtool_wolinfo *wol`` Configuration requested”h]”(jê)�”}”(hŒ``struct ethtool_wolinfo *wol``”h]”jð)�”}”(hj`Úh]”hŒstruct ethtool_wolinfo *wol”…”�”}”(hjbÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MêhjZÚubj)�”}”(hhh]”jl)�”}”(hŒConfiguration requested”h]”hŒConfiguration requested”…”�”}”(hjyÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MéhjvÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³juÚh´MêhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_ethtool_get_wol (C function)”Œc.phy_ethtool_get_wol”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQvoid phy_ethtool_get_wol (struct phy_device *phydev, struct ethtool_wolinfo *wol)”h]”j )�”}”(hŒPvoid phy_ethtool_get_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjºÚh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶Úh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Müubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶Úh²hh³jÈÚh´Müubj3)�”•}”(hŒphy_ethtool_get_wol”h]”j9)�”}”(hŒphy_ethtool_get_wol”h]”hŒphy_ethtool_get_wol”…”�”}”(hjÛÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×Úubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶Úh²hh³jÈÚh´Müubj¡ )�”}”(hŒ8(struct phy_device *phydev, struct ethtool_wolinfo *wol)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj÷Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjóÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóÚubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÛŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÝÚsbŒc.phy_ethtool_get_wol”†”asbuh1hhjóÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóÚubj )�”}”(hj h]”hŒ*”…”�”}”(hjCÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjóÚubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjPÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïÚubj§ )�”}”(hŒstruct ethtool_wolinfo *wol”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjiÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÛh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeÛubh)�”}”(hhh]”j9)�”}”(hŒethtool_wolinfo”h]”hŒethtool_wolinfo”…”�”}”(hj‡Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„Ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰ÛŒmodname”NŒ classname”Njå jè )�”}”jë ]”j1ÛŒc.phy_ethtool_get_wol”†”asbuh1hhjeÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeÛubj )�”}”(hj h]”hŒ*”…”�”}”(hj³Ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjeÛubj9)�”}”(hŒwol”h]”hŒwol”…”�”}”(hjÀÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïÚubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶Úh²hh³jÈÚh´Müubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj²Úh²hh³jÈÚh´Müubah}”(h]”j­Úah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÈÚh´Mühj¯Úh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)Get the current Wake On LAN configuration”h]”hŒ)Get the current Wake On LAN configuration”…”�”}”(hjêÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MühjçÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯Úh²hh³jÈÚh´Müubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÜjŒjÜj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct phy_device *phydev`` target phy_device struct ``struct ethtool_wolinfo *wol`` Store the current configuration here”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj Üh]”hŒ Parameters”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MhjÜubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj+Üh]”hŒstruct phy_device *phydev”…”�”}”(hj-Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mþhj%Üubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjDÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@Üh´MþhjAÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@Üh´Mþhj"Üubjä)�”}”(hŒD``struct ethtool_wolinfo *wol`` Store the current configuration here”h]”(jê)�”}”(hŒ``struct ethtool_wolinfo *wol``”h]”jð)�”}”(hjdÜh]”hŒstruct ethtool_wolinfo *wol”…”�”}”(hjfÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjbÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´Mhj^Üubj)�”}”(hhh]”jl)�”}”(hŒ$Store the current configuration here”h]”hŒ$Store the current configuration here”…”�”}”(hj}Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´MÿhjzÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jyÜh´Mhj"Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_ethtool_nway_reset (C function)”Œc.phy_ethtool_nway_reset”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4int phy_ethtool_nway_reset (struct net_device *ndev)”h]”j )�”}”(hŒ3int phy_ethtool_nway_reset(struct net_device *ndev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¾Üh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjºÜh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjºÜh²hh³jÌÜh´M&ubj3)�”}”(hŒphy_ethtool_nway_reset”h]”j9)�”}”(hŒphy_ethtool_nway_reset”h]”hŒphy_ethtool_nway_reset”…”�”}”(hjßÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛÜubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjºÜh²hh³jÌÜh´M&ubj¡ )�”}”(hŒ(struct net_device *ndev)”h]”j§ )�”}”(hŒstruct net_device *ndev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjûÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷Üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷Üubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÝŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jáÜsbŒc.phy_ethtool_nway_reset”†”asbuh1hhj÷Üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷Üubj )�”}”(hj h]”hŒ*”…”�”}”(hjGÝh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj÷Üubj9)�”}”(hŒndev”h]”hŒndev”…”�”}”(hjTÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjóÜubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjºÜh²hh³jÌÜh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¶Üh²hh³jÌÜh´M&ubah}”(h]”j±Üah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÌÜh´M&hj³Üh²hubjg)�”}”(hhh]”jl)�”}”(hŒRestart auto negotiation”h]”hŒRestart auto negotiation”…”�”}”(hj~Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M&hj{Ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj³Üh²hh³jÌÜh´M&ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j–ÝjŒj–Ýj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒS**Parameters** ``struct net_device *ndev`` Network device to restart autoneg for”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj Ýh]”hŒ Parameters”…”�”}”(hj¢Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjžÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M*hjšÝubjß)�”}”(hhh]”jä)�”}”(hŒA``struct net_device *ndev`` Network device to restart autoneg for”h]”(jê)�”}”(hŒ``struct net_device *ndev``”h]”jð)�”}”(hj¿Ýh]”hŒstruct net_device *ndev”…”�”}”(hjÁÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M,hj¹Ýubj)�”}”(hhh]”jl)�”}”(hŒ%Network device to restart autoneg for”h]”hŒ%Network device to restart autoneg for”…”�”}”(hjØÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:113: ./drivers/net/phy/phy.c”h´M'hjÕÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔÝh´M,hj¶Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjšÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_config_interrupt (C function)”Œc.phy_config_interrupt”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEint phy_config_interrupt (struct phy_device *phydev, bool interrupts)”h]”j )�”}”(hŒDint phy_config_interrupt(struct phy_device *phydev, bool interrupts)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´K¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞh²hh³j'Þh´K¢ubj3)�”}”(hŒphy_config_interrupt”h]”j9)�”}”(hŒphy_config_interrupt”h]”hŒphy_config_interrupt”…”�”}”(hj:Þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6Þubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÞh²hh³j'Þh´K¢ubj¡ )�”}”(hŒ,(struct phy_device *phydev, bool interrupts)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjVÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRÞubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjtÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jvÞŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j<ÞsbŒc.phy_config_interrupt”†”asbuh1hhjRÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRÞubj )�”}”(hj h]”hŒ*”…”�”}”(hj¢Þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjRÞubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj¯Þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjNÞubj§ )�”}”(hŒbool interrupts”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÈÞh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÄÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄÞubj9)�”}”(hŒ interrupts”h]”hŒ interrupts”…”�”}”(hjãÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjNÞubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÞh²hh³j'Þh´K¢ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÞh²hh³j'Þh´K¢ubah}”(h]”j Þah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j'Þh´K¢hjÞh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5configure the PHY device for the requested interrupts”h]”hŒ5configure the PHY device for the requested interrupts”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´K¢hj ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÞh²hh³j'Þh´K¢ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j%ßjŒj%ßj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÅ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``bool interrupts`` interrupt flags to configure for this **phydev** **Description** Returns 0 on success or < 0 on error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj/ßh]”hŒ Parameters”…”�”}”(hj1ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´K¦hj)ßubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjNßh]”hŒstruct phy_device *phydev”…”�”}”(hjPßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´K£hjHßubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjgßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jcßh´K£hjdßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jcßh´K£hjEßubjä)�”}”(hŒE``bool interrupts`` interrupt flags to configure for this **phydev** ”h]”(jê)�”}”(hŒ``bool interrupts``”h]”jð)�”}”(hj‡ßh]”hŒbool interrupts”…”�”}”(hj‰ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´K¤hj�ßubj)�”}”(hhh]”jl)�”}”(hŒ0interrupt flags to configure for this **phydev**”h]”(hŒ&interrupt flags to configure for this ”…”�”}”(hj ßh²hh³Nh´Nubj›)�”}”(hŒ **phydev**”h]”hŒphydev”…”�”}”(hj¨ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœßh´K¤hj�ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœßh´K¤hjEßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj)ßubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÐßh]”hŒ Description”…”�”}”(hjÒßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎßubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´K¦hj)ßubjl)�”}”(hŒ%Returns 0 on success or < 0 on error.”h]”hŒ%Returns 0 on success or < 0 on error.”…”�”}”(hjæßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´K¥hj)ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_supported_speeds (C function)”Œc.phy_supported_speeds”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒcunsigned int phy_supported_speeds (struct phy_device *phy, unsigned int *speeds, unsigned int size)”h]”j )�”}”(hŒbunsigned int phy_supported_speeds(struct phy_device *phy, unsigned int *speeds, unsigned int size)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàh²hh³j#àh´KÙubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj2àh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjàh²hh³j#àh´KÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjàh²hh³j#àh´KÙubj3)�”}”(hŒphy_supported_speeds”h]”j9)�”}”(hŒphy_supported_speeds”h]”hŒphy_supported_speeds”…”�”}”(hjRàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNàubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjàh²hh³j#àh´KÙubj¡ )�”}”(hŒA(struct phy_device *phy, unsigned int *speeds, unsigned int size)”h]”(j§ )�”}”(hŒstruct phy_device *phy”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjnàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjàubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjŒàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŽàŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jTàsbŒc.phy_supported_speeds”†”asbuh1hhjjàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjàubj )�”}”(hj h]”hŒ*”…”�”}”(hjºàh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjjàubj9)�”}”(hŒphy”h]”hŒphy”…”�”}”(hjÇàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfàubj§ )�”}”(hŒunsigned int *speeds”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjààh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÜàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜàubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjüàh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÜàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜàubj )�”}”(hj h]”hŒ*”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÜàubj9)�”}”(hŒspeeds”h]”hŒspeeds”…”�”}”(hj%áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfàubj§ )�”}”(hŒunsigned int size”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj>áh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj:áubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLáh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:áubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjZáh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj:áubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjháh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:áubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjváh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjfàubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjàh²hh³j#àh´KÙubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj àh²hh³j#àh´KÙubah}”(h]”jàah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j#àh´KÙhj àh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5return all speeds currently supported by a phy device”h]”hŒ5return all speeds currently supported by a phy device”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÙhj�áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj àh²hh³j#àh´KÙubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¸ájŒj¸áj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¬**Parameters** ``struct phy_device *phy`` The phy device to return supported speeds of. ``unsigned int *speeds`` buffer to store supported speeds in. ``unsigned int size`` size of speeds buffer. **Description** Returns the number of supported speeds, and fills the speeds buffer with the supported speeds. If speeds buffer is too small to contain all currently supported speeds, will return as many speeds as can fit.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÂáh]”hŒ Parameters”…”�”}”(hjÄáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÝhj¼áubjß)�”}”(hhh]”(jä)�”}”(hŒI``struct phy_device *phy`` The phy device to return supported speeds of. ”h]”(jê)�”}”(hŒ``struct phy_device *phy``”h]”jð)�”}”(hjááh]”hŒstruct phy_device *phy”…”�”}”(hjãáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßáubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÚhjÛáubj)�”}”(hhh]”jl)�”}”(hŒ-The phy device to return supported speeds of.”h]”hŒ-The phy device to return supported speeds of.”…”�”}”(hjúáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöáh´KÚhj÷áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöáh´KÚhjØáubjä)�”}”(hŒ>``unsigned int *speeds`` buffer to store supported speeds in. ”h]”(jê)�”}”(hŒ``unsigned int *speeds``”h]”jð)�”}”(hjâh]”hŒunsigned int *speeds”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÛhjâubj)�”}”(hhh]”jl)�”}”(hŒ$buffer to store supported speeds in.”h]”hŒ$buffer to store supported speeds in.”…”�”}”(hj3âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/âh´KÛhj0âubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/âh´KÛhjØáubjä)�”}”(hŒ-``unsigned int size`` size of speeds buffer. ”h]”(jê)�”}”(hŒ``unsigned int size``”h]”jð)�”}”(hjSâh]”hŒunsigned int size”…”�”}”(hjUâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÜhjMâubj)�”}”(hhh]”jl)�”}”(hŒsize of speeds buffer.”h]”hŒsize of speeds buffer.”…”�”}”(hjlâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jhâh´KÜhjiâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jhâh´KÜhjØáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¼áubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŽâh]”hŒ Description”…”�”}”(hj�âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒâubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÞhj¼áubjl)�”}”(hŒÎReturns the number of supported speeds, and fills the speeds buffer with the supported speeds. If speeds buffer is too small to contain all currently supported speeds, will return as many speeds as can fit.”h]”hŒÎReturns the number of supported speeds, and fills the speeds buffer with the supported speeds. If speeds buffer is too small to contain all currently supported speeds, will return as many speeds as can fit.”…”�”}”(hj¤âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KÞhj¼áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_sanitize_settings (C function)”Œc.phy_sanitize_settings”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void phy_sanitize_settings (struct phy_device *phydev)”h]”j )�”}”(hŒ5void phy_sanitize_settings(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓâh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏâh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Kùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjââh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏâh²hh³jáâh´Kùubj3)�”}”(hŒphy_sanitize_settings”h]”j9)�”}”(hŒphy_sanitize_settings”h]”hŒphy_sanitize_settings”…”�”}”(hjôâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðâubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÏâh²hh³jáâh´Kùubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ãubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj.ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0ãŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jöâsbŒc.phy_sanitize_settings”†”asbuh1hhj ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ãubj )�”}”(hj h]”hŒ*”…”�”}”(hj\ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ãubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjiãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjãubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÏâh²hh³jáâh´Kùubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjËâh²hh³jáâh´Kùubah}”(h]”jÆâah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jáâh´KùhjÈâh²hubjg)�”}”(hhh]”jl)�”}”(hŒ6make sure the PHY is set to supported speed and duplex”h]”hŒ6make sure the PHY is set to supported speed and duplex”…”�”}”(hj“ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Kùhj�ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈâh²hh³jáâh´Kùubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j«ãjŒj«ãj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒû**Parameters** ``struct phy_device *phydev`` the target phy_device struct **Description** Make sure the PHY is set to supported speeds and duplexes. Drop down by one in this order: 1000/FULL, 1000/HALF, 100/FULL, 100/HALF, 10/FULL, 10/HALF.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjµãh]”hŒ Parameters”…”�”}”(hj·ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Kýhj¯ãubjß)�”}”(hhh]”jä)�”}”(hŒ;``struct phy_device *phydev`` the target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÔãh]”hŒstruct phy_device *phydev”…”�”}”(hjÖãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´KúhjÎãubj)�”}”(hhh]”jl)�”}”(hŒthe target phy_device struct”h]”hŒthe target phy_device struct”…”�”}”(hjíãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jéãh´Kúhjêãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéãh´KúhjËãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯ãubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjäh]”hŒ Description”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj äubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Kühj¯ãubjß)�”}”(hhh]”jä)�”}”(hŒ˜Make sure the PHY is set to supported speeds and duplexes. Drop down by one in this order: 1000/FULL, 1000/HALF, 100/FULL, 100/HALF, 10/FULL, 10/HALF.”h]”(jê)�”}”(hŒ0Make sure the PHY is set to supported speeds and”h]”hŒ0Make sure the PHY is set to supported speeds and”…”�”}”(hj,äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Kýhj(äubj)�”}”(hhh]”jl)�”}”(hŒgduplexes. Drop down by one in this order: 1000/FULL, 1000/HALF, 100/FULL, 100/HALF, 10/FULL, 10/HALF.”h]”hŒgduplexes. Drop down by one in this order: 1000/FULL, 1000/HALF, 100/FULL, 100/HALF, 10/FULL, 10/HALF.”…”�”}”(hj>äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:äh´Kýhj;äubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:äh´Kýhj%äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_hwtstamp_get (C function)”Œc.__phy_hwtstamp_get”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYint __phy_hwtstamp_get (struct phy_device *phydev, struct kernel_hwtstamp_config *config)”h]”j )�”}”(hŒXint __phy_hwtstamp_get(struct phy_device *phydev, struct kernel_hwtstamp_config *config)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj~äh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjzäh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzäh²hh³jŒäh´MÔubj3)�”}”(hŒ__phy_hwtstamp_get”h]”j9)�”}”(hŒ__phy_hwtstamp_get”h]”hŒ__phy_hwtstamp_get”…”�”}”(hjŸäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›äubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjzäh²hh³jŒäh´MÔubj¡ )�”}”(hŒB(struct phy_device *phydev, struct kernel_hwtstamp_config *config)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj»äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·äubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÙäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÛäŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¡äsbŒc.__phy_hwtstamp_get”†”asbuh1hhj·äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·äubj )�”}”(hj h]”hŒ*”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj·äubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³äubj§ )�”}”(hŒ%struct kernel_hwtstamp_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj-åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)åubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)åubh)�”}”(hhh]”j9)�”}”(hŒkernel_hwtstamp_config”h]”hŒkernel_hwtstamp_config”…”�”}”(hjKåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jMåŒmodname”NŒ classname”Njå jè )�”}”jë ]”jõäŒc.__phy_hwtstamp_get”†”asbuh1hhj)åubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)åubj )�”}”(hj h]”hŒ*”…”�”}”(hjwåh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj)åubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hj„åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³äubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjzäh²hh³jŒäh´MÔubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjväh²hh³jŒäh´MÔubah}”(h]”jqäah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŒäh´MÔhjsäh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Get hardware timestamping configuration from PHY”h]”hŒ0Get hardware timestamping configuration from PHY”…”�”}”(hj®åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÔhj«åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjsäh²hh³jŒäh´MÔubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÆåjŒjÆåj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` the PHY device structure ``struct kernel_hwtstamp_config *config`` structure holding the timestamping configuration **Description** Query the PHY device for its current hardware timestamping configuration.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÐåh]”hŒ Parameters”…”�”}”(hjÒåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎåubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MØhjÊåubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` the PHY device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjïåh]”hŒstruct phy_device *phydev”…”�”}”(hjñåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíåubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÖhjéåubj)�”}”(hhh]”jl)�”}”(hŒthe PHY device structure”h]”hŒthe PHY device structure”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæh´MÖhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæh´MÖhjæåubjä)�”}”(hŒ[``struct kernel_hwtstamp_config *config`` structure holding the timestamping configuration ”h]”(jê)�”}”(hŒ)``struct kernel_hwtstamp_config *config``”h]”jð)�”}”(hj(æh]”hŒ%struct kernel_hwtstamp_config *config”…”�”}”(hj*æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&æubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M×hj"æubj)�”}”(hhh]”jl)�”}”(hŒ0structure holding the timestamping configuration”h]”hŒ0structure holding the timestamping configuration”…”�”}”(hjAæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=æh´M×hj>æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=æh´M×hjæåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊåubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjcæh]”hŒ Description”…”�”}”(hjeæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjaæubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÙhjÊåubjl)�”}”(hŒIQuery the PHY device for its current hardware timestamping configuration.”h]”hŒIQuery the PHY device for its current hardware timestamping configuration.”…”�”}”(hjyæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MØhjÊåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_hwtstamp_set (C function)”Œc.__phy_hwtstamp_set”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒyint __phy_hwtstamp_set (struct phy_device *phydev, struct kernel_hwtstamp_config *config, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒxint __phy_hwtstamp_set(struct phy_device *phydev, struct kernel_hwtstamp_config *config, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¨æh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¤æh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤æh²hh³j¶æh´Mèubj3)�”}”(hŒ__phy_hwtstamp_set”h]”j9)�”}”(hŒ__phy_hwtstamp_set”h]”hŒ__phy_hwtstamp_set”…”�”}”(hjÉæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅæubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¤æh²hh³j¶æh´Mèubj¡ )�”}”(hŒb(struct phy_device *phydev, struct kernel_hwtstamp_config *config, struct netlink_ext_ack *extack)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjåæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjáæubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jçŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jËæsbŒc.__phy_hwtstamp_set”†”asbuh1hhjáæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjáæubj )�”}”(hj h]”hŒ*”…”�”}”(hj1çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjáæubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj>çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝæubj§ )�”}”(hŒ%struct kernel_hwtstamp_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjWçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSçubh)�”}”(hhh]”j9)�”}”(hŒkernel_hwtstamp_config”h]”hŒkernel_hwtstamp_config”…”�”}”(hjuçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjrçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jwçŒmodname”NŒ classname”Njå jè )�”}”jë ]”jçŒc.__phy_hwtstamp_set”†”asbuh1hhjSçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSçubj )�”}”(hj h]”hŒ*”…”�”}”(hj¡çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjSçubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hj®çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝæubj§ )�”}”(hŒstruct netlink_ext_ack *extack”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÇçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃçubh)�”}”(hhh]”j9)�”}”(hŒnetlink_ext_ack”h]”hŒnetlink_ext_ack”…”�”}”(hjåçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jççŒmodname”NŒ classname”Njå jè )�”}”jë ]”jçŒc.__phy_hwtstamp_set”†”asbuh1hhjÃçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃçubj )�”}”(hj h]”hŒ*”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÃçubj9)�”}”(hŒextack”h]”hŒextack”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝæubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¤æh²hh³j¶æh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj æh²hh³j¶æh´Mèubah}”(h]”j›æah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¶æh´Mèhj�æh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Modify PHY hardware timestamping configuration”h]”hŒ.Modify PHY hardware timestamping configuration”…”�”}”(hjHèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MèhjEèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�æh²hh³j¶æh´Mèubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j`èjŒj`èj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` the PHY device structure ``struct kernel_hwtstamp_config *config`` structure holding the timestamping configuration ``struct netlink_ext_ack *extack`` netlink extended ack structure, for error reporting”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjjèh]”hŒ Parameters”…”�”}”(hjlèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjhèubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mìhjdèubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` the PHY device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj‰èh]”hŒstruct phy_device *phydev”…”�”}”(hj‹èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mêhjƒèubj)�”}”(hhh]”jl)�”}”(hŒthe PHY device structure”h]”hŒthe PHY device structure”…”�”}”(hj¢èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jžèh´MêhjŸèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jžèh´Mêhj€èubjä)�”}”(hŒ[``struct kernel_hwtstamp_config *config`` structure holding the timestamping configuration ”h]”(jê)�”}”(hŒ)``struct kernel_hwtstamp_config *config``”h]”jð)�”}”(hjÂèh]”hŒ%struct kernel_hwtstamp_config *config”…”�”}”(hjÄèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀèubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mëhj¼èubj)�”}”(hhh]”jl)�”}”(hŒ0structure holding the timestamping configuration”h]”hŒ0structure holding the timestamping configuration”…”�”}”(hjÛèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j×èh´MëhjØèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j×èh´Mëhj€èubjä)�”}”(hŒV``struct netlink_ext_ack *extack`` netlink extended ack structure, for error reporting”h]”(jê)�”}”(hŒ"``struct netlink_ext_ack *extack``”h]”jð)�”}”(hjûèh]”hŒstruct netlink_ext_ack *extack”…”�”}”(hjýèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùèubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Míhjõèubj)�”}”(hhh]”jl)�”}”(hŒ3netlink extended ack structure, for error reporting”h]”hŒ3netlink extended ack structure, for error reporting”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mìhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéh´Míhj€èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjdèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phy_queue_state_machine (C function)”Œc.phy_queue_state_machine”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOvoid phy_queue_state_machine (struct phy_device *phydev, unsigned long jiffies)”h]”j )�”}”(hŒNvoid phy_queue_state_machine(struct phy_device *phydev, unsigned long jiffies)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjUéh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjQéh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQéh²hh³jcéh´Mýubj3)�”}”(hŒphy_queue_state_machine”h]”j9)�”}”(hŒphy_queue_state_machine”h]”hŒphy_queue_state_machine”…”�”}”(hjvéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjréubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjQéh²hh³jcéh´Mýubj¡ )�”}”(hŒ2(struct phy_device *phydev, unsigned long jiffies)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj’éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽéubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj°éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j²éŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jxésbŒc.phy_queue_state_machine”†”asbuh1hhjŽéubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐéh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽéubj )�”}”(hj h]”hŒ*”…”�”}”(hjÞéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŽéubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjëéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŠéubj§ )�”}”(hŒunsigned long jiffies”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêubj9)�”}”(hŒjiffies”h]”hŒjiffies”…”�”}”(hj<êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŠéubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjQéh²hh³jcéh´Mýubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjMéh²hh³jcéh´Mýubah}”(h]”jHéah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jcéh´MýhjJéh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%Trigger the state machine to run soon”h]”hŒ%Trigger the state machine to run soon”…”�”}”(hjfêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mýhjcêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjJéh²hh³jcéh´Mýubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j~êjŒj~êj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒŒ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``unsigned long jiffies`` Run the state machine after these jiffies”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjˆêh]”hŒ Parameters”…”�”}”(hjŠêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†êubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mhj‚êubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj§êh]”hŒstruct phy_device *phydev”…”�”}”(hj©êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mÿhj¡êubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjÀêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼êh´Mÿhj½êubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼êh´Mÿhjžêubjä)�”}”(hŒC``unsigned long jiffies`` Run the state machine after these jiffies”h]”(jê)�”}”(hŒ``unsigned long jiffies``”h]”jð)�”}”(hjàêh]”hŒunsigned long jiffies”…”�”}”(hjâêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞêubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MhjÚêubj)�”}”(hhh]”jl)�”}”(hŒ)Run the state machine after these jiffies”h]”hŒ)Run the state machine after these jiffies”…”�”}”(hjùêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mhjöêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõêh´Mhjžêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(__phy_ethtool_get_phy_stats (C function)”Œc.__phy_ethtool_get_phy_stats”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ�void __phy_ethtool_get_phy_stats (struct phy_device *phydev, struct ethtool_eth_phy_stats *phy_stats, struct ethtool_phy_stats *phydev_stats)”h]”j )�”}”(hŒŒvoid __phy_ethtool_get_phy_stats(struct phy_device *phydev, struct ethtool_eth_phy_stats *phy_stats, struct ethtool_phy_stats *phydev_stats)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:ëh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj6ëh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6ëh²hh³jHëh´Mbubj3)�”}”(hŒ__phy_ethtool_get_phy_stats”h]”j9)�”}”(hŒ__phy_ethtool_get_phy_stats”h]”hŒ__phy_ethtool_get_phy_stats”…”�”}”(hj[ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWëubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj6ëh²hh³jHëh´Mbubj¡ )�”}”(hŒl(struct phy_device *phydev, struct ethtool_eth_phy_stats *phy_stats, struct ethtool_phy_stats *phydev_stats)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjwëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsëubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj•ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j—ëŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j]ësbŒc.__phy_ethtool_get_phy_stats”†”asbuh1hhjsëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsëubj )�”}”(hj h]”hŒ*”…”�”}”(hjÃëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjsëubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÐëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjoëubj§ )�”}”(hŒ'struct ethtool_eth_phy_stats *phy_stats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjéëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåëubh)�”}”(hhh]”j9)�”}”(hŒethtool_eth_phy_stats”h]”hŒethtool_eth_phy_stats”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ìŒmodname”NŒ classname”Njå jè )�”}”jë ]”j±ëŒc.__phy_ethtool_get_phy_stats”†”asbuh1hhjåëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåëubj )�”}”(hj h]”hŒ*”…”�”}”(hj3ìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjåëubj9)�”}”(hŒ phy_stats”h]”hŒ phy_stats”…”�”}”(hj@ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjoëubj§ )�”}”(hŒ&struct ethtool_phy_stats *phydev_stats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjYìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUìubh)�”}”(hhh]”j9)�”}”(hŒethtool_phy_stats”h]”hŒethtool_phy_stats”…”�”}”(hjwìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyìŒmodname”NŒ classname”Njå jè )�”}”jë ]”j±ëŒc.__phy_ethtool_get_phy_stats”†”asbuh1hhjUìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•ìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUìubj )�”}”(hj h]”hŒ*”…”�”}”(hj£ìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjUìubj9)�”}”(hŒ phydev_stats”h]”hŒ phydev_stats”…”�”}”(hj°ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjoëubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj6ëh²hh³jHëh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj2ëh²hh³jHëh´Mbubah}”(h]”j-ëah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jHëh´Mbhj/ëh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Retrieve standardized PHY statistics”h]”hŒ$Retrieve standardized PHY statistics”…”�”}”(hjÚìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mbhj×ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj/ëh²hh³jHëh´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jòìjŒjòìj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXã**Parameters** ``struct phy_device *phydev`` Pointer to the PHY device ``struct ethtool_eth_phy_stats *phy_stats`` Pointer to ethtool_eth_phy_stats structure ``struct ethtool_phy_stats *phydev_stats`` Pointer to ethtool_phy_stats structure **Description** Fetches PHY statistics using a kernel-defined interface for consistent diagnostics. Unlike phy_ethtool_get_stats(), which allows custom stats, this function enforces a standardized format for better interoperability.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjüìh]”hŒ Parameters”…”�”}”(hjþìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjúìubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mfhjöìubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct phy_device *phydev`` Pointer to the PHY device ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjíh]”hŒstruct phy_device *phydev”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mchjíubj)�”}”(hhh]”jl)�”}”(hŒPointer to the PHY device”h]”hŒPointer to the PHY device”…”�”}”(hj4íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j0íh´Mchj1íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j0íh´Mchjíubjä)�”}”(hŒW``struct ethtool_eth_phy_stats *phy_stats`` Pointer to ethtool_eth_phy_stats structure ”h]”(jê)�”}”(hŒ+``struct ethtool_eth_phy_stats *phy_stats``”h]”jð)�”}”(hjTíh]”hŒ'struct ethtool_eth_phy_stats *phy_stats”…”�”}”(hjVíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjRíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MdhjNíubj)�”}”(hhh]”jl)�”}”(hŒ*Pointer to ethtool_eth_phy_stats structure”h]”hŒ*Pointer to ethtool_eth_phy_stats structure”…”�”}”(hjmíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jiíh´Mdhjjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jiíh´Mdhjíubjä)�”}”(hŒR``struct ethtool_phy_stats *phydev_stats`` Pointer to ethtool_phy_stats structure ”h]”(jê)�”}”(hŒ*``struct ethtool_phy_stats *phydev_stats``”h]”jð)�”}”(hj�íh]”hŒ&struct ethtool_phy_stats *phydev_stats”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹íubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mehj‡íubj)�”}”(hhh]”jl)�”}”(hŒ&Pointer to ethtool_phy_stats structure”h]”hŒ&Pointer to ethtool_phy_stats structure”…”�”}”(hj¦íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¢íh´Mehj£íubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¢íh´Mehjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjöìubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÈíh]”hŒ Description”…”�”}”(hjÊíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆíubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mghjöìubjl)�”}”(hŒØFetches PHY statistics using a kernel-defined interface for consistent diagnostics. Unlike phy_ethtool_get_stats(), which allows custom stats, this function enforces a standardized format for better interoperability.”h]”hŒØFetches PHY statistics using a kernel-defined interface for consistent diagnostics. Unlike phy_ethtool_get_stats(), which allows custom stats, this function enforces a standardized format for better interoperability.”…”�”}”(hjÞíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mfhjöìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ-__phy_ethtool_get_link_ext_stats (C function)”Œ"c.__phy_ethtool_get_link_ext_stats”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒlvoid __phy_ethtool_get_link_ext_stats (struct phy_device *phydev, struct ethtool_link_ext_stats *link_stats)”h]”j )�”}”(hŒkvoid __phy_ethtool_get_link_ext_stats(struct phy_device *phydev, struct ethtool_link_ext_stats *link_stats)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj îh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj îh²hh³jîh´Mxubj3)�”}”(hŒ __phy_ethtool_get_link_ext_stats”h]”j9)�”}”(hŒ __phy_ethtool_get_link_ext_stats”h]”hŒ __phy_ethtool_get_link_ext_stats”…”�”}”(hj.îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*îubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj îh²hh³jîh´Mxubj¡ )�”}”(hŒF(struct phy_device *phydev, struct ethtool_link_ext_stats *link_stats)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjJîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFîubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjhîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jjîŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j0îsbŒ"c.__phy_ethtool_get_link_ext_stats”†”asbuh1hhjFîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFîubj )�”}”(hj h]”hŒ*”…”�”}”(hj–îh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjFîubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj£îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjBîubj§ )�”}”(hŒ)struct ethtool_link_ext_stats *link_stats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¼îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸îubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸îubh)�”}”(hhh]”j9)�”}”(hŒethtool_link_ext_stats”h]”hŒethtool_link_ext_stats”…”�”}”(hjÚîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÜîŒmodname”NŒ classname”Njå jè )�”}”jë ]”j„îŒ"c.__phy_ethtool_get_link_ext_stats”†”asbuh1hhj¸îubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸îubj )�”}”(hj h]”hŒ*”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¸îubj9)�”}”(hŒ link_stats”h]”hŒ link_stats”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjBîubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj îh²hh³jîh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjîh²hh³jîh´Mxubah}”(h]”jîah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jîh´Mxhjîh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Retrieve extended link statistics for a PHY”h]”hŒ+Retrieve extended link statistics for a PHY”…”�”}”(hj=ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mxhj:ïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjîh²hh³jîh´Mxubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jUïjŒjUïj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXP**Parameters** ``struct phy_device *phydev`` Pointer to the PHY device ``struct ethtool_link_ext_stats *link_stats`` Pointer to the structure to store extended link statistics **Description** Populates the ethtool_link_ext_stats structure with link down event counts and additional driver-specific link statistics, if available.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj_ïh]”hŒ Parameters”…”�”}”(hjaïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M|hjYïubjß)�”}”(hhh]”(jä)�”}”(hŒ8``struct phy_device *phydev`` Pointer to the PHY device ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj~ïh]”hŒstruct phy_device *phydev”…”�”}”(hj€ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj|ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Myhjxïubj)�”}”(hhh]”jl)�”}”(hŒPointer to the PHY device”h]”hŒPointer to the PHY device”…”�”}”(hj—ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j“ïh´Myhj”ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“ïh´Myhjuïubjä)�”}”(hŒi``struct ethtool_link_ext_stats *link_stats`` Pointer to the structure to store extended link statistics ”h]”(jê)�”}”(hŒ-``struct ethtool_link_ext_stats *link_stats``”h]”jð)�”}”(hj·ïh]”hŒ)struct ethtool_link_ext_stats *link_stats”…”�”}”(hj¹ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mzhj±ïubj)�”}”(hhh]”jl)�”}”(hŒ:Pointer to the structure to store extended link statistics”h]”hŒ:Pointer to the structure to store extended link statistics”…”�”}”(hjÐïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌïh´MzhjÍïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌïh´Mzhjuïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYïubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjòïh]”hŒ Description”…”�”}”(hjôïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjðïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M|hjYïubjl)�”}”(hŒˆPopulates the ethtool_link_ext_stats structure with link down event counts and additional driver-specific link statistics, if available.”h]”hŒˆPopulates the ethtool_link_ext_stats structure with link down event counts and additional driver-specific link statistics, if available.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M{hjYïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phy_ethtool_get_plca_cfg (C function)”Œc.phy_ethtool_get_plca_cfg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWint phy_ethtool_get_plca_cfg (struct phy_device *phydev, struct phy_plca_cfg *plca_cfg)”h]”j )�”}”(hŒVint phy_ethtool_get_plca_cfg(struct phy_device *phydev, struct phy_plca_cfg *plca_cfg)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj7ðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj3ðh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ðh²hh³jEðh´M�ubj3)�”}”(hŒphy_ethtool_get_plca_cfg”h]”j9)�”}”(hŒphy_ethtool_get_plca_cfg”h]”hŒphy_ethtool_get_plca_cfg”…”�”}”(hjXðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj3ðh²hh³jEðh´M�ubj¡ )�”}”(hŒ:(struct phy_device *phydev, struct phy_plca_cfg *plca_cfg)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjtðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjpðubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj’ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j”ðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jZðsbŒc.phy_ethtool_get_plca_cfg”†”asbuh1hhjpðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjpðubj )�”}”(hj h]”hŒ*”…”�”}”(hjÀðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjpðubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÍðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjlðubj§ )�”}”(hŒstruct phy_plca_cfg *plca_cfg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjæðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâðubh)�”}”(hhh]”j9)�”}”(hŒ phy_plca_cfg”h]”hŒ phy_plca_cfg”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñuba•&h}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñŒmodname”NŒ classname”Njå jè )�”}”jë ]”j®ðŒc.phy_ethtool_get_plca_cfg”†”asbuh1hhjâðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâðubj )�”}”(hj h]”hŒ*”…”�”}”(hj0ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjâðubj9)�”}”(hŒplca_cfg”h]”hŒplca_cfg”…”�”}”(hj=ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjlðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj3ðh²hh³jEðh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj/ðh²hh³jEðh´M�ubah}”(h]”j*ðah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jEðh´M�hj,ðh²hubjg)�”}”(hhh]”jl)�”}”(hŒGet PLCA RS configuration”h]”hŒGet PLCA RS configuration”…”�”}”(hjgñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M�hjdñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj,ðh²hh³jEðh´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñjŒjñj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` the phy_device struct ``struct phy_plca_cfg *plca_cfg`` where to store the retrieved configuration **Description** Retrieve the PLCA configuration from the PHY. Return 0 on success or a negative value if an error occurred.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‰ñh]”hŒ Parameters”…”�”}”(hj‹ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M‘hjƒñubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj¨ñh]”hŒstruct phy_device *phydev”…”�”}”(hjªñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MŽhj¢ñubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjÁñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½ñh´MŽhj¾ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½ñh´MŽhjŸñubjä)�”}”(hŒM``struct phy_plca_cfg *plca_cfg`` where to store the retrieved configuration ”h]”(jê)�”}”(hŒ!``struct phy_plca_cfg *plca_cfg``”h]”jð)�”}”(hjáñh]”hŒstruct phy_plca_cfg *plca_cfg”…”�”}”(hjãñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M�hjÛñubj)�”}”(hhh]”jl)�”}”(hŒ*where to store the retrieved configuration”h]”hŒ*where to store the retrieved configuration”…”�”}”(hjúñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöñh´M�hj÷ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöñh´M�hjŸñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjƒñubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjòh]”hŒ Description”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M‘hjƒñubjl)�”}”(hŒkRetrieve the PLCA configuration from the PHY. Return 0 on success or a negative value if an error occurred.”h]”hŒkRetrieve the PLCA configuration from the PHY. Return 0 on success or a negative value if an error occurred.”…”�”}”(hj2òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M�hjƒñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒplca_check_valid (C function)”Œc.plca_check_valid”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒuint plca_check_valid (struct phy_device *phydev, const struct phy_plca_cfg *plca_cfg, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒtint plca_check_valid(struct phy_device *phydev, const struct phy_plca_cfg *plca_cfg, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjaòh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj]òh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]òh²hh³joòh´M¬ubj3)�”}”(hŒplca_check_valid”h]”j9)�”}”(hŒplca_check_valid”h]”hŒplca_check_valid”…”�”}”(hj‚òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~òubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj]òh²hh³joòh´M¬ubj¡ )�”}”(hŒ`(struct phy_device *phydev, const struct phy_plca_cfg *plca_cfg, struct netlink_ext_ack *extack)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjžòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšòubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj¼òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¾òŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j„òsbŒc.plca_check_valid”†”asbuh1hhjšòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšòubj )�”}”(hj h]”hŒ*”…”�”}”(hjêòh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjšòubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj÷òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–òubj§ )�”}”(hŒ#const struct phy_plca_cfg *plca_cfg”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj óubj)�”}”(hjh]”hŒstruct”…”�”}”(hj+óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj óubh)�”}”(hhh]”j9)�”}”(hŒ phy_plca_cfg”h]”hŒ phy_plca_cfg”…”�”}”(hjIóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjFóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKóŒmodname”NŒ classname”Njå jè )�”}”jë ]”jØòŒc.plca_check_valid”†”asbuh1hhj óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj óubj )�”}”(hj h]”hŒ*”…”�”}”(hjuóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj óubj9)�”}”(hŒplca_cfg”h]”hŒplca_cfg”…”�”}”(hj‚óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–òubj§ )�”}”(hŒstruct netlink_ext_ack *extack”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj›óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—óubh)�”}”(hhh]”j9)�”}”(hŒnetlink_ext_ack”h]”hŒnetlink_ext_ack”…”�”}”(hj¹óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»óŒmodname”NŒ classname”Njå jè )�”}”jë ]”jØòŒc.plca_check_valid”†”asbuh1hhj—óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—óubj )�”}”(hj h]”hŒ*”…”�”}”(hjåóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—óubj9)�”}”(hŒextack”h]”hŒextack”…”�”}”(hjòóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj–òubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj]òh²hh³joòh´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjYòh²hh³joòh´M¬ubah}”(h]”jTòah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³joòh´M¬hjVòh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Check PLCA configuration before enabling”h]”hŒ(Check PLCA configuration before enabling”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¬hjôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjVòh²hh³joòh´M¬ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j4ôjŒj4ôj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX§**Parameters** ``struct phy_device *phydev`` the phy_device struct ``const struct phy_plca_cfg *plca_cfg`` current PLCA configuration ``struct netlink_ext_ack *extack`` extack for reporting useful error messages **Description** Checks whether the PLCA and PHY configuration are consistent and it is safe to enable PLCA. Returns 0 on success or a negative value if the PLCA or PHY configuration is not consistent.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj>ôh]”hŒ Parameters”…”�”}”(hj@ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj<ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M°hj8ôubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj]ôh]”hŒstruct phy_device *phydev”…”�”}”(hj_ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M­hjWôubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjvôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jrôh´M­hjsôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrôh´M­hjTôubjä)�”}”(hŒC``const struct phy_plca_cfg *plca_cfg`` current PLCA configuration ”h]”(jê)�”}”(hŒ'``const struct phy_plca_cfg *plca_cfg``”h]”jð)�”}”(hj–ôh]”hŒ#const struct phy_plca_cfg *plca_cfg”…”�”}”(hj˜ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M®hj�ôubj)�”}”(hhh]”jl)�”}”(hŒcurrent PLCA configuration”h]”hŒcurrent PLCA configuration”…”�”}”(hj¯ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«ôh´M®hj¬ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«ôh´M®hjTôubjä)�”}”(hŒN``struct netlink_ext_ack *extack`` extack for reporting useful error messages ”h]”(jê)�”}”(hŒ"``struct netlink_ext_ack *extack``”h]”jð)�”}”(hjÏôh]”hŒstruct netlink_ext_ack *extack”…”�”}”(hjÑôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¯hjÉôubj)�”}”(hhh]”jl)�”}”(hŒ*extack for reporting useful error messages”h]”hŒ*extack for reporting useful error messages”…”�”}”(hjèôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jäôh´M¯hjåôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jäôh´M¯hjTôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8ôubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj õh]”hŒ Description”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M±hj8ôubjl)�”}”(hŒ¸Checks whether the PLCA and PHY configuration are consistent and it is safe to enable PLCA. Returns 0 on success or a negative value if the PLCA or PHY configuration is not consistent.”h]”hŒ¸Checks whether the PLCA and PHY configuration are consistent and it is safe to enable PLCA. Returns 0 on success or a negative value if the PLCA or PHY configuration is not consistent.”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M°hj8ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phy_ethtool_set_plca_cfg (C function)”Œc.phy_ethtool_set_plca_cfg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ}int phy_ethtool_set_plca_cfg (struct phy_device *phydev, const struct phy_plca_cfg *plca_cfg, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒ|int phy_ethtool_set_plca_cfg(struct phy_device *phydev, const struct phy_plca_cfg *plca_cfg, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjOõh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjKõh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjKõh²hh³j]õh´MÉubj3)�”}”(hŒphy_ethtool_set_plca_cfg”h]”j9)�”}”(hŒphy_ethtool_set_plca_cfg”h]”hŒphy_ethtool_set_plca_cfg”…”�”}”(hjpõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlõubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjKõh²hh³j]õh´MÉubj¡ )�”}”(hŒ`(struct phy_device *phydev, const struct phy_plca_cfg *plca_cfg, struct netlink_ext_ack *extack)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŒõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆõubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjªõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¬õŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jrõsbŒc.phy_ethtool_set_plca_cfg”†”asbuh1hhjˆõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊõh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjˆõubj )�”}”(hj h]”hŒ*”…”�”}”(hjØõh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjˆõubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjåõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj„õubj§ )�”}”(hŒ#const struct phy_plca_cfg *plca_cfg”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjþõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjúõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjúõubj)�”}”(hjh]”hŒstruct”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjúõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjúõubh)�”}”(hhh]”j9)�”}”(hŒ phy_plca_cfg”h]”hŒ phy_plca_cfg”…”�”}”(hj7öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j9öŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÆõŒc.phy_ethtool_set_plca_cfg”†”asbuh1hhjúõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjúõubj )�”}”(hj h]”hŒ*”…”�”}”(hjcöh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjúõubj9)�”}”(hŒplca_cfg”h]”hŒplca_cfg”…”�”}”(hjpöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj„õubj§ )�”}”(hŒstruct netlink_ext_ack *extack”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‰öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–öh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…öubh)�”}”(hhh]”j9)�”}”(hŒnetlink_ext_ack”h]”hŒnetlink_ext_ack”…”�”}”(hj§öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j©öŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÆõŒc.phy_ethtool_set_plca_cfg”†”asbuh1hhj…öubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅöh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…öubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓöh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj…öubj9)�”}”(hŒextack”h]”hŒextack”…”�”}”(hjàöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj„õubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjKõh²hh³j]õh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjGõh²hh³j]õh´MÉubah}”(h]”jBõah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j]õh´MÉhjDõh²hubjg)�”}”(hhh]”jl)�”}”(hŒSet PLCA RS configuration”h]”hŒSet PLCA RS configuration”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÉhj÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjDõh²hh³j]õh´MÉubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j"÷jŒj"÷j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXY**Parameters** ``struct phy_device *phydev`` the phy_device struct ``const struct phy_plca_cfg *plca_cfg`` new PLCA configuration to apply ``struct netlink_ext_ack *extack`` extack for reporting useful error messages **Description** Sets the PLCA configuration in the PHY. Return 0 on success or a negative value if an error occurred.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj,÷h]”hŒ Parameters”…”�”}”(hj.÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÍhj&÷ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjK÷h]”hŒstruct phy_device *phydev”…”�”}”(hjM÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjI÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÊhjE÷ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjd÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`÷h´MÊhja÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`÷h´MÊhjB÷ubjä)�”}”(hŒH``const struct phy_plca_cfg *plca_cfg`` new PLCA configuration to apply ”h]”(jê)�”}”(hŒ'``const struct phy_plca_cfg *plca_cfg``”h]”jð)�”}”(hj„÷h]”hŒ#const struct phy_plca_cfg *plca_cfg”…”�”}”(hj†÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MËhj~÷ubj)�”}”(hhh]”jl)�”}”(hŒnew PLCA configuration to apply”h]”hŒnew PLCA configuration to apply”…”�”}”(hj�÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™÷h´MËhjš÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™÷h´MËhjB÷ubjä)�”}”(hŒN``struct netlink_ext_ack *extack`` extack for reporting useful error messages ”h]”(jê)�”}”(hŒ"``struct netlink_ext_ack *extack``”h]”jð)�”}”(hj½÷h]”hŒstruct netlink_ext_ack *extack”…”�”}”(hj¿÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÌhj·÷ubj)�”}”(hhh]”jl)�”}”(hŒ*extack for reporting useful error messages”h]”hŒ*extack for reporting useful error messages”…”�”}”(hjÖ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒ÷h´MÌhjÓ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒ÷h´MÌhjB÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&÷ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjø÷h]”hŒ Description”…”�”}”(hjú÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjö÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÎhj&÷ubjl)�”}”(hŒeSets the PLCA configuration in the PHY. Return 0 on success or a negative value if an error occurred.”h]”hŒeSets the PLCA configuration in the PHY. Return 0 on success or a negative value if an error occurred.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MÍhj&÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(phy_ethtool_get_plca_status (C function)”Œc.phy_ethtool_get_plca_status”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\int phy_ethtool_get_plca_status (struct phy_device *phydev, struct phy_plca_status *plca_st)”h]”j )�”}”(hŒ[int phy_ethtool_get_plca_status(struct phy_device *phydev, struct phy_plca_status *plca_st)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj=øh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj9øh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9øh²hh³jKøh´M.ubj3)�”}”(hŒphy_ethtool_get_plca_status”h]”j9)�”}”(hŒphy_ethtool_get_plca_status”h]”hŒphy_ethtool_get_plca_status”…”�”}”(hj^øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZøubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj9øh²hh³jKøh´M.ubj¡ )�”}”(hŒ<(struct phy_device *phydev, struct phy_plca_status *plca_st)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjzøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvøubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj˜øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jšøŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j`øsbŒc.phy_ethtool_get_plca_status”†”asbuh1hhjvøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸øh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvøubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆøh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjvøubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÓøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjrøubj§ )�”}”(hŒstruct phy_plca_status *plca_st”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjìøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèøubh)�”}”(hhh]”j9)�”}”(hŒphy_plca_status”h]”hŒphy_plca_status”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ùŒmodname”NŒ classname”Njå jè )�”}”jë ]”j´øŒc.phy_ethtool_get_plca_status”†”asbuh1hhjèøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèøubj )�”}”(hj h]”hŒ*”…”�”}”(hj6ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjèøubj9)�”}”(hŒplca_st”h]”hŒplca_st”…”�”}”(hjCùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjrøubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj9øh²hh³jKøh´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj5øh²hh³jKøh´M.ubah}”(h]”j0øah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jKøh´M.hj2øh²hubjg)�”}”(hhh]”jl)�”}”(hŒGet PLCA RS status information”h]”hŒGet PLCA RS status information”…”�”}”(hjmùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M.hjjùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj2øh²hh³jKøh´M.ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j…ùjŒj…ùj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` the phy_device struct ``struct phy_plca_status *plca_st`` where to store the retrieved status information **Description** Retrieve the PLCA status information from the PHY. Return 0 on success or a negative value if an error occurred.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�ùh]”hŒ Parameters”…”�”}”(hj‘ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M2hj‰ùubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj®ùh]”hŒstruct phy_device *phydev”…”�”}”(hj°ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M/hj¨ùubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjÇùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÃùh´M/hjÄùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃùh´M/hj¥ùubjä)�”}”(hŒT``struct phy_plca_status *plca_st`` where to store the retrieved status information ”h]”(jê)�”}”(hŒ#``struct phy_plca_status *plca_st``”h]”jð)�”}”(hjçùh]”hŒstruct phy_plca_status *plca_st”…”�”}”(hjéùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjåùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M0hjáùubj)�”}”(hhh]”jl)�”}”(hŒ/where to store the retrieved status information”h]”hŒ/where to store the retrieved status information”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüùh´M0hjýùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjáùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jüùh´M0hj¥ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‰ùubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj"úh]”hŒ Description”…”�”}”(hj$úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj úubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M2hj‰ùubjl)�”}”(hŒpRetrieve the PLCA status information from the PHY. Return 0 on success or a negative value if an error occurred.”h]”hŒpRetrieve the PLCA status information from the PHY. Return 0 on success or a negative value if an error occurred.”…”�”}”(hj8úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M1hj‰ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_check_link_status (C function)”Œc.phy_check_link_status”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5int phy_check_link_status (struct phy_device *phydev)”h]”j )�”}”(hŒ4int phy_check_link_status(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjgúh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjcúh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjcúh²hh³juúh´Mèubj3)�”}”(hŒphy_check_link_status”h]”j9)�”}”(hŒphy_check_link_status”h]”hŒphy_check_link_status”…”�”}”(hjˆúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„úubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjcúh²hh³juúh´Mèubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¤úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj úubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÂúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÄúŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŠúsbŒc.phy_check_link_status”†”asbuh1hhj úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj úubj )�”}”(hj h]”hŒ*”…”�”}”(hjðúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj úubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjýúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœúubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjcúh²hh³juúh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj_úh²hh³juúh´Mèubah}”(h]”jZúah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³juúh´Mèhj\úh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+check link status and set state accordingly”h]”hŒ+check link status and set state accordingly”…”�”}”(hj'ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mèhj$ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj\úh²hh³juúh´Mèubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j?ûjŒj?ûj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ¯**Parameters** ``struct phy_device *phydev`` the phy_device struct **Description** Check for link and whether autoneg was triggered / is running and set state accordingly”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjIûh]”hŒ Parameters”…”�”}”(hjKûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjGûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MìhjCûubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjhûh]”hŒstruct phy_device *phydev”…”�”}”(hjjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjfûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Méhjbûubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j}ûh´Méhj~ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}ûh´Méhj_ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjCûubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj£ûh]”hŒ Description”…”�”}”(hj¥ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¡ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MëhjCûubjl)�”}”(hŒWCheck for link and whether autoneg was triggered / is running and set state accordingly”h]”hŒWCheck for link and whether autoneg was triggered / is running and set state accordingly”…”�”}”(hj¹ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MëhjCûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_stop_machine (C function)”Œc.phy_stop_machine”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void phy_stop_machine (struct phy_device *phydev)”h]”j )�”}”(hŒ0void phy_stop_machine(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjäûh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäûh²hh³jöûh´M)ubj3)�”}”(hŒphy_stop_machine”h]”j9)�”}”(hŒphy_stop_machine”h]”hŒphy_stop_machine”…”�”}”(hj üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjäûh²hh³jöûh´M)ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj%üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2üh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!üubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjCüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jEüŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j üsbŒc.phy_stop_machine”†”asbuh1hhj!üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcüh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!üubj )�”}”(hj h]”hŒ*”…”�”}”(hjqüh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!üubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj~üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjüubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjäûh²hh³jöûh´M)ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjàûh²hh³jöûh´M)ubah}”(h]”jÛûah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jöûh´M)hjÝûh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#stop the PHY state machine tracking”h]”hŒ#stop the PHY state machine tracking”…”�”}”(hj¨üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M)hj¥üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÝûh²hh³jöûh´M)ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÀüjŒjÀüj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒé**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Stops the state machine delayed workqueue, sets the state to UP (unless it wasn't up yet). This function must be called BEFORE phy_detach.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÊüh]”hŒ Parameters”…”�”}”(hjÌüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈüubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M-hjÄüubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjéüh]”hŒstruct phy_device *phydev”…”�”}”(hjëüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjçüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M*hjãüubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jþüh´M*hjÿüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþüh´M*hjàüubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄüubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj$ýh]”hŒ Description”…”�”}”(hj&ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj"ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M,hjÄüubjß)�”}”(hhh]”jä)�”}”(hŒŠStops the state machine delayed workqueue, sets the state to UP (unless it wasn't up yet). This function must be called BEFORE phy_detach.”h]”(jê)�”}”(hŒ3Stops the state machine delayed workqueue, sets the”h]”hŒ3Stops the state machine delayed workqueue, sets the”…”�”}”(hjAýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M-hj=ýubj)�”}”(hhh]”jl)�”}”(hŒVstate to UP (unless it wasn't up yet). This function must be called BEFORE phy_detach.”h]”hŒXstate to UP (unless it wasn’t up yet). This function must be called BEFORE phy_detach.”…”�”}”(hjSýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jOýh´M-hjPýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOýh´M-hj:ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_write_barrier (C function)”Œc.phy_write_barrier”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2void phy_write_barrier (struct phy_device *phydev)”h]”j )�”}”(hŒ1void phy_write_barrier(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj“ýh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�ýh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ýh²hh³j¡ýh´M\ubj3)�”}”(hŒphy_write_barrier”h]”j9)�”}”(hŒphy_write_barrier”h]”hŒphy_write_barrier”…”�”}”(hj´ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°ýubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�ýh²hh³j¡ýh´M\ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÐýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌýubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjîýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jðýŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¶ýsbŒc.phy_write_barrier”†”asbuh1hhjÌýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌýubj )�”}”(hj h]”hŒ*”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÌýubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj)þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÈýubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�ýh²hh³j¡ýh´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‹ýh²hh³j¡ýh´M\ubah}”(h]”j†ýah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¡ýh´M\hjˆýh²hubjg)�”}”(hhh]”jl)�”}”(hŒ3ensure the last write completed for this PHY device”h]”hŒ3ensure the last write completed for this PHY device”…”�”}”(hjSþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M\hjPþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjˆýh²hh³j¡ýh´M\ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jkþjŒjkþj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** MDIO bus controllers are not required to wait for write transactions to complete before returning. Calling this function ensures that the previous write has completed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjuþh]”hŒ Parameters”…”�”}”(hjwþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsþubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M`hjoþubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj”þh]”hŒstruct phy_device *phydev”…”�”}”(hj–þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M]hjŽþubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj­þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©þh´M]hjªþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©þh´M]hj‹þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjoþubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÏþh]”hŒ Description”…”�”}”(hjÑþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍþubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M_hjoþubjl)�”}”(hŒ§MDIO bus controllers are not required to wait for write transactions to complete before returning. Calling this function ensures that the previous write has completed.”h]”hŒ§MDIO bus controllers are not required to wait for write transactions to complete before returning. Calling this function ensures that the previous write has completed.”…”�”}”(hjåþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M^hjoþubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_disable_interrupts (C function)”Œc.phy_disable_interrupts”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6int phy_disable_interrupts (struct phy_device *phydev)”h]”j )�”}”(hŒ5int phy_disable_interrupts(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÿh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿh²hh³j"ÿh´Mlubj3)�”}”(hŒphy_disable_interrupts”h]”j9)�”}”(hŒphy_disable_interrupts”h]”hŒphy_disable_interrupts”…”�”}”(hj5ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1ÿubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÿh²hh³j"ÿh´Mlubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjQÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMÿubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjoÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jqÿŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j7ÿsbŒc.phy_disable_interrupts”†”asbuh1hhjMÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMÿubj )�”}”(hj h]”hŒ*”…”�”}”(hj�ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjMÿubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjªÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjIÿubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÿh²hh³j"ÿh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ÿh²hh³j"ÿh´Mlubah}”(h]”jÿah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j"ÿh´Mlhj ÿh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Disable the PHY interrupts from the PHY side”h]”hŒ,Disable the PHY interrupts from the PHY side”…”�”}”(hjÔÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MlhjÑÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ÿh²hh³j"ÿh´Mlubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jìÿjŒjìÿj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjöÿh]”hŒ Parameters”…”�”}”(hjøÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjôÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mphjðÿubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjh]”hŒstruct phy_device *phydev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mrhjubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mmhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*h´Mrhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjðÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_interrupt (C function)”Œc.phy_interrupt”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2irqreturn_t phy_interrupt (int irq, void *phy_dat)”h]”j )�”}”(hŒ1irqreturn_t phy_interrupt(int irq, void *phy_dat)”h]”(h)�”}”(hhh]”j9)�”}”(hŒ irqreturn_t”h]”hŒ irqreturn_t”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jtŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ phy_interrupt”sbŒc.phy_interrupt”†”asbuh1hhjkh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjkh²hh³j“h´M}ubj3)�”}”(hŒ phy_interrupt”h]”j9)�”}”(hj�h]”hŒ phy_interrupt”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjkh²hh³j“h´M}ubj¡ )�”}”(hŒ(int irq, void *phy_dat)”h]”(j§ )�”}”(hŒint irq”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj½ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj½ubj9)�”}”(hŒirq”h]”hŒirq”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¹ubj§ )�”}”(hŒ void *phy_dat”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjòubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjòubj9)�”}”(hŒphy_dat”h]”hŒphy_dat”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjkh²hh³j“h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjgh²hh³j“h´M}ubah}”(h]”jbah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j“h´M}hjdh²hubjg)�”}”(hhh]”jl)�”}”(hŒPHY interrupt handler”h]”hŒPHY interrupt handler”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M}hjFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjdh²hh³j“h´M}ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jajŒjaj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ{**Parameters** ``int irq`` interrupt line ``void *phy_dat`` phy_device pointer **Description** Handle PHY interrupt”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjkh]”hŒ Parameters”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M�hjeubjß)�”}”(hhh]”(jä)�”}”(hŒ``int irq`` interrupt line ”h]”(jê)�”}”(hŒ ``int irq``”h]”jð)�”}”(hjŠh]”hŒint irq”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M~hj„ubj)�”}”(hhh]”jl)�”}”(hŒinterrupt line”h]”hŒinterrupt line”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸh´M~hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸh´M~hj�ubjä)�”}”(hŒ%``void *phy_dat`` phy_device pointer ”h]”(jê)�”}”(hŒ``void *phy_dat``”h]”jð)�”}”(hjÃh]”hŒ void *phy_dat”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mhj½ubj)�”}”(hhh]”jl)�”}”(hŒphy_device pointer”h]”hŒphy_device pointer”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØh´MhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØh´Mhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjeubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjþh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M�hjeubjl)�”}”(hŒHandle PHY interrupt”h]”hŒHandle PHY interrupt”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M�hjeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_enable_interrupts (C function)”Œc.phy_enable_interrupts”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5int phy_enable_interrupts (struct phy_device *phydev)”h]”j )�”}”(hŒ4int phy_enable_interrupts(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj?h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?h²hh³jQh´M¦ubj3)�”}”(hŒphy_enable_interrupts”h]”j9)�”}”(hŒphy_enable_interrupts”h]”hŒphy_enable_interrupts”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj?h²hh³jQh´M¦ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jfsbŒc.phy_enable_interrupts”†”asbuh1hhj|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj|ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjxubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj?h²hh³jQh´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj;h²hh³jQh´M¦ubah}”(h]”j6ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQh´M¦hj8h²hubjg)�”}”(hhh]”jl)�”}”(hŒ'Enable the interrupts from the PHY side”h]”hŒ'Enable the interrupts from the PHY side”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¦hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8h²hh³jQh´M¦ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%h]”hŒ Parameters”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mªhjubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjDh]”hŒstruct phy_device *phydev”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¬hj>ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M§hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYh´M¬hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_update_stats (C function)”Œc.phy_update_stats”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0int phy_update_stats (struct phy_device *phydev)”h]”j )�”}”(hŒ/int phy_update_stats(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjšh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšh²hh³j¬h´M¯ubj3)�”}”(hŒphy_update_stats”h]”j9)�”}”(hŒphy_update_stats”h]”hŒphy_update_stats”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjšh²hh³j¬h´M¯ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jûŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÁsbŒc.phy_update_stats”†”asbuh1hhj×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×ubj )�”}”(hj h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj×ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÓubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjšh²hh³j¬h´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj–h²hh³j¬h´M¯ubah}”(h]”j‘ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¬h´M¯hj“h²hubjg)�”}”(hhh]”jl)�”}”(hŒ*Update PHY device statistics if supported.”h]”hŒ*Update PHY device statistics if supported.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¯hj[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj“h²hh³j¬h´M¯ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jvjŒjvj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX3**Parameters** ``struct phy_device *phydev`` Pointer to the PHY device structure. **Description** If the PHY driver provides an update_stats callback, this function invokes it to update the PHY statistics. If not, it returns 0. **Return** 0 on success, or a negative error code if the callback fails.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj€h]”hŒ Parameters”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M³hjzubjß)�”}”(hhh]”jä)�”}”(hŒC``struct phy_device *phydev`` Pointer to the PHY device structure. ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjŸh]”hŒstruct phy_device *phydev”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M°hj™ubj)�”}”(hhh]”jl)�”}”(hŒ$Pointer to the PHY device structure.”h]”hŒ$Pointer to the PHY device structure.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´h´M°hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´h´M°hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjzubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÚh]”hŒ Description”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M²hjzubjl)�”}”(hŒ�If the PHY driver provides an update_stats callback, this function invokes it to update the PHY statistics. If not, it returns 0.”h]”hŒ�If the PHY driver provides an update_stats callback, this function invokes it to update the PHY statistics. If not, it returns 0.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M±hjzubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M´hjzubjl)�”}”(hŒ=0 on success, or a negative error code if the callback fails.”h]”hŒ=0 on success, or a negative error code if the callback fails.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mµhjzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phy_get_next_update_time (C function)”Œc.phy_get_next_update_time”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAunsigned int phy_get_next_update_time (struct phy_device *phydev)”h]”j )�”}”(hŒ@unsigned int phy_get_next_update_time(struct phy_device *phydev)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjBh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBh²hh³jTh´MëubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjBh²hh³jTh´Mëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBh²hh³jTh´Mëubj3)�”}”(hŒphy_get_next_update_time”h]”j9)�”}”(hŒphy_get_next_update_time”h]”hŒphy_get_next_update_time”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjBh²hh³jTh´Mëubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¿Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j…sbŒc.phy_get_next_update_time”†”asbuh1hhj›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›ubj )�”}”(hj h]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj›ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj—ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjBh²hh³jTh´Mëubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj>h²hh³jTh´Mëubah}”(h]”j9ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jTh´Mëhj;h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Determine the next PHY update time”h]”hŒ"Determine the next PHY update time”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mëhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj;h²hh³jTh´Mëubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j:jŒj:j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX:**Parameters** ``struct phy_device *phydev`` Pointer to the phy_device structure **Description** This function queries the PHY driver to get the time for the next polling event. If the driver does not implement the callback, a default value is used. **Return** The time for the next polling event in jiffies”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjDh]”hŒ Parameters”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mïhj>ubjß)�”}”(hhh]”jä)�”}”(hŒB``struct phy_device *phydev`` Pointer to the phy_device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjch]”hŒstruct phy_device *phydev”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mìhj]ubj)�”}”(hhh]”jl)�”}”(hŒ#Pointer to the phy_device structure”h]”hŒ#Pointer to the phy_device structure”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxh´Mìhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxh´MìhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj>ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjžh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mîhj>ubjl)�”}”(hŒ˜This function queries the PHY driver to get the time for the next polling event. If the driver does not implement the callback, a default value is used.”h]”hŒ˜This function queries the PHY driver to get the time for the next polling event. If the driver does not implement the callback, a default value is used.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Míhj>ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÅh]”hŒReturn”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mñhj>ubjl)�”}”(hŒ.The time for the next polling event in jiffies”h]”hŒ.The time for the next polling event in jiffies”…”�”•}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mòhj>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_state_machine (C function)”Œc.phy_state_machine”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void phy_state_machine (struct work_struct *work)”h]”j )�”}”(hŒ0void phy_state_machine(struct work_struct *work)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Miubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³jh´Miubj3)�”}”(hŒphy_state_machine”h]”j9)�”}”(hŒphy_state_machine”h]”hŒphy_state_machine”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³jh´Miubj¡ )�”}”(hŒ(struct work_struct *work)”h]”j§ )�”}”(hŒstruct work_struct *work”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjCubh)�”}”(hhh]”j9)�”}”(hŒ work_struct”h]”hŒ work_struct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jgŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j-sbŒc.phy_state_machine”†”asbuh1hhjCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjCubj )�”}”(hj h]”hŒ*”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjCubj9)�”}”(hŒwork”h]”hŒwork”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj?ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³jh´Miubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³jh´Miubah}”(h]”jýah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´Mihjÿh²hubjg)�”}”(hhh]”jl)�”}”(hŒHandle the state machine”h]”hŒHandle the state machine”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´MihjÇh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÿh²hh³jh´Miubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jâjŒjâj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ]**Parameters** ``struct work_struct *work`` work_struct that describes the work to be done”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjìh]”hŒ Parameters”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mmhjæubjß)�”}”(hhh]”jä)�”}”(hŒK``struct work_struct *work`` work_struct that describes the work to be done”h]”(jê)�”}”(hŒ``struct work_struct *work``”h]”jð)�”}”(hj h]”hŒstruct work_struct *work”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mohjubj)�”}”(hhh]”jl)�”}”(hŒ.work_struct that describes the work to be done”h]”hŒ.work_struct that describes the work to be done”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´Mjhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Mohjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phy_ethtool_set_eee_noneg (C function)”Œc.phy_ethtool_set_eee_noneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\void phy_ethtool_set_eee_noneg (struct phy_device *phydev, const struct eee_config *old_cfg)”h]”j )�”}”(hŒ[void phy_ethtool_set_eee_noneg(struct phy_device *phydev, const struct eee_config *old_cfg)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjah²hh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M£ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjah²hh³jsh´M£ubj3)�”}”(hŒphy_ethtool_set_eee_noneg”h]”j9)�”}”(hŒphy_ethtool_set_eee_noneg”h]”hŒphy_ethtool_set_eee_noneg”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjah²hh³jsh´M£ubj¡ )�”}”(hŒ=(struct phy_device *phydev, const struct eee_config *old_cfg)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÂŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jˆsbŒc.phy_ethtool_set_eee_noneg”†”asbuh1hhjžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžubj )�”}”(hj h]”hŒ*”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjžubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjšubj§ )�”}”(hŒ const struct eee_config *old_cfg”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒ eee_config”h]”hŒ eee_config”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jO Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÜŒc.phy_ethtool_set_eee_noneg”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒold_cfg”h]”hŒold_cfg”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjah²hh³jsh´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj]h²hh³jsh´M£ubah}”(h]”jXah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jsh´M£hjZh²hubjg)�”}”(hhh]”jl)�”}”(hŒ7Adjusts MAC LPI configuration without PHY renegotiation”h]”hŒ7Adjusts MAC LPI configuration without PHY renegotiation”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M£hj­ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjZh²hh³jsh´M£ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÈ jŒjÈ j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct phy_device *phydev`` pointer to the target PHY device structure ``const struct eee_config *old_cfg`` pointer to the eee_config structure containing the old EEE settings **Description** This function updates the Energy Efficient Ethernet (EEE) configuration for cases where only the MAC's Low Power Idle (LPI) configuration changes, without triggering PHY renegotiation. It ensures that the MAC is properly informed of the new LPI settings by cycling the link down and up, which is necessary for the MAC to adopt the new configuration. This adjustment is done only if there is a change in the tx_lpi_enabled or tx_lpi_timer configuration.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÒ h]”hŒ Parameters”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M§hjÌ ubjß)�”}”(hhh]”(jä)�”}”(hŒI``struct phy_device *phydev`` pointer to the target PHY device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjñ h]”hŒstruct phy_device *phydev”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjï ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¥hjë ubj)�”}”(hhh]”jl)�”}”(hŒ*pointer to the target PHY device structure”h]”hŒ*pointer to the target PHY device structure”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M¥hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M¥hjè ubjä)�”}”(hŒi``const struct eee_config *old_cfg`` pointer to the eee_config structure containing the old EEE settings ”h]”(jê)�”}”(hŒ$``const struct eee_config *old_cfg``”h]”jð)�”}”(hj* h]”hŒ const struct eee_config *old_cfg”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¦hj$ ubj)�”}”(hhh]”jl)�”}”(hŒCpointer to the eee_config structure containing the old EEE settings”h]”hŒCpointer to the eee_config structure containing the old EEE settings”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j? h´M¦hj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j? h´M¦hjè ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌ ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hje h]”hŒ Description”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M¨hjÌ ubjl)�”}”(hXÄThis function updates the Energy Efficient Ethernet (EEE) configuration for cases where only the MAC's Low Power Idle (LPI) configuration changes, without triggering PHY renegotiation. It ensures that the MAC is properly informed of the new LPI settings by cycling the link down and up, which is necessary for the MAC to adopt the new configuration. This adjustment is done only if there is a change in the tx_lpi_enabled or tx_lpi_timer configuration.”h]”hXÆThis function updates the Energy Efficient Ethernet (EEE) configuration for cases where only the MAC’s Low Power Idle (LPI) configuration changes, without triggering PHY renegotiation. It ensures that the MAC is properly informed of the new LPI settings by cycling the link down and up, which is necessary for the MAC to adopt the new configuration. This adjustment is done only if there is a change in the tx_lpi_enabled or tx_lpi_timer configuration.”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒV/var/lib/git/docbuild/linux/Documentation/networking/kapi:116: ./drivers/net/phy/phy.c”h´M§hjÌ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_speed_to_str (C function)”Œc.phy_speed_to_str”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)const char * phy_speed_to_str (int speed)”h]”j )�”}”(hŒ'const char *phy_speed_to_str(int speed)”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦ h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦ h²hh³j· h´KubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¦ h²hh³j· h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦ h²hh³j· h´Kubj )�”}”(hj h]”hŒ*”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦ h²hh³j· h´Kubj3)�”}”(hŒphy_speed_to_str”h]”j9)�”}”(hŒphy_speed_to_str”h]”hŒphy_speed_to_str”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¦ h²hh³j· h´Kubj¡ )�”}”(hŒ (int speed)”h]”j§ )�”}”(hŒ int speed”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj9)�”}”(hŒspeed”h]”hŒspeed”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¦ h²hh³j· h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¢ h²hh³j· h´Kubah}”(h]”j� ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j· h´KhjŸ h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Return a string representing the PHY link speed”h]”hŒ/Return a string representing the PHY link speed”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KhjR h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŸ h²hh³j· h´Kubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jm jŒjm j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ1**Parameters** ``int speed`` Speed of the link”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjw h]”hŒ Parameters”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhju ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Khjq ubjß)�”}”(hhh]”jä)�”}”(hŒ``int speed`` Speed of the link”h]”(jê)�”}”(hŒ ``int speed``”h]”jð)�”}”(hj– h]”hŒ int speed”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj” ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Khj� ubj)�”}”(hhh]”jl)�”}”(hŒSpeed of the link”h]”hŒSpeed of the link”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Khj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j« h´Khj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjq ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_duplex_to_str (C function)”Œc.phy_duplex_to_str”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4const char * phy_duplex_to_str (unsigned int duplex)”h]”j )�”}”(hŒ2const char *phy_duplex_to_str(unsigned int duplex)”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjì h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjì h²hh³jý h´KHubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjì h²hh³jý h´KHubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjì h²hh³jý h´KHubj )�”}”(hj h]”hŒ*”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjì h²hh³jý h´KHubj3)�”}”(hŒphy_duplex_to_str”h]”j9)�”}”(hŒphy_duplex_to_str”h]”hŒphy_duplex_to_str”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5 ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjì h²hh³jý h´KHubj¡ )�”}”(hŒ(unsigned int duplex)”h]”j§ )�”}”(hŒunsigned int duplex”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjQ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjQ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ ubj9)�”}”(hŒduplex”h]”hŒduplex”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjM ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjì h²hh³jý h´KHubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjè h²hh³jý h´KHubah}”(h]”jã ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jý h´KHhjå h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Return string describing the duplex”h]”hŒ#Return string describing the duplex”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KHhj´ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjå h²hh³jý h´KHubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÏ jŒjÏ j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒD**Parameters** ``unsigned int duplex`` Duplex setting to describe”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÙ h]”hŒ Parameters”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KLhjÓ ubjß)�”}”(hhh]”jä)�”}”(hŒ2``unsigned int duplex`` Duplex setting to describe”h]”(jê)�”}”(hŒ``unsigned int duplex``”h]”jð)�”}”(hjø h]”hŒunsigned int duplex”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjö ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KNhjò ubj)�”}”(hhh]”jl)�”}”(hŒDuplex setting to describe”h]”hŒDuplex setting to describe”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KJhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´KNhjï ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÓ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phy_rate_matching_to_str (C function)”Œc.phy_rate_matching_to_str”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9const char * phy_rate_matching_to_str (int rate_matching)”h]”j )�”}”(hŒ7const char *phy_rate_matching_to_str(int rate_matching)”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KYubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjN h²hh³j_ h´KYubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjN h²hh³j_ h´KYubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjN h²hh³j_ h´KYubj )�”}”(hj h]”hŒ*”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjN h²hh³j_ h´KYubj3)�”}”(hŒphy_rate_matching_to_str”h]”j9)�”}”(hŒphy_rate_matching_to_str”h]”hŒphy_rate_matching_to_str”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj— ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjN h²hh³j_ h´KYubj¡ )�”}”(hŒ(int rate_matching)”h]”j§ )�”}”(hŒint rate_matching”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj³ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³ ubj9)�”}”(hŒ rate_matching”h]”hŒ rate_matching”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯ ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjN h²hh³j_ h´KYubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjJ h²hh³j_ h´KYubah}”(h]”jE ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j_ h´KYhjG h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Return a string describing the rate matching”h]”hŒ,Return a string describing the rate matching”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KYhjú h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjG h²hh³j_ h´KYubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒI**Parameters** ``int rate_matching`` Type of rate matching to describe”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´K]hjubjß)�”}”(hhh]”jä)�”}”(hŒ7``int rate_matching`` Type of rate matching to describe”h]”(jê)�”}”(hŒ``int rate_matching``”h]”jð)�”}”(hj>h]”hŒint rate_matching”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´K_hj8ubj)�”}”(hhh]”jl)�”}”(hŒ!Type of rate matching to describe”h]”hŒ!Type of rate matching to describe”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´K[hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jSh´K_hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ,phy_fix_phy_mode_for_mac_delays (C function)”Œ!c.phy_fix_phy_mode_for_mac_delays”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒiphy_interface_t phy_fix_phy_mode_for_mac_delays (phy_interface_t interface, bool mac_txid, bool mac_rxid)”h]”j )�”}”(hŒhphy_interface_t phy_fix_phy_mode_for_mac_delays(phy_interface_t interface, bool mac_txid, bool mac_rxid)”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œphy_fix_phy_mode_for_mac_delays”sbŒ!c.phy_fix_phy_mode_for_mac_delays”†”asbuh1hhj”h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Knubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”h²hh³j¼h´Knubj3)�”}”(hŒphy_fix_phy_mode_for_mac_delays”h]”j9)�”}”(hj¹h]”hŒphy_fix_phy_mode_for_mac_delays”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj”h²hh³j¼h´Knubj¡ )�”}”(hŒ9(phy_interface_t interface, bool mac_txid, bool mac_rxid)”h]”(j§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jïŒmodname”NŒ classname”Njå jè )�”}”jë ]”j·Œ!c.phy_fix_phy_mode_for_mac_delays”†”asbuh1hhjæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâubj§ )�”}”(hŒ bool mac_txid”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.ubj9)�”}”(hŒmac_txid”h]”hŒmac_txid”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâubj§ )�”}”(hŒ bool mac_rxid”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjbubj9)�”}”(hŒmac_rxid”h]”hŒmac_rxid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj”h²hh³j¼h´Knubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j¼h´Knubah}”(h]”j‹ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¼h´Knhj�h²hubjg)�”}”(hhh]”jl)�”}”(hŒQConvenience function for fixing PHY mode based on whether mac adds internal delay”h]”hŒQConvenience function for fixing PHY mode based on whether mac adds internal delay”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Knhj¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�h²hh³j¼h´Knubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÃjŒjÃj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX6**Parameters** ``phy_interface_t interface`` The current interface mode of the port ``bool mac_txid`` True if the mac adds internal tx delay ``bool mac_rxid`` True if the mac adds internal rx delay **Return** fixed PHY mode, or PHY_INTERFACE_MODE_NA if the interface can not apply the internal delay”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÍh]”hŒ Parameters”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KrhjÇubjß)�”}”(hhh]”(jä)�”}”(hŒE``phy_interface_t interface`` The current interface mode of the port ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjìh]”hŒphy_interface_t interface”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kqhjæubj)�”}”(hhh]”jl)�”}”(hŒ&The current interface mode of the port”h]”hŒ&The current interface mode of the port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Kqhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Kqhjãubjä)�”}”(hŒ9``bool mac_txid`` True if the mac adds internal tx delay ”h]”(jê)�”}”(hŒ``bool mac_txid``”h]”jð)�”}”(hj%h]”hŒ bool mac_txid”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Krhjubj)�”}”(hhh]”jl)�”}”(hŒ&True if the mac adds internal tx delay”h]”hŒ&True if the mac adds internal tx delay”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:h´Krhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:h´Krhjãubjä)�”}”(hŒ9``bool mac_rxid`` True if the mac adds internal rx delay ”h]”(jê)�”}”(hŒ``bool mac_rxid``”h]”jð)�”}”(hj^h]”hŒ bool mac_rxid”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KshjXubj)�”}”(hhh]”jl)�”}”(hŒ&True if the mac adds internal rx delay”h]”hŒ&True if the mac adds internal rx delay”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsh´Kshjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsh´Kshjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj™h]”hŒReturn”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KuhjÇubjl)�”}”(hŒZfixed PHY mode, or PHY_INTERFACE_MODE_NA if the interface can not apply the internal delay”h]”hŒZfixed PHY mode, or PHY_INTERFACE_MODE_NA if the interface can not apply the internal delay”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KuhjÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phy_interface_num_ports (C function)”Œc.phy_interface_num_ports”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7int phy_interface_num_ports (phy_interface_t interface)”h]”j )�”}”(hŒ6int phy_interface_num_ports(phy_interface_t interface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÚh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´K™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚh²hh³jìh´K™ubj3)�”}”(hŒphy_interface_num_ports”h]”j9)�”}”(hŒphy_interface_num_ports”h]”hŒphy_interface_num_ports”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÚh²hh³jìh´K™ubj¡ )�”}”(hŒ(phy_interface_t interface)”h]”j§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.phy_interface_num_ports”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÚh²hh³jìh´K™ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÖh²hh³jìh´K™ubah}”(h]”jÑah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jìh´K™hjÓh²hubjg)�”}”(hhh]”jl)�”}”(hŒˆReturn the number of links that can be carried by a given MAC-PHY physical link. Returns 0 if this is unknown, the number of links else.”h]”hŒˆReturn the number of links that can be carried by a given MAC-PHY physical link. Returns 0 if this is unknown, the number of links else.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´K™hjsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÓh²hh³jìh´K™ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŽjŒjŽj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒe**Parameters** ``phy_interface_t interface`` The interface mode we want to get the number of ports”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj˜h]”hŒ Parameters”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´K�hj’ubjß)�”}”(hhh]”jä)�”}”(hŒS``phy_interface_t interface`` The interface mode we want to get the number of ports”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj·h]”hŒphy_interface_t interface”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KŸhj±ubj)�”}”(hhh]”jl)�”}”(hŒ5The interface mode we want to get the number of ports”h]”hŒ5The interface mode we want to get the number of ports”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´K�hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌh´KŸhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_set_max_speed (C function)”Œc.phy_set_max_speed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAvoid phy_set_max_speed (struct phy_device *phydev, u32 max_speed)”h]”j )�”}”(hŒ@void phy_set_max_speed(struct phy_device *phydev, u32 max_speed)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj h²hh³jh´Kßubj3)�”}”(hŒphy_set_max_speed”h]”j9)�”}”(hŒphy_set_max_speed”h]”hŒphy_set_max_speed”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj h²hh³jh´Kßubj¡ )�”}”(hŒ*(struct phy_device *phydev, u32 max_speed)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jnŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j4sbŒc.phy_set_max_speed”†”asbuh1hhjJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJubj )�”}”(hj h]”hŒ*”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjJubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFubj§ )�”}”(hŒ u32 max_speed”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÅŒmodname”NŒ classname”Njå jè )�”}”jë ]”jˆŒc.phy_set_max_speed”†”asbuh1hhj¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼ubj9)�”}”(hŒ max_speed”h]”hŒ max_speed”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjFubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj h²hh³jh´Kßubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj h²hh³jh´Kßubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´Kßhjh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Set the maximum speed the PHY should support”h]”hŒ,Set the maximum speed the PHY should support”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kßhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³jh´Kßubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j1jŒj1j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXB**Parameters** ``struct phy_device *phydev`` The phy_device struct ``u32 max_speed`` Maximum speed **Description** The PHY might be more capable than the MAC. For example a Fast Ethernet is connected to a 1G PHY. This function allows the MAC to indicate its maximum speed, and so limit what the PHY will advertise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj;h]”hŒ Parameters”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kãhj5ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjZh]”hŒstruct phy_device *phydev”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´KáhjTubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³joh´Káhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³joh´KáhjQubjä)�”}”(hŒ ``u32 max_speed`` Maximum speed ”h]”(jê)�”}”(hŒ``u32 max_speed``”h]”jð)�”}”(hj“h]”hŒ u32 max_speed”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kâhj�ubj)�”}”(hhh]”jl)�”}”(hŒ Maximum speed”h]”hŒ Maximum speed”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨h´Kâhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨h´KâhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj5ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÎh]”hŒ Description”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kähj5ubjl)�”}”(hŒÇThe PHY might be more capable than the MAC. For example a Fast Ethernet is connected to a 1G PHY. This function allows the MAC to indicate its maximum speed, and so limit what the PHY will advertise.”h]”hŒÇThe PHY might be more capable than the MAC. For example a Fast Ethernet is connected to a 1G PHY. This function allows the MAC to indicate its maximum speed, and so limit what the PHY will advertise.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Kãhj5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_resolve_aneg_pause (C function)”Œc.phy_resolve_aneg_pause”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void phy_resolve_aneg_pause (struct phy_device *phydev)”h]”j )�”}”(hŒ6void phy_resolve_aneg_pause(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j!h´M9ubj3)�”}”(hŒphy_resolve_aneg_pause”h]”j9)�”}”(hŒphy_resolve_aneg_pause”h]”hŒphy_resolve_aneg_pause”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³j!h´M9ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jpŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j6sbŒc.phy_resolve_aneg_pause”†”asbuh1hhjLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLubj )�”}”(hj h]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjLubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjHubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³j!h´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj h²hh³j!h´M9ubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j!h´M9hjh²hubjg)�”}”(hhh]”jl)�”}”(hŒDetermine pause autoneg results”h]”hŒDetermine pause autoneg results”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M9hjÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j!h´M9ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jëjŒjëj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒà**Parameters** ``struct phy_device *phydev`` The phy_device struct **Description** Once autoneg has completed the local pause settings can be resolved. Determine if pause and asymmetric pause should be used by the MAC.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjõh]”hŒ Parameters”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M=hjïubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjh]”hŒstruct phy_device *phydev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M;hjubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)h´M;hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)h´M;hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjïubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjOh]”hŒ Description”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M=hjïubjl)�”}”(hŒˆOnce autoneg has completed the local pause settings can be resolved. Determine if pause and asymmetric pause should be used by the MAC.”h]”hŒˆOnce autoneg has completed the local pause settings can be resolved. Determine if pause and asymmetric pause should be used by the MAC.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M<hjïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phy_resolve_aneg_linkmode (C function)”Œc.phy_resolve_aneg_linkmode”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:void phy_resolve_aneg_linkmode (struct phy_device *phydev)”h]”j )�”}”(hŒ9void phy_resolve_aneg_linkmode(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�h²hh³j¢h´MOubj3)�”}”(hŒphy_resolve_aneg_linkmode”h]”j9)�”}”(hŒphy_resolve_aneg_linkmode”h]”hŒphy_resolve_aneg_linkmode”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�h²hh³j¢h´MOubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·sbŒc.phy_resolve_aneg_linkmode”†”asbuh1hhjÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�h²hh³j¢h´MOubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒh²hh³j¢h´MOubah}”(h]”j‡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢h´MOhj‰h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,resolve the advertisements into PHY settings”h]”hŒ,resolve the advertisements into PHY settings”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MOhjQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰h²hh³j¢h´MOubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jljŒjlj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` The phy_device struct **Description** Resolve our and the link partner advertisements into their corresponding speed and duplex. If full duplex was negotiated, extract the pause mode from the link partner mask.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MShjpubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj•h]”hŒstruct phy_device *phydev”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MPhj�ubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªh´MPhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªh´MPhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÐh]”hŒ Description”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MRhjpubjl)�”}”(hŒ¬Resolve our and the link partner advertisements into their corresponding speed and duplex. If full duplex was negotiated, extract the pause mode from the link partner mask.”h]”hŒ¬Resolve our and the link partner advertisements into their corresponding speed and duplex. If full duplex was negotiated, extract the pause mode from the link partner mask.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MQhjpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_read_mmd (C function)”Œc.__phy_read_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEint __phy_read_mmd (struct phy_device *phydev, int devad, u32 regnum)”h]”j )�”}”(hŒDint __phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÌubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j#h´MÌubj3)�”}”(hŒ__phy_read_mmd”h]”j9)�”}”(hŒ__phy_read_mmd”h]”hŒ__phy_read_mmd”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³j#h´MÌubj¡ )�”}”(hŒ2(struct phy_device *phydev, int devad, u32 regnum)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jrŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j8sbŒc.__phy_read_mmd”†”asbuh1hhjNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNubj )�”}”(hj h]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjNubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjJubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÀubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjJubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jþŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŒŒc.__phy_read_mmd”†”asbuh1hhjõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjJubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³j#h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj h²hh³j#h´MÌubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j#h´MÌhj h²hubjg)�”}”(hhh]”jl)�”}”(hŒGConvenience function for reading a register from an MMD on a given PHY.”h]”hŒGConvenience function for reading a register from an MMD on a given PHY.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÌhjOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj h²hh³j#h´MÌubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjjŒjjj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒâ**Parameters** ``struct phy_device *phydev`` The phy_device struct ``int devad`` The MMD to read from (0..31) ``u32 regnum`` The register on the MMD to read (0..65535) **Description** Same rules as for __phy_read();”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjth]”hŒ Parameters”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÐhjnubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj“h]”hŒstruct phy_device *phydev”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÎhj�ubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨h´MÎhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨h´MÎhjŠubjä)�”}”(hŒ+``int devad`` The MMD to read from (0..31) ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjÌh]”hŒ int devad”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÏhjÆubj)�”}”(hhh]”jl)�”}”(hŒThe MMD to read from (0..31)”h]”hŒThe MMD to read from (0..31)”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jáh´MÏhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáh´MÏhjŠubjä)�”}”(hŒ:``u32 regnum`` The register on the MMD to read (0..65535) ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjh]”hŒ u32 regnum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÐhjÿubj)�”}”(hhh]”jl)�”}”(hŒ*The register on the MMD to read (0..65535)”h]”hŒ*The register on the MMD to read (0..65535)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MÐhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MÐhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjnubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj@h]”hŒ Description”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÒhjnubjl)�”}”(hŒSame rules as for __phy_read();”h]”hŒSame rules as for __phy_read();”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÑhjnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_read_mmd (C function)”Œc.phy_read_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCint phy_read_mmd (struct phy_device *phydev, int devad, u32 regnum)”h]”j )�”}”(hŒBint phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�h²hh³j“h´Mâubj3)�”}”(hŒ phy_read_mmd”h]”j9)�”}”(hŒ phy_read_mmd”h]”hŒ phy_read_mmd”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�h²hh³j“h´Mâubj¡ )�”}”(hŒ2(struct phy_device *phydev, int devad, u32 regnum)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jâŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¨sbŒc.phy_read_mmd”†”asbuh1hhj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¾ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjºubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjºubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jnŒmodname”NŒ classname”Njå jè )�”}”jë ]”jüŒc.phy_read_mmd”†”asbuh1hhjeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjºubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�h²hh³j“h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj}h²hh³j“h´Mâubah}”(h]”jxah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j“h´Mâhjzh²hubjg)�”}”(hhh]”jl)�”}”(hŒGConvenience function for reading a register from an MMD on a given PHY.”h]”hŒGConvenience function for reading a register from an MMD on a given PHY.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mâhj¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjzh²hh³j“h´Mâubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÚjŒjÚj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÍ**Parameters** ``struct phy_device *phydev`` The phy_device struct ``int devad`` The MMD to read from ``u32 regnum`` The register on the MMD to read **Description** Same rules as for phy_read();”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjäh]”hŒ Parameters”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MæhjÞubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjh]”hŒstruct phy_device *phydev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mähjýubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mähjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mähjúubjä)�”}”(hŒ#``int devad`` The MMD to read from ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj<h]”hŒ int devad”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Måhj6ubj)�”}”(hhh]”jl)�”}”(hŒThe MMD to read from”h]”hŒThe MMD to read from”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQh´MåhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQh´Måhjúubjä)�”}”(hŒ/``u32 regnum`` The register on the MMD to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjuh]”hŒ u32 regnum”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mæhjoubj)�”}”(hhh]”jl)�”}”(hŒThe register on the MMD to read”h]”hŒThe register on the MMD to read”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠh´Mæhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠh´Mæhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÞubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj°h]”hŒ Description”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MèhjÞubjl)�”}”(hŒSame rules as for phy_read();”h]”hŒSame rules as for phy_read();”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MçhjÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_write_mmd (C function)”Œc.__phy_write_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOint __phy_write_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒNint __phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjñh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjñh²hh³jh´M÷ubj3)�”}”(hŒ__phy_write_mmd”h]”j9)�”}”(hŒ__phy_write_mmd”h]”hŒ__phy_write_mmd”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjñh²hh³jh´M÷ubj¡ )�”}”(hŒ;(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.__phy_write_mmd”†”asbuh1hhj.ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.ubj )�”}”(hj h]”hŒ*”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj.ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj*ubj§ )�”}”(hŒ int devad”•h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj*ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÞŒmodname”NŒ classname”Njå jè )�”}”jë ]”jlŒc.__phy_write_mmd”†”asbuh1hhjÕubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÕubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj*ubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j&Œmodname”NŒ classname”Njå jè )�”}”jë ]”jlŒc.__phy_write_mmd”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj*ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjñh²hh³jh´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjíh²hh³jh´M÷ubah}”(h]”jèah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´M÷hjêh²hubjg)�”}”(hhh]”jl)�”}”(hŒEConvenience function for writing a register on an MMD on a given PHY.”h]”hŒEConvenience function for writing a register on an MMD on a given PHY.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M÷hjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjêh²hh³jh´M÷ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j’jŒj’j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒü**Parameters** ``struct phy_device *phydev`` The phy_device struct ``int devad`` The MMD to read from ``u32 regnum`` The register on the MMD to read ``u16 val`` value to write to **regnum** **Description** Same rules as for __phy_write();”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjœh]”hŒ Parameters”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mûhj–ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj»h]”hŒstruct phy_device *phydev”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mùhjµubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐh´MùhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐh´Mùhj²ubjä)�”}”(hŒ#``int devad`` The MMD to read from ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjôh]”hŒ int devad”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Múhjîubj)�”}”(hhh]”jl)�”}”(hŒThe MMD to read from”h]”hŒThe MMD to read from”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´Múhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´Múhj²ubjä)�”}”(hŒ/``u32 regnum`` The register on the MMD to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj-h]”hŒ u32 regnum”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mûhj'ubj)�”}”(hhh]”jl)�”}”(hŒThe register on the MMD to read”h]”hŒThe register on the MMD to read”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jBh´MûhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jBh´Mûhj²ubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjfh]”hŒu16 val”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mühj`ubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hjh²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{h´Mühj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{h´Mühj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¯h]”hŒ Description”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mþhj–ubjl)�”}”(hŒ Same rules as for __phy_write();”h]”hŒ Same rules as for __phy_write();”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mýhj–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_write_mmd (C function)”Œc.phy_write_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint phy_write_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒLint phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjðh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðh²hh³jh´Mubj3)�”}”(hŒ phy_write_mmd”h]”j9)�”}”(hŒ phy_write_mmd”h]”hŒ phy_write_mmd”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjðh²hh³jh´Mubj¡ )�”}”(hŒ;(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jQŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.phy_write_mmd”†”asbuh1hhj-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-ubj )�”}”(hj h]”hŒ*”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj-ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŸubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÝŒmodname”NŒ classname”Njå jè )�”}”jë ]”jkŒc.phy_write_mmd”†”asbuh1hhjÔubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)ubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j% Œmodname”NŒ classname”Njå jè )�”}”jë ]”jkŒc.phy_write_mmd”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj)ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjðh²hh³jh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjìh²hh³jh´Mubah}”(h]”jçah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´Mhjéh²hubjg)�”}”(hhh]”jl)�”}”(hŒEConvenience function for writing a register on an MMD on a given PHY.”h]”hŒEConvenience function for writing a register on an MMD on a given PHY.”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhjv h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjéh²hh³jh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‘ jŒj‘ j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒú**Parameters** ``struct phy_device *phydev`` The phy_device struct ``int devad`` The MMD to read from ``u32 regnum`` The register on the MMD to read ``u16 val`` value to write to **regnum** **Description** Same rules as for phy_write();”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj› h]”hŒ Parameters”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhj• ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjº h]”hŒstruct phy_device *phydev”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhj´ ubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏ h´MhjÐ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏ h´Mhj± ubjä)�”}”(hŒ#``int devad`` The MMD to read from ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjó h]”hŒ int devad”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhjí ubj)�”}”(hhh]”jl)�”}”(hŒThe MMD to read from”h]”hŒThe MMD to read from”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!h´Mhj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjí ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!h´Mhj± ubjä)�”}”(hŒ/``u32 regnum`` The register on the MMD to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj,!h]”hŒ u32 regnum”…”�”}”(hj.!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhj&!ubj)�”}”(hhh]”jl)�”}”(hŒThe register on the MMD to read”h]”hŒThe register on the MMD to read”…”�”}”(hjE!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jA!h´MhjB!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jA!h´Mhj± ubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hje!h]”hŒu16 val”…”�”}”(hjg!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjc!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhj_!ubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hj~!h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj†!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jz!h´Mhj{!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jz!h´Mhj± ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj• ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj®!h]”hŒ Description”…”�”}”(hj°!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¬!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhj• ubjl)�”}”(hŒSame rules as for phy_write();”h]”hŒSame rules as for phy_write();”…”�”}”(hjÄ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhj• ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_modify_changed (C function)”Œc.phy_modify_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQint phy_modify_changed (struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒPint phy_modify_changed(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjó!h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjï!h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjï!h²hh³j"h´M$ubj3)�”}”(hŒphy_modify_changed”h]”j9)�”}”(hŒphy_modify_changed”h]”hŒphy_modify_changed”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjï!h²hh³j"h´M$ubj¡ )�”}”(hŒ:(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj0"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj="h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,"ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjN"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jP"Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j"sbŒc.phy_modify_changed”†”asbuh1hhj,"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,"ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj,"ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj‰"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj("ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¥"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§"Œmodname”NŒ classname”Njå jè )�”}”jë ]”jj"Œc.phy_modify_changed”†”asbuh1hhjž"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž"ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjÑ"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj("ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjí"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjê"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jï"Œmodname”NŒ classname”Njå jè )�”}”jë ]”jj"Œc.phy_modify_changed”†”asbuh1hhjæ"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ"ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj("ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj5#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j7#Œmodname”NŒ classname”Njå jè )�”}”jë ]”jj"Œc.phy_modify_changed”†”asbuh1hhj.#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj.#ubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hja#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj("ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjï!h²hh³j"h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjë!h²hh³j"h´M$ubah}”(h]”jæ!ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j"h´M$hjè!h²hubjg)�”}”(hhh]”jl)�”}”(hŒ%Function for modifying a PHY register”h]”hŒ%Function for modifying a PHY register”…”�”}”(hj‹#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M$hjˆ#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjè!h²hh³j"h´M$ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j£#jŒj£#j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXº**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` new value of bits set in mask to write to **regnum** **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation. Returns negative errno, 0 if there was no change, and 1 in case of change”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj­#h]”hŒ Parameters”…”�”}”(hj¯#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj«#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M(hj§#ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÌ#h]”hŒstruct phy_device *phydev”…”�”}”(hjÎ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M%hjÆ#ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjå#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³já#h´M%hjâ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³já#h´M%hjÃ#ubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj$h]”hŒ u32 regnum”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M&hjÿ#ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j$h´M&hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j$h´M&hjÃ#ubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj>$h]”hŒu16 mask”…”�”}”(hj@$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M'hj8$ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hjW$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jS$h´M'hjT$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jS$h´M'hjÃ#ubjä)�”}”(hŒA``u16 set`` new value of bits set in mask to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjw$h]”hŒu16 set”…”�”}”(hjy$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhju$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M(hjq$ubj)�”}”(hhh]”jl)�”}”(hŒ4new value of bits set in mask to write to **regnum**”h]”(hŒ*new value of bits set in mask to write to ”…”�”}”(hj�$h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj˜$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒ$h´M(hj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒ$h´M(hjÃ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj§#ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjÀ$h]”hŒNOTE”…”�”}”(hjÂ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M*hj§#ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hjÖ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M*hj§#ubjl)�”}”(hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”h]”hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”…”�”}”(hjå$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M.hj§#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_modify (C function)”Œc.__phy_modify”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKint __phy_modify (struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒJint __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj%h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%h²hh³j"%h´M=ubj3)�”}”(hŒ __phy_modify”h]”j9)�”}”(hŒ __phy_modify”h]”hŒ __phy_modify”…”�”}”(hj5%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1%ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj%h²hh³j"%h´M=ubj¡ )�”}”(hŒ:(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjQ%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjM%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjM%ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjo%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjl%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jq%Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j7%sbŒc.__phy_modify”†”asbuh1hhjM%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjM%ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjM%ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjª%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjI%ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÆ%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃ%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÈ%Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‹%Œc.__phy_modify”†”asbuh1hhj¿%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¿%ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjò%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjI%ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj &ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j&Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‹%Œc.__phy_modify”†”asbuh1hhj&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj:&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjI%ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjV&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjS&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jX&Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‹%Œc.__phy_modify”†”asbuh1hhjO&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO&ubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hj‚&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjO&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjI%ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj%h²hh³j"%h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj %h²hh³j"%h´M=ubah}”(h]”j%ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j"%h´M=hj %h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Convenience function for modifying a PHY register”h]”hŒ1Convenience function for modifying a PHY register”…”�”}”(hj¬&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M=hj©&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj %h²hh³j"%h´M=ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÄ&jŒjÄ&j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXo**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` new value of bits set in mask to write to **regnum** **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÎ&h]”hŒ Parameters”…”�”}”(hjÐ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MAhjÈ&ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjí&h]”hŒstruct phy_device *phydev”…”�”}”(hjï&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjë&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M>hjç&ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'h´M>hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'h´M>hjä&ubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj&'h]”hŒ u32 regnum”…”�”}”(hj('h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj$'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M?hj 'ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hj?'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j;'h´M?hj<'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j;'h´M?hjä&ubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj_'h]”hŒu16 mask”…”�”}”(hja'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj]'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M@hjY'ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hjx'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jt'h´M@hju'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jt'h´M@hjä&ubjä)�”}”(hŒA``u16 set`` new value of bits set in mask to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hj˜'h]”hŒu16 set”…”�”}”(hjš'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MAhj’'ubj)�”}”(hhh]”jl)�”}”(hŒ4new value of bits set in mask to write to **regnum**”h]”(hŒ*new value of bits set in mask to write to ”…”�”}”(hj±'h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj¹'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­'h´MAhj®'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­'h´MAhjä&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÈ&ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjá'h]”hŒNOTE”…”�”}”(hjã'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjß'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MChjÈ&ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MChjÈ&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_modify (C function)”Œ c.phy_modify”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒIint phy_modify (struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒHint phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj&(h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"(h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"(h²hh³j4(h´MRubj3)�”}”(hŒ phy_modify”h]”j9)�”}”(hŒ phy_modify”h]”hŒ phy_modify”…”�”}”(hjG(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC(ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj"(h²hh³j4(h´MRubj¡ )�”}”(hŒ:(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjc(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj_(ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jƒ(Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jI(sbŒ c.phy_modify”†”asbuh1hhj_(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj_(ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¯(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj_(ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj¼(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj[(ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjØ(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÚ(Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�(Œ c.phy_modify”†”asbuh1hhjÑ(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑ(ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj[(ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j")Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�(Œ c.phy_modify”†”asbuh1hhj)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjL)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj[(ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjh)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jj)Œmodname”NŒ classname”Njå jè )�”}”jë ]”j�(Œ c.phy_modify”†”asbuh1hhja)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja)ubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hj”)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj[(ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj"(h²hh³j4(h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj(h²hh³j4(h´MRubah}”(h]”j(ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j4(h´MRhj(h²hubjg)�”}”(hhh]”jl)�”}”(hŒ7Convenience function for modifying a given PHY register”h]”hŒ7Convenience function for modifying a given PHY register”…”�”}”(hj¾)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MRhj»)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj(h²hh³j4(h´MRubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÖ)jŒjÖ)j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXn**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to write ``u16 mask`` bit mask of bits to clear ``u16 set`` new value of bits set in mask to write to **regnum** **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjà)h]”hŒ Parameters”…”�”}”(hjâ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MVhjÚ)ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÿ)h]”hŒstruct phy_device *phydev”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjý)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MShjù)ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*h´MShj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*h´MShjö)ubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj8*h]”hŒ u32 regnum”…”�”}”(hj:*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj6*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MThj2*ubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjQ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jM*h´MThjN*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jM*h´MThjö)ubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hjq*h]”hŒu16 mask”…”�”}”(hjs*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjo*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MUhjk*ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hjŠ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†*h´MUhj‡*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†*h´MUhjö)ubjä)�”}”(hŒA``u16 set`` new value of bits set in mask to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjª*h]”hŒu16 set”…”�”}”(hj¬*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MVhj¤*ubj)�”}”(hhh]”jl)�”}”(hŒ4new value of bits set in mask to write to **regnum**”h]”(hŒ*new value of bits set in mask to write to ”…”�”}”(hjÃ*h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjË*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÃ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¿*h´MVhjÀ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¿*h´MVhjö)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚ)ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjó*h]”hŒNOTE”…”�”}”(hjõ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MXhjÚ)ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MXhjÚ)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%__phy_modify_mmd_changed (C function)”Œc.__phy_modify_mmd_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒbint __phy_modify_mmd_changed (struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒaint __phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj8+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4+h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Miubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4+h²hh³jF+h´Miubj3)�”}”(hŒ__phy_modify_mmd_changed”h]”j9)�”}”(hŒ__phy_modify_mmd_changed”h]”hŒ__phy_modify_mmd_changed”…”�”}”(hjY+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU+ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj4+h²hh³jF+h´Miubj¡ )�”}”(hŒE(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hju+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq+ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj“+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j•+Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j[+sbŒc.__phy_modify_mmd_changed”†”asbuh1hhjq+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq+ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁ+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjq+ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÎ+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm+ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjç+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjã+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã+ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm+ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j!,Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¯+Œc.__phy_modify_mmd_changed”†”asbuh1hhj,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjK,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm+ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjg,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjd,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ji,Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¯+Œc.__phy_modify_mmd_changed”†”asbuh1hhj`,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`,ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj“,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm+ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¯,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j±,Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¯+Œc.__phy_modify_mmd_changed”†”asbuh1hhj¨,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨,ubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjÛ,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm+ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj4+h²hh³jF+h´Miubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0+h²hh³jF+h´Miubah}”(h]”j++ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jF+h´Mihj-+h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Function for modifying a register on MMD”h]”hŒ(Function for modifying a register on MMD”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mihj-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj-+h²hh³jF+h´Miubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j-jŒj-j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXò**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` new value of bits set in mask to write to **regnum** **Description** Unlocked helper function which allows a MMD register to be modified as new register value = (old register value & ~mask) | set Returns negative errno, 0 if there was no change, and 1 in case of change”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj'-h]”hŒ Parameters”…”�”}”(hj)-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mmhj!-ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjF-h]”hŒstruct phy_device *phydev”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjD-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mjhj@-ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj_-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j[-h´Mjhj\-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[-h´Mjhj=-ubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj-h]”hŒ int devad”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mkhjy-ubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hj˜-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”-h´Mkhj•-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”-h´Mkhj=-ubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj¸-h]”hŒ u32 regnum”…”�”}”(hjº-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mlhj²-ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hjÑ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÍ-h´MlhjÎ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍ-h´Mlhj=-ubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hjñ-h]”hŒu16 mask”…”�”}”(hjó-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjï-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mmhjë-ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.h´Mmhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.h´Mmhj=-ubjä)�”}”(hŒA``u16 set`` new value of bits set in mask to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hj*.h]”hŒu16 set”…”�”}”(hj,.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mnhj$.ubj)�”}”(hhh]”jl)�”}”(hŒ4new value of bits set in mask to write to **regnum**”h]”(hŒ*new value of bits set in mask to write to ”…”�”}”(hjC.h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjK.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjC.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?.h´Mnhj@.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?.h´Mnhj=-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj!-ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjs.h]”hŒ Description”…”�”}”(hju.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjq.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mphj!-ubjl)�”}”(hŒ~Unlocked helper function which allows a MMD register to be modified as new register value = (old register value & ~mask) | set”h]”hŒ~Unlocked helper function which allows a MMD register to be modified as new register value = (old register value & ~mask) | set”…”�”}”(hj‰.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mohj!-ubjl)�”}”(hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”h]”hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”…”�”}”(hj˜.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mrhj!-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_modify_mmd_changed (C function)”Œc.phy_modify_mmd_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`int phy_modify_mmd_changed (struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒ_int phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÇ.h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÃ.h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ.h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃ.h²hh³jÕ.h´M‰ubj3)�”}”(hŒphy_modify_mmd_changed”h]”j9)�”}”(hŒphy_modify_mmd_changed”h]”hŒphy_modify_mmd_changed”…”�”}”(hjè.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä.ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÃ.h²hh³jÕ.h´M‰ubj¡ )�”}”(hŒE(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj"/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j$/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jê.sbŒc.phy_modify_mmd_changed”†”asbuh1hhj/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/ubj )�”}”(hj h]”hŒ*”…”�”}”(hjP/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj/ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj]/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjü.ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjv/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjr/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjr/ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj’/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjü.ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj®/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°/Œmodname”NŒ classname”Njå jè )�”}”jë ]”j>/Œc.phy_modify_mmd_changed”†”asbuh1hhj§/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§/ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjÚ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjü.ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjö/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jø/Œmodname”NŒ classname”Njå jè )�”}”jë ]”j>/Œc.phy_modify_mmd_changed”†”asbuh1hhjï/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjï/ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj"0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjü.ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj>0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@0Œmodname”NŒ classname”Njå jè )�”}”jë ]”j>/Œc.phy_modify_mmd_changed”†”asbuh1hhj70ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj70ubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjj0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj70ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjü.ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÃ.h²hh³jÕ.h´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¿.h²hh³jÕ.h´M‰ubah}”(h]”jº.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÕ.h´M‰hj¼.h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Function for modifying a register on MMD”h]”hŒ(Function for modifying a register on MMD”…”�”}”(hj”0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M‰hj‘0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¼.h²hh³jÕ.h´M‰ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬0jŒj¬0j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXñ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` new value of bits set in mask to write to **regnum** **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation. Returns negative errno, 0 if there was no change, and 1 in case of change”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶0h]”hŒ Parameters”…”�”}”(hj¸0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M�hj°0ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÕ0h]”hŒstruct phy_device *phydev”…”�”}”(hj×0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MŠhjÏ0ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjî0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jê0h´MŠhjë0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jê0h´MŠhjÌ0ubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj1h]”hŒ int devad”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj 1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M‹hj1ubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hj'1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#1h´M‹hj$1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#1h´M‹hjÌ0ubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjG1h]”hŒ u32 regnum”…”�”}”(hjI1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MŒhjA1ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hj`1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\1h´MŒhj]1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\1h´MŒhjÌ0ubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj€1h]”hŒu16 mask”…”�”}”(hj‚1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M�hjz1ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj™1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•1h´M�hj–1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•1h´M�hjÌ0ubjä)�”}”(hŒA``u16 set`` new value of bits set in mask to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hj¹1h]”hŒu16 set”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MŽhj³1ubj)�”}”(hhh]”jl)�”}”(hŒ4new value of bits set in mask to write to **regnum**”h]”(hŒ*new value of bits set in mask to write to ”…”�”}”(hjÒ1h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjÚ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÎ1h´MŽhjÏ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÎ1h´MŽhjÌ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°0ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj2h]”hŒNOTE”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M�hj°0ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M�hj°0ubjl)�”}”(hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”h]”hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”…”�”}”(hj'2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M”hj°0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_modify_mmd (C function)”Œc.__phy_modify_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZint __phy_modify_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒYint __phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjV2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjR2h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR2h²hh³jd2h´M¤ubj3)�”}”(hŒ__phy_modify_mmd”h]”j9)�”}”(hŒ__phy_modify_mmd”h]”hŒ__phy_modify_mmd”…”�”}”(hjw2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs2ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjR2h²hh³jd2h´M¤ubj¡ )�”}”(hŒE(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj“2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�2ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj±2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³2Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jy2sbŒc.__phy_modify_mmd”†”asbuh1hhj�2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�2ubj )�”}”(hj h]”hŒ*”…”�”}”(hjß2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�2ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjì2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹2ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj!3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹2ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj=3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j?3Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÍ2Œc.__phy_modify_mmd”†”asbuh1hhj63ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj63ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hji3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj63ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹2ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj…3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‡3Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÍ2Œc.__phy_modify_mmd”†”asbuh1hhj~3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~3ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj±3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹2ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÍ3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÏ3Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÍ2Œc.__phy_modify_mmd”†”asbuh1hhjÆ3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆ3ubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjù3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆ3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”•ˆjPjQuh1j¦ hj‹2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjR2h²hh³jd2h´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjN2h²hh³jd2h´M¤ubah}”(h]”jI2ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jd2h´M¤hjK2h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Convenience function for modifying a register on MMD”h]”hŒ4Convenience function for modifying a register on MMD”…”�”}”(hj#4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¤hj 4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjK2h²hh³jd2h´M¤ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j;4jŒj;4j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¦**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` new value of bits set in mask to write to **regnum** **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjE4h]”hŒ Parameters”…”�”}”(hjG4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjC4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¨hj?4ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjd4h]”hŒstruct phy_device *phydev”…”�”}”(hjf4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjb4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¥hj^4ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj}4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jy4h´M¥hjz4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jy4h´M¥hj[4ubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj�4h]”hŒ int devad”…”�”}”(hjŸ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj›4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¦hj—4ubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j²4h´M¦hj³4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j²4h´M¦hj[4ubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjÖ4h]”hŒ u32 regnum”…”�”}”(hjØ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÔ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M§hjÐ4ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hjï4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jë4h´M§hjì4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jë4h´M§hj[4ubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj5h]”hŒu16 mask”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¨hj 5ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj(5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j$5h´M¨hj%5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j$5h´M¨hj[4ubjä)�”}”(hŒA``u16 set`` new value of bits set in mask to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjH5h]”hŒu16 set”…”�”}”(hjJ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjF5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M©hjB5ubj)�”}”(hhh]”jl)�”}”(hŒ4new value of bits set in mask to write to **regnum**”h]”(hŒ*new value of bits set in mask to write to ”…”�”}”(hja5h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hji5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhja5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]5h´M©hj^5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]5h´M©hj[4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj?4ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj‘5h]”hŒNOTE”…”�”}”(hj“5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M«hj?4ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj§5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M«hj?4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_modify_mmd (C function)”Œc.phy_modify_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒXint phy_modify_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒWint phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÒ5h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒ5h²hh³jä5h´M»ubj3)�”}”(hŒphy_modify_mmd”h]”j9)�”}”(hŒphy_modify_mmd”h]”hŒphy_modify_mmd”…”�”}”(hj÷5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó5ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÒ5h²hh³jä5h´M»ubj¡ )�”}”(hŒE(struct phy_device *phydev, int devad, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj16h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j36Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jù5sbŒc.phy_modify_mmd”†”asbuh1hhj6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6ubj )�”}”(hj h]”hŒ*”…”�”}”(hj_6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjl6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj 6ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj…6h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�6ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj¡6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj 6ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj½6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjº6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¿6Œmodname”NŒ classname”Njå jè )�”}”jë ]”jM6Œc.phy_modify_mmd”†”asbuh1hhj¶6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶6ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjé6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj 6ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jM6Œc.phy_modify_mmd”†”asbuh1hhjþ6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþ6ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj17h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj 6ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjM7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jO7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jM6Œc.phy_modify_mmd”†”asbuh1hhjF7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF7ubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjy7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjF7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj 6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÒ5h²hh³jä5h´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÎ5h²hh³jä5h´M»ubah}”(h]”jÉ5ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jä5h´M»hjË5h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Convenience function for modifying a register on MMD”h]”hŒ4Convenience function for modifying a register on MMD”…”�”}”(hj£7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M»hj 7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjË5h²hh³jä5h´M»ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j»7jŒj»7j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¦**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` new value of bits set in mask to write to **regnum** **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÅ7h]”hŒ Parameters”…”�”}”(hjÇ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÃ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¿hj¿7ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjä7h]”hŒstruct phy_device *phydev”…”�”}”(hjæ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¼hjÞ7ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjý7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jù7h´M¼hjú7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jù7h´M¼hjÛ7ubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj8h]”hŒ int devad”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M½hj8ubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hj68h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j28h´M½hj38ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j28h´M½hjÛ7ubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjV8h]”hŒ u32 regnum”…”�”}”(hjX8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjT8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¾hjP8ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hjo8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jk8h´M¾hjl8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jk8h´M¾hjÛ7ubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj�8h]”hŒu16 mask”…”�”}”(hj‘8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M¿hj‰8ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj¨8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤8h´M¿hj¥8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤8h´M¿hjÛ7ubjä)�”}”(hŒA``u16 set`` new value of bits set in mask to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjÈ8h]”hŒu16 set”…”�”}”(hjÊ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÀhjÂ8ubj)�”}”(hhh]”jl)�”}”(hŒ4new value of bits set in mask to write to **regnum**”h]”(hŒ*new value of bits set in mask to write to ”…”�”}”(hjá8h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjé8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjá8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝ8h´MÀhjÞ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝ8h´MÀhjÛ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿7ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj9h]”hŒNOTE”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÂhj¿7ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj'9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MÂhj¿7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_save_page (C function)”Œc.phy_save_page”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-int phy_save_page (struct phy_device *phydev)”h]”j )�”}”(hŒ,int phy_save_page(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjV9h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjR9h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjR9h²hh³jd9h´Mäubj3)�”}”(hŒ phy_save_page”h]”j9)�”}”(hŒ phy_save_page”h]”hŒ phy_save_page”…”�”}”(hjw9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs9ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjR9h²hh³jd9h´Mäubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj“9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�9ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj±9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j³9Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jy9sbŒc.phy_save_page”†”asbuh1hhj�9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�9ubj )�”}”(hj h]”hŒ*”…”�”}”(hjß9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�9ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjì9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹9ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjR9h²hh³jd9h´Mäubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjN9h²hh³jd9h´Mäubah}”(h]”jI9ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jd9h´MähjK9h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+take the bus lock and save the current page”h]”hŒ+take the bus lock and save the current page”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mähj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjK9h²hh³jd9h´Mäubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j.:jŒj.:j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX?**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` **Description** Take the MDIO bus lock, and return the current page number. On error, returns a negative errno. phy_restore_page() must always be called after this, irrespective of success or failure of this call.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8:h]”hŒ Parameters”…”�”}”(hj::h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mèhj2:ubjß)�”}”(hhh]”jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjW:h]”hŒstruct phy_device *phydev”…”�”}”(hjY:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjU:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MåhjQ:ubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hjp:h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hjz:h]”hŒstruct phy_device”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjx:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³jl:h´Måhjp:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jl:h´Måhjm:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jl:h´MåhjN:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2:ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj±:h]”hŒ Description”…”�”}”(hj³:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mçhj2:ubjl)�”}”(hŒÅTake the MDIO bus lock, and return the current page number. On error, returns a negative errno. phy_restore_page() must always be called after this, irrespective of success or failure of this call.”h]”hŒÅTake the MDIO bus lock, and return the current page number. On error, returns a negative errno. phy_restore_page() must always be called after this, irrespective of success or failure of this call.”…”�”}”(hjÇ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mæhj2:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_select_page (C function)”Œc.phy_select_page”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9int phy_select_page (struct phy_device *phydev, int page)”h]”j )�”}”(hŒ8int phy_select_page(struct phy_device *phydev, int page)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjö:h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjò:h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Móubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò:h²hh³j;h´Móubj3)�”}”(hŒphy_select_page”h]”j9)�”}”(hŒphy_select_page”h]”hŒphy_select_page”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjò:h²hh³j;h´Móubj¡ )�”}”(hŒ%(struct phy_device *phydev, int page)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj3;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/;ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjQ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjN;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jS;Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j;sbŒc.phy_select_page”†”asbuh1hhj/;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/;ubj )�”}”(hj h]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj/;ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjŒ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj+;ubj§ )�”}”(hŒint page”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¥;h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡;ubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjÁ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj+;ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjò:h²hh³j;h´Móubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjî:h²hh³j;h´Móubah}”(h]”jé:ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j;h´Móhjë:h²hubjg)�”}”(hhh]”jl)�”}”(hŒ8take the bus lock, save the current page, and set a page”h]”hŒ8take the bus lock, save the current page, and set a page”…”�”}”(hjë;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Móhjè;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjë:h²hh³j;h´Móubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j<jŒj<j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¿**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``int page`` desired page **Description** Take the MDIO bus lock to protect against concurrent access, save the current PHY page, and set the current page. On error, returns a negative errno, otherwise returns the previous page number. phy_restore_page() must always be called after this, irrespective of success or failure of this call.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj <h]”hŒ Parameters”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj <ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M÷hj<ubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj,<h]”hŒstruct phy_device *phydev”…”�”}”(hj.<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Môhj&<ubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hjE<h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hjO<h]”hŒstruct phy_device”…”�”}”(hjQ<h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjM<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³jA<h´MôhjE<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jA<h´MôhjB<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jA<h´Môhj#<ubjä)�”}”(hŒ``int page`` desired page ”h]”(jê)�”}”(hŒ ``int page``”h]”jð)�”}”(hj„<h]”hŒint page”…”�”}”(hj†<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mõhj~<ubj)�”}”(hhh]”jl)�”}”(hŒ desired page”h]”hŒ desired page”…”�”}”(hj�<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™<h´Mõhjš<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™<h´Mõhj#<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj<ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¿<h]”hŒ Description”…”�”}”(hjÁ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M÷hj<ubjl)�”}”(hX(Take the MDIO bus lock to protect against concurrent access, save the current PHY page, and set the current page. On error, returns a negative errno, otherwise returns the previous page number. phy_restore_page() must always be called after this, irrespective of success or failure of this call.”h]”hX(Take the MDIO bus lock to protect against concurrent access, save the current PHY page, and set the current page. On error, returns a negative errno, otherwise returns the previous page number. phy_restore_page() must always be called after this, irrespective of success or failure of this call.”…”�”}”(hjÕ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Möhj<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_restore_page (C function)”Œc.phy_restore_page”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFint phy_restore_page (struct phy_device *phydev, int oldpage, int ret)”h]”j )�”}”(hŒEint phy_restore_page(struct phy_device *phydev, int oldpage, int ret)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj=h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=h²hh³j=h´Mubj3)�”}”(hŒphy_restore_page”h]”j9)�”}”(hŒphy_restore_page”h]”hŒphy_restore_page”…”�”}”(hj%=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!=ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj=h²hh³j=h´Mubj¡ )�”}”(hŒ1(struct phy_device *phydev, int oldpage, int ret)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjA=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj==ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj==ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj_=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”ja=Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j'=sbŒc.phy_restore_page”†”asbuh1hhj==ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj==ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj==ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjš=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj==ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9=ubj§ )�”}”(hŒ int oldpage”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj³=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯=ubj9)�”}”(hŒoldpage”h]”hŒoldpage”…”�”}”(hjÏ=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9=ubj§ )�”}”(hŒint ret”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjè=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjä=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä=ubj9)�”}”(hŒret”h]”hŒret”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9=ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj=h²hh³j=h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjü<h²hh³j=h´Mubah}”(h]”j÷<ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j=h´Mhjù<h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2restore the page register and release the bus lock”h]”hŒ2restore the page register and release the bus lock”…”�”}”(hj.>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhj+>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjù<h²hh³j=h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jF>jŒjF>j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXL**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``int oldpage`` the old page, return value from phy_save_page() or phy_select_page() ``int ret`` operation's return code **Description** Release the MDIO bus lock, restoring **oldpage** if it is a valid page. This function propagates the earliest error code from the group of operations. **Return** **oldpage** if it was a negative value, otherwise **ret** if it was a negative errno value, otherwise phy_write_page()'s negative value if it were in error, otherwise **ret**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjP>h]”hŒ Parameters”…”�”}”(hjR>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjN>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MhjJ>ubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjo>h]”hŒstruct phy_device *phydev”…”�”}”(hjq>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjm>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhji>ubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hjˆ>h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hj’>h]”hŒstruct phy_device”…”�”}”(hj”>h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj�>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³j„>h´Mhjˆ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„>h´Mhj…>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„>h´Mhjf>ubjä)�”}”(hŒU``int oldpage`` the old page, return value from phy_save_page() or phy_select_page() ”h]”(jê)�”}”(hŒ``int oldpage``”h]”jð)�”}”(hjÇ>h]”hŒ int oldpage”…”�”}”(hjÉ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MhjÁ>ubj)�”}”(hhh]”jl)�”}”(hŒDthe old page, return value from phy_save_page() or phy_select_page()”h]”hŒDthe old page, return value from phy_save_page() or phy_select_page()”…”�”}”(hjà>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜ>h´MhjÝ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜ>h´Mhjf>ubjä)�”}”(hŒ$``int ret`` operation's return code ”h]”(jê)�”}”(hŒ ``int ret``”h]”jð)�”}”(hj?h]”hŒint ret”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mhjú>ubj)�”}”(hhh]”jl)�”}”(hŒoperation's return code”h]”hŒoperation’s return code”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j?h´Mhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j?h´Mhjf>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJ>ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj;?h]”hŒ Description”…”�”}”(hj=?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj9?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MhjJ>ubjl)�”}”(hŒ–Release the MDIO bus lock, restoring **oldpage** if it is a valid page. This function propagates the earliest error code from the group of operations.”h]”(hŒ%Release the MDIO bus lock, restoring ”…”�”}”(hjQ?h²hh³Nh´Nubj›)�”}”(hŒ **oldpage**”h]”hŒoldpage”…”�”}”(hjY?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjQ?ubhŒf if it is a valid page. This function propagates the earliest error code from the group of operations.”…”�”}”(hjQ?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MhjJ>ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjt?h]”hŒReturn”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjr?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MhjJ>ubjl)�”}”(hŒ¯**oldpage** if it was a negative value, otherwise **ret** if it was a negative errno value, otherwise phy_write_page()'s negative value if it were in error, otherwise **ret**.”h]”(j›)�”}”(hŒ **oldpage**”h]”hŒoldpage”…”�”}”(hjŽ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠ?ubhŒ' if it was a negative value, otherwise ”…”�”}”(hjŠ?h²hh³Nh´Nubj›)�”}”(hŒ**ret**”h]”hŒret”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠ?ubhŒp if it was a negative errno value, otherwise phy_write_page()’s negative value if it were in error, otherwise ”…”�”}”(hjŠ?h²hh³Nh´Nubj›)�”}”(hŒ**ret**”h]”hŒret”…”�”}”(hj²?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠ?ubhŒ.”…”�”}”(hjŠ?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MhjJ>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_read_paged (C function)”Œc.phy_read_paged”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDint phy_read_paged (struct phy_device *phydev, int page, u32 regnum)”h]”j )�”}”(hŒCint phy_read_paged(struct phy_device *phydev, int page, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjë?h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjç?h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç?h²hh³jù?h´M7ubj3)�”}”(hŒphy_read_paged”h]”j9)�”}”(hŒphy_read_paged”h]”hŒphy_read_paged”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjç?h²hh³jù?h´M7ubj¡ )�”}”(hŒ1(struct phy_device *phydev, int page, u32 regnum)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj(@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$@ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjF@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jH@Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j@sbŒc.phy_read_paged”†”asbuh1hhj$@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$@ubj )�”}”(hj h]”hŒ*”…”�”}”(hjt@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$@ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj @ubj§ )�”}”(hŒint page”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjš@h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–@ubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj¶@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj @ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÒ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔ@Œmodname”NŒ classname”Njå jè )�”}”jë ]”jb@Œc.phy_read_paged”†”asbuh1hhjË@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjË@ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjþ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjË@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj @ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjç?h²hh³jù?h´M7ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjã?h²hh³jù?h´M7ubah}”(h]”jÞ?ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jù?h´M7hjà?h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Convenience function for reading a paged register”h]”hŒ1Convenience function for reading a paged register”…”�”}”(hj(Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M7hj%Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjà?h²hh³jù?h´M7ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j@AjŒj@Aj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÞ**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``int page`` the page for the phy ``u32 regnum`` register number **Description** Same rules as for phy_read().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjJAh]”hŒ Parameters”…”�”}”(hjLAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjHAubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M;hjDAubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjiAh]”hŒstruct phy_device *phydev”…”�”}”(hjkAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M8hjcAubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hj‚Ah²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hjŒAh]”hŒstruct phy_device”…”�”}”(hjŽAh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjŠAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³j~Ah´M8hj‚Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~Ah´M8hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~Ah´M8hj`Aubjä)�”}”(hŒ"``int page`` the page for the phy ”h]”(jê)�”}”(hŒ ``int page``”h]”jð)�”}”(hjÁAh]”hŒint page”…”�”}”(hjÃAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M9hj»Aubj)�”}”(hhh]”jl)�”}”(hŒthe page for the phy”h]”hŒthe page for the phy”…”�”}”(hjÚAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖAh´M9hj×Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖAh´M9hj`Aubjä)�”}”(hŒ``u32 regnum`` register number ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjúAh]”hŒ u32 regnum”…”�”}”(hjüAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M:hjôAubj)�”}”(hhh]”jl)�”}”(hŒregister number”h]”hŒregister number”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jBh´M:hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jBh´M:hj`Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjDAubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj5Bh]”hŒ Description”…”�”}”(hj7Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M<hjDAubjl)�”}”(hŒSame rules as for phy_read().”h]”hŒSame rules as for phy_read().”…”�”}”(hjKBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M;hjDAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_write_paged (C function)”Œc.phy_write_paged”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint phy_write_paged (struct phy_device *phydev, int page, u32 regnum, u16 val)”h]”j )�”}”(hŒMint phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjzBh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjvBh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvBh²hh³jˆBh´MKubj3)�”}”(hŒphy_write_paged”h]”j9)�”}”(hŒphy_write_paged”h]”hŒphy_write_paged”…”�”}”(hj›Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—Bubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjvBh²hh³jˆBh´MKubj¡ )�”}”(hŒ:(struct phy_device *phydev, int page, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj·Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³Bubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³Bubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÕBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j×BŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�BsbŒc.phy_write_paged”†”asbuh1hhj³Bubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³Bubj )�”}”(hj h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj³Bubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯Bubj§ )�”}”(hŒint page”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj)Ch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj%Cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%Cubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjECh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯Bubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjaCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jcCŒmodname”NŒ classname”Njå jè )�”}”jë ]”jñBŒc.phy_write_paged”†”asbuh1hhjZCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZCubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj�Ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯Bubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj©Ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«CŒmodname”NŒ classname”Njå jè )�”}”jë ]”jñBŒc.phy_write_paged”†”asbuh1hhj¢Cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇCh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢Cubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjÕCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯Bubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjvBh²hh³jˆBh´MKubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjrBh²hh³jˆBh´MKubah}”(h]”jmBah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jˆBh´MKhjoBh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Convenience function for writing a paged register”h]”hŒ1Convenience function for writing a paged register”…”�”}”(hjÿCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MKhjüCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjoBh²hh³jˆBh´MKubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jDjŒjDj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒý**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``int page`` the page for the phy ``u32 regnum`` register number ``u16 val`` value to write **Description** Same rules as for phy_write().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj!Dh]”hŒ Parameters”…”�”}”(hj#Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MOhjDubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj@Dh]”hŒstruct phy_device *phydev”…”�”}”(hjBDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MLhj:Dubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hjYDh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hjcDh]”hŒstruct phy_device”…”�”}”(hjeDh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjaDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³jUDh´MLhjYDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jUDh´MLhjVDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jUDh´MLhj7Dubjä)�”}”(hŒ"``int page`` the page for the phy ”h]”(jê)�”}”(hŒ ``int page``”h]”jð)�”}”(hj˜Dh]”hŒint page”…”�”}”(hjšDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MMhj’Dubj)�”}”(hhh]”jl)�”}”(hŒthe page for the phy”h]”hŒthe page for the phy”…”�”}”(hj±Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­Dh´MMhj®Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­Dh´MMhj7Dubjä)�”}”(hŒ``u32 regnum`` register number ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjÑDh]”hŒ u32 regnum”…”�”}”(hjÓDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏDubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MNhjËDubj)�”}”(hhh]”jl)�”}”(hŒregister number”h]”hŒregister number”…”�”}”(hjêDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæDh´MNhjçDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæDh´MNhj7Dubjä)�”}”(hŒ``u16 val`` value to write ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hj Eh]”hŒu16 val”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MOhjEubj)�”}”(hhh]”jl)�”}”(hŒvalue to write”h]”hŒvalue to write”…”�”}”(hj#Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jEh´MOhj Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEh´MOhj7Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjDubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjEEh]”hŒ Description”…”�”}”(hjGEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjCEubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MQhjDubjl)�”}”(hŒSame rules as for phy_write().”h]”hŒSame rules as for phy_write().”…”�”}”(hj[Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MPhjDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phy_modify_paged_changed (C function)”Œc.phy_modify_paged_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒaint phy_modify_paged_changed (struct phy_device *phydev, int page, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒ`int phy_modify_paged_changed(struct phy_device *phydev, int page, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjŠEh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj†Eh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Eh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj†Eh²hh³j˜Eh´M`ubj3)�”}”(hŒphy_modify_paged_changed”h]”j9)�”}”(hŒphy_modify_paged_changed”h]”hŒphy_modify_paged_changed”…”�”}”(hj«Eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§Eubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj†Eh²hh³j˜Eh´M`ubj¡ )�”}”(hŒD(struct phy_device *phydev, int page, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÇEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔEh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃEubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjåEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jçEŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j­EsbŒc.phy_modify_paged_changed”†”asbuh1hhjÃEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃEubj )�”}”(hj h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÃEubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿Eubj§ )�”}”(hŒint page”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj9Fh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj5Fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGFh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj5Fubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjUFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿Eubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjqFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jsFŒmodname”NŒ classname”Njå jè )�”}”jë ]”jFŒc.phy_modify_paged_changed”†”asbuh1hhjjFubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjFubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿Eubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¹Fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»FŒmodname”NŒ classname”Njå jè )�”}”jë ]”jFŒc.phy_modify_paged_changed”†”asbuh1hhj²Fubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²Fubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjåFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿Eubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGŒmodname”NŒ classname”Njå jè )�”}”jë ]”jFŒc.phy_modify_paged_changed”†”asbuh1hhjúFubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjúFubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hj-Gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¿Eubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj†Eh²hh³j˜Eh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‚Eh²hh³j˜Eh´M`ubah}”(h]”j}Eah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j˜Eh´M`hjEh²hubjg)�”}”(hhh]”jl)�”}”(hŒ'Function for modifying a paged register”h]”hŒ'Function for modifying a paged register”…”�”}”(hjWGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M`hjTGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjEh²hh³j˜Eh´M`ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹joGjŒjoGj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX[**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``int page`` the page for the phy ``u32 regnum`` register number ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Description** Returns negative errno, 0 if there was no change, and 1 in case of change”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjyGh]”hŒ Parameters”…”�”}”(hj{Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjwGubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MdhjsGubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj˜Gh]”hŒstruct phy_device *phydev”…”�”}”(hjšGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mahj’Gubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hj±Gh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hj»Gh]”hŒstruct phy_device”…”�”}”(hj½Gh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¹Gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³j­Gh´Mahj±Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­Gh´Mahj®Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­Gh´Mahj�Gubjä)�”}”(hŒ"``int page`` the page for the phy ”h]”(jê)�”}”(hŒ ``int page``”h]”jð)�”}”(hjðGh]”hŒint page”…”�”}”(hjòGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîGubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MbhjêGubj)�”}”(hhh]”jl)�”}”(hŒthe page for the phy”h]”hŒthe page for the phy”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHh´MbhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHh´Mbhj�Gubjä)�”}”(hŒ``u32 regnum`` register number ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj)Hh]”hŒ u32 regnum”…”�”}”(hj+Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mchj#Hubj)�”}”(hhh]”jl)�”}”(hŒregister number”h]”hŒregister number”…”�”}”(hjBHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>Hh´Mchj?Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>Hh´Mchj�Gubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hjbHh]”hŒu16 mask”…”�”}”(hjdHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mdhj\Hubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj{Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwHh´MdhjxHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwHh´Mdhj�Gubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hj›Hh]”hŒu16 set”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mehj•Hubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hj´Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°Hh´Mehj±Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°Hh´Mehj�Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjsGubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÖHh]”hŒ Description”…”�”}”(hjØHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÔHubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MghjsGubjl)�”}”(hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”h]”hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”…”�”}”(hjìHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MfhjsGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_modify_paged (C function)”Œc.phy_modify_paged”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYint phy_modify_paged (struct phy_device *phydev, int page, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒXint phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjIh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mwubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjIh²hh³j)Ih´Mwubj3)�”}”(hŒphy_modify_paged”h]”j9)�”}”(hŒphy_modify_paged”h]”hŒphy_modify_paged”…”�”}”(hjIsbŒc.phy_modify_paged”†”asbuh1hhjTIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTIubj )�”}”(hj h]”hŒ*”…”�”}”(hj¤Ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjTIubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj±Ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPIubj§ )�”}”(hŒint page”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÊIh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÆIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆIubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjæIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPIubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJŒmodname”NŒ classname”Njå jè )�”}”jë ]”j’IŒc.phy_modify_paged”†”asbuh1hhjûIubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûIubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj.Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPIubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjJJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jLJŒmodname”NŒ classname”Njå jè )�”}”jë ]”j’IŒc.phy_modify_paged”†”asbuh1hhjCJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjCJubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjvJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPIubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj’Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&•]”uh1j8hj�Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j”JŒmodname”NŒ classname”Njå jè )�”}”jë ]”j’IŒc.phy_modify_paged”†”asbuh1hhj‹Jubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‹Jubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hj¾Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPIubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjIh²hh³j)Ih´Mwubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjIh²hh³j)Ih´Mwubah}”(h]”jIah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j)Ih´MwhjIh²hubjg)�”}”(hhh]”jl)�”}”(hŒ3Convenience function for modifying a paged register”h]”hŒ3Convenience function for modifying a paged register”…”�”}”(hjèJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´MwhjåJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjIh²hh³j)Ih´Mwubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jKjŒjKj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX?**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``int page`` the page for the phy ``u32 regnum`` register number ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Description** Same rules as for phy_read() and phy_write().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj Kh]”hŒ Parameters”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M{hjKubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj)Kh]”hŒstruct phy_device *phydev”…”�”}”(hj+Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mxhj#Kubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hjBKh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hjLKh]”hŒstruct phy_device”…”�”}”(hjNKh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjJKubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³j>Kh´MxhjBKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>Kh´Mxhj?Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>Kh´Mxhj Kubjä)�”}”(hŒ"``int page`` the page for the phy ”h]”(jê)�”}”(hŒ ``int page``”h]”jð)�”}”(hj�Kh]”hŒint page”…”�”}”(hjƒKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Myhj{Kubj)�”}”(hhh]”jl)�”}”(hŒthe page for the phy”h]”hŒthe page for the phy”…”�”}”(hjšKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j–Kh´Myhj—Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–Kh´Myhj Kubjä)�”}”(hŒ``u32 regnum`` register number ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjºKh]”hŒ u32 regnum”…”�”}”(hj¼Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´Mzhj´Kubj)�”}”(hhh]”jl)�”}”(hŒregister number”h]”hŒregister number”…”�”}”(hjÓKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏKh´MzhjÐKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏKh´Mzhj Kubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hjóKh]”hŒu16 mask”…”�”}”(hjõKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñKubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M{hjíKubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jLh´M{hj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jLh´M{hj Kubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hj,Lh]”hŒu16 set”…”�”}”(hj.Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M|hj&Lubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hjELh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jALh´M|hjBLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jALh´M|hj Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjKubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjgLh]”hŒ Description”…”�”}”(hjiLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjeLubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M~hjKubjl)�”}”(hŒ-Same rules as for phy_read() and phy_write().”h]”hŒ-Same rules as for phy_read() and phy_write().”…”�”}”(hj}Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:119: ./drivers/net/phy/phy-core.c”h´M}hjKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"genphy_c45_pma_resume (C function)”Œc.genphy_c45_pma_resume”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5int genphy_c45_pma_resume (struct phy_device *phydev)”h]”j )�”}”(hŒ4int genphy_c45_pma_resume(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¬Lh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨Lh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´K2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨Lh²hh³jºLh´K2ubj3)�”}”(hŒgenphy_c45_pma_resume”h]”j9)�”}”(hŒgenphy_c45_pma_resume”h]”hŒgenphy_c45_pma_resume”…”�”}”(hjÍLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉLubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¨Lh²hh³jºLh´K2ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjéLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåLubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j MŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÏLsbŒc.genphy_c45_pma_resume”†”asbuh1hhjåLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåLubj )�”}”(hj h]”hŒ*”…”�”}”(hj5Mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjåLubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjBMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjáLubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¨Lh²hh³jºLh´K2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¤Lh²hh³jºLh´K2ubah}”(h]”jŸLah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jºLh´K2hj¡Lh²hubjg)�”}”(hhh]”jl)�”}”(hŒwakes up the PMA module”h]”hŒwakes up the PMA module”…”�”}”(hjlMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´K2hjiMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¡Lh²hh³jºLh´K2ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j„MjŒj„Mj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŽMh]”hŒ Parameters”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒMubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´K6hjˆMubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj­Mh]”hŒstruct phy_device *phydev”…”�”}”(hj¯Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´K8hj§Mubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjÆMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´K3hjÃMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂMh´K8hj¤Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#genphy_c45_pma_suspend (C function)”Œc.genphy_c45_pma_suspend”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6int genphy_c45_pma_suspend (struct phy_device *phydev)”h]”j )�”}”(hŒ5int genphy_c45_pma_suspend(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjNh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´K@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNh²hh³jNh´K@ubj3)�”}”(hŒgenphy_c45_pma_suspend”h]”j9)�”}”(hŒgenphy_c45_pma_suspend”h]”hŒgenphy_c45_pma_suspend”…”�”}”(hj(Nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$Nubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjNh²hh³jNh´K@ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjDNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Nubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjbNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdNŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j*NsbŒc.genphy_c45_pma_suspend”†”asbuh1hhj@Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Nubj )�”}”(hj h]”hŒ*”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@Nubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjcPh]”hŒstruct phy_device *phydev”…”�”}”(hjePh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjaPubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´KThj]Pubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj|Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´KPhjyPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxPh´KThjZPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj>Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(genphy_c45_pma_setup_forced (C function)”Œc.genphy_c45_pma_setup_forced”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;int genphy_c45_pma_setup_forced (struct phy_device *phydev)”h]”j )�”}”(hŒ:int genphy_c45_pma_setup_forced(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj½Ph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¹Ph²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Klubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹Ph²hh³jËPh´Klubj3)�”}”(hŒgenphy_c45_pma_setup_forced”h]”j9)�”}”(hŒgenphy_c45_pma_setup_forced”h]”hŒgenphy_c45_pma_setup_forced”…”�”}”(hjÞPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚPubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¹Ph²hh³jËPh´Klubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjúPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöPubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jQŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jàPsbŒc.genphy_c45_pma_setup_forced”†”asbuh1hhjöPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöPubj )�”}”(hj h]”hŒ*”…”�”}”(hjFQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjöPubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjSQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjòPubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¹Ph²hh³jËPh´Klubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjµPh²hh³jËPh´Klubah}”(h]”j°Pah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jËPh´Klhj²Ph²hubjg)�”}”(hhh]”jl)�”}”(hŒconfigures a forced speed”h]”hŒconfigures a forced speed”…”�”}”(hj}Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´KlhjzQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj²Ph²hh³jËPh´Klubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j•QjŒj•Qj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŸQh]”hŒ Parameters”…”�”}”(hj¡Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Kphj™Qubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj¾Qh]”hŒstruct phy_device *phydev”…”�”}”(hjÀQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Krhj¸Qubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj×Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´KmhjÔQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓQh´KrhjµQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj™Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&genphy_c45_an_config_aneg (C function)”Œc.genphy_c45_an_config_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9int genphy_c45_an_config_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ8int genphy_c45_an_config_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjRh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRh²hh³j&Rh´Mubj3)�”}”(hŒgenphy_c45_an_config_aneg”h]”j9)�”}”(hŒgenphy_c45_an_config_aneg”h]”hŒgenphy_c45_an_config_aneg”…”�”}”(hj9Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5Rubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjRh²hh³j&Rh´Mubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjURh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQRubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjsRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”juRŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j;RsbŒc.genphy_c45_an_config_aneg”†”asbuh1hhjQRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQRubj )�”}”(hj h]”hŒ*”…”�”}”(hj¡Rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjQRubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj®Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjMRubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjRh²hh³j&Rh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjRh²hh³j&Rh´Mubah}”(h]”j Rah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j&Rh´Mhj Rh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!configure advertisement registers”h]”hŒ!configure advertisement registers”…”�”}”(hjØRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MhjÕRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj Rh²hh³j&Rh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jðRjŒjðRj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Configure advertisement registers based on modes set in phydev->advertising Returns negative errno code on failure, 0 if advertisement didn't change, or 1 if advertised modes changed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjúRh]”hŒ Parameters”…”�”}”(hjüRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjøRubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M hjôRubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjSh]”hŒstruct phy_device *phydev”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MhjSubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj2Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.Sh´Mhj/Subah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.Sh´MhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjôRubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjTSh]”hŒ Description”…”�”}”(hjVSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjRSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MhjôRubjl)�”}”(hŒKConfigure advertisement registers based on modes set in phydev->advertising”h]”hŒKConfigure advertisement registers based on modes set in phydev->advertising”…”�”}”(hjjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MhjôRubjl)�”}”(hŒkReturns negative errno code on failure, 0 if advertisement didn't change, or 1 if advertised modes changed.”h]”hŒmReturns negative errno code on failure, 0 if advertisement didn’t change, or 1 if advertised modes changed.”…”�”}”(hjySh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M hjôRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'genphy_c45_an_disable_aneg (C function)”Œc.genphy_c45_an_disable_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:int genphy_c45_an_disable_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ9int genphy_c45_an_disable_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¨Sh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¤Sh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¤Sh²hh³j¶Sh´M9ubj3)�”}”(hŒgenphy_c45_an_disable_aneg”h]”j9)�”}”(hŒgenphy_c45_an_disable_aneg”h]”hŒgenphy_c45_an_disable_aneg”…”�”}”(hjÉSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅSubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¤Sh²hh³j¶Sh´M9ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjåSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjáSubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jTŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jËSsbŒc.genphy_c45_an_disable_aneg”†”asbuh1hhjáSubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Th²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjáSubj )�”}”(hj h]”hŒ*”…”�”}”(hj1Th²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjáSubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj>Th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÝSubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¤Sh²hh³j¶Sh´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj Sh²hh³j¶Sh´M9ubah}”(h]”j›Sah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¶Sh´M9hj�Sh²hubjg)�”}”(hhh]”jl)�”}”(hŒdisable auto-negotiation”h]”hŒdisable auto-negotiation”…”�”}”(hjhTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M9hjeTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�Sh²hh³j¶Sh´M9ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j€TjŒj€Tj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX **Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Disable auto-negotiation in the Clause 45 PHY. The link parameters are controlled through the PMA/PMD MMD registers. Returns zero on success, negative errno code on failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŠTh]”hŒ Parameters”…”�”}”(hjŒTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆTubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M=hj„Tubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj©Th]”hŒstruct phy_device *phydev”…”�”}”(hj«Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M:hj£Tubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjÂTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾Th´M:hj¿Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾Th´M:hj Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj„Tubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjäTh]”hŒ Description”…”�”}”(hjæTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâTubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M<hj„Tubjl)�”}”(hŒtDisable auto-negotiation in the Clause 45 PHY. The link parameters are controlled through the PMA/PMD MMD registers.”h]”hŒtDisable auto-negotiation in the Clause 45 PHY. The link parameters are controlled through the PMA/PMD MMD registers.”…”�”}”(hjúTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M;hj„Tubjl)�”}”(hŒ8Returns zero on success, negative errno code on failure.”h]”hŒ8Returns zero on success, negative errno code on failure.”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M>hj„Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$genphy_c45_restart_aneg (C function)”Œc.genphy_c45_restart_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7int genphy_c45_restart_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ6int genphy_c45_restart_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj8Uh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4Uh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4Uh²hh³jFUh´MNubj3)�”}”(hŒgenphy_c45_restart_aneg”h]”j9)�”}”(hŒgenphy_c45_restart_aneg”h]”hŒgenphy_c45_restart_aneg”…”�”}”(hjYUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUUubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj4Uh²hh³jFUh´MNubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjuUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqUubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj“Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j•UŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j[UsbŒc.genphy_c45_restart_aneg”†”asbuh1hhjqUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjqUubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjqUubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÎUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjmUubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj4Uh²hh³jFUh´MNubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0Uh²hh³jFUh´MNubah}”(h]”j+Uah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jFUh´MNhj-Uh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Enable and restart auto-negotiation”h]”hŒ#Enable and restart auto-negotiation”…”�”}”(hjøUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MNhjõUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj-Uh²hh³jFUh´MNubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jVjŒjVj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ·**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** This assumes that the auto-negotiation MMD is present. Enable and restart auto-negotiation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjVh]”hŒ Parameters”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MRhjVubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj9Vh]”hŒstruct phy_device *phydev”…”�”}”(hj;Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MOhj3Vubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjRVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNVh´MOhjOVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNVh´MOhj0Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjVubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjtVh]”hŒ Description”…”�”}”(hjvVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjrVubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MQhjVubjl)�”}”(hŒ6This assumes that the auto-negotiation MMD is present.”h]”hŒ6This assumes that the auto-negotiation MMD is present.”…”�”}”(hjŠVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MPhjVubjl)�”}”(hŒ$Enable and restart auto-negotiation.”h]”hŒ$Enable and restart auto-negotiation.”…”�”}”(hj™Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MRhjVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ.genphy_c45_check_and_restart_aneg (C function)”Œ#c.genphy_c45_check_and_restart_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOint genphy_c45_check_and_restart_aneg (struct phy_device *phydev, bool restart)”h]”j )�”}”(hŒNint genphy_c45_check_and_restart_aneg(struct phy_device *phydev, bool restart)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÈVh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÄVh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Vh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄVh²hh³jÖVh´Mbubj3)�”}”(hŒ!genphy_c45_check_and_restart_aneg”h]”j9)�”}”(hŒ!genphy_c45_check_and_restart_aneg”h]”hŒ!genphy_c45_check_and_restart_aneg”…”�”}”(hjéVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåVubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÄVh²hh³jÖVh´Mbubj¡ )�”}”(hŒ)(struct phy_device *phydev, bool restart)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj#Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j%WŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jëVsbŒ#c.genphy_c45_check_and_restart_aneg”†”asbuh1hhjWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWubj )�”}”(hj h]”hŒ*”…”�”}”(hjQWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjWubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj^Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýVubj§ )�”}”(hŒ bool restart”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjwWh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjsWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsWubj9)�”}”(hŒrestart”h]”hŒrestart”…”�”}”(hj’Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýVubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÄVh²hh³jÖVh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÀVh²hh³jÖVh´Mbubah}”(h]”j»Vah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÖVh´Mbhj½Vh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Enable and restart auto-negotiation”h]”hŒ#Enable and restart auto-negotiation”…”�”}”(hj¼Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mbhj¹Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½Vh²hh³jÖVh´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÔWjŒjÔWj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ÷**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool restart`` whether aneg restart is requested **Description** This assumes that the auto-negotiation MMD is present. Check, and restart auto-negotiation if needed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÞWh]”hŒ Parameters”…”�”}”(hjàWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜWubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MfhjØWubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjýWh]”hŒstruct phy_device *phydev”…”�”}”(hjÿWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûWubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mchj÷Wubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jXh´MchjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jXh´MchjôWubjä)�”}”(hŒ3``bool restart`` whether aneg restart is requested ”h]”(jê)�”}”(hŒ``bool restart``”h]”jð)�”}”(hj6Xh]”hŒ bool restart”…”�”}”(hj8Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mdhj0Xubj)�”}”(hhh]”jl)�”}”(hŒ!whether aneg restart is requested”h]”hŒ!whether aneg restart is requested”…”�”}”(hjOXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKXh´MdhjLXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKXh´MdhjôWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjØWubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjqXh]”hŒ Description”…”�”}”(hjsXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoXubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MfhjØWubjl)�”}”(hŒ6This assumes that the auto-negotiation MMD is present.”h]”hŒ6This assumes that the auto-negotiation MMD is present.”…”�”}”(hj‡Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MehjØWubjl)�”}”(hŒ.Check, and restart auto-negotiation if needed.”h]”hŒ.Check, and restart auto-negotiation if needed.”…”�”}”(hj–Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MghjØWubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&genphy_c45_pma_soft_reset (C function)”Œc.genphy_c45_pma_soft_reset”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9int genphy_c45_pma_soft_reset (struct phy_device *phydev)”h]”j )�”}”(hŒ8int genphy_c45_pma_soft_reset(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÅXh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÁXh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M„ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁXh²hh³jÓXh´M„ubj3)�”}”(hŒgenphy_c45_pma_soft_reset”h]”j9)�”}”(hŒgenphy_c45_pma_soft_reset”h]”hŒgenphy_c45_pma_soft_reset”…”�”}”(hjæXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâXubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÁXh²hh³jÓXh´M„ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþXubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j"YŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jèXsbŒc.genphy_c45_pma_soft_reset”†”asbuh1hhjþXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþXubj )�”}”(hj h]”hŒ*”…”�”}”(hjNYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjþXubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj[Yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúXubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÁXh²hh³jÓXh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj½Xh²hh³jÓXh´M„ubah}”(h]”j¸Xah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÓXh´M„hjºXh²hubjg)�”}”(hhh]”jl)�”}”(hŒ=software reset the PHY via Clause 45 PMA/PMD control register”h]”hŒ=software reset the PHY via Clause 45 PMA/PMD control register”…”�”}”(hj…Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M„hj‚Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjºXh²hh³jÓXh´M„ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�YjŒj�Yj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ~**Parameters** ``struct phy_device *phydev`` target phy_device struct **Return** 0 on success, negative errno on failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj§Yh]”hŒ Parameters”…”�”}”(hj©Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mˆhj¡Yubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÆYh]”hŒstruct phy_device *phydev”…”�”}”(hjÈYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M…hjÀYubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjßYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛYh´M…hjÜYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛYh´M…hj½Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¡Yubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjZh]”hŒReturn”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿYubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M‡hj¡Yubjl)�”}”(hŒ(0 on success, negative errno on failure.”h]”hŒ(0 on success, negative errno on failure.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M‡hj¡Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!genphy_c45_aneg_done (C function)”Œc.genphy_c45_aneg_done”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4int genphy_c45_aneg_done (struct phy_device *phydev)”h]”j )�”}”(hŒ3int genphy_c45_aneg_done(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjFZh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjBZh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUZh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBZh²hh³jTZh´Mõubj3)�”}”(hŒgenphy_c45_aneg_done”h]”j9)�”}”(hŒgenphy_c45_aneg_done”h]”hŒgenphy_c45_aneg_done”…”�”}”(hjgZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjcZubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjBZh²hh³jTZh´Mõubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjƒZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj¡Zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j£ZŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jiZsbŒc.genphy_c45_aneg_done”†”asbuh1hhjZubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁZh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZubj )�”}”(hj h]”hŒ*”…”�”}”(hjÏZh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjZubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÜZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{Zubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjBZh²hh³jTZh´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj>Zh²hh³jTZh´Mõubah}”(h]”j9Zah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jTZh´Mõhj;Zh²hubjg)�”}”(hhh]”jl)�”}”(hŒ'return auto-negotiation complete status”h]”hŒ'return auto-negotiation complete status”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mõhj[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj;Zh²hh³jTZh´Mõubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j[jŒj[j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX1**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** This assumes that the auto-negotiation MMD is present. Reads the status register from the auto-negotiation MMD, returning: - positive if auto-negotiation is complete - negative errno code on error - zero otherwise”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj([h]”hŒ Parameters”…”�”}”(hj*[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mùhj"[ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjG[h]”hŒstruct phy_device *phydev”…”�”}”(hjI[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MöhjA[ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj`[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\[h´Möhj][ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\[h´Möhj>[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"[ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‚[h]”hŒ Description”…”�”}”(hj„[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Møhj"[ubjl)�”}”(hŒ6This assumes that the auto-negotiation MMD is present.”h]”hŒ6This assumes that the auto-negotiation MMD is present.”…”�”}”(hj˜[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M÷hj"[ubjl)�”}”(hŒžReads the status register from the auto-negotiation MMD, returning: - positive if auto-negotiation is complete - negative errno code on error - zero otherwise”h]”hŒžReads the status register from the auto-negotiation MMD, returning: - positive if auto-negotiation is complete - negative errno code on error - zero otherwise”…”�”}”(hj§[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mùhj"[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!genphy_c45_read_link (C function)”Œc.genphy_c45_read_link”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4int genphy_c45_read_link (struct phy_device *phydev)”h]”j )�”}”(hŒ3int genphy_c45_read_link(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ[h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÒ[h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒ[h²hh³jä[h´Mubj3)�”}”(hŒgenphy_c45_read_link”h]”j9)�”}”(hŒgenphy_c45_read_link”h]”hŒgenphy_c45_read_link”…”�”}”(hj÷[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó[ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÒ[h²hh³jä[h´Mubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj1\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j3\Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jù[sbŒc.genphy_c45_read_link”†”asbuh1hhj\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\ubj )�”}”(hj h]”hŒ*”…”�”}”(hj_\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj\ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjl\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj \ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÒ[h²hh³jä[h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÎ[h²hh³jä[h´Mubah}”(h]”jÉ[ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jä[h´MhjË[h²hubjg)�”}”(hhh]”jl)�”}”(hŒ*read the overall link status from the MMDs”h]”hŒ*read the overall link status from the MMDs”…”�”}”(hj–\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj“\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjË[h²hh³jä[h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j®\jŒj®\j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Read the link status from the specified MMDs, and if they all indicate that the link is up, set phydev->link to 1. If an error is encountered, a negative errno will be returned, otherwise zero.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¸\h]”hŒ Parameters”…”�”}”(hjº\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj²\ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj×\h]”hŒstruct phy_device *phydev”…”�”}”(hjÙ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MhjÑ\ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjð\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì\h´Mhjí\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì\h´MhjÎ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj²\ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj]h]”hŒ Description”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj²\ubjl)�”}”(hŒÂRead the link status from the specified MMDs, and if they all indicate that the link is up, set phydev->link to 1. If an error is encountered, a negative errno will be returned, otherwise zero.”h]”hŒÂRead the link status from the specified MMDs, and if they all indicate that the link is up, set phydev->link to 1. If an error is encountered, a negative errno will be returned, otherwise zero.”…”�”}”(hj(]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj²\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ genphy_c45_read_lpa (C function)”Œc.genphy_c45_read_lpa”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int genphy_c45_read_lpa (struct phy_device *phydev)”h]”j )�”}”(hŒ2int genphy_c45_read_lpa(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjW]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjS]h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mtubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjS]h²hh³je]h´Mtubj3)�”}”(hŒgenphy_c45_read_lpa”h]”j9)�”}”(hŒgenphy_c45_read_lpa”h]”hŒgenphy_c45_read_lpa”…”�”}”(hjx]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt]ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjS]h²hh³je]h´Mtubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj”]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�]ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj²]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j´]Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jz]sbŒc.genphy_c45_read_lpa”†”asbuh1hhj�]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�]ubj )�”}”(hj h]”hŒ*”…”�”}”(hjà]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�]ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjí]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŒ]ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjS]h²hh³je]h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjO]h²hh³je]h´Mtubah}”(h]”jJ]ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³je]h´MthjL]h²hubjg)�”}”(hhh]”jl)�”}”(hŒ-read the link partner advertisement and pause”h]”hŒ-read the link partner advertisement and pause”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mthj^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjL]h²hh³je]h´Mtubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j/^jŒj/^j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXÉ**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Read the Clause 45 defined base (7.19) and 10G (7.33) status registers, filling in the link partner advertisement, pause and asym_pause members in **phydev**. This assumes that the auto-negotiation MMD is present, and the backplane bit (7.48.0) is clear. Clause 45 PHY drivers are expected to fill in the remainder of the link partner advert from vendor registers.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj9^h]”hŒ Parameters”…”�”}”(hj;^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj7^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mxhj3^ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjX^h]”hŒstruct phy_device *phydev”…”�”}”(hjZ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjV^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MuhjR^ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjq^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jm^h´Muhjn^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jm^h´MuhjO^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj3^ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj“^h]”hŒ Description”…”�”}”(hj•^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mwhj3^ubjl)�”}”(hXnRead the Clause 45 defined base (7.19) and 10G (7.33) status registers, filling in the link partner advertisement, pause and asym_pause members in **phydev**. This assumes that the auto-negotiation MMD is present, and the backplane bit (7.48.0) is clear. Clause 45 PHY drivers are expected to fill in the remainder of the link partner advert from vendor registers.”h]”(hŒ“Read the Clause 45 defined base (7.19) and 10G (7.33) status registers, filling in the link partner advertisement, pause and asym_pause members in ”…”�”}”(hj©^h²hh³Nh´Nubj›)�”}”(hŒ **phydev**”h]”hŒphydev”…”�”}”(hj±^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©^ubhŒÑ. This assumes that the auto-negotiation MMD is present, and the backplane bit (7.48.0) is clear. Clause 45 PHY drivers are expected to fill in the remainder of the link partner advert from vendor registers.”…”�”}”(hj©^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mvhj3^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ4genphy_c45_pma_baset1_read_master_slave (C function)”Œ)c.genphy_c45_pma_baset1_read_master_slave”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒGint genphy_c45_pma_baset1_read_master_slave (struct phy_device *phydev)”h]”j )�”}”(hŒFint genphy_c45_pma_baset1_read_master_slave(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjê^h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjæ^h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjæ^h²hh³jø^h´M«ubj3)�”}”(hŒ'genphy_c45_pma_baset1_read_master_slave”h]”j9)�”}”(hŒ'genphy_c45_pma_baset1_read_master_slave”h]”hŒ'genphy_c45_pma_baset1_read_master_slave”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjæ^h²hh³jø^h´M«ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj'_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#_ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjE_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjB_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jG_Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j _sbŒ)c.genphy_c45_pma_baset1_read_master_slave”†”asbuh1hhj#_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#_ubj )�”}”(hj h]”hŒ*”…”�”}”(hjs_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj#_ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj€_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj_ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjæ^h²hh³jø^h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjâ^h²hh³jø^h´M«ubah}”(h]”jÝ^ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jø^h´M«hjß^h²hubjg)�”}”(hhh]”jl)�”}”(hŒ&read forced master/slave configuration”h]”hŒ&read forced master/slave configuration”…”�”}”(hjª_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M«hj§_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjß^h²hh³jø^h´M«ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÂ_jŒjÂ_j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÌ_h]”hŒ Parameters”…”�”}”(hjÎ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšh•jÊ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M¯hjÆ_ubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjë_h]”hŒstruct phy_device *phydev”…”�”}”(hjí_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjé_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M±hjå_ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M­hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`h´M±hjâ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÆ_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ genphy_c45_read_pma (C function)”Œc.genphy_c45_read_pma”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int genphy_c45_read_pma (struct phy_device *phydev)”h]”j )�”}”(hŒ2int genphy_c45_read_pma(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjE`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjA`h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjA`h²hh³jS`h´MÇubj3)�”}”(hŒgenphy_c45_read_pma”h]”j9)�”}”(hŒgenphy_c45_read_pma”h]”hŒgenphy_c45_read_pma”…”�”}”(hjf`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjb`ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjA`h²hh³jS`h´MÇubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~`ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢`Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jh`sbŒc.genphy_c45_read_pma”†”asbuh1hhj~`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~`ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÎ`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj~`ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÛ`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjz`ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjA`h²hh³jS`h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj=`h²hh³jS`h´MÇubah}”(h]”j8`ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jS`h´MÇhj:`h²hubjg)�”}”(hhh]”jl)�”}”(hŒread link speed etc from PMA”h]”hŒread link speed etc from PMA”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÇhjah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj:`h²hh³jS`h´MÇubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jajŒjaj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj'ah]”hŒ Parameters”…”�”}”(hj)ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%aubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MËhj!aubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjFah]”hŒstruct phy_device *phydev”…”�”}”(hjHah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÍhj@aubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj_ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÈhj\aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[ah´MÍhj=aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj!aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!genphy_c45_read_mdix (C function)”Œc.genphy_c45_read_mdix”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4int genphy_c45_read_mdix (struct phy_device *phydev)”h]”j )�”}”(hŒ3int genphy_c45_read_mdix(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjœah²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯ah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœah²hh³j®ah´Mùubj3)�”}”(hŒgenphy_c45_read_mdix”h]”j9)�”}”(hŒgenphy_c45_read_mdix”h]”hŒgenphy_c45_read_mdix”…”�”}”(hjÁah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½aubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjœah²hh³j®ah´Mùubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÝah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙaubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙaubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjûah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jýaŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÃasbŒc.genphy_c45_read_mdix”†”asbuh1hhjÙaubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙaubj )�”}”(hj h]”hŒ*”…”�”}”(hj)bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÙaubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj6bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÕaubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjœah²hh³j®ah´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj˜ah²hh³j®ah´Mùubah}”(h]”j“aah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j®ah´Mùhj•ah²hubjg)�”}”(hhh]”jl)�”}”(hŒread mdix status from PMA”h]”hŒread mdix status from PMA”…”�”}”(hj`bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mùhj]bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj•ah²hh³j®ah´Mùubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jxbjŒjxbj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‚bh]”hŒ Parameters”…”�”}”(hj„bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€bubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mýhj|bubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj¡bh]”hŒstruct phy_device *phydev”…”�”}”(hj£bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸbubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mÿhj›bubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjºbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Múhj·bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶bh´Mÿhj˜bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj|bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*genphy_c45_read_eee_abilities (C function)”Œc.genphy_c45_read_eee_abilities”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=int genphy_c45_read_eee_abilities (struct phy_device *phydev)”h]”j )�”}”(hŒReads status from PHY and sets phy_device members accordingly.”h]”hŒ>Reads status from PHY and sets phy_device members accordingly.”…”�”}”(hj†kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhjkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#genphy_c45_config_aneg (C function)”Œc.genphy_c45_config_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6int genphy_c45_config_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ5int genphy_c45_config_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjµkh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj±kh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±kh²hh³jÃkh´M,ubj3)�”}”(hŒgenphy_c45_config_aneg”h]”j9)�”}”(hŒgenphy_c45_config_aneg”h]”hŒgenphy_c45_config_aneg”…”�”}”(hjÖkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒkubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj±kh²hh³jÃkh´M,ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjòkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîkubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jlŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jØksbŒc.genphy_c45_config_aneg”†”asbuh1hhjîkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîkubj )�”}”(hj h]”hŒ*”…”�”}”(hj>lh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjîkubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjKlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjêkubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj±kh²hh³jÃkh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj­kh²hh³jÃkh´M,ubah}”(h]”j¨kah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÃkh´M,hjªkh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(restart auto-negotiation or forced setup”h]”hŒ(restart auto-negotiation or forced setup”…”�”}”(hjulh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M,hjrlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjªkh²hh³jÃkh´M,ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�ljŒj�lj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒõ**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** If auto-negotiation is enabled, we configure the advertising, and then restart auto-negotiation. If it is not enabled, then we force a configuration.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj—lh]”hŒ Parameters”…”�”}”(hj™lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj•lubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M0hj‘lubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj¶lh]”hŒstruct phy_device *phydev”…”�”}”(hj¸lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´lubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M-hj°lubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjÏlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËlh´M-hjÌlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËlh´M-hj­lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘lubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjñlh]”hŒ Description”…”�”}”(hjólh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjïlubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M/hj‘lubjß)�”}”(hhh]”jä)�”}”(hŒ–If auto-negotiation is enabled, we configure the advertising, and then restart auto-negotiation. If it is not enabled, then we force a configuration.”h]”(jê)�”}”(hŒ0If auto-negotiation is enabled, we configure the”h]”hŒ0If auto-negotiation is enabled, we configure the”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M0hj mubj)�”}”(hhh]”jl)�”}”(hŒeadvertising, and then restart auto-negotiation. If it is not enabled, then we force a configuration.”h]”hŒeadvertising, and then restart auto-negotiation. If it is not enabled, then we force a configuration.”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jmh´M0hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmh´M0hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$genphy_c45_fast_retrain (C function)”Œc.genphy_c45_fast_retrain”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDint genphy_c45_fast_retrain (struct phy_device *phydev, bool enable)”h]”j )�”}”(hŒCint genphy_c45_fast_retrain(struct phy_device *phydev, bool enable)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj`mh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\mh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Maubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjomh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\mh²hh³jnmh´Maubj3)�”}”(hŒgenphy_c45_fast_retrain”h]”j9)�”}”(hŒgenphy_c45_fast_retrain”h]”hŒgenphy_c45_fast_retrain”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}mubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj\mh²hh³jnmh´Maubj¡ )�”}”(hŒ((struct phy_device *phydev, bool enable)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™mubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj»mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j½mŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jƒmsbŒc.genphy_c45_fast_retrain”†”asbuh1hhj™mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛmh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™mubj )�”}”(hj h]”hŒ*”…”�”}”(hjémh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj™mubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjömh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•mubj§ )�”}”(hŒ bool enable”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj nubj9)�”}”(hŒenable”h]”hŒenable”…”�”}”(hj*nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj\mh²hh³jnmh´Maubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjXmh²hh³jnmh´Maubah}”(h]”jSmah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jnmh´MahjUmh²hubjg)�”}”(hhh]”jl)�”}”(hŒ configure fast retrain registers”h]”hŒ configure fast retrain registers”…”�”}”(hjTnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MahjQnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjUmh²hh³jnmh´Maubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jlnjŒjlnj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXK**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool enable`` enable fast retrain or not **Description** If fast-retrain is enabled, we configure PHY as advertising fast retrain capable and THP Bypass Request, then enable fast retrain. If it is not enabled, we configure fast retrain disabled.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvnh]”hŒ Parameters”…”�”}”(hjxnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtnubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mehjpnubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj•nh]”hŒstruct phy_device *phydev”…”�”}”(hj—nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mbhj�nubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj®nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªnh´Mbhj«nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªnh´MbhjŒnubjä)�”}”(hŒ+``bool enable`` enable fast retrain or not ”h]”(jê)�”}”(hŒ``bool enable``”h]”jð)�”}”(hjÎnh]”hŒ bool enable”…”�”}”(hjÐnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌnubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MchjÈnubj)�”}”(hhh]”jl)�”}”(hŒenable fast retrain or not”h]”hŒenable fast retrain or not”…”�”}”(hjçnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jãnh´Mchjänubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãnh´MchjŒnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpnubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj oh]”hŒ Description”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mehjpnubjß)�”}”(hhh]”jä)�”}”(hŒ¼If fast-retrain is enabled, we configure PHY as advertising fast retrain capable and THP Bypass Request, then enable fast retrain. If it is not enabled, we configure fast retrain disabled.”h]”(jê)�”}”(hŒ/If fast-retrain is enabled, we configure PHY as”h]”hŒ/If fast-retrain is enabled, we configure PHY as”…”�”}”(hj&oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mghj"oubj)�”}”(hhh]”jl)�”}”(hŒŒadvertising fast retrain capable and THP Bypass Request, then enable fast retrain. If it is not enabled, we configure fast retrain disabled.”h]”hŒŒadvertising fast retrain capable and THP Bypass Request, then enable fast retrain. If it is not enabled, we configure fast retrain disabled.”…”�”}”(hj8oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mfhj5oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4oh´Mghjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$genphy_c45_plca_get_cfg (C function)”Œc.genphy_c45_plca_get_cfg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒVint genphy_c45_plca_get_cfg (struct phy_device *phydev, struct phy_plca_cfg *plca_cfg)”h]”j )�”}”(hŒUint genphy_c45_plca_get_cfg(struct phy_device *phydev, struct phy_plca_cfg *plca_cfg)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjyoh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjuoh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M„ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuoh²hh³j‡oh´M„ubj3)�”}”(hŒgenphy_c45_plca_get_cfg”h]”j9)�”}”(hŒgenphy_c45_plca_get_cfg”h]”hŒgenphy_c45_plca_get_cfg”…”�”}”(hjšoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–oubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjuoh²hh³j‡oh´M„ubj¡ )�”}”(hŒ:(struct phy_device *phydev, struct phy_plca_cfg *plca_cfg)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¶oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²oubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÔoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÖoŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jœosbŒc.genphy_c45_plca_get_cfg”†”asbuh1hhj²oubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²oubj )�”}”(hj h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj²oubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®oubj§ )�”}”(hŒstruct phy_plca_cfg *plca_cfg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj(ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$pubh)�”}”(hhh]”j9)�”}”(hŒ phy_plca_cfg”h]”hŒ phy_plca_cfg”…”�”}”(hjFph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jHpŒmodname”NŒ classname”Njå jè )�”}”jë ]”jðoŒc.genphy_c45_plca_get_cfg”†”asbuh1hhj$pubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$pubj )�”}”(hj h]”hŒ*”…”�”}”(hjrph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj$pubj9)�”}”(hŒplca_cfg”h]”hŒplca_cfg”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj®oubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjuoh²hh³j‡oh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjqoh²hh³j‡oh´M„ubah}”(h]”jloah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‡oh´M„hjnoh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.get PLCA configuration from standard registers”h]”hŒ.get PLCA configuration from standard registers”…”�”}”(hj©ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M„hj¦ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjnoh²hh³j‡oh´M„ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÁpjŒjÁpj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXƒ**Parameters** ``struct phy_device *phydev`` target phy_device struct ``struct phy_plca_cfg *plca_cfg`` output structure to store the PLCA configuration **Description** if the PHY complies to the Open Alliance TC14 10BASE-T1S PLCA Management Registers specifications, this function can be used to retrieve the current PLCA configuration from the standard registers in MMD 31.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjËph]”hŒ Parameters”…”�”}”(hjÍph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÉpubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MˆhjÅpubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjêph]”hŒstruct phy_device *phydev”…”�”}”(hjìph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjèpubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M…hjäpubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿph´M…hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿph´M…hjápubjä)�”}”(hŒS``struct phy_plca_cfg *plca_cfg`` output structure to store the PLCA configuration ”h]”(jê)�”}”(hŒ!``struct phy_plca_cfg *plca_cfg``”h]”jð)�”}”(hj#qh]”hŒstruct phy_plca_cfg *plca_cfg”…”�”}”(hj%qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!qubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M†hjqubj)�”}”(hhh]”jl)�”}”(hŒ0output structure to store the PLCA configuration”h]”hŒ0output structure to store the PLCA configuration”…”�”}”(hjxh´MEhj?xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>xh´MEhjçwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjËwubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjdxh]”hŒ Description”…”�”}”(hjfxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjbxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MGhjËwubjl)�”}”(hŒythis function will read link partner PHY advertisement and compare it to local advertisement to return current EEE state.”h]”hŒythis function will read link partner PHY advertisement and compare it to local advertisement to return current EEE state.”…”�”}”(hjzxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MGhjËwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'genphy_c45_ethtool_get_eee (C function)”Œc.genphy_c45_ethtool_get_eee”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUint genphy_c45_ethtool_get_eee (struct phy_device *phydev, struct ethtool_keee *data)”h]”j )�”}”(hŒTint genphy_c45_ethtool_get_eee(struct phy_device *phydev, struct ethtool_keee *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj©xh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¥xh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥xh²hh³j·xh´Mcubj3)�”}”(hŒgenphy_c45_ethtool_get_eee”h]”j9)�”}”(hŒgenphy_c45_ethtool_get_eee”h]”hŒgenphy_c45_ethtool_get_eee”…”�”}”(hjÊxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆxubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¥xh²hh³j·xh´Mcubj¡ )�”}”(hŒ6(struct phy_device *phydev, struct ethtool_keee *data)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjæxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâxubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÌxsbŒc.genphy_c45_ethtool_get_eee”†”asbuh1hhjâxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâxubj )�”}”(hj h]”hŒ*”…”�”}”(hj2yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjâxubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj?yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÞxubj§ )�”}”(hŒstruct ethtool_keee *data”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjXyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeyh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTyubh)�”}”(hhh]”j9)�”}”(hŒ ethtool_keee”h]”hŒ ethtool_keee”…”�”}”(hjvyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jxyŒmodname”NŒ classname”Njå jè )�”}”jë ]”j yŒc.genphy_c45_ethtool_get_eee”†”asbuh1hhjTyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTyubj )�”}”(hj h]”hŒ*”…”�”}”(hj¢yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjTyubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¯yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÞxubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¥xh²hh³j·xh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¡xh²hh³j·xh´Mcubah}”(h]”jœxah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j·xh´Mchjžxh²hubjg)�”}”(hhh]”jl)�”}”(hŒget EEE supported and status”h]”hŒget EEE supported and status”…”�”}”(hjÙyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MchjÖyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjžxh²hh³j·xh´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jñyjŒjñyj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÓ**Parameters** ``struct phy_device *phydev`` target phy_device struct ``struct ethtool_keee *data`` ethtool_keee data **Description** it reports the Supported/Advertisement/LP Advertisement capabilities.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjûyh]”hŒ Parameters”…”�”}”(hjýyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjùyubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mghjõyubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjzh]”hŒstruct phy_device *phydev”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mdhjzubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj3zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/zh´Mdhj0zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/zh´Mdhjzubjä)�”}”(hŒ0``struct ethtool_keee *data`` ethtool_keee data ”h]”(jê)�”}”(hŒ``struct ethtool_keee *data``”h]”jð)�”}”(hjSzh]”hŒstruct ethtool_keee *data”…”�”}”(hjUzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQzubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MehjMzubj)�”}”(hhh]”jl)�”}”(hŒethtool_keee data”h]”hŒethtool_keee data”…”�”}”(hjlzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jhzh´Mehjizubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jhzh´Mehjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõyubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŽzh]”hŒ Description”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒzubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mghjõyubjl)�”}”(hŒEit reports the Supported/Advertisement/LP Advertisement capabilities.”h]”hŒEit reports the Supported/Advertisement/LP Advertisement capabilities.”…”�”}”(hj¤zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mghjõyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'genphy_c45_ethtool_set_eee (C function)”Œc.genphy_c45_ethtool_set_eee”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUint genphy_c45_ethtool_set_eee (struct phy_device *phydev, struct ethtool_keee *data)”h]”j )�”}”(hŒTint genphy_c45_ethtool_set_eee(struct phy_device *phydev, struct ethtool_keee *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÓzh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏzh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâzh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏzh²hh³jázh´M|ubj3)�”}”(hŒgenphy_c45_ethtool_set_eee”h]”j9)�”}”(hŒgenphy_c45_ethtool_set_eee”h]”hŒgenphy_c45_ethtool_set_eee”…”�”}”(hjôzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðzubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÏzh²hh³jázh´M|ubj¡ )�”}”(hŒ6(struct phy_device *phydev, struct ethtool_keee *data)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj {ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj {ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj.{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0{Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jözsbŒc.genphy_c45_ethtool_set_eee”†”asbuh1hhj {ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj {ubj )�”}”(hj h]”hŒ*”…”�”}”(hj\{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj {ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hji{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj {ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{ubj§ )�”}”(hŒstruct ethtool_keee *data”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~{ubh)�”}”(hhh]”j9)�”}”(hŒ ethtool_keee”h]”hŒ ethtool_keee”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢{Œmodname”NŒ classname”Njå jè )�”}”jë ]”jJ{Œc.genphy_c45_ethtool_set_eee”†”asbuh1hhj~{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~{ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌ{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj~{ubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÙ{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj{ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÏzh²hh³jázh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjËzh²hh³jázh´M|ubah}”(h]”jÆzah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jázh´M|hjÈzh²hubjg)�”}”(hhh]”jl)�”}”(hŒset EEE supported and status”h]”hŒset EEE supported and status”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M|hj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈzh²hh³jázh´M|ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j|jŒj|j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXô**Parameters** ``struct phy_device *phydev`` target phy_device struct ``struct ethtool_keee *data`` ethtool_keee data **Description** sets the Supported/Advertisement/LP Advertisement capabilities. If eee_enabled is false, no links modes are advertised, but the previously advertised link modes are retained. This allows EEE to be enabled/disabled in a non-destructive way. Returns either error code, 0 if there was no change, or positive value if there was a change which triggered auto-neg.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%|h]”hŒ Parameters”…”�”}”(hj'|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M€hj|ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjD|h]”hŒstruct phy_device *phydev”…”�”}”(hjF|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M}hj>|ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY|h´M}hjZ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY|h´M}hj;|ubjä)�”}”(hŒ0``struct ethtool_keee *data`` ethtool_keee data ”h]”(jê)�”}”(hŒ``struct ethtool_keee *data``”h]”jð)�”}”(hj}|h]”hŒstruct ethtool_keee *data”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M~hjw|ubj)�”}”(hhh]”jl)�”}”(hŒethtool_keee data”h]”hŒethtool_keee data”…”�”}”(hj–|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’|h´M~hj“|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’|h´M~hj;|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj|ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¸|h]”hŒ Description”…”�”}”(hjº|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M€hj|ubjl)�”}”(hXfsets the Supported/Advertisement/LP Advertisement capabilities. If eee_enabled is false, no links modes are advertised, but the previously advertised link modes are retained. This allows EEE to be enabled/disabled in a non-destructive way. Returns either error code, 0 if there was no change, or positive value if there was a change which triggered auto-neg.”h]”hXfsets the Supported/Advertisement/LP Advertisement capabilities. If eee_enabled is false, no links modes are advertised, but the previously advertised link modes are retained. This allows EEE to be enabled/disabled in a non-destructive way. Returns either error code, 0 if there was no change, or positive value if there was a change which triggered auto-neg.”…”�”}”(hjÎ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M€hj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ4genphy_c45_oatc14_cable_test_get_status (C function)”Œ)c.genphy_c45_oatc14_cable_test_get_status”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWint genphy_c45_oatc14_cable_test_get_status (struct phy_device *phydev, bool *finished)”h]”j )�”}”(hŒVint genphy_c45_oatc14_cable_test_get_status(struct phy_device *phydev, bool *finished)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjý|h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjù|h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÏubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjù|h²hh³j }h´MÏubj3)�”}”(hŒ'genphy_c45_oatc14_cable_test_get_status”h]”j9)�”}”(hŒ'genphy_c45_oatc14_cable_test_get_status”h]”hŒ'genphy_c45_oatc14_cable_test_get_status”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjù|h²hh³j }h´MÏubj¡ )�”}”(hŒ+(struct phy_device *phydev, bool *finished)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj:}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6}ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjX}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZ}Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j }sbŒ)c.genphy_c45_oatc14_cable_test_get_status”†”asbuh1hhj6}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6}ubj )�”}”(hj h]”hŒ*”…”�”}”(hj†}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6}ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj“}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj2}ubj§ )�”}”(hŒbool *finished”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¬}h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨}ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÇ}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¨}ubj9)�”}”(hŒfinished”h]”hŒfinished”…”�”}”(hjÔ}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj2}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjù|h²hh³j }h´MÏubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjõ|h²hh³j }h´MÏubah}”(h]”jð|ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j }h´MÏhjò|h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Get status of OATC14 10Base-T1S PHY cable test.”h]”hŒ/Get status of OATC14 10Base-T1S PHY cable test.”…”�”}”(hjþ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÏhjû}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjò|h²hh³j }h´MÏubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j~jŒj~j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX´**Parameters** ``struct phy_device *phydev`` pointer to the PHY device structure ``bool *finished`` pointer to a boolean set true if the test is complete **Description** Retrieves the current status of the OATC14 10Base-T1S PHY cable test. This function reads the OATC14 HDD register to determine whether the test results are valid and whether the test has finished. If the test is complete, the function reports the cable test result via the ethtool cable test interface using ethnl_cable_test_result(), and then clears the test control bit in the PHY register to reset the test state. **Return** 0 on success, or a negative error code on failure (e.g. register read/write error).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj ~h]”hŒ Parameters”…”�”}”(hj"~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÓhj~ubjß)�”}”(hhh]”(jä)�”}”(hŒB``struct phy_device *phydev`` pointer to the PHY device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj?~h]”hŒstruct phy_device *phydev”…”�”}”(hjA~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj=~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÑhj9~ubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to the PHY device structure”h]”hŒ#pointer to the PHY device structure”…”�”}”(hjX~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jT~h´MÑhjU~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jT~h´MÑhj6~ubjä)�”}”(hŒI``bool *finished`` pointer to a boolean set true if the test is complete ”h]”(jê)�”}”(hŒ``bool *finished``”h]”jð)�”}”(hjx~h]”hŒbool *finished”…”�”}”(hjz~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjv~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÒhjr~ubj)�”}”(hhh]”jl)�”}”(hŒ5pointer to a boolean set true if the test is complete”h]”hŒ5pointer to a boolean set true if the test is complete”…”�”}”(hj‘~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�~h´MÒhjŽ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjr~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�~h´MÒhj6~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj~ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj³~h]”hŒ Description”…”�”}”(hjµ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÔhj~ubjl)�”}”(hŒÄRetrieves the current status of the OATC14 10Base-T1S PHY cable test. This function reads the OATC14 HDD register to determine whether the test results are valid and whether the test has finished.”h]”hŒÄRetrieves the current status of the OATC14 10Base-T1S PHY cable test. This function reads the OATC14 HDD register to determine whether the test results are valid and whether the test has finished.”…”�”}”(hjÉ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÓhj~ubjl)�”}”(hŒÛIf the test is complete, the function reports the cable test result via the ethtool cable test interface using ethnl_cable_test_result(), and then clears the test control bit in the PHY register to reset the test state.”h]”hŒÛIf the test is complete, the function reports the cable test result via the ethtool cable test interface using ethnl_cable_test_result(), and then clears the test control bit in the PHY register to reset the test state.”…”�”}”(hjØ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M×hj~ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjé~h]”hŒReturn”…”�”}”(hjë~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjç~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÛhj~ubjl)�”}”(hŒS0 on success, or a negative error code on failure (e.g. register read/write error).”h]”hŒS0 on success, or a negative error code on failure (e.g. register read/write error).”…”�”}”(hjÿ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MÜhj~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ/genphy_c45_oatc14_cable_test_start (C function)”Œ$c.genphy_c45_oatc14_cable_test_start”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒBint genphy_c45_oatc14_cable_test_start (struct phy_device *phydev)”h]”j )�”}”(hŒAint genphy_c45_oatc14_cable_test_start(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj*h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*h²hh³j<h´Mýubj3)�”}”(hŒ"genphy_c45_oatc14_cable_test_start”h]”j9)�”}”(hŒ"genphy_c45_oatc14_cable_test_start”h]”hŒ"genphy_c45_oatc14_cable_test_start”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj*h²hh³j<h´Mýubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jQsbŒ$c.genphy_c45_oatc14_cable_test_start”†”asbuh1hhjgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgubj )�”}”(hj h]”hŒ*”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjgubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjcubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj*h²hh³j<h´Mýubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj&h²hh³j<h´Mýubah}”(h]”j!ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j<h´Mýhj#h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Start a cable test on an OATC14 10Base-T1S PHY.”h]”hŒ/Start a cable test on an OATC14 10Base-T1S PHY.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mýhjëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj#h²hh³j<h´Mýubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j€jŒj€j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXã**Parameters** ``struct phy_device *phydev`` Pointer to the PHY device structure **Description** This function initiates a cable diagnostic test on a Clause 45 OATC14 10Base-T1S capable PHY device. It first reads the PHY’s advanced diagnostic capability register to check if High Definition Diagnostics (HDD) mode is supported. If the PHY does not report HDD capability, cable testing is not supported and the function returns -EOPNOTSUPP. For PHYs that support HDD, the function sets the appropriate control bits in the OATC14_HDD register to enable and start the cable diagnostic test. **Return** * 0 on success * -EOPNOTSUPP if the PHY does not support HDD capability * A negative error code on I/O or register access failures”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj€h]”hŒ Parameters”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj €ubjß)�”}”(hhh]”jä)�”}”(hŒB``struct phy_device *phydev`` Pointer to the PHY device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj/€h]”hŒstruct phy_device *phydev”…”�”}”(hj1€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mÿhj)€ubj)�”}”(hhh]”jl)�”}”(hŒ#Pointer to the PHY device structure”h]”hŒ#Pointer to the PHY device structure”…”�”}”(hjH€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jD€h´MÿhjE€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jD€h´Mÿhj&€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj €ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjj€h]”hŒ Description”…”�”}”(hjl€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjh€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj €ubjl)�”}”(hXXThis function initiates a cable diagnostic test on a Clause 45 OATC14 10Base-T1S capable PHY device. It first reads the PHY’s advanced diagnostic capability register to check if High Definition Diagnostics (HDD) mode is supported. If the PHY does not report HDD capability, cable testing is not supported and the function returns -EOPNOTSUPP.”h]”hXXThis function initiates a cable diagnostic test on a Clause 45 OATC14 10Base-T1S capable PHY device. It first reads the PHY’s advanced diagnostic capability register to check if High Definition Diagnostics (HDD) mode is supported. If the PHY does not report HDD capability, cable testing is not supported and the function returns -EOPNOTSUPP.”…”�”}”(hj€€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj €ubjl)�”}”(hŒ“For PHYs that support HDD, the function sets the appropriate control bits in the OATC14_HDD register to enable and start the cable diagnostic test.”h]”hŒ“For PHYs that support HDD, the function sets the appropriate control bits in the OATC14_HDD register to enable and start the cable diagnostic test.”…”�”}”(hj�€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mhj €ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj €h]”hŒReturn”…”�”}”(hj¢€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjž€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M hj €ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ 0 on success”h]”jl)�”}”(hj»€h]”hŒ 0 on success”…”�”}”(hj½€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M hj¹€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj¶€ubjH[)�”}”(hŒ6-EOPNOTSUPP if the PHY does not support HDD capability”h]”jl)�”}”(hjÓ€h]”hŒ6-EOPNOTSUPP if the PHY does not support HDD capability”…”�”}”(hjÕ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M hjÑ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj¶€ubjH[)�”}”(hŒ8A negative error code on I/O or register access failures”h]”jl)�”}”(hjë€h]”hŒ8A negative error code on I/O or register access failures”…”�”}”(hjí€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M hjé€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj¶€ubeh}”(h]”h ]”h"]”h$]”h&]”j\j uh1jB[h³jÊ€h´M hj €ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*genphy_c45_oatc14_get_sqi_max (C function)”Œc.genphy_c45_oatc14_get_sqi_max”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=int genphy_c45_oatc14_get_sqi_max (struct phy_device *phydev)”h]”j )�”}”(hŒ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=‚h´Mhhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjc‚h]”hŒ Description”…”�”}”(hje‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhja‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mjhj‚ubjl)�”}”(hŒ¯This function returns the maximum supported Signal Quality Indicator (SQI) or SQI+ level. The SQI capability is updated on first invocation if it has not already been updated.”h]”hŒ¯This function returns the maximum supported Signal Quality Indicator (SQI) or SQI+ level. The SQI capability is updated on first invocation if it has not already been updated.”…”�”}”(hjy‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mihj‚ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjŠ‚h]”hŒReturn”…”�”}”(hjŒ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mmhj‚ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ Maximum SQI/SQI+ level supported”h]”jl)�”}”(hj¥‚h]”hŒ Maximum SQI/SQI+ level supported”…”�”}”(hj§‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mnhj£‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj ‚ubjH[)�”}”(hŒ)Negative errno on capability read failure”h]”jl)�”}”(hj½‚h]”hŒ)Negative errno on capability read failure”…”�”}”(hj¿‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mohj»‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj ‚ubeh}”(h]”h ]”h"]”h$]”h&]”j\j uh1jB[h³j´‚h´Mnhj‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&genphy_c45_oatc14_get_sqi (C function)”Œc.genphy_c45_oatc14_get_sqi”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9int genphy_c45_oatc14_get_sqi (struct phy_device *phydev)”h]”j )�”}”(hŒ8int genphy_c45_oatc14_get_sqi(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjù‚h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõ‚h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ‚h²hh³jƒh´M�ubj3)�”}”(hŒgenphy_c45_oatc14_get_sqi”h]”j9)�”}”(hŒgenphy_c45_oatc14_get_sqi”h]”hŒgenphy_c45_oatc14_get_sqi”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjõ‚h²hh³jƒh´M�ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj6ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2ƒubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjTƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jVƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jƒsbŒc.genphy_c45_oatc14_get_sqi”†”asbuh1hhj2ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2ƒubj )�”}”(hj h]”hŒ*”…”�”}”(hj‚ƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj2ƒubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj.ƒubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjõ‚h²hh³jƒh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjñ‚h²hh³jƒh´M�ubah}”(h]”jì‚ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jƒh´M�hjî‚h²hubjg)�”}”(hhh]”jl)�”}”(hŒ@Get Signal Quality Indicator (SQI) from an OATC14 10Base-T1S PHY”h]”hŒ@Get Signal Quality Indicator (SQI) from an OATC14 10Base-T1S PHY”…”�”}”(hj¹ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M�hj¶ƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjî‚h²hh³jƒh´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jуjŒjуj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXÓ**Parameters** ``struct phy_device *phydev`` pointer to the PHY device structure **Description** This function reads the SQI+ or SQI value from an OATC14-compatible 10Base-T1S PHY. If SQI+ capability is supported, the function returns the extended SQI+ value; otherwise, it returns the basic SQI value. The SQI capability is updated on first invocation if it has not already been updated. **Return** * SQI/SQI+ value on success * Negative errno on read failure”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÛƒh]”hŒ Parameters”…”�”}”(hj݃h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M…hjÕƒubjß)�”}”(hhh]”jä)�”}”(hŒB``struct phy_device *phydev`` pointer to the PHY device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjúƒh]”hŒstruct phy_device *phydev”…”�”}”(hjüƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´Mƒhjôƒubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to the PHY device structure”h]”hŒ#pointer to the PHY device structure”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„h´Mƒhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„h´Mƒhjñƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕƒubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj5„h]”hŒ Description”…”�”}”(hj7„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M…hjÕƒubjl)�”}”(hX#This function reads the SQI+ or SQI value from an OATC14-compatible 10Base-T1S PHY. If SQI+ capability is supported, the function returns the extended SQI+ value; otherwise, it returns the basic SQI value. The SQI capability is updated on first invocation if it has not already been updated.”h]”hX#This function reads the SQI+ or SQI value from an OATC14-compatible 10Base-T1S PHY. If SQI+ capability is supported, the function returns the extended SQI+ value; otherwise, it returns the basic SQI value. The SQI capability is updated on first invocation if it has not already been updated.”…”�”}”(hjK„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M„hjÕƒubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj\„h]”hŒReturn”…”�”}”(hj^„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M‰hjÕƒubjC[)�”}”(hhh]”(jH[)�”}”(hŒSQI/SQI+ value on success”h]”jl)�”}”(hjw„h]”hŒSQI/SQI+ value on success”…”�”}”(hjy„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´MŠhju„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjr„ubjH[)�”}”(hŒNegative errno on read failure”h]”jl)�”}”(hj�„h]”hŒNegative errno on read failure”…”�”}”(hj‘„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:122: ./drivers/net/phy/phy-c45.c”h´M‹hj�„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjr„ubeh}”(h]”h ]”h"]”h$]”h&]”j\j uh1jB[h³j†„h´MŠhjÕƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_interface_t (C enum)”Œc.phy_interface_t”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_interface_t”h]”j )�”}”(hŒenum phy_interface_t”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjË„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇ„h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇ„h²hh³jØ„h´Kubj3)�”}”(hŒphy_interface_t”h]”j9)�”}”(hjÅ„h]”hŒphy_interface_t”…”�”}”(hjë„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç„ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÇ„h²hh³jØ„h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÄh²hh³jØ„h´Kubah}”(h]”j¾„ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jØ„h´KhjÀ„h²hubjg)�”}”(hhh]”jl)�”}”(hŒInterface Mode definitions”h]”hŒInterface Mode definitions”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KFhj …h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÀ„h²hh³jØ„h´Kubeh}”(h]”h ]”(j…Œenum”eh"]”h$]”h&]”jŠj…j‹j%…jŒj%…j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX **Constants** ``PHY_INTERFACE_MODE_NA`` Not Applicable - don't touch ``PHY_INTERFACE_MODE_INTERNAL`` No interface, MAC and PHY combined ``PHY_INTERFACE_MODE_MII`` Media-independent interface ``PHY_INTERFACE_MODE_GMII`` Gigabit media-independent interface ``PHY_INTERFACE_MODE_SGMII`` Serial gigabit media-independent interface ``PHY_INTERFACE_MODE_TBI`` Ten Bit Interface ``PHY_INTERFACE_MODE_REVMII`` Reverse Media Independent Interface ``PHY_INTERFACE_MODE_RMII`` Reduced Media Independent Interface ``PHY_INTERFACE_MODE_REVRMII`` Reduced Media Independent Interface in PHY role ``PHY_INTERFACE_MODE_RGMII`` Reduced gigabit media-independent interface ``PHY_INTERFACE_MODE_RGMII_ID`` RGMII with Internal RX+TX delay ``PHY_INTERFACE_MODE_RGMII_RXID`` RGMII with Internal RX delay ``PHY_INTERFACE_MODE_RGMII_TXID`` RGMII with Internal TX delay ``PHY_INTERFACE_MODE_RTBI`` Reduced TBI ``PHY_INTERFACE_MODE_SMII`` Serial MII ``PHY_INTERFACE_MODE_XGMII`` 10 gigabit media-independent interface ``PHY_INTERFACE_MODE_XLGMII`` 40 gigabit media-independent interface ``PHY_INTERFACE_MODE_MOCA`` Multimedia over Coax ``PHY_INTERFACE_MODE_PSGMII`` Penta SGMII ``PHY_INTERFACE_MODE_QSGMII`` Quad SGMII ``PHY_INTERFACE_MODE_TRGMII`` Turbo RGMII ``PHY_INTERFACE_MODE_100BASEX`` 100 BaseX ``PHY_INTERFACE_MODE_1000BASEX`` 1000 BaseX ``PHY_INTERFACE_MODE_2500BASEX`` 2500 BaseX ``PHY_INTERFACE_MODE_5GBASER`` 5G BaseR ``PHY_INTERFACE_MODE_RXAUI`` Reduced XAUI ``PHY_INTERFACE_MODE_XAUI`` 10 Gigabit Attachment Unit Interface ``PHY_INTERFACE_MODE_10GBASER`` 10G BaseR ``PHY_INTERFACE_MODE_25GBASER`` 25G BaseR ``PHY_INTERFACE_MODE_USXGMII`` Universal Serial 10GE MII ``PHY_INTERFACE_MODE_10GKR`` 10GBASE-KR - with Clause 73 AN ``PHY_INTERFACE_MODE_QUSGMII`` Quad Universal SGMII ``PHY_INTERFACE_MODE_1000BASEKX`` 1000Base-KX - with Clause 73 AN ``PHY_INTERFACE_MODE_10G_QXGMII`` 10G-QXGMII - 4 ports over 10G USXGMII ``PHY_INTERFACE_MODE_50GBASER`` 50GBase-R - with Clause 134 FEC ``PHY_INTERFACE_MODE_LAUI`` 50 Gigabit Attachment Unit Interface ``PHY_INTERFACE_MODE_100GBASEP`` 100GBase-P - with Clause 134 FEC ``PHY_INTERFACE_MODE_MIILITE`` MII-Lite - MII without RXER TXER CRS COL ``PHY_INTERFACE_MODE_MAX`` Book keeping”h]”(jl)�”}”(hŒ **Constants**”h]”j›)�”}”(hj/…h]”hŒ Constants”…”�”}”(hj1…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KJhj)…ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``PHY_INTERFACE_MODE_NA`` Not Applicable - don't touch ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_NA``”h]”jð)�”}”(hjN…h]”hŒPHY_INTERFACE_MODE_NA”…”�”}”(hjP…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KMhjH…ubj)�”}”(hhh]”jl)�”}”(hŒNot Applicable - don't touch”h]”hŒNot Applicable - don’t touch”…”�”}”(hjg…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc…h´KMhjd…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc…h´KMhjE…ubjä)�”}”(hŒC``PHY_INTERFACE_MODE_INTERNAL`` No interface, MAC and PHY combined ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_INTERNAL``”h]”jð)�”}”(hj‡…h]”hŒPHY_INTERFACE_MODE_INTERNAL”…”�”}”(hj‰…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj……ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KPhj�…ubj)�”}”(hhh]”jl)�”}”(hŒ"No interface, MAC and PHY combined”h]”hŒ"No interface, MAC and PHY combined”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœ…h´KPhj�…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœ…h´KPhjE…ubjä)�”}”(hŒ7``PHY_INTERFACE_MODE_MII`` Media-independent interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_MII``”h]”jð)�”}”(hjÀ…h]”hŒPHY_INTERFACE_MODE_MII”…”�”}”(hjÂ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KShjº…ubj)�”}”(hhh]”jl)�”}”(hŒMedia-independent interface”h]”hŒMedia-independent interface”…”�”}”(hjÙ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕ…h´KShjÖ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕ…h´KShjE…ubjä)�”}”(hŒ@``PHY_INTERFACE_MODE_GMII`` Gigabit media-independent interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_GMII``”h]”jð)�”}”(hjù…h]”hŒPHY_INTERFACE_MODE_GMII”…”�”}”(hjû…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KVhjó…ubj)�”}”(hhh]”jl)�”}”(hŒ#Gigabit media-independent interface”h]”hŒ#Gigabit media-independent interface”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†h´KVhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†h´KVhjE…ubjä)�”}”(hŒH``PHY_INTERFACE_MODE_SGMII`` Serial gigabit media-independent interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_SGMII``”h]”jð)�”}”(hj2†h]”hŒPHY_INTERFACE_MODE_SGMII”…”�”}”(hj4†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KYhj,†ubj)�”}”(hhh]”jl)�”}”(hŒ*Serial gigabit media-independent interface”h]”hŒ*Serial gigabit media-independent interface”…”�”}”(hjK†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jG†h´KYhjH†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jG†h´KYhjE…ubjä)�”}”(hŒ-``PHY_INTERFACE_MODE_TBI`` Ten Bit Interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_TBI``”h]”jð)�”}”(hjk†h]”hŒPHY_INTERFACE_MODE_TBI”…”�”}”(hjm†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhji†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K\hje†ubj)�”}”(hhh]”jl)�”}”(hŒTen Bit Interface”h]”hŒTen Bit Interface”…”�”}”(hj„†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€†h´K\hj�†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€†h´K\hjE…ubjä)�”}”(hŒB``PHY_INTERFACE_MODE_REVMII`` Reverse Media Independent Interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_REVMII``”h]”jð)�”}”(hj¤†h]”hŒPHY_INTERFACE_MODE_REVMII”…”�”}”(hj¦†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K_hjž†ubj)�”}”(hhh]”jl)�”}”(hŒ#Reverse Media Independent Interface”h]”hŒ#Reverse Media Independent Interface”…”�”}”(hj½†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹†h´K_hjº†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjž†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹†h´K_hjE…ubjä)�”}”(hŒ@``PHY_INTERFACE_MODE_RMII`` Reduced Media Independent Interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_RMII``”h]”jð)�”}”(hj݆h]”hŒPHY_INTERFACE_MODE_RMII”…”�”}”(hj߆h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kbhj׆ubj)�”}”(hhh]”jl)�”}”(hŒ#Reduced Media Independent Interface”h]”hŒ#Reduced Media Independent Interface”…”�”}”(hjö†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jò†h´Kbhjó†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj׆ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jò†h´KbhjE…ubjä)�”}”(hŒO``PHY_INTERFACE_MODE_REVRMII`` Reduced Media Independent Interface in PHY role ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_REVRMII``”h]”jð)�”}”(hj‡h]”hŒPHY_INTERFACE_MODE_REVRMII”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kehj‡ubj)�”}”(hhh]”jl)�”}”(hŒ/Reduced Media Independent Interface in PHY role”h]”hŒ/Reduced Media Independent Interface in PHY role”…”�”}”(hj/‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+‡h´Kehj,‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+‡h´KehjE…ubjä)�”}”(hŒI``PHY_INTERFACE_MODE_RGMII`` Reduced gigabit media-independent interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_RGMII``”h]”jð)�”}”(hjO‡h]”hŒPHY_INTERFACE_MODE_RGMII”…”�”}”(hjQ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjM‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KhhjI‡ubj)�”}”(hhh]”jl)�”}”(hŒ+Reduced gigabit media-independent interface”h]”hŒ+Reduced gigabit media-independent interface”…”�”}”(hjh‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jd‡h´Khhje‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jd‡h´KhhjE…ubjä)�”}”(hŒ@``PHY_INTERFACE_MODE_RGMII_ID`` RGMII with Internal RX+TX delay ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_RGMII_ID``”h]”jð)�”}”(hjˆ‡h]”hŒPHY_INTERFACE_MODE_RGMII_ID”…”�”}”(hjЇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kkhj‚‡ubj)�”}”(hhh]”jl)�”}”(hŒRGMII with Internal RX+TX delay”h]”hŒRGMII with Internal RX+TX delay”…”�”}”(hj¡‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�‡h´Kkhjž‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�‡h´KkhjE…ubjä)�”}”(hŒ?``PHY_INTERFACE_MODE_RGMII_RXID`` RGMII with Internal RX delay ”h]”(jê)�”}”(hŒ!``PHY_INTERFACE_MODE_RGMII_RXID``”h]”jð)�”}”(hjÁ‡h]”hŒPHY_INTERFACE_MODE_RGMII_RXID”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Knhj»‡ubj)�”}”(hhh]”jl)�”}”(hŒRGMII with Internal RX delay”h]”hŒRGMII with Internal RX delay”…”�”}”(hjÚ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖ‡h´Knhjׇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖ‡h´KnhjE…ubjä)�”}”(hŒ?``PHY_INTERFACE_MODE_RGMII_TXID`` RGMII with Internal TX delay ”h]”(jê)�”}”(hŒ!``PHY_INTERFACE_MODE_RGMII_TXID``”h]”jð)�”}”(hjú‡h]”hŒPHY_INTERFACE_MODE_RGMII_TXID”…”�”}”(hjü‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjø‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kqhjô‡ubj)�”}”(hhh]”jl)�”}”(hŒRGMII with Internal TX delay”h]”hŒRGMII with Internal TX delay”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆh´Kqhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjô‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆh´KqhjE…ubjä)�”}”(hŒ(``PHY_INTERFACE_MODE_RTBI`` Reduced TBI ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_RTBI``”h]”jð)�”}”(hj3ˆh]”hŒPHY_INTERFACE_MODE_RTBI”…”�”}”(hj5ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kthj-ˆub•j)�”}”(hhh]”jl)�”}”(hŒ Reduced TBI”h]”hŒ Reduced TBI”…”�”}”(hjLˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHˆh´KthjIˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHˆh´KthjE…ubjä)�”}”(hŒ'``PHY_INTERFACE_MODE_SMII`` Serial MII ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_SMII``”h]”jð)�”}”(hjlˆh]”hŒPHY_INTERFACE_MODE_SMII”…”�”}”(hjnˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kwhjfˆubj)�”}”(hhh]”jl)�”}”(hŒ Serial MII”h]”hŒ Serial MII”…”�”}”(hj…ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�ˆh´Kwhj‚ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�ˆh´KwhjE…ubjä)�”}”(hŒD``PHY_INTERFACE_MODE_XGMII`` 10 gigabit media-independent interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_XGMII``”h]”jð)�”}”(hj¥ˆh]”hŒPHY_INTERFACE_MODE_XGMII”…”�”}”(hj§ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KzhjŸˆubj)�”}”(hhh]”jl)�”}”(hŒ&10 gigabit media-independent interface”h]”hŒ&10 gigabit media-independent interface”…”�”}”(hj¾ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jºˆh´Kzhj»ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jºˆh´KzhjE…ubjä)�”}”(hŒE``PHY_INTERFACE_MODE_XLGMII`` 40 gigabit media-independent interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_XLGMII``”h]”jð)�”}”(hjÞˆh]”hŒPHY_INTERFACE_MODE_XLGMII”…”�”}”(hjàˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj܈ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K}hj؈ubj)�”}”(hhh]”jl)�”}”(hŒ&40 gigabit media-independent interface”h]”hŒ&40 gigabit media-independent interface”…”�”}”(hj÷ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóˆh´K}hjôˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj؈ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jóˆh´K}hjE…ubjä)�”}”(hŒ1``PHY_INTERFACE_MODE_MOCA`` Multimedia over Coax ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_MOCA``”h]”jð)�”}”(hj‰h]”hŒPHY_INTERFACE_MODE_MOCA”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K€hj‰ubj)�”}”(hhh]”jl)�”}”(hŒMultimedia over Coax”h]”hŒMultimedia over Coax”…”�”}”(hj0‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,‰h´K€hj-‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,‰h´K€hjE…ubjä)�”}”(hŒ*``PHY_INTERFACE_MODE_PSGMII`` Penta SGMII ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_PSGMII``”h]”jð)�”}”(hjP‰h]”hŒPHY_INTERFACE_MODE_PSGMII”…”�”}”(hjR‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjN‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KƒhjJ‰ubj)�”}”(hhh]”jl)�”}”(hŒ Penta SGMII”h]”hŒ Penta SGMII”…”�”}”(hji‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³je‰h´Kƒhjf‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³je‰h´KƒhjE…ubjä)�”}”(hŒ)``PHY_INTERFACE_MODE_QSGMII`` Quad SGMII ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_QSGMII``”h]”jð)�”}”(hj‰‰h]”hŒPHY_INTERFACE_MODE_QSGMII”…”�”}”(hj‹‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K†hjƒ‰ubj)�”}”(hhh]”jl)�”}”(hŒ Quad SGMII”h]”hŒ Quad SGMII”…”�”}”(hj¢‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jž‰h´K†hjŸ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jž‰h´K†hjE…ubjä)�”}”(hŒ*``PHY_INTERFACE_MODE_TRGMII`` Turbo RGMII ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_TRGMII``”h]”jð)�”}”(hj‰h]”hŒPHY_INTERFACE_MODE_TRGMII”…”�”}”(hjĉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K‰hj¼‰ubj)�”}”(hhh]”jl)�”}”(hŒ Turbo RGMII”h]”hŒ Turbo RGMII”…”�”}”(hjÛ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j׉h´K‰hj؉ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j׉h´K‰hjE…ubjä)�”}”(hŒ*``PHY_INTERFACE_MODE_100BASEX`` 100 BaseX ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_100BASEX``”h]”jð)�”}”(hjû‰h]”hŒPHY_INTERFACE_MODE_100BASEX”…”�”}”(hjý‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjù‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KŒhjõ‰ubj)�”}”(hhh]”jl)�”}”(hŒ 100 BaseX”h]”hŒ 100 BaseX”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠh´KŒhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠh´KŒhjE…ubjä)�”}”(hŒ,``PHY_INTERFACE_MODE_1000BASEX`` 1000 BaseX ”h]”(jê)�”}”(hŒ ``PHY_INTERFACE_MODE_1000BASEX``”h]”jð)�”}”(hj4Šh]”hŒPHY_INTERFACE_MODE_1000BASEX”…”�”}”(hj6Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K�hj.Šubj)�”}”(hhh]”jl)�”}”(hŒ 1000 BaseX”h]”hŒ 1000 BaseX”…”�”}”(hjMŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jIŠh´K�hjJŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jIŠh´K�hjE…ubjä)�”}”(hŒ,``PHY_INTERFACE_MODE_2500BASEX`` 2500 BaseX ”h]”(jê)�”}”(hŒ ``PHY_INTERFACE_MODE_2500BASEX``”h]”jð)�”}”(hjmŠh]”hŒPHY_INTERFACE_MODE_2500BASEX”…”�”}”(hjoŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjkŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K’hjgŠubj)�”}”(hhh]”jl)�”}”(hŒ 2500 BaseX”h]”hŒ 2500 BaseX”…”�”}”(hj†Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚Šh´K’hjƒŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚Šh´K’hjE…ubjä)�”}”(hŒ(``PHY_INTERFACE_MODE_5GBASER`` 5G BaseR ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_5GBASER``”h]”jð)�”}”(hj¦Šh]”hŒPHY_INTERFACE_MODE_5GBASER”…”�”}”(hj¨Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K•hj Šubj)�”}”(hhh]”jl)�”}”(hŒ5G BaseR”h]”hŒ5G BaseR”…”�”}”(hj¿Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»Šh´K•hj¼Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»Šh´K•hjE…ubjä)�”}”(hŒ*``PHY_INTERFACE_MODE_RXAUI`` Reduced XAUI ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_RXAUI``”h]”jð)�”}”(hjߊh]”hŒPHY_INTERFACE_MODE_RXAUI”…”�”}”(hjáŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K˜hjÙŠubj)�”}”(hhh]”jl)�”}”(hŒ Reduced XAUI”h]”hŒ Reduced XAUI”…”�”}”(hjøŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jôŠh´K˜hjõŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jôŠh´K˜hjE…ubjä)�”}”(hŒA``PHY_INTERFACE_MODE_XAUI`` 10 Gigabit Attachment Unit Interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_XAUI``”h]”jð)�”}”(hj‹h]”hŒPHY_INTERFACE_MODE_XAUI”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K›hj‹ubj)�”}”(hhh]”jl)�”}”(hŒ$10 Gigabit Attachment Unit Interface”h]”hŒ$10 Gigabit Attachment Unit Interface”…”�”}”(hj1‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j-‹h´K›hj.‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-‹h´K›hjE…ubjä)�”}”(hŒ*``PHY_INTERFACE_MODE_10GBASER`` 10G BaseR ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_10GBASER``”h]”jð)�”}”(hjQ‹h]”hŒPHY_INTERFACE_MODE_10GBASER”…”�”}”(hjS‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjO‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KžhjK‹ubj)�”}”(hhh]”jl)�”}”(hŒ 10G BaseR”h]”hŒ 10G BaseR”…”�”}”(hjj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jf‹h´Kžhjg‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jf‹h´KžhjE…ubjä)�”}”(hŒ*``PHY_INTERFACE_MODE_25GBASER`` 25G BaseR ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_25GBASER``”h]”jð)�”}”(hjŠ‹h]”hŒPHY_INTERFACE_MODE_25GBASER”…”�”}”(hjŒ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K¡hj„‹ubj)�”}”(hhh]”jl)�”}”(hŒ 25G BaseR”h]”hŒ 25G BaseR”…”�”}”(hj£‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸ‹h´K¡hj ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸ‹h´K¡hjE…ubjä)�”}”(hŒ9``PHY_INTERFACE_MODE_USXGMII`` Universal Serial 10GE MII ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_USXGMII``”h]”jð)�”}”(hjËh]”hŒPHY_INTERFACE_MODE_USXGMII”…”�”}”(hjÅ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K¤hj½‹ubj)�”}”(hhh]”jl)�”}”(hŒUniversal Serial 10GE MII”h]”hŒUniversal Serial 10GE MII”…”�”}”(hjÜ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØ‹h´K¤hjÙ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØ‹h´K¤hjE…ubjä)�”}”(hŒ<``PHY_INTERFACE_MODE_10GKR`` 10GBASE-KR - with Clause 73 AN ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_10GKR``”h]”jð)�”}”(hjü‹h]”hŒPHY_INTERFACE_MODE_10GKR”…”�”}”(hjþ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjú‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K§hjö‹ubj)�”}”(hhh]”jl)�”}”(hŒ10GBASE-KR - with Clause 73 AN”h]”hŒ10GBASE-KR - with Clause 73 AN”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒh´K§hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒh´K§hjE…ubjä)�”}”(hŒ4``PHY_INTERFACE_MODE_QUSGMII`` Quad Universal SGMII ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_QUSGMII``”h]”jð)�”}”(hj5Œh]”hŒPHY_INTERFACE_MODE_QUSGMII”…”�”}”(hj7Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kªhj/Œubj)�”}”(hhh]”jl)�”}”(hŒQuad Universal SGMII”h]”hŒQuad Universal SGMII”…”�”}”(hjNŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jJŒh´KªhjKŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJŒh´KªhjE…ubjä)�”}”(hŒB``PHY_INTERFACE_MODE_1000BASEKX`` 1000Base-KX - with Clause 73 AN ”h]”(jê)�”}”(hŒ!``PHY_INTERFACE_MODE_1000BASEKX``”h]”jð)�”}”(hjnŒh]”hŒPHY_INTERFACE_MODE_1000BASEKX”…”�”}”(hjpŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjlŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K­hjhŒubj)�”}”(hhh]”jl)�”}”(hŒ1000Base-KX - with Clause 73 AN”h]”hŒ1000Base-KX - with Clause 73 AN”…”�”}”(hj‡Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒŒh´K­hj„Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒŒh´K­hjE…ubjä)�”}”(hŒH``PHY_INTERFACE_MODE_10G_QXGMII`` 10G-QXGMII - 4 ports over 10G USXGMII ”h]”(jê)�”}”(hŒ!``PHY_INTERFACE_MODE_10G_QXGMII``”h]”jð)�”}”(hj§Œh]”hŒPHY_INTERFACE_MODE_10G_QXGMII”…”�”}”(hj©Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K°hj¡Œubj)�”}”(hhh]”jl)�”}”(hŒ%10G-QXGMII - 4 ports over 10G USXGMII”h]”hŒ%10G-QXGMII - 4 ports over 10G USXGMII”…”�”}”(hjÀŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼Œh´K°hj½Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼Œh´K°hjE…ubjä)�”}”(hŒ@``PHY_INTERFACE_MODE_50GBASER`` 50GBase-R - with Clause 134 FEC ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_50GBASER``”h]”jð)�”}”(hjàŒh]”hŒPHY_INTERFACE_MODE_50GBASER”…”�”}”(hjâŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K³hjÚŒubj)�”}”(hhh]”jl)�”}”(hŒ50GBase-R - with Clause 134 FEC”h]”hŒ50GBase-R - with Clause 134 FEC”…”�”}”(hjùŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõŒh´K³hjöŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõŒh´K³hjE…ubjä)�”}”(hŒA``PHY_INTERFACE_MODE_LAUI`` 50 Gigabit Attachment Unit Interface ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_LAUI``”h]”jð)�”}”(hj�h]”hŒPHY_INTERFACE_MODE_LAUI”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K¶hj�ubj)�”}”(hhh]”jl)�”}”(hŒ$50 Gigabit Attachment Unit Interface”h]”hŒ$50 Gigabit Attachment Unit Interface”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.�h´K¶hj/�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.�h´K¶hjE…ubjä)�”}”(hŒB``PHY_INTERFACE_MODE_100GBASEP`` 100GBase-P - with Clause 134 FEC ”h]”(jê)�”}”(hŒ ``PHY_INTERFACE_MODE_100GBASEP``”h]”jð)�”}”(hjR�h]”hŒPHY_INTERFACE_MODE_100GBASEP”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjP�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K¹hjL�ubj)�”}”(hhh]”jl)�”}”(hŒ 100GBase-P - with Clause 134 FEC”h]”hŒ 100GBase-P - with Clause 134 FEC”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jg�h´K¹hjh�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jg�h´K¹hjE…ubjä)�”}”(hŒH``PHY_INTERFACE_MODE_MIILITE`` MII-Lite - MII without RXER TXER CRS COL ”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_MIILITE``”h]”jð)�”}”(hj‹�h]”hŒPHY_INTERFACE_MODE_MIILITE”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K¼hj…�ubj)�”}”(hhh]”jl)�”}”(hŒ(MII-Lite - MII without RXER TXER CRS COL”h]”hŒ(MII-Lite - MII without RXER TXER CRS COL”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j �h´K¼hj¡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j �h´K¼hjE…ubjä)�”}”(hŒ'``PHY_INTERFACE_MODE_MAX`` Book keeping”h]”(jê)�”}”(hŒ``PHY_INTERFACE_MODE_MAX``”h]”jð)�”}”(hjÄ�h]”hŒPHY_INTERFACE_MODE_MAX”…”�”}”(hjÆ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÂ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K¾hj¾�ubj)�”}”(hhh]”jl)�”}”(hŒ Book keeping”h]”hŒ Book keeping”…”�”}”(hjÝ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´K¿hjÚ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙ�h´K¾hjE…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj)…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŽh]”hŒ Description”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KÁhj”–h²hubjl)�”}”(hŒ0Describes the interface between the MAC and PHY.”h]”hŒ0Describes the interface between the MAC and PHY.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Kohj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_modes (C function)”Œ c.phy_modes”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2const char * phy_modes (phy_interface_t interface)”h]”j )�”}”(hŒ0const char *phy_modes(phy_interface_t interface)”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjEŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAŽh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSŽh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAŽh²hh³jRŽh´KËubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjaŽh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjAŽh²hh³jRŽh´KËubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoŽh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjAŽh²hh³jRŽh´KËubj )�”}”(hj h]”hŒ*”…”�”}”(hj}Žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjAŽh²hh³jRŽh´KËubj3)�”}”(hŒ phy_modes”h]”j9)�”}”(hŒ phy_modes”h]”hŒ phy_modes”…”�”}”(hjŽŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠŽubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjAŽh²hh³jRŽh´KËubj¡ )�”}”(hŒ(phy_interface_t interface)”h]”j§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj­Žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¯ŽŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�ŽsbŒ c.phy_modes”†”asbuh1hhj¦Žubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍŽh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦Žubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjÛŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢Žubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjAŽh²hh³jRŽh´KËubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj=Žh²hh³jRŽh´KËubah}”(h]”j8Žah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jRŽh´KËhj:Žh²hubjg)�”}”(hhh]”jl)�”}”(hŒ;map phy_interface_t enum to device tree binding of phy-mode”h]”hŒ;map phy_interface_t enum to device tree binding of phy-mode”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KËhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj:Žh²hh³jRŽh´KËubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�jŒj�j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``phy_interface_t interface`` enum phy_interface_t value **Description** maps enum :c:type:`phy_interface_t` defined in this file into the device tree binding of 'phy-mode', so that Ethernet device driver can get PHY interface from device tree.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj'�h]”hŒ Parameters”…”�”}”(hj)�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KÏhj!�ubjß)�”}”(hhh]”jä)�”}”(hŒ9``phy_interface_t interface`` enum phy_interface_t value ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjF�h]”hŒphy_interface_t interface”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjD�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KÌhj@�ubj)�”}”(hhh]”jl)�”}”(hŒenum phy_interface_t value”h]”hŒenum phy_interface_t value”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j[�h´KÌhj\�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[�h´KÌhj=�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj!�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj��h]”hŒ Description”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KÎhj!�ubjl)�”}”(hŒ«maps enum :c:type:`phy_interface_t` defined in this file into the device tree binding of 'phy-mode', so that Ethernet device driver can get PHY interface from device tree.”h]”(hŒ maps enum ”…”�”}”(hj—�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`phy_interface_t`”h]”jð)�”}”(hj¡�h]”hŒphy_interface_t”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjŸ�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KÎhj—�ubhŒŒ defined in this file into the device tree binding of ‘phy-mode’, so that Ethernet device driver can get PHY interface from device tree.”…”�”}”(hj—�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾�h´KÎhj!�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒrgmii_clock (C function)”Œ c.rgmii_clock”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒlong rgmii_clock (int speed)”h]”j )�”}”(hŒlong rgmii_clock(int speed)”h]”(jM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjå�h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjå�h²hh³j÷�h´M'ubj3)�”}”(hŒ rgmii_clock”h]”j9)�”}”(hŒ rgmii_clock”h]”hŒ rgmii_clock”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjå�h²hh³j÷�h´M'ubj¡ )�”}”(hŒ (int speed)”h]”j§ )�”}”(hŒ int speed”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"�ubj9)�”}”(hŒspeed”h]”hŒspeed”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjå�h²hh³j÷�h´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjá�h²hh³j÷�h´M'ubah}”(h]”jÜ�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j÷�h´M'hjÞ�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ map link speed to the clock rate”h]”hŒ map link speed to the clock rate”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M'hji�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÞ�h²hh³j÷�h´M'ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j„�jŒj„�j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX_**Parameters** ``int speed`` link speed value **Description** maps RGMII supported link speeds into the clock rates. This can also be used for MII, GMII, and RMII interface modes as the clock rates are identical, but the caller must be aware that errors for unsupported clock rates will not be signalled. **Return** clock rate or negative errno”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŽ�h]”hŒ Parameters”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M+hjˆ�ubjß)�”}”(hhh]”jä)�”}”(hŒ``int speed`` link speed value ”h]”(jê)�”}”(hŒ ``int speed``”h]”jð)�”}”(hj­�h]”hŒ int speed”…”�”}”(hj¯�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M(hj§�ubj)�”}”(hhh]”jl)�”}”(hŒlink speed value”h]”hŒlink speed value”…”�”}”(hjÆ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂ�h´M(hjÃ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂ�h´M(hj¤�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆ�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjè�h]”hŒ Description”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M*hjˆ�ubjl)�”}”(hŒòmaps RGMII supported link speeds into the clock rates. This can also be used for MII, GMII, and RMII interface modes as the clock rates are identical, but the caller must be aware that errors for unsupported clock rates will not be signalled.”h]”hŒòmaps RGMII supported link speeds into the clock rates. This can also be used for MII, GMII, and RMII interface modes as the clock rates are identical, but the caller must be aware that errors for unsupported clock rates will not be signalled.”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M*hjˆ�ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj‘h]”hŒReturn”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M/hjˆ�ubjl)�”}”(hŒclock rate or negative errno”h]”hŒclock rate or negative errno”…”�”}”(hj%‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M/hjˆ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdio_bus_stats (C struct)”Œc.mdio_bus_stats”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmdio_bus_stats”h]”j )�”}”(hŒstruct mdio_bus_stats”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjT‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP‘h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjP‘h²hh³ja‘h´M4ubj3)�”}”(hŒmdio_bus_stats”h]”j9)�”}”(hjN‘h]”hŒmdio_bus_stats”…”�”}”(hjt‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp‘ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjP‘h²hh³ja‘h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjL‘h²hh³ja‘h´M4ubah}”(h]”jG‘ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³ja‘h´M4hjI‘h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Statistics counters for MDIO busses”h]”hŒ#Statistics counters for MDIO busses”…”�”}”(hj–‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MPhj“‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjI‘h²hh³ja‘h´M4ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j®‘jŒj®‘j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX×**Definition**:: struct mdio_bus_stats { u64_stats_t transfers; u64_stats_t errors; u64_stats_t writes; u64_stats_t reads; struct u64_stats_sync syncp; }; **Members** ``transfers`` Total number of transfers, i.e. **writes** + **reads** ``errors`` Number of MDIO transfers that returned an error ``writes`` Number of write transfers ``reads`` Number of read transfers ``syncp`` Synchronisation for incrementing statistics”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjº‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶‘ubhŒ:”…”�”}”(hj¶‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MThj²‘ubj¶)�”}”(hŒ�struct mdio_bus_stats { u64_stats_t transfers; u64_stats_t errors; u64_stats_t writes; u64_stats_t reads; struct u64_stats_sync syncp; };”h]”hŒ�struct mdio_bus_stats { u64_stats_t transfers; u64_stats_t errors; u64_stats_t writes; u64_stats_t reads; struct u64_stats_sync syncp; };”…”�”}”hjÓ‘sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MVhj²‘ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjä‘h]”hŒMembers”…”�”}”(hjæ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M^hj²‘ubjß)�”}”(hhh]”(jä)�”}”(hŒE``transfers`` Total number of transfers, i.e. **writes** + **reads** ”h]”(jê)�”}”(hŒ ``transfers``”h]”jð)�”}”(hj’h]”hŒ transfers”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MRhjý‘ubj)�”}”(hhh]”jl)�”}”(hŒ6Total number of transfers, i.e. **writes** + **reads**”h]”(hŒ Total number of transfers, i.e. ”…”�”}”(hj’h²hh³Nh´Nubj›)�”}”(hŒ **writes**”h]”hŒwrites”…”�”}”(hj$’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’ubhŒ + ”…”�”}”(hj’h²hh³Nh´Nubj›)�”}”(hŒ **reads**”h]”hŒreads”…”�”}”(hj6’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’h´MRhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’h´MRhjú‘ubjä)�”}”(hŒ;``errors`` Number of MDIO transfers that returned an error ”h]”(jê)�”}”(hŒ ``errors``”h]”jð)�”}”(hj\’h]”hŒerrors”…”�”}”(hj^’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MShjV’ubj)�”}”(hhh]”jl)�”}”(hŒ/Number of MDIO transfers that returned an error”h]”hŒ/Number of MDIO transfers that returned an error”…”�”}”(hju’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jq’h´MShjr’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjV’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jq’h´MShjú‘ubjä)�”}”(hŒ%``writes`` Number of write transfers ”h]”(jê)�”}”(hŒ ``writes``”h]”jð)�”}”(hj•’h]”hŒwrites”…”�”}”(hj—’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MThj�’ubj)�”}”(hhh]”jl)�”}”(hŒNumber of write transfers”h]”hŒNumber of write transfers”…”�”}”(hj®’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jª’h´MThj«’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jª’h´MThjú‘ubjä)�”}”(hŒ#``reads`` Number of read transfers ”h]”(jê)�”}”(hŒ ``reads``”h]”jð)�”}”(hjÎ’h]”hŒreads”…”�”}”(hjÐ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MUhjÈ’ubj)�”}”(hhh]”jl)�”}”(hŒNumber of read transfers”h]”hŒNumber of read transfers”…”�”}”(hjç’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jã’h´MUhjä’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jã’h´MUhjú‘ubjä)�”}”(hŒ5``syncp`` Synchronisation for incrementing statistics”h]”(jê)�”}”(hŒ ``syncp``”h]”jð)�”}”(hj“h]”hŒsyncp”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MUhj“ubj)�”}”(hhh]”jl)�”}”(hŒ+Synchronisation for incrementing statistics”h]”hŒ+Synchronisation for incrementing statistics”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MVhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j“h´MUhjú‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj²‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmii_bus (C struct)”Œ c.mii_bus”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒmii_bus”h]”j )�”}”(hŒstruct mii_bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hja“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]“h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]“h²hh³jn“h´M\ubj3)�”}”(hŒmii_bus”h]”j9)�”}”(hj[“h]”hŒmii_bus”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}“ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj]“h²hh³jn“h´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjY“h²hh³jn“h´M\ubah}”(h]”jT“ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jn“h´M\hjV“h²hubjg)�”}”(hhh]”jl)�”}”(hŒRepresents an MDIO bus”h]”hŒRepresents an MDIO bus”…”�”}”(hj£“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mahj “h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjV“h²hh³jn“h´M\ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j»“jŒj»“j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX– **Definition**:: struct mii_bus { struct module *owner; const char *name; char id[MII_BUS_ID_SIZE]; void *priv; int (*read)(struct mii_bus *bus, int addr, int regnum); int (*write)(struct mii_bus *bus, int addr, int regnum, u16 val); int (*read_c45)(struct mii_bus *bus, int addr, int devnum, int regnum); int (*write_c45)(struct mii_bus *bus, int addr, int devnum, int regnum, u16 val); int (*reset)(struct mii_bus *bus); int (*notify_phy_attach)(struct phy_device *phydev); void (*notify_phy_detach)(struct phy_device *phydev); struct mdio_bus_stats stats[PHY_MAX_ADDR]; struct mutex mdio_lock; struct device *parent; enum { MDIOBUS_ALLOCATED = 1, MDIOBUS_REGISTERED, MDIOBUS_UNREGISTERED, MDIOBUS_RELEASED, } state; struct device dev; struct mdio_device *mdio_map[PHY_MAX_ADDR]; u32 phy_mask; u32 phy_ignore_ta_mask; int irq[PHY_MAX_ADDR]; int reset_delay_us; int reset_post_delay_us; struct gpio_desc *reset_gpiod; struct mutex shared_lock; #if IS_ENABLED(CONFIG_PHY_PACKAGE); struct phy_package_shared *shared[PHY_MAX_ADDR]; #endif; }; **Members** ``owner`` Who owns this device ``name`` User friendly name for this MDIO device, or driver name ``id`` Unique identifier for this bus, typical from bus hierarchy ``priv`` Driver private data ``read`` Perform a read transfer on the bus ``write`` Perform a write transfer on the bus ``read_c45`` Perform a C45 read transfer on the bus ``write_c45`` Perform a C45 write transfer on the bus ``reset`` Perform a reset of the bus ``notify_phy_attach`` Perform post-attach handling for MDIO bus drivers. Optional and independent of **notify_phy_detach**. Called in phy_attach_direct() right before phy_resume(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL. Returns 0 on success or negative errno on failure. Must unwind its own state on error as attachment is aborted. ``notify_phy_detach`` Perform pre-detach handling for MDIO bus drivers. Optional and independent of **notify_phy_attach**. Called in phy_detach() right after phy_suspend(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL. ``stats`` Statistic counters per device on the bus ``mdio_lock`` A lock to ensure that only one thing can read/write the MDIO bus at a time ``parent`` Parent device of this bus ``state`` State of bus structure ``dev`` Kernel device representation ``mdio_map`` list of all MDIO devices on bus ``phy_mask`` PHY addresses to be ignored when probing ``phy_ignore_ta_mask`` PHY addresses to ignore the TA/read failure ``irq`` An array of interrupts, each PHY's interrupt at the index matching its address ``reset_delay_us`` GPIO reset pulse width in microseconds ``reset_post_delay_us`` GPIO reset deassert delay in microseconds ``reset_gpiod`` Reset GPIO descriptor pointer ``shared_lock`` protect access to the shared element ``shared`` shared state across different PHYs”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÇ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓubhŒ:”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mehj¿“ubj¶)�”}”(hX‡struct mii_bus { struct module *owner; const char *name; char id[MII_BUS_ID_SIZE]; void *priv; int (*read)(struct mii_bus *bus, int addr, int regnum); int (*write)(struct mii_bus *bus, int addr, int regnum, u16 val); int (*read_c45)(struct mii_bus *bus, int addr, int devnum, int regnum); int (*write_c45)(struct mii_bus *bus, int addr, int devnum, int regnum, u16 val); int (*reset)(struct mii_bus *bus); int (*notify_phy_attach)(struct phy_device *phydev); void (*notify_phy_detach)(struct phy_device *phydev); struct mdio_bus_stats stats[PHY_MAX_ADDR]; struct mutex mdio_lock; struct device *parent; enum { MDIOBUS_ALLOCATED = 1, MDIOBUS_REGISTERED, MDIOBUS_UNREGISTERED, MDIOBUS_RELEASED, } state; struct device dev; struct mdio_device *mdio_map[PHY_MAX_ADDR]; u32 phy_mask; u32 phy_ignore_ta_mask; int irq[PHY_MAX_ADDR]; int reset_delay_us; int reset_post_delay_us; struct gpio_desc *reset_gpiod; struct mutex shared_lock; #if IS_ENABLED(CONFIG_PHY_PACKAGE); struct phy_package_shared *shared[PHY_MAX_ADDR]; #endif; };”h]”hX‡struct mii_bus { struct module *owner; const char *name; char id[MII_BUS_ID_SIZE]; void *priv; int (*read)(struct mii_bus *bus, int addr, int regnum); int (*write)(struct mii_bus *bus, int addr, int regnum, u16 val); int (*read_c45)(struct mii_bus *bus, int addr, int devnum, int regnum); int (*write_c45)(struct mii_bus *bus, int addr, int devnum, int regnum, u16 val); int (*reset)(struct mii_bus *bus); int (*notify_phy_attach)(struct phy_device *phydev); void (*notify_phy_detach)(struct phy_device *phydev); struct mdio_bus_stats stats[PHY_MAX_ADDR]; struct mutex mdio_lock; struct device *parent; enum { MDIOBUS_ALLOCATED = 1, MDIOBUS_REGISTERED, MDIOBUS_UNREGISTERED, MDIOBUS_RELEASED, } state; struct device dev; struct mdio_device *mdio_map[PHY_MAX_ADDR]; u32 phy_mask; u32 phy_ignore_ta_mask; int irq[PHY_MAX_ADDR]; int reset_delay_us; int reset_post_delay_us; struct gpio_desc *reset_gpiod; struct mutex shared_lock; #if IS_ENABLED(CONFIG_PHY_PACKAGE); struct phy_package_shared *shared[PHY_MAX_ADDR]; #endif; };”…”�”}”hjà“sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mghj¿“ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjñ“h]”hŒMembers”…”�”}”(hjó“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjï“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŠhj¿“ubjß)�”}”(hhh]”(jä)�”}”(hŒ``owner`` Who owns this device ”h]”(jê)�”}”(hŒ ``owner``”h]”jð)�”}”(hj”h]”hŒowner”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mdhj ”ubj)�”}”(hhh]”jl)�”}”(hŒWho owns this device”h]”hŒWho owns this device”…”�”}”(hj)”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%”h´Mdhj&”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%”h´Mdhj”ubjä)�”}”(hŒA``name`` User friendly name for this MDIO device, or driver name ”h]”(jê)�”}”(hŒ``name``”h]”jð)�”}”(hjI”h]”hŒname”…”�”}”(hjK”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjG”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MehjC”ubj)�”}”(hhh]”jl)�”}”(hŒ7User friendly name for this MDIO device, or driver name”h]”hŒ7User friendly name for this MDIO device, or driver name”…”�”}”(hjb”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^”h´Mehj_”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^”h´Mehj”ubjä)�”}”(hŒB``id`` Unique identifier for this bus, typical from bus hierarchy ”h]”(jê)�”}”(hŒ``id``”h]”jð)�”}”(hj‚”h]”hŒid”…”�”}”(hj„”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mfhj|”ubj)�”}”(hhh]”jl)�”}”(hŒ:Unique identifier for this bus, typical from bus hierarchy”h]”hŒ:Unique identifier for this bus, typical from bus hierarchy”…”�”}”(hj›”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—”h´Mfhj˜”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—”h´Mfhj”ubjä)�”}”(hŒ``priv`` Driver private data ”h]”(jê)�”}”(hŒ``priv``”h]”jð)�”}”(hj»”h]”hŒpriv”…”�”}”(hj½”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mghjµ”ubj)�”}”(hhh]”jl)�”}”(hŒDriver private data”h]”hŒDriver private data”…”�”}”(hjÔ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jДh´MghjÑ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jДh´Mghj”ubjä)�”}”(hŒ,``read`` Perform a read transfer on the bus ”h]”(jê)�”}”(hŒ``read``”h]”jð)�”}”(hjô”h]”hŒread”…”�”}”(hjö”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mqhjî”ubj)�”}”(hhh]”jl)�”}”(hŒ"Perform a read transfer on the bus”h]”hŒ"Perform a read transfer on the bus”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j •h´Mqhj •ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j •h´Mqhj”ubjä)�”}”(hŒ.``write`` Perform a write transfer on the bus ”h]”(jê)�”}”(hŒ ``write``”h]”jð)�”}”(hj-•h]”hŒwrite”…”�”}”(hj/•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mshj'•ubj)�”}”(hhh]”jl)�”}”(hŒ#Perform a write transfer on the bus”h]”hŒ#Perform a write transfer on the bus”…”�”}”(hjF•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jB•h´MshjC•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jB•h´Mshj”ubjä)�”}”(hŒ4``read_c45`` Perform a C45 read transfer on the bus ”h]”(jê)�”}”(hŒ ``read_c45``”h]”jð)�”}”(hjf•h]”hŒread_c45”…”�”}”(hjh•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjd•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Muhj`•ubj)�”}”(hhh]”jl)�”}”(hŒ&Perform a C45 read transfer on the bus”h]”hŒ&Perform a C45 read transfer on the bus”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{•h´Muhj|•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{•h´Muhj”ubjä)�”}”(hŒ6``write_c45`` Perform a C45 write transfer on the bus ”h]”(jê)�”}”(hŒ ``write_c45``”h]”jð)�”}”(hjŸ•h]”hŒ write_c45”…”�”}”(hj¡•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mwhj™•ubj)�”}”(hhh]”jl)�”}”(hŒ'Perform a C45 write transfer on the bus”h]”hŒ'Perform a C45 write transfer on the bus”…”�”}”(hj¸•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´•h´Mwhjµ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´•h´Mwhj”ubjä)�”}”(hŒ%``reset`` Perform a reset of the bus ”h]”(jê)�”}”(hŒ ``reset``”h]”jð)�”}”(hjØ•h]”hŒreset”…”�”}”(hjÚ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MzhjÒ•ubj)�”}”(hhh]”jl)�”}”(hŒPerform a reset of the bus”h]”hŒPerform a reset of the bus”…”�”}”(hjñ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jí•h´Mzhjî•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒ•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jí•h´Mzhj”ubjä)�”}”(hXŒ``notify_phy_attach`` Perform post-attach handling for MDIO bus drivers. Optional and independent of **notify_phy_detach**. Called in phy_attach_direct() right before phy_resume(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL. Returns 0 on success or negative errno on failure. Must unwind its own state on error as attachment is aborted. ”h]”(jê)�”}”(hŒ``notify_phy_attach``”h]”jð)�”}”(hj–h]”hŒnotify_phy_attach”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mƒhj –ubj)�”}”(hhh]”jl)�”}”(hXuPerform post-attach handling for MDIO bus drivers. Optional and independent of **notify_phy_detach**. Called in phy_attach_direct() right before phy_resume(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL. Returns 0 on success or negative errno on failure. Must unwind its own state on error as attachment is aborted.”h]”(hŒOPerform post-attach handling for MDIO bus drivers. Optional and independent of ”…”�”}”(hj*–h²hh³Nh´Nubj›)�”}”(hŒ**notify_phy_detach**”h]”hŒnotify_phy_detach”…”�”}”(hj2–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*–ubhX. Called in phy_attach_direct() right before phy_resume(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL. Returns 0 on success or negative errno on failure. Must unwind its own state on error as attachment is aborted.”…”�”}”(hj*–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M}hj'–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj –ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j&–h´Mƒhj”ubjä)�”}”(hX``notify_phy_detach`` Perform pre-detach handling for MDIO bus drivers. Optional and independent of **notify_phy_attach**. Called in phy_detach() right after phy_suspend(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL. ”h]”(jê)�”}”(hŒ``notify_phy_detach``”h]”jð)�”}”(hj]–h]”hŒnotify_phy_detach”…”�”}”(hj_–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‹hjW–ubj)�”}”(hhh]”jl)�”}”(hŒýPerform pre-detach handling for MDIO bus drivers. Optional and independent of **notify_phy_attach**. Called in phy_detach() right after phy_suspend(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL.”h]”(hŒNPerform pre-detach handling for MDIO bus drivers. Optional and independent of ”…”�”}”(hjv–h²hh³Nh´Nubj›)�”}”(hŒ**notify_phy_attach**”h]”hŒnotify_phy_attach”…”�”}”(hj~–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjv–ubhŒš. Called in phy_detach() right after phy_suspend(). Runs in process context, may sleep and may be called with RTNL held. Must not acquire or rely on RTNL.”…”�”}”(hjv–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‡hjs–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jr–h´M‹hj”ubjä)�”}”(hŒ3``stats`` Statistic counters per device on the bus ”h]”(jê)�”}”(hŒ ``stats``”h]”jð)�”}”(hj©–h]”hŒstats”…”�”}”(hj«–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj£–ubj)�”}”(hhh]”jl)�”}”(hŒ(Statistic counters per device on the bus”h]”hŒ(Statistic counters per device on the bus”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾–h´M�hj¿–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾–h´M�hj”ubjä)�”}”(hŒY``mdio_lock`` A lock to ensure that only one thing can read/write the MDIO bus at a time ”h]”(jê)�”}”(hŒ ``mdio_lock``”h]”jð)�”}”(hjâ–h]”hŒ mdio_lock”…”�”}”(hjä–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M”hjÜ–ubj)�”}”(hhh]”jl)�”}”(hŒJA lock to ensure that only one thing can read/write the MDIO bus at a time”h]”hŒJA lock to ensure that only one thing can read/write the MDIO bus at a time”…”�”}”(hjû–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M“hjø–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j÷–h´M”hj”ubjä)�”}”(hŒ%``parent`` Parent device of this bus ”h]”(jê)�”}”(hŒ ``parent``”h]”jð)�”}”(hj—h]”hŒparent”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M˜hj—ubj)�”}”(hhh]”jl)�”}”(hŒParent device of this bus”h]”hŒParent device of this bus”…”�”}”(hj5—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1—h´M˜hj2—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1—h´M˜hj”ubjä)�”}”(hŒ!``state`` State of bus structure ”h]”(jê)�”}”(hŒ ``state``”h]”jð)�”}”(hjU—h]”hŒstate”…”�”}”(hjW—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjS—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MšhjO—ubj)�”}”(hhh]”jl)�”}”(hŒState of bus structure”h]”hŒState of bus structure”…”�”}”(hjn—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jj—h´Mšhjk—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jj—h´Mšhj”ubjä)�”}”(hŒ%``dev`` Kernel device representation ”h]”(jê)�”}”(hŒ``dev``”h]”jð)�”}”(hjŽ—h]”hŒdev”…”�”}”(hj�—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¢hjˆ—ubj)�”}”(hhh]”jl)�”}”(hŒKernel device representation”h]”hŒKernel device representation”…”�”}”(hj§—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£—h´M¢hj¤—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£—h´M¢hj”ubjä)�”}”(hŒ-``mdio_map`` list of all MDIO devices on bus ”h]”(jê)�”}”(hŒ ``mdio_map``”h]”jð)�”}”(hjÇ—h]”hŒmdio_map”…”�”}”(hjÉ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¥hjÁ—ubj)�”}”(hhh]”jl)�”}”(hŒlist of all MDIO devices on bus”h]”hŒlist of all MDIO devices on bus”…”�”}”(hjà—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜ—h´M¥hjÝ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜ—h´M¥hj”ubjä)�”}”(hŒ6``phy_mask`` PHY addresses to be ignored when probing ”h]”(jê)�”}”(hŒ ``phy_mask``”h]”jð)�”}”(hj˜h]”hŒphy_mask”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¨hjú—ubj)�”}”(hhh]”jl)�”}”(hŒ(PHY addresses to be ignored when probing”h]”hŒ(PHY addresses to be ignored when probing”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜h´M¨hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜h´M¨hj”ubjä)�”}”(hŒC``phy_ignore_ta_mask`` PHY addresses to ignore the TA/read failure ”h]”(jê)�”}”(hŒ``phy_ignore_ta_mask``”h]”jð)�”}”(hj9˜h]”hŒphy_ignore_ta_mask”…”�”}”(hj;˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M«hj3˜ubj)�”}”(hhh]”jl)�”}”(hŒ+PHY addresses to ignore the TA/read failure”h]”hŒ+PHY addresses to ignore the TA/read failure”…”�”}”(hjR˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jN˜h´M«hjO˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jN˜h´M«hj”ubjä)�”}”(hŒW``irq`` An array of interrupts, each PHY's interrupt at the index matching its address ”h]”(jê)�”}”(hŒ``irq``”h]”jð)�”}”(hjr˜h]”hŒirq”…”�”}”(hjt˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjp˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M°hjl˜ubj)�”}”(hhh]”jl)�”}”(hŒNAn array of interrupts, each PHY's interrupt at the index matching its address”h]”hŒPAn array of interrupts, each PHY’s interrupt at the index matching its address”…”�”}”(hj‹˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¯hjˆ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡˜h´M°hj”ubjä)�”}”(hŒ:``reset_delay_us`` GPIO reset pulse width in microseconds ”h]”(jê)�”}”(hŒ``reset_delay_us``”h]”jð)�”}”(hj¬˜h]”hŒreset_delay_us”…”�”}”(hj®˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M´hj¦˜ubj)�”}”(hhh]”jl)�”}”(hŒ&GPIO reset pulse width in microseconds”h]”hŒ&GPIO reset pulse width in microseconds”…”�”}”(hjŘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ˜h´M´hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ˜h´M´hj”ubjä)�”}”(hŒB``reset_post_delay_us`` GPIO reset deassert delay in microseconds ”h]”(jê)�”}”(hŒ``reset_post_delay_us``”h]”jð)�”}”(hjå˜h]”hŒreset_post_delay_us”…”�”}”(hjç˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjã˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¶hjߘubj)�”}”(hhh]”jl)�”}”(hŒ)GPIO reset deassert delay in microseconds”h]”hŒ)GPIO reset deassert delay in microseconds”…”�”}”(hjþ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jú˜h´M¶hjû˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjߘubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jú˜h´M¶hj”ubjä)�”}”(hŒ.``reset_gpiod`` Reset GPIO descriptor pointer ”h]”(jê)�”}”(hŒ``reset_gpiod``”h]”jð)�”}”(hj™h]”hŒ reset_gpiod”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¸hj™ubj)�”}”(hhh]”jl)�”}”(hŒReset GPIO descriptor pointer”h]”hŒReset GPIO descriptor pointer”…”�”}”(hj7™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j3™h´M¸hj4™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3™h´M¸hj”ubjä)�”}”(hŒ5``shared_lock`` protect access to the shared element ”h]”(jê)�”}”(hŒ``shared_lock``”h]”jð)�”}”(hjW™h]”hŒ shared_lock”…”�”}”(hjY™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjU™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M»hjQ™ubj)�”}”(hhh]”jl)�”}”(hŒ$protect access to the shared element”h]”hŒ$protect access to the shared element”…”�”}”(hjp™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jl™h´M»hjm™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jl™h´M»hj”ubjä)�”}”(hŒ-``shared`` shared state across different PHYs”h]”(jê)�”}”(hŒ ``shared``”h]”jð)�”}”(hj�™h]”hŒshared”…”�”}”(hj’™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¾hjŠ™ubj)�”}”(hhh]”jl)�”}”(hŒ"shared state across different PHYs”h]”hŒ"shared state across different PHYs”…”�”}”(hj©™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¿hj¦™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥™h´M¾hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÓ™h]”hŒ Description”…”�”}”(hjÕ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÑ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÂhj”–h²hubjl)�”}”(hŒbThe Bus class for PHYs. Devices which provide access to PHYs should register using this structure”h]”hŒbThe Bus class for PHYs. Devices which provide access to PHYs should register using this structure”…”�”}”(hjé™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mghj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdiobus_alloc (C function)”Œc.mdiobus_alloc”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ%struct mii_bus * mdiobus_alloc (void)”h]”j )�”}”(hŒ#struct mii_bus *mdiobus_alloc(void)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj šh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj šh²hh³jšh´MÇubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj0šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j2šŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ mdiobus_alloc”sbŒc.mdiobus_alloc”†”asbuh1hhj šh²hh³jšh´MÇubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQšh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj šh²hh³jšh´MÇubj )�”}”(hj h]”hŒ*”…”�”}”(hj_šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj šh²hh³jšh´MÇubj3)�”}”(hŒ mdiobus_alloc”h]”j9)�”}”(hjNšh]”hŒ mdiobus_alloc”…”�”}”(hjpšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlšubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj šh²hh³jšh´MÇubj¡ )�”}”(hŒ(void)”h]”j§ )�”}”(hŒvoid”h]”jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹šh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‡šubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒšubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj šh²hh³jšh´MÇubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj šh²hh³jšh´MÇubah}”(h]”jšah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jšh´MÇhjšh²hubjg)�”}”(hhh]”jl)�”}”(hŒAllocate an MDIO bus structure”h]”hŒAllocate an MDIO bus structure”…”�”}”(hjµšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÇhj²šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšh²hh³jšh´MÇubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÍšjŒjÍšj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ§**Parameters** ``void`` no arguments **Description** The internal state of the MDIO bus will be set of MDIOBUS_ALLOCATED ready for the driver to register the bus.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjךh]”hŒ Parameters”…”�”}”(hjÙšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MËhjÑšubjß)�”}”(hhh]”jä)�”}”(hŒ``void`` no arguments ”h]”(jê)�”}”(hŒ``void``”h]”jð)�”}”(hjöšh]”hŒvoid”…”�”}”(hjøšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjôšubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Khjðšubj)�”}”(hhh]”jl)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ›h´Khj ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ›h´Khjíšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÑšubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj1›h]”hŒ Description”…”�”}”(hj3›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj/›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´KhjÑšubjl)�”}”(hŒmThe internal state of the MDIO bus will be set of MDIOBUS_ALLOCATED ready for the driver to register the bus.”h]”hŒmThe internal state of the MDIO bus will be set of MDIOBUS_ALLOCATED ready for the driver to register the bus.”…”�”}”(hjG›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÈhjÑšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_state (C enum)”Œ c.phy_state”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ phy_state”h]”j )�”}”(hŒenum phy_state”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjv›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr›h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÎubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjr›h²hh³jƒ›h´MÎubj3)�”}”(hŒ phy_state”h]”j9)�”}”(hjp›h]”hŒ phy_state”…”�”}”(hj–›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’›ubah}”(• h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjr›h²hh³jƒ›h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjn›h²hh³jƒ›h´MÎubah}”(h]”ji›ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jƒ›h´MÎhjk›h²hubjg)�”}”(hhh]”jl)�”}”(hŒPHY state machine states:”h]”hŒPHY state machine states:”…”�”}”(hj¸›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mçhjµ›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjk›h²hh³jƒ›h´MÎubeh}”(h]”h ]”(j…Œenum”eh"]”h$]”h&]”jŠj…j‹jЛjŒjЛj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXÎ**Constants** ``PHY_DOWN`` PHY device and driver are not ready for anything. probe should be called if and only if the PHY is in this state, given that the PHY device exists. - PHY driver probe function will set the state to **PHY_READY** ``PHY_READY`` PHY is ready to send and receive packets, but the controller is not. By default, PHYs which do not implement probe will be set to this state by phy_probe(). - start will set the state to UP ``PHY_HALTED`` PHY is up, but no polling or interrupts are done. - phy_start moves to **PHY_UP** ``PHY_ERROR`` PHY is up, but is in an error state. - phy_stop moves to **PHY_HALTED** ``PHY_UP`` The PHY and attached device are ready to do work. Interrupts should be started here. - timer moves to **PHY_NOLINK** or **PHY_RUNNING** ``PHY_RUNNING`` PHY is currently up, running, and possibly sending and/or receiving packets - irq or timer will set **PHY_NOLINK** if link goes down - phy_stop moves to **PHY_HALTED** ``PHY_NOLINK`` PHY is up, but not currently plugged in. - irq or timer will set **PHY_RUNNING** if link comes back - phy_stop moves to **PHY_HALTED** ``PHY_CABLETEST`` PHY is performing a cable test. Packet reception/sending is not expected to work, carrier will be indicated as down. PHY will be poll once per second, or on interrupt for it current state. Once complete, move to UP to restart the PHY. - phy_stop aborts the running test and moves to **PHY_HALTED**”h]”(jl)�”}”(hŒ **Constants**”h]”j›)�”}”(hjÚ›h]”hŒ Constants”…”�”}”(hjÜ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MëhjÔ›ubjß)�”}”(hhh]”(jä)�”}”(hŒâ``PHY_DOWN`` PHY device and driver are not ready for anything. probe should be called if and only if the PHY is in this state, given that the PHY device exists. - PHY driver probe function will set the state to **PHY_READY** ”h]”(jê)�”}”(hŒ ``PHY_DOWN``”h]”jð)�”}”(hjù›h]”hŒPHY_DOWN”…”�”}”(hjû›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mñhjó›ubj)�”}”(hhh]”jl)�”}”(hŒÔPHY device and driver are not ready for anything. probe should be called if and only if the PHY is in this state, given that the PHY device exists. - PHY driver probe function will set the state to **PHY_READY**”h]”(hŒÇPHY device and driver are not ready for anything. probe should be called if and only if the PHY is in this state, given that the PHY device exists. - PHY driver probe function will set the state to ”…”�”}”(hjœh²hh³Nh´Nubj›)�”}”(hŒ **PHY_READY**”h]”hŒ PHY_READY”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mîhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœh´Mñhjð›ubjä)�”}”(hŒÍ``PHY_READY`` PHY is ready to send and receive packets, but the controller is not. By default, PHYs which do not implement probe will be set to this state by phy_probe(). - start will set the state to UP ”h]”(jê)�”}”(hŒ ``PHY_READY``”h]”jð)�”}”(hjAœh]”hŒ PHY_READY”…”�”}”(hjCœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M÷hj;œubj)�”}”(hhh]”jl)�”}”(hŒ¾PHY is ready to send and receive packets, but the controller is not. By default, PHYs which do not implement probe will be set to this state by phy_probe(). - start will set the state to UP”h]”hŒ¾PHY is ready to send and receive packets, but the controller is not. By default, PHYs which do not implement probe will be set to this state by phy_probe(). - start will set the state to UP”…”�”}”(hjZœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MôhjWœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVœh´M÷hjð›ubjä)�”}”(hŒa``PHY_HALTED`` PHY is up, but no polling or interrupts are done. - phy_start moves to **PHY_UP** ”h]”(jê)�”}”(hŒ``PHY_HALTED``”h]”jð)�”}”(hj{œh]”hŒ PHY_HALTED”…”�”}”(hj}œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mûhjuœubj)�”}”(hhh]”jl)�”}”(hŒQPHY is up, but no polling or interrupts are done. - phy_start moves to **PHY_UP**”h]”(hŒGPHY is up, but no polling or interrupts are done. - phy_start moves to ”…”�”}”(hj”œh²hh³Nh´Nubj›)�”}”(hŒ **PHY_UP**”h]”hŒPHY_UP”…”�”}”(hjœœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj”œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Múhj‘œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�œh´Mûhjð›ubjä)�”}”(hŒV``PHY_ERROR`` PHY is up, but is in an error state. - phy_stop moves to **PHY_HALTED** ”h]”(jê)�”}”(hŒ ``PHY_ERROR``”h]”jð)�”}”(hjÜh]”hŒ PHY_ERROR”…”�”}”(hjÅœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mÿhj½œubj)�”}”(hhh]”jl)�”}”(hŒGPHY is up, but is in an error state. - phy_stop moves to **PHY_HALTED**”h]”(hŒ9PHY is up, but is in an error state. - phy_stop moves to ”…”�”}”(hjÜœh²hh³Nh´Nubj›)�”}”(hŒ**PHY_HALTED**”h]”hŒ PHY_HALTED”…”�”}”(hjäœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÜœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MþhjÙœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØœh´Mÿhjð›ubjä)�”}”(hŒ“``PHY_UP`` The PHY and attached device are ready to do work. Interrupts should be started here. - timer moves to **PHY_NOLINK** or **PHY_RUNNING** ”h]”(jê)�”}”(hŒ ``PHY_UP``”h]”jð)�”}”(hj �h]”hŒPHY_UP”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj�ubj)�”}”(hhh]”jl)�”}”(hŒ‡The PHY and attached device are ready to do work. Interrupts should be started here. - timer moves to **PHY_NOLINK** or **PHY_RUNNING**”h]”(hŒfThe PHY and attached device are ready to do work. Interrupts should be started here. - timer moves to ”…”�”}”(hj$�h²hh³Nh´Nubj›)�”}”(hŒ**PHY_NOLINK**”h]”hŒ PHY_NOLINK”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$�ubhŒ or ”…”�”}”(hj$�h²hh³Nh´Nubj›)�”}”(hŒ**PHY_RUNNING**”h]”hŒ PHY_RUNNING”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj!�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j �h´Mhjð›ubjä)�”}”(hŒ¸``PHY_RUNNING`` PHY is currently up, running, and possibly sending and/or receiving packets - irq or timer will set **PHY_NOLINK** if link goes down - phy_stop moves to **PHY_HALTED** ”h]”(jê)�”}”(hŒ``PHY_RUNNING``”h]”jð)�”}”(hje�h]”hŒ PHY_RUNNING”…”�”}”(hjg�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjc�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hj_�ubj)�”}”(hhh]”jl)�”}”(hŒ§PHY is currently up, running, and possibly sending and/or receiving packets - irq or timer will set **PHY_NOLINK** if link goes down - phy_stop moves to **PHY_HALTED**”h]”(hŒdPHY is currently up, running, and possibly sending and/or receiving packets - irq or timer will set ”…”�”}”(hj~�h²hh³Nh´Nubj›)�”}”(hŒ**PHY_NOLINK**”h]”hŒ PHY_NOLINK”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~�ubhŒ' if link goes down - phy_stop moves to ”…”�”}”(hj~�h²hh³Nh´Nubj›)�”}”(hŒ**PHY_HALTED**”h]”hŒ PHY_HALTED”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj{�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jz�h´M hjð›ubjä)�”}”(hŒ–``PHY_NOLINK`` PHY is up, but not currently plugged in. - irq or timer will set **PHY_RUNNING** if link comes back - phy_stop moves to **PHY_HALTED** ”h]”(jê)�”}”(hŒ``PHY_NOLINK``”h]”jð)�”}”(hj¿�h]”hŒ PHY_NOLINK”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj¹�ubj)�”}”(hhh]”jl)�”}”(hŒ†PHY is up, but not currently plugged in. - irq or timer will set **PHY_RUNNING** if link comes back - phy_stop moves to **PHY_HALTED**”h]”(hŒAPHY is up, but not currently plugged in. - irq or timer will set ”…”�”}”(hjØ�h²hh³Nh´Nubj›)�”}”(hŒ**PHY_RUNNING**”h]”hŒ PHY_RUNNING”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ�ubhŒ( if link comes back - phy_stop moves to ”…”�”}”(hjØ�h²hh³Nh´Nubj›)�”}”(hŒ**PHY_HALTED**”h]”hŒ PHY_HALTED”…”�”}”(hjò�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjÕ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÔ�h´Mhjð›ubjä)�”}”(hX;``PHY_CABLETEST`` PHY is performing a cable test. Packet reception/sending is not expected to work, carrier will be indicated as down. PHY will be poll once per second, or on interrupt for it current state. Once complete, move to UP to restart the PHY. - phy_stop aborts the running test and moves to **PHY_HALTED**”h]”(jê)�”}”(hŒ``PHY_CABLETEST``”h]”jð)�”}”(hjžh]”hŒ PHY_CABLETEST”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjžubj)�”}”(hhh]”jl)�”}”(hX)PHY is performing a cable test. Packet reception/sending is not expected to work, carrier will be indicated as down. PHY will be poll once per second, or on interrupt for it current state. Once complete, move to UP to restart the PHY. - phy_stop aborts the running test and moves to **PHY_HALTED**”h]”(hXPHY is performing a cable test. Packet reception/sending is not expected to work, carrier will be indicated as down. PHY will be poll once per second, or on interrupt for it current state. Once complete, move to UP to restart the PHY. - phy_stop aborts the running test and moves to ”…”�”}”(hj2žh²hh³Nh´Nubj›)�”}”(hŒ**PHY_HALTED**”h]”hŒ PHY_HALTED”…”�”}”(hj:žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj/žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.žh´Mhjð›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÔ›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_c45_device_ids (C struct)”Œc.phy_c45_device_ids”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_c45_device_ids”h]”j )�”}”(hŒstruct phy_c45_device_ids”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}žh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}žh²hh³jŽžh´Mubj3)�”}”(hŒphy_c45_device_ids”h]”j9)�”}”(hj{žh]”hŒphy_c45_device_ids”…”�”}”(hj¡žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�žubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj}žh²hh³jŽžh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjyžh²hh³jŽžh´Mubah}”(h]”jtžah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŽžh´Mhjvžh²hubjg)�”}”(hhh]”jl)�”}”(hŒ802.3-c45 Device Identifiers”h]”hŒ802.3-c45 Device Identifiers”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjÀžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjvžh²hh³jŽžh´Mubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jÛžjŒjÛžj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXT**Definition**:: struct phy_c45_device_ids { u32 devices_in_package; u32 mmds_present; u32 device_ids[MDIO_MMD_NUM]; }; **Members** ``devices_in_package`` IEEE 802.3 devices in package register value. ``mmds_present`` bit vector of MMDs present. ``device_ids`` The device identifier for each present device.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjçžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjãžubhŒ:”…”�”}”(hjãžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjßžubj¶)�”}”(hŒrstruct phy_c45_device_ids { u32 devices_in_package; u32 mmds_present; u32 device_ids[MDIO_MMD_NUM]; };”h]”hŒrstruct phy_c45_device_ids { u32 devices_in_package; u32 mmds_present; u32 device_ids[MDIO_MMD_NUM]; };”…”�”}”hjŸsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjßžubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjŸh]”hŒMembers”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M&hjßžubjß)�”}”(hhh]”(jä)�”}”(hŒE``devices_in_package`` IEEE 802.3 devices in package register value. ”h]”(jê)�”}”(hŒ``devices_in_package``”h]”jð)�”}”(hj0Ÿh]”hŒdevices_in_package”…”�”}”(hj2Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj*Ÿubj)�”}”(hhh]”jl)�”}”(hŒ-IEEE 802.3 devices in package register value.”h]”hŒ-IEEE 802.3 devices in package register value.”…”�”}”(hjIŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jEŸh´MhjFŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEŸh´Mhj'Ÿubjä)�”}”(hŒ-``mmds_present`` bit vector of MMDs present. ”h]”(jê)�”}”(hŒ``mmds_present``”h]”jð)�”}”(hjiŸh]”hŒ mmds_present”…”�”}”(hjkŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjcŸubj)�”}”(hhh]”jl)�”}”(hŒbit vector of MMDs present.”h]”hŒbit vector of MMDs present.”…”�”}”(hj‚Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~Ÿh´MhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j~Ÿh´Mhj'Ÿubjä)�”}”(hŒ=``device_ids`` The device identifier for each present device.”h]”(jê)�”}”(hŒ``device_ids``”h]”jð)�”}”(hj¢Ÿh]”hŒ device_ids”…”�”}”(hj¤Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjœŸubj)�”}”(hhh]”jl)�”}”(hŒ.The device identifier for each present device.”h]”hŒ.The device identifier for each present device.”…”�”}”(hj»Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj¸Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j·Ÿh´Mhj'Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjßžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phy_oatc14_sqi_capability (C struct)”Œc.phy_oatc14_sqi_capability”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_oatc14_sqi_capability”h]”j )�”}”(hŒ struct phy_oatc14_sqi_capability”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjüŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøŸh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjøŸh²hh³j  h´M$ubj3)�”}”(hŒphy_oatc14_sqi_capability”h]”j9)�”}”(hjöŸh]”hŒphy_oatc14_sqi_capability”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjøŸh²hh³j  h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjôŸh²hh³j  h´M$ubah}”(h]”jïŸah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j  h´M$hjñŸh²hubjg)�”}”(hhh]”jl)�”}”(hŒ4SQI capability information for OATC14 10Base-T1S PHY”h]”hŒ4SQI capability information for OATC14 10Base-T1S PHY”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M)hj; h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjñŸh²hh³j  h´M$ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jV jŒjV j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¹**Definition**:: struct phy_oatc14_sqi_capability { bool updated; int sqi_max; u8 sqiplus_bits; }; **Members** ``updated`` Indicates whether the SQI capability fields have been updated. ``sqi_max`` Maximum supported Signal Quality Indicator (SQI) level reported by the PHY. ``sqiplus_bits`` Bits for SQI+ levels supported by the PHY. 0 - SQI+ is not supported 3 - SQI+ is supported, using 3 bits (8 levels) 4 - SQI+ is supported, using 4 bits (16 levels) 5 - SQI+ is supported, using 5 bits (32 levels) 6 - SQI+ is supported, using 6 bits (64 levels) 7 - SQI+ is supported, using 7 bits (128 levels) 8 - SQI+ is supported, using 8 bits (256 levels)”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^ ubhŒ:”…”�”}”(hj^ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M-hjZ ubj¶)�”}”(hŒ]struct phy_oatc14_sqi_capability { bool updated; int sqi_max; u8 sqiplus_bits; };”h]”hŒ]struct phy_oatc14_sqi_capability { bool updated; int sqi_max; u8 sqiplus_bits; };”…”�”}”hj{ sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M/hjZ ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjŒ h]”hŒMembers”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M5hjZ ubjß)�”}”(hhh]”(jä)�”}”(hŒK``updated`` Indicates whether the SQI capability fields have been updated. ”h]”(jê)�”}”(hŒ ``updated``”h]”jð)�”}”(hj« h]”hŒupdated”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M,hj¥ ubj)�”}”(hhh]”jl)�”}”(hŒ>Indicates whether the SQI capability fields have been updated.”h]”hŒ>Indicates whether the SQI capability fields have been updated.”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀ h´M,hjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀ h´M,hj¢ ubjä)�”}”(hŒX``sqi_max`` Maximum supported Signal Quality Indicator (SQI) level reported by the PHY. ”h]”(jê)�”}”(hŒ ``sqi_max``”h]”jð)�”}”(hjä h]”hŒsqi_max”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M.hjÞ ubj)�”}”(hhh]”jl)�”}”(hŒKMaximum supported Signal Quality Indicator (SQI) level reported by the PHY.”h]”hŒKMaximum supported Signal Quality Indicator (SQI) level reported by the PHY.”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M-hjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jù h´M.hj¢ ubjä)�”}”(hXv``sqiplus_bits`` Bits for SQI+ levels supported by the PHY. 0 - SQI+ is not supported 3 - SQI+ is supported, using 3 bits (8 levels) 4 - SQI+ is supported, using 4 bits (16 levels) 5 - SQI+ is supported, using 5 bits (32 levels) 6 - SQI+ is supported, using 6 bits (64 levels) 7 - SQI+ is supported, using 7 bits (128 levels) 8 - SQI+ is supported, using 8 bits (256 levels)”h]”(jê)�”}”(hŒ``sqiplus_bits``”h]”jð)�”}”(hj¡h]”hŒ sqiplus_bits”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M5hj¡ubj)�”}”(hhh]”jl)�”}”(hXeBits for SQI+ levels supported by the PHY. 0 - SQI+ is not supported 3 - SQI+ is supported, using 3 bits (8 levels) 4 - SQI+ is supported, using 4 bits (16 levels) 5 - SQI+ is supported, using 5 bits (32 levels) 6 - SQI+ is supported, using 6 bits (64 levels) 7 - SQI+ is supported, using 7 bits (128 levels) 8 - SQI+ is supported, using 8 bits (256 levels)”h]”hXeBits for SQI+ levels supported by the PHY. 0 - SQI+ is not supported 3 - SQI+ is supported, using 3 bits (8 levels) 4 - SQI+ is supported, using 4 bits (16 levels) 5 - SQI+ is supported, using 5 bits (32 levels) 6 - SQI+ is supported, using 6 bits (64 levels) 7 - SQI+ is supported, using 7 bits (128 levels) 8 - SQI+ is supported, using 8 bits (256 levels)”…”�”}”(hj7¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M/hj4¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3¡h´M5hj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjZ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hja¡h]”hŒ Description”…”�”}”(hjc¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj_¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M9hj”–h²hubjl)�”}”(hŒƒThis structure is used by the OATC14 10Base-T1S PHY driver to store the SQI and SQI+ capability information retrieved from the PHY.”h]”hŒƒThis structure is used by the OATC14 10Base-T1S PHY driver to store the SQI and SQI+ capability information retrieved from the PHY.”…”�”}”(hjw¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M6hj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_device (C struct)”Œ c.phy_device”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ phy_device”h]”j )�”}”(hŒstruct phy_device”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjŸ¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›¡h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›¡h²hh³j¬¡h´M<ubj3)�”}”(hŒ phy_device”h]”j9)�”}”(hj™¡h]”hŒ phy_device”…”�”}”(hj¿¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»¡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj›¡h²hh³j¬¡h´M<ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj—¡h²hh³j¬¡h´M<ubah}”(h]”j’¡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¬¡h´M<hj”¡h²hubjg)�”}”(hhh]”jl)�”}”(hŒAn instance of a PHY”h]”hŒAn instance of a PHY”…”�”}”(hjá¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MAhjÞ¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj”¡h²hh³j¬¡h´M<ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jù¡jŒjù¡j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX#**Definition**:: struct phy_device { struct mdio_device mdio; const struct phy_driver *drv; struct module *drv_owner; struct device_link *devlink; u32 phyindex; u32 phy_id; struct phy_c45_device_ids c45_ids; unsigned is_c45:1; unsigned is_internal:1; unsigned is_pseudo_fixed_link:1; unsigned is_gigabit_capable:1; unsigned has_fixups:1; unsigned suspended:1; unsigned suspended_by_mdio_bus:1; unsigned sysfs_links:1; unsigned loopback_enabled:1; unsigned downshifted_rate:1; unsigned is_on_sfp_module:1; unsigned mac_managed_pm:1; unsigned wol_enabled:1; unsigned is_genphy_driven:1; unsigned autoneg:1; unsigned link:1; unsigned autoneg_complete:1; bool pause:1; bool asym_pause:1; unsigned interrupts:1; unsigned irq_suspended:1; unsigned irq_rerun:1; unsigned default_timestamp:1; int rate_matching; enum phy_state state; u32 dev_flags; phy_interface_t interface; unsigned long possible_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; int speed; int duplex; int port; u8 master_slave_get; u8 master_slave_set; u8 master_slave_state; unsigned long supported[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long lp_advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long adv_old[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long supported_eee[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long advertising_eee[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long eee_disabled_modes[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; bool enable_tx_lpi; bool eee_active; bool autonomous_eee_disabled; struct eee_config eee_cfg; unsigned long host_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; #ifdef CONFIG_LED_TRIGGER_PHY; struct phy_led_trigger *phy_led_triggers; unsigned int phy_num_led_triggers; struct phy_led_trigger *last_triggered; struct phy_led_trigger *led_link_trigger; #endif; struct list_head leds; int irq; void *priv; #if IS_ENABLED(CONFIG_PHY_PACKAGE); struct phy_package_shared *shared; #endif; struct sk_buff *skb; void *ehdr; struct nlattr *nest; struct delayed_work state_queue; struct mutex lock; bool sfp_bus_attached; bool has_sfp_mod_phy; struct sfp_bus *sfp_bus; struct phy_port *sfp_cage_port; struct phy_port *mod_port; struct phy_port *upstream_port; struct phylink *phylink; struct net_device *attached_dev; struct mii_timestamper *mii_ts; struct pse_control *psec; struct list_head ports; int n_ports; int max_n_ports; u8 mdix; u8 mdix_ctrl; int pma_extable; unsigned int link_down_events; void (*phy_link_change)(struct phy_device *phydev, bool up); void (*adjust_link)(struct net_device *dev); #if IS_ENABLED(CONFIG_MACSEC); const struct macsec_ops *macsec_ops; #endif; struct phy_oatc14_sqi_capability oatc14_sqi_capability; }; **Members** ``mdio`` MDIO bus this PHY is on ``drv`` Pointer to the driver for this PHY instance ``drv_owner`` Driver module phy_attach_direct() took a reference on ``devlink`` Create a link between phy dev and mac dev, if the external phy used by current mac interface is managed by another mac interface. ``phyindex`` Unique id across the phy's parent tree of phys to address the PHY from userspace, similar to ifindex. A zero index means the PHY wasn't assigned an id yet. ``phy_id`` UID for this device found during discovery ``c45_ids`` 802.3-c45 Device Identifiers if is_c45. ``is_c45`` Set to true if this PHY uses clause 45 addressing. ``is_internal`` Set to true if this PHY is internal to a MAC. ``is_pseudo_fixed_link`` Set to true if this PHY is an Ethernet switch, etc. ``is_gigabit_capable`` Set to true if PHY supports 1000Mbps ``has_fixups`` Set to true if this PHY has fixups/quirks. ``suspended`` Set to true if this PHY has been suspended successfully. ``suspended_by_mdio_bus`` Set to true if this PHY was suspended by MDIO bus. ``sysfs_links`` Internal boolean tracking sysfs symbolic links setup/removal. ``loopback_enabled`` Set true if this PHY has been loopbacked successfully. ``downshifted_rate`` Set true if link speed has been downshifted. ``is_on_sfp_module`` Set true if PHY is located on an SFP module. ``mac_managed_pm`` Set true if MAC driver takes of suspending/resuming PHY ``wol_enabled`` Set to true if the PHY or the attached MAC have Wake-on-LAN enabled. ``is_genphy_driven`` PHY is driven by one of the generic PHY drivers ``autoneg`` Flag autoneg being used ``link`` Current link state ``autoneg_complete`` Flag auto negotiation of the link has completed ``pause`` Current pause ``asym_pause`` Current asymmetric pause ``interrupts`` Flag interrupts have been enabled ``irq_suspended`` Flag indicating PHY is suspended and therefore interrupt handling shall be postponed until PHY has resumed ``irq_rerun`` Flag indicating interrupts occurred while PHY was suspended, requiring a rerun of the interrupt handler after resume ``default_timestamp`` Flag indicating whether we are using the phy timestamp as the default one ``rate_matching`` Current rate matching mode ``state`` State of the PHY for management purposes ``dev_flags`` Device-specific flags used by the PHY driver. ``interface`` enum phy_interface_t value ``possible_interfaces`` bitmap if interface modes that the attached PHY will switch between depending on media speed. ``speed`` Current link speed ``duplex`` Current duplex ``port`` Current port ``master_slave_get`` Current master/slave advertisement ``master_slave_set`` User requested master/slave configuration ``master_slave_state`` Current master/slave configuration ``supported`` Combined MAC/PHY supported linkmodes ``advertising`` Currently advertised linkmodes ``lp_advertising`` Current link partner advertised linkmodes ``adv_old`` Saved advertised while power saving for WoL ``supported_eee`` supported PHY EEE linkmodes ``advertising_eee`` Currently advertised EEE linkmodes ``eee_disabled_modes`` Energy efficient ethernet modes not to be advertised ``enable_tx_lpi`` When True, MAC should transmit LPI to PHY ``eee_active`` phylib private state, indicating that EEE has been negotiated ``autonomous_eee_disabled`` Set when autonomous EEE has been disabled, used to re-apply after PHY soft reset ``eee_cfg`` User configuration of EEE ``host_interfaces`` PHY interface modes supported by host ``phy_led_triggers`` Array of LED triggers ``phy_num_led_triggers`` Number of triggers in **phy_led_triggers** ``last_triggered`` last LED trigger for link speed ``led_link_trigger`` LED trigger for link up/down ``leds`` list of PHY LED structures ``irq`` IRQ number of the PHY's interrupt (-1 if none) ``priv`` Pointer to driver private data ``shared`` Pointer to private data shared by phys in one package ``skb`` Netlink message for cable diagnostics ``ehdr`` nNtlink header for cable diagnostics ``nest`` Netlink nest used for cable diagnostics ``state_queue`` Work queue for state machine ``lock`` Mutex for serialization access to PHY ``sfp_bus_attached`` Flag indicating whether the SFP bus has been attached ``has_sfp_mod_phy`` Set true if downstream SFP bus's module contains a PHY ``sfp_bus`` SFP bus attached to this PHY's fiber port ``sfp_cage_port`` The phy_port connected to the downstream SFP cage ``mod_port`` phy_port representing the SFP module, if it is phy-less ``upstream_port`` phy_port this PHY's MII attaches to, if any ``phylink`` Pointer to phylink instance for this PHY ``attached_dev`` The attached enet driver's device instance ptr ``mii_ts`` Pointer to time stamper callbacks ``psec`` Pointer to Power Sourcing Equipment control struct ``ports`` List of PHY ports structures ``n_ports`` Number of ports currently attached to the PHY ``max_n_ports`` Max number of ports this PHY can expose ``mdix`` Current crossover ``mdix_ctrl`` User setting of crossover ``pma_extable`` Cached value of PMA/PMD Extended Abilities Register ``link_down_events`` Number of times link was lost ``phy_link_change`` Callback for phylink for notification of link change ``adjust_link`` Callback for the enet controller to respond to changes: in the link state. ``macsec_ops`` MACsec offloading ops. ``oatc14_sqi_capability`` SQI capability information for OATC14 10Base-T1S PHY”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¢ubhŒ:”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MEhjý¡ubj¶)�”}”(hXE struct phy_device { struct mdio_device mdio; const struct phy_driver *drv; struct module *drv_owner; struct device_link *devlink; u32 phyindex; u32 phy_id; struct phy_c45_device_ids c45_ids; unsigned is_c45:1; unsigned is_internal:1; unsigned is_pseudo_fixed_link:1; unsigned is_gigabit_capable:1; unsigned has_fixups:1; unsigned suspended:1; unsigned suspended_by_mdio_bus:1; unsigned sysfs_links:1; unsigned loopback_enabled:1; unsigned downshifted_rate:1; unsigned is_on_sfp_module:1; unsigned mac_managed_pm:1; unsigned wol_enabled:1; unsigned is_genphy_driven:1; unsigned autoneg:1; unsigned link:1; unsigned autoneg_complete:1; bool pause:1; bool asym_pause:1; unsigned interrupts:1; unsigned irq_suspended:1; unsigned irq_rerun:1; unsigned default_timestamp:1; int rate_matching; enum phy_state state; u32 dev_flags; phy_interface_t interface; unsigned long possible_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; int speed; int duplex; int port; u8 master_slave_get; u8 master_slave_set; u8 master_slave_state; unsigned long supported[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long lp_advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long adv_old[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long supported_eee[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long advertising_eee[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long eee_disabled_modes[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; bool enable_tx_lpi; bool eee_active; bool autonomous_eee_disabled; struct eee_config eee_cfg; unsigned long host_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; #ifdef CONFIG_LED_TRIGGER_PHY; struct phy_led_trigger *phy_led_triggers; unsigned int phy_num_led_triggers; struct phy_led_trigger *last_triggered; struct phy_led_trigger *led_link_trigger; #endif; struct list_head leds; int irq; void *priv; #if IS_ENABLED(CONFIG_PHY_PACKAGE); struct phy_package_shared *shared; #endif; struct sk_buff *skb; void *ehdr; struct nlattr *nest; struct delayed_work state_queue; struct mutex lock; bool sfp_bus_attached; bool has_sfp_mod_phy; struct sfp_bus *sfp_bus; struct phy_port *sfp_cage_port; struct phy_port *mod_port; struct phy_port *upstream_port; struct phylink *phylink; struct net_device *attached_dev; struct mii_timestamper *mii_ts; struct pse_control *psec; struct list_head ports; int n_ports; int max_n_ports; u8 mdix; u8 mdix_ctrl; int pma_extable; unsigned int link_down_events; void (*phy_link_change)(struct phy_device *phydev, bool up); void (*adjust_link)(struct net_device *dev); #if IS_ENABLED(CONFIG_MACSEC); const struct macsec_ops *macsec_ops; #endif; struct phy_oatc14_sqi_capability oatc14_sqi_capability; };”h]”hXE struct phy_device { struct mdio_device mdio; const struct phy_driver *drv; struct module *drv_owner; struct device_link *devlink; u32 phyindex; u32 phy_id; struct phy_c45_device_ids c45_ids; unsigned is_c45:1; unsigned is_internal:1; unsigned is_pseudo_fixed_link:1; unsigned is_gigabit_capable:1; unsigned has_fixups:1; unsigned suspended:1; unsigned suspended_by_mdio_bus:1; unsigned sysfs_links:1; unsigned loopback_enabled:1; unsigned downshifted_rate:1; unsigned is_on_sfp_module:1; unsigned mac_managed_pm:1; unsigned wol_enabled:1; unsigned is_genphy_driven:1; unsigned autoneg:1; unsigned link:1; unsigned autoneg_complete:1; bool pause:1; bool asym_pause:1; unsigned interrupts:1; unsigned irq_suspended:1; unsigned irq_rerun:1; unsigned default_timestamp:1; int rate_matching; enum phy_state state; u32 dev_flags; phy_interface_t interface; unsigned long possible_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; int speed; int duplex; int port; u8 master_slave_get; u8 master_slave_set; u8 master_slave_state; unsigned long supported[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long lp_advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long adv_old[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long supported_eee[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long advertising_eee[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long eee_disabled_modes[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; bool enable_tx_lpi; bool eee_active; bool autonomous_eee_disabled; struct eee_config eee_cfg; unsigned long host_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; #ifdef CONFIG_LED_TRIGGER_PHY; struct phy_led_trigger *phy_led_triggers; unsigned int phy_num_led_triggers; struct phy_led_trigger *last_triggered; struct phy_led_trigger *led_link_trigger; #endif; struct list_head leds; int irq; void *priv; #if IS_ENABLED(CONFIG_PHY_PACKAGE); struct phy_package_shared *shared; #endif; struct sk_buff *skb; void *ehdr; struct nlattr *nest; struct delayed_work state_queue; struct mutex lock; bool sfp_bus_attached; bool has_sfp_mod_phy; struct sfp_bus *sfp_bus; struct phy_port *sfp_cage_port; struct phy_port *mod_port; struct phy_port *upstream_port; struct phylink *phylink; struct net_device *attached_dev; struct mii_timestamper *mii_ts; struct pse_control *psec; struct list_head ports; int n_ports; int max_n_ports; u8 mdix; u8 mdix_ctrl; int pma_extable; unsigned int link_down_events; void (*phy_link_change)(struct phy_device *phydev, bool up); void (*adjust_link)(struct net_device *dev); #if IS_ENABLED(CONFIG_MACSEC); const struct macsec_ops *macsec_ops; #endif; struct phy_oatc14_sqi_capability oatc14_sqi_capability; };”…”�”}”hj¢sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MGhjý¡ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj/¢h]”hŒMembers”…”�”}”(hj1¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj-¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M§hjý¡ubjß)�”}”(hhh]”(jä)�”}”(hŒ!``mdio`` MDIO bus this PHY is on ”h]”(jê)�”}”(hŒ``mdio``”h]”jð)�”}”(hjN¢h]”hŒmdio”…”�”}”(hjP¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MDhjH¢ubj)�”}”(hhh]”jl)�”}”(hŒMDIO bus this PHY is on”h]”hŒMDIO bus this PHY is on”…”�”}”(hjg¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc¢h´MDhjd¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc¢h´MDhjE¢ubjä)�”}”(hŒ4``drv`` Pointer to the driver for this PHY instance ”h]”(jê)�”}”(hŒ``drv``”h]”jð)�”}”(hj‡¢h]”hŒdrv”…”�”}”(hj‰¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MEhj�¢ubj)�”}”(hhh]”jl)�”}”(hŒ+Pointer to the driver for this PHY instance”h]”hŒ+Pointer to the driver for this PHY instance”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœ¢h´MEhj�¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœ¢h´MEhjE¢ubjä)�”}”(hŒD``drv_owner`` Driver module phy_attach_direct() took a reference on ”h]”(jê)�”}”(hŒ ``drv_owner``”h]”jð)�”}”(hjÀ¢h]”hŒ drv_owner”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MFhjº¢ubj)�”}”(hhh]”jl)�”}”(hŒ5Driver module phy_attach_direct() took a reference on”h]”hŒ5Driver module phy_attach_direct() took a reference on”…”�”}”(hjÙ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕ¢h´MFhjÖ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕ¢h´MFhjE¢ubjä)�”}”(hŒŽ``devlink`` Create a link between phy dev and mac dev, if the external phy used by current mac interface is managed by another mac interface. ”h]”(jê)�”}”(hŒ ``devlink``”h]”jð)�”}”(hjù¢h]”hŒdevlink”…”�”}”(hjû¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MHhjó¢ubj)�”}”(hhh]”jl)�”}”(hŒ�Create a link between phy dev and mac dev, if the external phy used by current mac interface is managed by another mac interface.”h]”hŒ�Create a link between phy dev and mac dev, if the external phy used by current mac interface is managed by another mac interface.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MGhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£h´MHhjE¢ubjä)�”}”(hŒ©``phyindex`` Unique id across the phy's parent tree of phys to address the PHY from userspace, similar to ifindex. A zero index means the PHY wasn't assigned an id yet. ”h]”(jê)�”}”(hŒ ``phyindex``”h]”jð)�”}”(hj3£h]”hŒphyindex”…”�”}”(hj5£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MKhj-£ubj)�”}”(hhh]”jl)�”}”(hŒ›Unique id across the phy's parent tree of phys to address the PHY from userspace, similar to ifindex. A zero index means the PHY wasn't assigned an id yet.”h]”hŒŸUnique id across the phy’s parent tree of phys to address the PHY from userspace, similar to ifindex. A zero index means the PHY wasn’t assigned an id yet.”…”�”}”(hjL£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MIhjI£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jH£h´MKhjE¢ubjä)�”}”(hŒ6``phy_id`` UID for this device found during discovery ”h]”(jê)�”}”(hŒ ``phy_id``”h]”jð)�”}”(hjm£h]”hŒphy_id”…”�”}”(hjo£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjk£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MLhjg£ubj)�”}”(hhh]”jl)�”}”(hŒ*UID for this device found during discovery”h]”hŒ*UID for this device found during discovery”…”�”}”(hj†£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚£h´MLhjƒ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚£h´MLhjE¢ubjä)�”}”(hŒ4``c45_ids`` 802.3-c45 Device Identifiers if is_c45. ”h]”(jê)�”}”(hŒ ``c45_ids``”h]”jð)�”}”(hj¦£h]”hŒc45_ids”…”�”}”(hj¨£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MMhj £ubj)�”}”(hhh]”jl)�”}”(hŒ'802.3-c45 Device Identifiers if is_c45.”h]”hŒ'802.3-c45 Device Identifiers if is_c45.”…”�”}”(hj¿£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»£h´MMhj¼£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj £ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»£h´MMhjE¢ubjä)�”}”(hŒ>``is_c45`` Set to true if this PHY uses clause 45 addressing. ”h]”(jê)�”}”(hŒ ``is_c45``”h]”jð)�”}”(hjߣh]”hŒis_c45”…”�”}”(hjá£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MNhjÙ£ubj)�”}”(hhh]”jl)�”}”(hŒ2Set to true if this PHY uses clause 45 addressing.”h]”hŒ2Set to true if this PHY uses clause 45 addressing.”…”�”}”(hjø£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jô£h´MNhjõ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jô£h´MNhjE¢ubjä)�”}”(hŒ>``is_internal`` Set to true if this PHY is internal to a MAC. ”h]”(jê)�”}”(hŒ``is_internal``”h]”jð)�”}”(hj¤h]”hŒ is_internal”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MOhj¤ubj)�”}”(hhh]”jl)�”}”(hŒ-Set to true if this PHY is internal to a MAC.”h]”hŒ-Set to true if this PHY is internal to a MAC.”…”�”}”(hj1¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j-¤h´MOhj.¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-¤h´MOhjE¢ubjä)�”}”(hŒM``is_pseudo_fixed_link`` Set to true if this PHY is an Ethernet switch, etc. ”h]”(jê)�”}”(hŒ``is_pseudo_fixed_link``”h]”jð)�”}”(hjQ¤h]”hŒis_pseudo_fixed_link”…”�”}”(hjS¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjO¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MPhjK¤ubj)�”}”(hhh]”jl)�”}”(hŒ3Set to true if this PHY is an Ethernet switch, etc.”h]”hŒ3Set to true if this PHY is an Ethernet switch, etc.”…”�”}”(hjj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jf¤h´MPhjg¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jf¤h´MPhjE¢ubjä)�”}”(hŒ<``is_gigabit_capable`` Set to true if PHY supports 1000Mbps ”h]”(jê)�”}”(hŒ``is_gigabit_capable``”h]”jð)�”}”(hjФh]”hŒis_gigabit_capable”…”�”}”(hjŒ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MQhj„¤ubj)�”}”(hhh]”jl)�”}”(hŒ$Set to true if PHY supports 1000Mbps”h]”hŒ$Set to true if PHY supports 1000Mbps”…”�”}”(hj£¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸ¤h´MQhj ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸ¤h´MQhjE¢ubjä)�”}”(hŒ:``has_fixups`` Set to true if this PHY has fixups/quirks. ”h]”(jê)�”}”(hŒ``has_fixups``”h]”jð)�”}”(hjäh]”hŒ has_fixups”…”�”}”(hjŤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MRhj½¤ubj)�”}”(hhh]”jl)�”}”(hŒ*Set to true if this PHY has fixups/quirks.”h]”hŒ*Set to true if this PHY has fixups/quirks.”…”�”}”(hjܤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jؤh´MRhjÙ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jؤh´MRhjE¢ubjä)�”}”(hŒG``suspended`` Set to true if this PHY has been suspended successfully. ”h]”(jê)�”}”(hŒ ``suspended``”h]”jð)�”}”(hjü¤h]”hŒ suspended”…”�”}”(hjþ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjú¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MShjö¤ubj)�”}”(hhh]”jl)�”}”(hŒ8Set to true if this PHY has been suspended successfully.”h]”hŒ8Set to true if this PHY has been suspended successfully.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¥h´MShj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥h´MShjE¢ubjä)�”}”(hŒM``suspended_by_mdio_bus`` Set to true if this PHY was suspended by MDIO bus. ”h]”(jê)�”}”(hŒ``suspended_by_mdio_bus``”h]”jð)�”}”(hj5¥h]”hŒsuspended_by_mdio_bus”…”�”}”(hj7¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MThj/¥ubj)�”}”(hhh]”jl)�”}”(hŒ2Set to true if this PHY was suspended by MDIO bus.”h]”hŒ2Set to true if this PHY was suspended by MDIO bus.”…”�”}”(hjN¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jJ¥h´MThjK¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJ¥h´MThjE¢ubjä)�”}”(hŒN``sysfs_links`` Internal boolean tracking sysfs symbolic links setup/removal. ”h]”(jê)�”}”(hŒ``sysfs_links``”h]”jð)�”}”(hjn¥h]”hŒ sysfs_links”…”�”}”(hjp¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjl¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MUhjh¥ubj)�”}”(hhh]”jl)�”}”(hŒ=Internal boolean tracking sysfs symbolic links setup/removal.”h]”hŒ=Internal boolean tracking sysfs symbolic links setup/removal.”…”�”}”(hj‡¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒ¥h´MUhj„¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒ¥h´MUhjE¢ubjä)�”}”(hŒL``loopback_enabled`` Set true if this PHY has been loopbacked successfully. ”h]”(jê)�”}”(hŒ``loopback_enabled``”h]”jð)�”}”(hj§¥h]”hŒloopback_enabled”…”�”}”(hj©¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MVhj¡¥ubj)�”}”(hhh]”jl)�”}”(hŒ6Set true if this PHY has been loopbacked successfully.”h]”hŒ6Set true if this PHY has been loopbacked successfully.”…”�”}”(hjÀ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼¥h´MVhj½¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼¥h´MVhjE¢ubjä)�”}”(hŒB``downshifted_rate`` Set true if link speed has been downshifted. ”h]”(jê)�”}”(hŒ``downshifted_rate``”h]”jð)�”}”(hjà¥h]”hŒdownshifted_rate”…”�”}”(hjâ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MWhjÚ¥ubj)�”}”(hhh]”jl)�”}”(hŒ,Set true if link speed has been downshifted.”h]”hŒ,Set true if link speed has been downshifted.”…”�”}”(hjù¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõ¥h´MWhjö¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõ¥h´MWhjE¢ubjä)�”}”(hŒB``is_on_sfp_module`` Set true if PHY is located on an SFP module. ”h]”(jê)�”}”(hŒ``is_on_sfp_module``”h]”jð)�”}”(hj¦h]”hŒis_on_sfp_module”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MXhj¦ubj)�”}”(hhh]”jl)�”}”(hŒ,Set true if PHY is located on an SFP module.”h]”hŒ,Set true if PHY is located on an SFP module.”…”�”}”(hj2¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.¦h´MXhj/¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.¦h´MXhjE¢ubjä)�”}”(hŒK``mac_managed_pm`` Set true if MAC driver takes of suspending/resuming PHY ”h]”(jê)�”}”(hŒ``mac_managed_pm``”h]”jð)�”}”(hjR¦h]”hŒmac_managed_pm”…”�”}”(hjT¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjP¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MYhjL¦ubj)�”}”(hhh]”jl)�”}”(hŒ7Set true if MAC driver takes of suspending/resuming PHY”h]”hŒ7Set true if MAC driver takes of suspending/resuming PHY”…”�”}”(hjk¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jg¦h´MYhjh¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jg¦h´MYhjE¢ubjä)�”}”(hŒU``wol_enabled`` Set to true if the PHY or the attached MAC have Wake-on-LAN enabled. ”h]”(jê)�”}”(hŒ``wol_enabled``”h]”jð)�”}”(hj‹¦h]”hŒ wol_enabled”…”�”}”(hj�¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M[hj…¦ubj)�”}”(hhh]”jl)�”}”(hŒDSet to true if the PHY or the attached MAC have Wake-on-LAN enabled.”h]”hŒDSet to true if the PHY or the attached MAC have Wake-on-LAN enabled.”…”�”}”(hj¤¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MZhj¡¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ¦h´M[hjE¢ubjä)�”}”(hŒE``is_genphy_driven`` PHY is driven by one of the generic PHY drivers ”h]”(jê)�”}”(hŒ``is_genphy_driven``”h]”jð)�”}”(hjŦh]”hŒis_genphy_driven”…”�”}”(hjǦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M\hj¿¦ubj)�”}”(hhh]”jl)�”}”(hŒ/PHY is driven by one of the generic PHY drivers”h]”hŒ/PHY is driven by one of the generic PHY drivers”…”�”}”(hjÞ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÚ¦h´M\hjÛ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÚ¦h´M\hjE¢ubjä)�”}”(hŒ$``autoneg`` Flag autoneg being used ”h]”(jê)�”}”(hŒ ``autoneg``”h]”jð)�”}”(hjþ¦h]”hŒautoneg”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjü¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M…hjø¦ubj)�”}”(hhh]”jl)�”}”(hŒFlag autoneg being used”h]”hŒFlag autoneg being used”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§h´M…hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjø¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§h´M…hjE¢ubjä)�”}”(hŒ``link`` Current link state ”h]”(jê)�”}”(hŒ``link``”h]”jð)�”}”(hj7§h]”hŒlink”…”�”}”(hj9§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj5§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‡hj1§ubj)�”}”(hhh]”jl)�”}”(hŒCurrent link state”h]”hŒCurrent link state”…”�”}”(hjP§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jL§h´M‡hjM§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jL§h´M‡hjE¢ubjä)�”}”(hŒE``autoneg_complete`` Flag auto negotiation of the link has completed ”h]”(jê)�”}”(hŒ``autoneg_complete``”h]”jð)�”}”(hjp§h]”hŒautoneg_complete”…”�”}”(hjr§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjn§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mˆhjj§ubj)�”}”(hhh]”jl)�”}”(hŒ/Flag auto negotiation of the link has completed”h]”hŒ/Flag auto negotiation of the link has completed”…”�”}”(hj‰§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…§h´Mˆhj†§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…§h´MˆhjE¢ubjä)�”}”(hŒ``pause`` Current pause ”h]”(jê)�”}”(hŒ ``pause``”h]”jð)�”}”(hj©§h]”hŒpause”…”�”}”(hj«§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mvhj£§ubj)�”}”(hhh]”jl)�”}”(hŒ Current pause”h]”hŒ Current pause”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾§h´Mvhj¿§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾§h´MvhjE¢ubjä)�”}”(hŒ(``asym_pause`` Current asymmetric pause ”h]”(jê)�”}”(hŒ``asym_pause``”h]”jð)�”}”(hjâ§h]”hŒ asym_pause”…”�”}”(hjä§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mwhjܧubj)�”}”(hhh]”jl)�”}”(hŒCurrent asymmetric pause”h]”hŒCurrent asymmetric pause”…”�”}”(hjû§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j÷§h´Mwhjø§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjܧubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j÷§h´MwhjE¢ubjä)�”}”(hŒ1``interrupts`` Flag interrupts have been enabled ”h]”(jê)�”}”(hŒ``interrupts``”h]”jð)�”}”(hj¨h]”hŒ interrupts”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŒhj¨ubj)�”}”(hhh]”jl)�”}”(hŒ!Flag interrupts have been enabled”h]”hŒ!Flag interrupts have been enabled”…”�”}”(hj4¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j0¨h´MŒhj1¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j0¨h´MŒhjE¢ubjä)�”}”(hŒ}``irq_suspended`` Flag indicating PHY is suspended and therefore interrupt handling shall be postponed until PHY has resumed ”h]”(jê)�”}”(hŒ``irq_suspended``”h]”jð)�”}”(hjT¨h]”hŒ irq_suspended”…”�”}”(hjV¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŽhjN¨ubj)�”}”(hhh]”jl)�”}”(hŒjFlag indicating PHY is suspended and therefore interrupt handling shall be postponed until PHY has resumed”h]”hŒjFlag indicating PHY is suspended and therefore interrupt handling shall be postponed until PHY has resumed”…”�”}”(hjm¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hjj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji¨h´MŽhjE¢ubjä)�”}”(hŒƒ``irq_rerun`` Flag indicating interrupts occurred while PHY was suspended, requiring a rerun of the interrupt handler after resume ”h]”(jê)�”}”(hŒ ``irq_rerun``”h]”jð)�”}”(hjލh]”hŒ irq_rerun”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hjˆ¨ubj)�”}”(hhh]”jl)�”}”(hŒtFlag indicating interrupts occurred while PHY was suspended, requiring a rerun of the interrupt handler after resume”h]”hŒtFlag indicating interrupts occurred while PHY was suspended, requiring a rerun of the interrupt handler after resume”…”�”}”(hj§¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj¤¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£¨h´M�hjE¢ubjä)�”}”(hŒ```default_timestamp`` Flag indicating whether we are using the phy timestamp as the default one ”h]”(jê)�”}”(hŒ``default_timestamp``”h]”jð)�”}”(hjȨh]”hŒdefault_timestamp”…”�”}”(hjʨh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƨubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M’hj¨ubj)�”}”(hhh]”jl)�”}”(hŒIFlag indicating whether we are using the phy timestamp as the default one”h]”hŒIFlag indicating whether we are using the phy timestamp as the default one”…”�”}”(hjá¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‘hjÞ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jݨh´M’hjE¢ubjä)�”}”(hŒ-``rate_matching`` Current rate matching mode ”h]”(jê)�”}”(hŒ``rate_matching``”h]”jð)�”}”(hj©h]”hŒ rate_matching”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M†hjü¨ubj)�”}”(hhh]”jl)�”}”(hŒCurrent rate matching mode”h]”hŒCurrent rate matching mode”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©h´M†hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©h´M†hjE¢ubjä)�”}”(hŒ3``state`` State of the PHY for management purposes ”h]”(jê)�”}”(hŒ ``state``”h]”jð)�”}”(hj;©h]”hŒstate”…”�”}”(hj=©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj9©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M]hj5©ubj)�”}”(hhh]”jl)�”}”(hŒ(State of the PHY for management purposes”h]”hŒ(State of the PHY for management purposes”…”�”}”(hjT©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jP©h´M]hjQ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jP©h´M]hjE¢ubjä)�”}”(hŒ<``dev_flags`` Device-specific flags used by the PHY driver. ”h]”(jê)�”}”(hŒ ``dev_flags``”h]”jð)�”}”(hjt©h]”hŒ dev_flags”…”�”}”(hjv©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjr©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”•h´M^hjn©ubj)�”}”(hhh]”jl)�”}”(hŒ-Device-specific flags used by the PHY driver.”h]”hŒ-Device-specific flags used by the PHY driver.”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‰©h´M^hjŠ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰©h´M^hjE¢ubjä)�”}”(hŒ)``interface`` enum phy_interface_t value ”h]”(jê)�”}”(hŒ ``interface``”h]”jð)�”}”(hj­©h]”hŒ interface”…”�”}”(hj¯©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M“hj§©ubj)�”}”(hhh]”jl)�”}”(hŒenum phy_interface_t value”h]”hŒenum phy_interface_t value”…”�”}”(hjÆ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©h´M“hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©h´M“hjE¢ubjä)�”}”(hŒv``possible_interfaces`` bitmap if interface modes that the attached PHY will switch between depending on media speed. ”h]”(jê)�”}”(hŒ``possible_interfaces``”h]”jð)�”}”(hjæ©h]”hŒpossible_interfaces”…”�”}”(hjè©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjä©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M•hjà©ubj)�”}”(hhh]”jl)�”}”(hŒ]bitmap if interface modes that the attached PHY will switch between depending on media speed.”h]”hŒ]bitmap if interface modes that the attached PHY will switch between depending on media speed.”…”�”}”(hjÿ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M”hjü©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjà©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jû©h´M•hjE¢ubjä)�”}”(hŒ``speed`` Current link speed ”h]”(jê)�”}”(hŒ ``speed``”h]”jð)�”}”(hj ªh]”hŒspeed”…”�”}”(hj"ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mshjªubj)�”}”(hhh]”jl)�”}”(hŒCurrent link speed”h]”hŒCurrent link speed”…”�”}”(hj9ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j5ªh´Mshj6ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j5ªh´MshjE¢ubjä)�”}”(hŒ``duplex`` Current duplex ”h]”(jê)�”}”(hŒ ``duplex``”h]”jð)�”}”(hjYªh]”hŒduplex”…”�”}”(hj[ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjWªubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MthjSªubj)�”}”(hhh]”jl)�”}”(hŒCurrent duplex”h]”hŒCurrent duplex”…”�”}”(hjrªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jnªh´Mthjoªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jnªh´MthjE¢ubjä)�”}”(hŒ``port`` Current port ”h]”(jê)�”}”(hŒ``port``”h]”jð)�”}”(hj’ªh]”hŒport”…”�”}”(hj”ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MuhjŒªubj)�”}”(hhh]”jl)�”}”(hŒ Current port”h]”hŒ Current port”…”�”}”(hj«ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j§ªh´Muhj¨ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§ªh´MuhjE¢ubjä)�”}”(hŒ8``master_slave_get`` Current master/slave advertisement ”h]”(jê)�”}”(hŒ``master_slave_get``”h]”jð)�”}”(hj˪h]”hŒmaster_slave_get”…”�”}”(hjͪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjɪubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŸhjŪubj)�”}”(hhh]”jl)�”}”(hŒ"Current master/slave advertisement”h]”hŒ"Current master/slave advertisement”…”�”}”(hjäªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jàªh´MŸhjáªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŪubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jàªh´MŸhjE¢ubjä)�”}”(hŒ?``master_slave_set`` User requested master/slave configuration ”h]”(jê)�”}”(hŒ``master_slave_set``”h]”jð)�”}”(hj«h]”hŒmaster_slave_set”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mžhjþªubj)�”}”(hhh]”jl)�”}”(hŒ)User requested master/slave configuration”h]”hŒ)User requested master/slave configuration”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«h´Mžhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«h´MžhjE¢ubjä)�”}”(hŒ:``master_slave_state`` Current master/slave configuration ”h]”(jê)�”}”(hŒ``master_slave_state``”h]”jð)�”}”(hj=«h]”hŒmaster_slave_state”…”�”}”(hj?«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hj7«ubj)�”}”(hhh]”jl)�”}”(hŒ"Current master/slave configuration”h]”hŒ"Current master/slave configuration”…”�”}”(hjV«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jR«h´M hjS«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jR«h´M hjE¢ubjä)�”}”(hŒ3``supported`` Combined MAC/PHY supported linkmodes ”h]”(jê)�”}”(hŒ ``supported``”h]”jð)�”}”(hjv«h]”hŒ supported”…”�”}”(hjx«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mxhjp«ubj)�”}”(hhh]”jl)�”}”(hŒ$Combined MAC/PHY supported linkmodes”h]”hŒ$Combined MAC/PHY supported linkmodes”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹«h´MxhjŒ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹«h´MxhjE¢ubjä)�”}”(hŒ/``advertising`` Currently advertised linkmodes ”h]”(jê)�”}”(hŒ``advertising``”h]”jð)�”}”(hj¯«h]”hŒ advertising”…”�”}”(hj±«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Myhj©«ubj)�”}”(hhh]”jl)�”}”(hŒCurrently advertised linkmodes”h]”hŒCurrently advertised linkmodes”…”�”}”(hjÈ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄ«h´MyhjÅ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄ«h´MyhjE¢ubjä)�”}”(hŒ=``lp_advertising`` Current link partner advertised linkmodes ”h]”(jê)�”}”(hŒ``lp_advertising``”h]”jð)�”}”(hjè«h]”hŒlp_advertising”…”�”}”(hjê«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjæ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‚hjâ«ubj)�”}”(hhh]”jl)�”}”(hŒ)Current link partner advertised linkmodes”h]”hŒ)Current link partner advertised linkmodes”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jý«h´M‚hjþ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jý«h´M‚hjE¢ubjä)�”}”(hŒ8``adv_old`` Saved advertised while power saving for WoL ”h]”(jê)�”}”(hŒ ``adv_old``”h]”jð)�”}”(hj!¬h]”hŒadv_old”…”�”}”(hj#¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mzhj¬ubj)�”}”(hhh]”jl)�”}”(hŒ+Saved advertised while power saving for WoL”h]”hŒ+Saved advertised while power saving for WoL”…”�”}”(hj:¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j6¬h´Mzhj7¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6¬h´MzhjE¢ubjä)�”}”(hŒ.``supported_eee`` supported PHY EEE linkmodes ”h]”(jê)�”}”(hŒ``supported_eee``”h]”jð)�”}”(hjZ¬h]”hŒ supported_eee”…”�”}”(hj\¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjX¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M{hjT¬ubj)�”}”(hhh]”jl)�”}”(hŒsupported PHY EEE linkmodes”h]”hŒsupported PHY EEE linkmodes”…”�”}”(hjs¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jo¬h´M{hjp¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jo¬h´M{hjE¢ubjä)�”}”(hŒ7``advertising_eee`` Currently advertised EEE linkmodes ”h]”(jê)�”}”(hŒ``advertising_eee``”h]”jð)�”}”(hj“¬h]”hŒadvertising_eee”…”�”}”(hj•¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M|hj�¬ubj)�”}”(hhh]”jl)�”}”(hŒ"Currently advertised EEE linkmodes”h]”hŒ"Currently advertised EEE linkmodes”…”�”}”(hj¬¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨¬h´M|hj©¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨¬h´M|hjE¢ubjä)�”}”(hŒL``eee_disabled_modes`` Energy efficient ethernet modes not to be advertised ”h]”(jê)�”}”(hŒ``eee_disabled_modes``”h]”jð)�”}”(hj̬h]”hŒeee_disabled_modes”…”�”}”(hjάh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjʬubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M„hjƬubj)�”}”(hhh]”jl)�”}”(hŒ4Energy efficient ethernet modes not to be advertised”h]”hŒ4Energy efficient ethernet modes not to be advertised”…”�”}”(hjå¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³já¬h´M„hjâ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƬubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³já¬h´M„hjE¢ubjä)�”}”(hŒ<``enable_tx_lpi`` When True, MAC should transmit LPI to PHY ”h]”(jê)�”}”(hŒ``enable_tx_lpi``”h]”jð)�”}”(hj­h]”hŒ enable_tx_lpi”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M}hjÿ¬ubj)�”}”(hhh]”jl)�”}”(hŒ)When True, MAC should transmit LPI to PHY”h]”hŒ)When True, MAC should transmit LPI to PHY”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j­h´M}hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j­h´M}hjE¢ubjä)�”}”(hŒM``eee_active`` phylib private state, indicating that EEE has been negotiated ”h]”(jê)�”}”(hŒ``eee_active``”h]”jð)�”}”(hj>­h]”hŒ eee_active”…”�”}”(hj@­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M~hj8­ubj)�”}”(hhh]”jl)�”}”(hŒ=phylib private state, indicating that EEE has been negotiated”h]”hŒ=phylib private state, indicating that EEE has been negotiated”…”�”}”(hjW­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jS­h´M~hjT­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jS­h´M~hjE¢ubjä)�”}”(hŒm``autonomous_eee_disabled`` Set when autonomous EEE has been disabled, used to re-apply after PHY soft reset ”h]”(jê)�”}”(hŒ``autonomous_eee_disabled``”h]”jð)�”}”(hjw­h]”hŒautonomous_eee_disabled”…”�”}”(hjy­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhju­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M€hjq­ubj)�”}”(hhh]”jl)�”}”(hŒPSet when autonomous EEE has been disabled, used to re-apply after PHY soft reset”h]”hŒPSet when autonomous EEE has been disabled, used to re-apply after PHY soft reset”…”�”}”(hj�­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj�­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒ­h´M€hjE¢ubjä)�”}”(hŒ&``eee_cfg`` User configuration of EEE ”h]”(jê)�”}”(hŒ ``eee_cfg``”h]”jð)�”}”(hj±­h]”hŒeee_cfg”…”�”}”(hj³­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj«­ubj)�”}”(hhh]”jl)�”}”(hŒUser configuration of EEE”h]”hŒUser configuration of EEE”…”�”}”(hjÊ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÆ­h´M�hjÇ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÆ­h´M�hjE¢ubjä)�”}”(hŒ:``host_interfaces`` PHY interface modes supported by host ”h]”(jê)�”}”(hŒ``host_interfaces``”h]”jð)�”}”(hjê­h]”hŒhost_interfaces”…”�”}”(hjì­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjè­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mƒhjä­ubj)�”}”(hhh]”jl)�”}”(hŒ%PHY interface modes supported by host”h]”hŒ%PHY interface modes supported by host”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿ­h´Mƒhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿ­h´MƒhjE¢ubjä)�”}”(hŒ+``phy_led_triggers`` Array of LED triggers ”h]”(jê)�”}”(hŒ``phy_led_triggers``”h]”jð)�”}”(hj#®h]”hŒphy_led_triggers”…”�”}”(hj%®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M™hj®ubj)�”}”(hhh]”jl)�”}”(hŒArray of LED triggers”h]”hŒArray of LED triggers”…”�”}”(hj<®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8®h´M™hj9®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8®h´M™hjE¢ubjä)�”}”(hŒD``phy_num_led_triggers`` Number of triggers in **phy_led_triggers** ”h]”(jê)�”}”(hŒ``phy_num_led_triggers``”h]”jð)�”}”(hj\®h]”hŒphy_num_led_triggers”…”�”}”(hj^®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MšhjV®ubj)�”}”(hhh]”jl)�”}”(hŒ*Number of triggers in **phy_led_triggers**”h]”(hŒNumber of triggers in ”…”�”}”(hju®h²hh³Nh´Nubj›)�”}”(hŒ**phy_led_triggers**”h]”hŒphy_led_triggers”…”�”}”(hj}®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhju®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jq®h´Mšhjr®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjV®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jq®h´MšhjE¢ubjä)�”}”(hŒ3``last_triggered`` last LED trigger for link speed ”h]”(jê)�”}”(hŒ``last_triggered``”h]”jð)�”}”(hj£®h]”hŒlast_triggered”…”�”}”(hj¥®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mœhj�®ubj)�”}”(hhh]”jl)�”}”(hŒlast LED trigger for link speed”h]”hŒlast LED trigger for link speed”…”�”}”(hj¼®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¸®h´Mœhj¹®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸®h´MœhjE¢ubjä)�”}”(hŒ2``led_link_trigger`` LED trigger for link up/down ”h]”(jê)�”}”(hŒ``led_link_trigger``”h]”jð)�”}”(hjÜ®h]”hŒled_link_trigger”…”�”}”(hjÞ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M›hjÖ®ubj)�”}”(hhh]”jl)�”}”(hŒLED trigger for link up/down”h]”hŒLED trigger for link up/down”…”�”}”(hjõ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñ®h´M›hjò®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñ®h´M›hjE¢ubjä)�”}”(hŒ$``leds`` list of PHY LED structures ”h]”(jê)�”}”(hŒ``leds``”h]”jð)�”}”(hj¯h]”hŒleds”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj¯ubj)�”}”(hhh]”jl)�”}”(hŒlist of PHY LED structures”h]”hŒlist of PHY LED structures”…”�”}”(hj.¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*¯h´M�hj+¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*¯h´M�hjE¢ubjä)�”}”(hŒ7``irq`` IRQ number of the PHY's interrupt (-1 if none) ”h]”(jê)�”}”(hŒ``irq``”h]”jð)�”}”(hjN¯h]”hŒirq”…”�”}”(hjP¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MehjH¯ubj)�”}”(hhh]”jl)�”}”(hŒ.IRQ number of the PHY's interrupt (-1 if none)”h]”hŒ0IRQ number of the PHY’s interrupt (-1 if none)”…”�”}”(hjg¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc¯h´Mehjd¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc¯h´MehjE¢ubjä)�”}”(hŒ(``priv`` Pointer to driver private data ”h]”(jê)�”}”(hŒ``priv``”h]”jð)�”}”(hj‡¯h]”hŒpriv”…”�”}”(hj‰¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mªhj�¯ubj)�”}”(hhh]”jl)�”}”(hŒPointer to driver private data”h]”hŒPointer to driver private data”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jœ¯h´Mªhj�¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœ¯h´MªhjE¢ubjä)�”}”(hŒA``shared`` Pointer to private data shared by phys in one package ”h]”(jê)�”}”(hŒ ``shared``”h]”jð)�”}”(hjÀ¯h]”hŒshared”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M©hjº¯ubj)�”}”(hhh]”jl)�”}”(hŒ5Pointer to private data shared by phys in one package”h]”hŒ5Pointer to private data shared by phys in one package”…”�”}”(hjÙ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕ¯h´M©hjÖ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕ¯h´M©hjE¢ubjä)�”}”(hŒ.``skb`` Netlink message for cable diagnostics ”h]”(jê)�”}”(hŒ``skb``”h]”jð)�”}”(hjù¯h]”hŒskb”…”�”}”(hjû¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M–hjó¯ubj)�”}”(hhh]”jl)�”}”(hŒ%Netlink message for cable diagnostics”h]”hŒ%Netlink message for cable diagnostics”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j°h´M–hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°h´M–hjE¢ubjä)�”}”(hŒ.``ehdr`` nNtlink header for cable diagnostics ”h]”(jê)�”}”(hŒ``ehdr``”h]”jð)�”}”(hj2°h]”hŒehdr”…”�”}”(hj4°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M˜hj,°ubj)�”}”(hhh]”jl)�”}”(hŒ$nNtlink header for cable diagnostics”h]”hŒ$nNtlink header for cable diagnostics”…”�”}”(hjK°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jG°h´M˜hjH°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jG°h´M˜hjE¢ubjä)�”}”(hŒ1``nest`` Netlink nest used for cable diagnostics ”h]”(jê)�”}”(hŒ``nest``”h]”jð)�”}”(hjk°h]”hŒnest”…”�”}”(hjm°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhji°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M—hje°ubj)�”}”(hhh]”jl)�”}”(hŒ'Netlink nest used for cable diagnostics”h]”hŒ'Netlink nest used for cable diagnostics”…”�”}”(hj„°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€°h´M—hj�°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€°h´M—hjE¢ubjä)�”}”(hŒ-``state_queue`` Work queue for state machine ”h]”(jê)�”}”(hŒ``state_queue``”h]”jð)�”}”(hj¤°h]”hŒ state_queue”…”�”}”(hj¦°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M§hjž°ubj)�”}”(hhh]”jl)�”}”(hŒWork queue for state machine”h]”hŒWork queue for state machine”…”�”}”(hj½°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹°h´M§hjº°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjž°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹°h´M§hjE¢ubjä)�”}”(hŒ/``lock`` Mutex for serialization access to PHY ”h]”(jê)�”}”(hŒ``lock``”h]”jð)�”}”(hjݰh]”hŒlock”…”�”}”(hjß°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¦hj×°ubj)�”}”(hhh]”jl)�”}”(hŒ%Mutex for serialization access to PHY”h]”hŒ%Mutex for serialization access to PHY”…”�”}”(hjö°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jò°h´M¦hjó°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jò°h´M¦hjE¢ubjä)�”}”(hŒK``sfp_bus_attached`` Flag indicating whether the SFP bus has been attached ”h]”(jê)�”}”(hŒ``sfp_bus_attached``”h]”jð)�”}”(hj±h]”hŒsfp_bus_attached”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mghj±ubj)�”}”(hhh]”jl)�”}”(hŒ5Flag indicating whether the SFP bus has been attached”h]”hŒ5Flag indicating whether the SFP bus has been attached”…”�”}”(hj/±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+±h´Mghj,±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+±h´MghjE¢ubjä)�”}”(hŒK``has_sfp_mod_phy`` Set true if downstream SFP bus's module contains a PHY ”h]”(jê)�”}”(hŒ``has_sfp_mod_phy``”h]”jð)�”}”(hjO±h]”hŒhas_sfp_mod_phy”…”�”}”(hjQ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjM±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhhjI±ubj)�”}”(hhh]”jl)�”}”(hŒ6Set true if downstream SFP bus's module contains a PHY”h]”hŒ8Set true if downstream SFP bus’s module contains a PHY”…”�”}”(hjh±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jd±h´Mhhje±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jd±h´MhhjE¢ubjä)�”}”(hŒ6``sfp_bus`` SFP bus attached to this PHY's fiber port ”h]”(jê)�”}”(hŒ ``sfp_bus``”h]”jð)�”}”(hjˆ±h]”hŒsfp_bus”…”�”}”(hjбh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mihj‚±ubj)�”}”(hhh]”jl)�”}”(hŒ)SFP bus attached to this PHY's fiber port”h]”hŒ+SFP bus attached to this PHY’s fiber port”…”�”}”(hj¡±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�±h´Mihjž±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�±h´MihjE¢ubjä)�”}”(hŒD``sfp_cage_port`` The phy_port connected to the downstream SFP cage ”h]”(jê)�”}”(hŒ``sfp_cage_port``”h]”jð)�”}”(hjÁ±h]”hŒ sfp_cage_port”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mjhj»±ubj)�”}”(hhh]”jl)�”}”(hŒ1The phy_port connected to the downstream SFP cage”h]”hŒ1The phy_port connected to the downstream SFP cage”…”�”}”(hjÚ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖ±h´Mjhj×±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖ±h´MjhjE¢ubjä)�”}”(hŒE``mod_port`` phy_port representing the SFP module, if it is phy-less ”h]”(jê)�”}”(hŒ ``mod_port``”h]”jð)�”}”(hjú±h]”hŒmod_port”…”�”}”(hjü±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjø±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mkhjô±ubj)�”}”(hhh]”jl)�”}”(hŒ7phy_port representing the SFP module, if it is phy-less”h]”hŒ7phy_port representing the SFP module, if it is phy-less”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j²h´Mkhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjô±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j²h´MkhjE¢ubjä)�”}”(hŒ>``upstream_port`` phy_port this PHY's MII attaches to, if any ”h]”(jê)�”}”(hŒ``upstream_port``”h]”jð)�”}”(hj3²h]”hŒ upstream_port”…”�”}”(hj5²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mlhj-²ubj)�”}”(hhh]”jl)�”}”(hŒ+phy_port this PHY's MII attaches to, if any”h]”hŒ-phy_port this PHY’s MII attaches to, if any”…”�”}”(hjL²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jH²h´MlhjI²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jH²h´MlhjE¢ubjä)�”}”(hŒ5``phylink`` Pointer to phylink instance for this PHY ”h]”(jê)�”}”(hŒ ``phylink``”h]”jð)�”}”(hjl²h]”hŒphylink”…”�”}”(hjn²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mfhjf²ubj)�”}”(hhh]”jl)�”}”(hŒ(Pointer to phylink instance for this PHY”h]”hŒ(Pointer to phylink instance for this PHY”…”�”}”(hj…²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�²h´Mfhj‚²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�²h´MfhjE¢ubjä)�”}”(hŒ@``attached_dev`` The attached enet driver's device instance ptr ”h]”(jê)�”}”(hŒ``attached_dev``”h]”jð)�”}”(hj¥²h]”hŒ attached_dev”…”�”}”(hj§²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MmhjŸ²ubj)�”}”(hhh]”jl)�”}”(hŒ.The attached enet driver's device instance ptr”h]”hŒ0The attached enet driver’s device instance ptr”…”�”}”(hj¾²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jº²h´Mmhj»²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jº²h´MmhjE¢ubjä)�”}”(hŒ-``mii_ts`` Pointer to time stamper callbacks ”h]”(jê)�”}”(hŒ ``mii_ts``”h]”jð)�”}”(hjÞ²h]”hŒmii_ts”…”�”}”(hjà²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjܲubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¡hjزubj)�”}”(hhh]”jl)�”}”(hŒ!Pointer to time stamper callbacks”h]”hŒ!Pointer to time stamper callbacks”…”�”}”(hj÷²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jó²h´M¡hjô²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjزubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jó²h´M¡hjE¢ubjä)�”}”(hŒ<``psec`` Pointer to Power Sourcing Equipment control struct ”h]”(jê)�”}”(hŒ``psec``”h]”jð)�”}”(hj³h]”hŒpsec”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¢hj³ubj)�”}”(hhh]”jl)�”}”(hŒ2Pointer to Power Sourcing Equipment control struct”h]”hŒ2Pointer to Power Sourcing Equipment control struct”…”�”}”(hj0³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,³h´M¢hj-³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j,³h´M¢hjE¢ubjä)�”}”(hŒ'``ports`` List of PHY ports structures ”h]”(jê)�”}”(hŒ ``ports``”h]”jð)�”}”(hjP³h]”hŒports”…”�”}”(hjR³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjN³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M£hjJ³ubj)�”}”(hhh]”jl)�”}”(hŒList of PHY ports structures”h]”hŒList of PHY ports structures”…”�”}”(hji³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³je³h´M£hjf³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³je³h´M£hjE¢ubjä)�”}”(hŒ:``n_ports`` Number of ports currently attached to the PHY ”h]”(jê)�”}”(hŒ ``n_ports``”h]”jð)�”}”(hj‰³h]”hŒn_ports”…”�”}”(hj‹³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¤hjƒ³ubj)�”}”(hhh]”jl)�”}”(hŒ-Number of ports currently attached to the PHY”h]”hŒ-Number of ports currently attached to the PHY”…”�”}”(hj¢³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jž³h´M¤hjŸ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jž³h´M¤hjE¢ubjä)�”}”(hŒ8``max_n_ports`` Max number of ports this PHY can expose ”h]”(jê)�”}”(hŒ``max_n_ports``”h]”jð)�”}”(hj³h]”hŒ max_n_ports”…”�”}”(hjijh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¥hj¼³ubj)�”}”(hhh]”jl)�”}”(hŒ'Max number of ports this PHY can expose”h]”hŒ'Max number of ports this PHY can expose”…”�”}”(hjÛ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j׳h´M¥hjسubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j׳h´M¥hjE¢ubjä)�”}”(hŒ``mdix`` Current crossover ”h]”(jê)�”}”(hŒ``mdix``”h]”jð)�”}”(hjû³h]”hŒmdix”…”�”}”(hjý³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjù³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‰hjõ³ubj)�”}”(hhh]”jl)�”}”(hŒCurrent crossover”h]”hŒCurrent crossover”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´h´M‰hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´h´M‰hjE¢ubjä)�”}”(hŒ(``mdix_ctrl`` User setting of crossover ”h]”(jê)�”}”(hŒ ``mdix_ctrl``”h]”jð)�”}”(hj4´h]”hŒ mdix_ctrl”…”�”}”(hj6´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŠhj.´ubj)�”}”(hhh]”jl)�”}”(hŒUser setting of crossover”h]”hŒUser setting of crossover”…”�”}”(hjM´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jI´h´MŠhjJ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jI´h´MŠhjE¢ubjä)�”}”(hŒD``pma_extable`` Cached value of PMA/PMD Extended Abilities Register ”h]”(jê)�”}”(hŒ``pma_extable``”h]”jð)�”}”(hjm´h]”hŒ pma_extable”…”�”}”(hjo´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjk´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‹hjg´ubj)�”}”(hhh]”jl)�”}”(hŒ3Cached value of PMA/PMD Extended Abilities Register”h]”hŒ3Cached value of PMA/PMD Extended Abilities Register”…”�”}”(hj†´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚´h´M‹hjƒ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚´h´M‹hjE¢ubjä)�”}”(hŒ3``link_down_events`` Number of times link was lost ”h]”(jê)�”}”(hŒ``link_down_events``”h]”jð)�”}”(hj¦´h]”hŒlink_down_events”…”�”}”(hj¨´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¨hj ´ubj)�”}”(hhh]”jl)�”}”(hŒNumber of times link was lost”h]”hŒNumber of times link was lost”…”�”}”(hj¿´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»´h´M¨hj¼´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»´h´M¨hjE¢ubjä)�”}”(hŒI``phy_link_change`` Callback for phylink for notification of link change ”h]”(jê)�”}”(hŒ``phy_link_change``”h]”jð)�”}”(hjß´h]”hŒphy_link_change”…”�”}”(hjá´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MphjÙ´ubj)�”}”(hhh]”jl)�”}”(hŒ4Callback for phylink for notification of link change”h]”hŒ4Callback for phylink for notification of link change”…”�”}”(hjø´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jô´h´Mphjõ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jô´h´MphjE¢ubjä)�”}”(hŒ[``adjust_link`` Callback for the enet controller to respond to changes: in the link state. ”h]”(jê)�”}”(hŒ``adjust_link``”h]”jð)�”}”(hjµh]”hŒ adjust_link”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mohjµubj)�”}”(hhh]”jl)�”}”(hŒJCallback for the enet controller to respond to changes: in the link state.”h]”hŒJCallback for the enet controller to respond to changes: in the link state.”…”�”}”(hj1µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mnhj.µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-µh´MohjE¢ubjä)�”}”(hŒ&``macsec_ops`` MACsec offloading ops. ”h]”(jê)�”}”(hŒ``macsec_ops``”h]”jð)�”}”(hjRµh]”hŒ macsec_ops”…”�”}”(hjTµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjPµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MqhjLµubj)�”}”(hhh]”jl)�”}”(hŒMACsec offloading ops.”h]”hŒMACsec offloading ops.”…”�”}”(hjkµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jgµh´Mqhjhµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgµh´MqhjE¢ubjä)�”}”(hŒN``oatc14_sqi_capability`` SQI capability information for OATC14 10Base-T1S PHY”h]”(jê)�”}”(hŒ``oatc14_sqi_capability``”h]”jð)�”}”(hj‹µh]”hŒoatc14_sqi_capability”…”�”}”(hj�µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‰µubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mªhj…µubj)�”}”(hhh]”jl)�”}”(hŒ4SQI capability information for OATC14 10Base-T1S PHY”h]”hŒ4SQI capability information for OATC14 10Base-T1S PHY”…”�”}”(hj¤µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M«hj¡µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j µh´MªhjE¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjý¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjεh]”hŒ Description”…”�”}”(hjеh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj̵ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M®hj”–h²hubjÒ)�”}”(hŒÙ- Bits [15:0] are free to use by the PHY driver to communicate driver specific behavior. - Bits [23:16] are currently reserved for future use. - Bits [31:24] are reserved for defining generic PHY driver behavior. ”h]”jC[)�”}”(hhh]”(jH[)�”}”(hŒVBits [15:0] are free to use by the PHY driver to communicate driver specific behavior.”h]”jl)�”}”(hŒVBits [15:0] are free to use by the PHY driver to communicate driver specific behavior.”h]”hŒVBits [15:0] are free to use by the PHY driver to communicate driver specific behavior.”…”�”}”(hjïµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M^hjëµubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjèµubjH[)�”}”(hŒ3Bits [23:16] are currently reserved for future use.”h]”jl)�”}”(hj¶h]”hŒ3Bits [23:16] are currently reserved for future use.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M`hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjèµubjH[)�”}”(hŒDBits [31:24] are reserved for defining generic PHY driver behavior. ”h]”jl)�”}”(hŒCBits [31:24] are reserved for defining generic PHY driver behavior.”h]”hŒCBits [31:24] are reserved for defining generic PHY driver behavior.”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mahj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjèµubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jýµh´M^hjäµubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jýµh´M^hj”–h²hubjl)�”}”(hŒ�interrupts currently only supports enabled or disabled, but could be changed in the future to support enabling and disabling specific interrupts”h]”hŒ�interrupts currently only supports enabled or disabled, but could be changed in the future to support enabling and disabling specific interrupts”…”�”}”(hjA¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mdhj”–h²hubjl)�”}”(hŒqContains some infrastructure for polling and interrupt handling, as well as handling shifts in PHY hardware state”h]”hŒqContains some infrastructure for polling and interrupt handling, as well as handling shifts in PHY hardware state”…”�”}”(hjP¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhhj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_tdr_config (C struct)”Œc.phy_tdr_config”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_tdr_config”h]”j )�”}”(hŒstruct phy_tdr_config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjx¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt¶h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjt¶h²hh³j…¶h´Mnubj3)�”}”(hŒphy_tdr_config”h]”j9)�”}”(hjr¶h]”hŒphy_tdr_config”…”�”}”(hj˜¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”¶ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjt¶h²hh³j…¶h´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjp¶h²hh³j…¶h´Mnubah}”(h]”jk¶ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j…¶h´Mnhjm¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒConfiguration of a TDR raw test”h]”hŒConfiguration of a TDR raw test”…”�”}”(hjº¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MVhj·¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjm¶h²hh³j…¶h´Mnubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jÒ¶jŒjÒ¶j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXM**Definition**:: struct phy_tdr_config { u32 first; u32 last; u32 step; s8 pair; }; **Members** ``first`` Distance for first data collection point ``last`` Distance for last data collection point ``step`` Step between data collection points ``pair`` Bitmap of cable pairs to collect data for”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÞ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚ¶ubhŒ:”…”�”}”(hjÚ¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MZhjÖ¶ubj¶)�”}”(hŒRstruct phy_tdr_config { u32 first; u32 last; u32 step; s8 pair; };”h]”hŒRstruct phy_tdr_config { u32 first; u32 last; u32 step; s8 pair; };”…”�”}”hj÷¶sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M\hjÖ¶ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj·h]”hŒMembers”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MchjÖ¶ubjß)�”}”(hhh]”(jä)�”}”(hŒ3``first`` Distance for first data collection point ”h]”(jê)�”}”(hŒ ``first``”h]”jð)�”}”(hj'·h]”hŒfirst”…”�”}”(hj)·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MYhj!·ubj)�”}”(hhh]”jl)�”}”(hŒ(Distance for first data collection point”h]”hŒ(Distance for first data collection point”…”�”}”(hj@·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j<·h´MYhj=·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j<·h´MYhj·ubjä)�”}”(hŒ1``last`` Distance for last data collection point ”h]”(jê)�”}”(hŒ``last``”h]”jð)�”}”(hj`·h]”hŒlast”…”�”}”(hjb·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MZhjZ·ubj)�”}”(hhh]”jl)�”}”(hŒ'Distance for last data collection point”h]”hŒ'Distance for last data collection point”…”�”}”(hjy·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ju·h´MZhjv·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ju·h´MZhj·ubjä)�”}”(hŒ-``step`` Step between data collection points ”h]”(jê)�”}”(hŒ``step``”h]”jð)�”}”(hj™·h]”hŒstep”…”�”}”(hj›·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M[hj“·ubj)�”}”(hhh]”jl)�”}”(hŒ#Step between data collection points”h]”hŒ#Step between data collection points”…”�”}”(hj²·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j®·h´M[hj¯·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j®·h´M[hj·ubjä)�”}”(hŒ2``pair`` Bitmap of cable pairs to collect data for”h]”(jê)�”}”(hŒ``pair``”h]”jð)�”}”(hjÒ·h]”hŒpair”…”�”}”(hjÔ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjзubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M[hjÌ·ubj)�”}”(hhh]”jl)�”}”(hŒ)Bitmap of cable pairs to collect data for”h]”hŒ)Bitmap of cable pairs to collect data for”…”�”}”(hjë·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M\hjè·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jç·h´M[hj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÖ¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¸h]”hŒ Description”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M_hj”–h²hubjl)�”}”(hŒÓA structure containing possible configuration parameters for a TDR cable test. The driver does not need to implement all the parameters, but should report what is actually used. All distances are in centimeters.”h]”hŒÓA structure containing possible configuration parameters for a TDR cable test. The driver does not need to implement all the parameters, but should report what is actually used. All distances are in centimeters.”…”�”}”(hj+¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M\hj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒlink_inband_signalling (C enum)”Œc.link_inband_signalling”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒlink_inband_signalling”h]”j )�”}”(hŒenum link_inband_signalling”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjS¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO¸h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hja¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjO¸h²hh³j`¸h´Mdubj3)�”}”(hŒlink_inband_signalling”h]”j9)�”}”(hjM¸h]”hŒlink_inband_signalling”…”�”}”(hjs¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjo¸ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjO¸h²hh³j`¸h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjK¸h²hh³j`¸h´Mdubah}”(h]”jF¸ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j`¸h´MdhjH¸h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+in-band signalling modes that are supported”h]”hŒ+in-band signalling modes that are supported”…”�”}”(hj•¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mkhj’¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjH¸h²hh³j`¸h´Mdubeh}”(h]”h ]”(j…Œenum”eh"]”h$]”h&]”jŠj…j‹j­¸jŒj­¸j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÞ**Constants** ``LINK_INBAND_DISABLE`` in-band signalling can be disabled ``LINK_INBAND_ENABLE`` in-band signalling can be enabled without bypass ``LINK_INBAND_BYPASS`` in-band signalling can be enabled with bypass”h]”(jl)�”}”(hŒ **Constants**”h]”j›)�”}”(hj·¸h]”hŒ Constants”…”�”}”(hj¹¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mohj±¸ubjß)�”}”(hhh]”(jä)�”}”(hŒ;``LINK_INBAND_DISABLE`` in-band signalling can be disabled ”h]”(jê)�”}”(hŒ``LINK_INBAND_DISABLE``”h]”jð)�”}”(hjÖ¸h]”hŒLINK_INBAND_DISABLE”…”�”}”(hjظh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÔ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mrhjиubj)�”}”(hhh]”jl)�”}”(hŒ"in-band signalling can be disabled”h]”hŒ"in-band signalling can be disabled”…”�”}”(hjï¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jë¸h´Mrhjì¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjиubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jë¸h´Mrhj͸ubjä)�”}”(hŒH``LINK_INBAND_ENABLE`` in-band signalling can be enabled without bypass ”h]”(jê)�”}”(hŒ``LINK_INBAND_ENABLE``”h]”jð)�”}”(hj¹h]”hŒLINK_INBAND_ENABLE”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Muhj ¹ubj)�”}”(hhh]”jl)�”}”(hŒ0in-band signalling can be enabled without bypass”h]”hŒ0in-band signalling can be enabled without bypass”…”�”}”(hj(¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j$¹h´Muhj%¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j$¹h´Muhj͸ubjä)�”}”(hŒD``LINK_INBAND_BYPASS`` in-band signalling can be enabled with bypass”h]”(jê)�”}”(hŒ``LINK_INBAND_BYPASS``”h]”jð)�”}”(hjH¹h]”hŒLINK_INBAND_BYPASS”…”�”}”(hjJ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjF¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MwhjB¹ubj)�”}”(hhh]”jl)�”}”(hŒ-in-band signalling can be enabled with bypass”h]”hŒ-in-band signalling can be enabled with bypass”…”�”}”(hja¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mxhj^¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]¹h´Mwhj͸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‹¹h]”hŒ Description”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‰¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mzhj”–h²hubjl)�”}”(hŒèThe possible and required bits can only be used if the valid bit is set. If possible is clear, that means inband signalling can not be used. Required is only valid when possible is set, and means that inband signalling must be used.”h]”hŒèThe possible and required bits can only be used if the valid bit is set. If possible is clear, that means inband signalling can not be used. Required is only valid when possible is set, and means that inband signalling must be used.”…”�”}”(hj¡¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mphj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_plca_cfg (C struct)”Œc.phy_plca_cfg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ phy_plca_cfg”h]”j )�”}”(hŒstruct phy_plca_cfg”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjɹh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŹh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŹh²hh³jÖ¹h´Mxubj3)�”}”(hŒ phy_plca_cfg”h]”j9)�”}”(hjùh]”hŒ phy_plca_cfg”…”�”}”(hjé¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjå¹ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŹh²hh³jÖ¹h´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÁ¹h²hh³jÖ¹h´Mxubah}”(h]”j¼¹ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÖ¹h´Mxhj¾¹h²hubjg)�”}”(hhh]”jl)�”}”(hŒWConfiguration of the PLCA (Physical Layer Collision Avoidance) Reconciliation Sublayer.”h]”hŒWConfiguration of the PLCA (Physical Layer Collision Avoidance) Reconciliation Sublayer.”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M}hjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¾¹h²hh³jÖ¹h´Mxubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j#ºjŒj#ºj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¼**Definition**:: struct phy_plca_cfg { int version; int enabled; int node_id; int node_cnt; int to_tmr; int burst_cnt; int burst_tmr; }; **Members** ``version`` read-only PLCA register map version. -1 = not available. Ignored when setting the configuration. Format is the same as reported by the PLCA IDVER register (31.CA00). -1 = not available. ``enabled`` PLCA configured mode (enabled/disabled). -1 = not available / don't set. 0 = disabled, anything else = enabled. ``node_id`` the PLCA local node identifier. -1 = not available / don't set. Allowed values [0 .. 254]. 255 = node disabled. ``node_cnt`` the PLCA node count (maximum number of nodes having a TO). Only meaningful for the coordinator (node_id = 0). -1 = not available / don't set. Allowed values [1 .. 255]. ``to_tmr`` The value of the PLCA to_timer in bit-times, which determines the PLCA transmit opportunity window opening. See IEEE802.3 Clause 148 for more details. The to_timer shall be set equal over all nodes. -1 = not available / don't set. Allowed values [0 .. 255]. ``burst_cnt`` controls how many additional frames a node is allowed to send in single transmit opportunity (TO). The default value of 0 means that the node is allowed exactly one frame per TO. A value of 1 allows two frames per TO, and so on. -1 = not available / don't set. Allowed values [0 .. 255]. ``burst_tmr`` controls how many bit times to wait for the MAC to send a new frame before interrupting the burst. This value should be set to a value greater than the MAC inter-packet gap (which is typically 96 bits). -1 = not available / don't set. Allowed values [0 .. 255].”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj/ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+ºubhŒ:”…”�”}”(hj+ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj'ºubj¶)�”}”(hŒ“struct phy_plca_cfg { int version; int enabled; int node_id; int node_cnt; int to_tmr; int burst_cnt; int burst_tmr; };”h]”hŒ“struct phy_plca_cfg { int version; int enabled; int node_id; int node_cnt; int to_tmr; int burst_cnt; int burst_tmr; };”…”�”}”hjHºsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mƒhj'ºubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjYºh]”hŒMembers”…”�”}”(hj[ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjWºubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj'ºubjß)�”}”(hhh]”(jä)�”}”(hŒÆ``version`` read-only PLCA register map version. -1 = not available. Ignored when setting the configuration. Format is the same as reported by the PLCA IDVER register (31.CA00). -1 = not available. ”h]”(jê)�”}”(hŒ ``version``”h]”jð)�”}”(hjxºh]”hŒversion”…”�”}”(hjzºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjvºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mƒhjrºubj)�”}”(hhh]”jl)�”}”(hŒ¹read-only PLCA register map version. -1 = not available. Ignored when setting the configuration. Format is the same as reported by the PLCA IDVER register (31.CA00). -1 = not available.”h]”hŒ¹read-only PLCA register map version. -1 = not available. Ignored when setting the configuration. Format is the same as reported by the PLCA IDVER register (31.CA00). -1 = not available.”…”�”}”(hj‘ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hjŽºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�ºh´Mƒhjoºubjä)�”}”(hŒ|``enabled`` PLCA configured mode (enabled/disabled). -1 = not available / don't set. 0 = disabled, anything else = enabled. ”h]”(jê)�”}”(hŒ ``enabled``”h]”jð)�”}”(hj²ºh]”hŒenabled”…”�”}”(hj´ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M…hj¬ºubj)�”}”(hhh]”jl)�”}”(hŒoPLCA configured mode (enabled/disabled). -1 = not available / don't set. 0 = disabled, anything else = enabled.”h]”hŒqPLCA configured mode (enabled/disabled). -1 = not available / don’t set. 0 = disabled, anything else = enabled.”…”�”}”(hj˺h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M„hjȺubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jǺh´M…hjoºubjä)�”}”(hŒ|``node_id`` the PLCA local node identifier. -1 = not available / don't set. Allowed values [0 .. 254]. 255 = node disabled. ”h]”(jê)�”}”(hŒ ``node_id``”h]”jð)�”}”(hjìºh]”hŒnode_id”…”�”}”(hjîºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‡hjæºubj)�”}”(hhh]”jl)�”}”(hŒothe PLCA local node identifier. -1 = not available / don't set. Allowed values [0 .. 254]. 255 = node disabled.”h]”hŒqthe PLCA local node identifier. -1 = not available / don’t set. Allowed values [0 .. 254]. 255 = node disabled.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M†hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»h´M‡hjoºubjä)�”}”(hŒ¶``node_cnt`` the PLCA node count (maximum number of nodes having a TO). Only meaningful for the coordinator (node_id = 0). -1 = not available / don't set. Allowed values [1 .. 255]. ”h]”(jê)�”}”(hŒ ``node_cnt``”h]”jð)�”}”(hj&»h]”hŒnode_cnt”…”�”}”(hj(»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj$»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŠhj »ubj)�”}”(hhh]”jl)�”}”(hŒ¨the PLCA node count (maximum number of nodes having a TO). Only meaningful for the coordinator (node_id = 0). -1 = not available / don't set. Allowed values [1 .. 255].”h]”hŒªthe PLCA node count (maximum number of nodes having a TO). Only meaningful for the coordinator (node_id = 0). -1 = not available / don’t set. Allowed values [1 .. 255].”…”�”}”(hj?»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mˆhj<»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj »ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j;»h´MŠhjoºubjä)�”}”(hX ``to_tmr`` The value of the PLCA to_timer in bit-times, which determines the PLCA transmit opportunity window opening. See IEEE802.3 Clause 148 for more details. The to_timer shall be set equal over all nodes. -1 = not available / don't set. Allowed values [0 .. 255]. ”h]”(jê)�”}”(hŒ ``to_tmr``”h]”jð)�”}”(hj`»h]”hŒto_tmr”…”�”}”(hjb»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŽhjZ»ubj)�”}”(hhh]”jl)�”}”(hXThe value of the PLCA to_timer in bit-times, which determines the PLCA transmit opportunity window opening. See IEEE802.3 Clause 148 for more details. The to_timer shall be set equal over all nodes. -1 = not available / don't set. Allowed values [0 .. 255].”h]”hXThe value of the PLCA to_timer in bit-times, which determines the PLCA transmit opportunity window opening. See IEEE802.3 Clause 148 for more details. The to_timer shall be set equal over all nodes. -1 = not available / don’t set. Allowed values [0 .. 255].”…”�”}”(hjy»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‹hjv»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ju»h´MŽhjoºubjä)�”}”(hX.``burst_cnt`` controls how many additional frames a node is allowed to send in single transmit opportunity (TO). The default value of 0 means that the node is allowed exactly one frame per TO. A value of 1 allows two frames per TO, and so on. -1 = not available / don't set. Allowed values [0 .. 255]. ”h]”(jê)�”}”(hŒ ``burst_cnt``”h]”jð)�”}”(hjš»h]”hŒ burst_cnt”…”�”}”(hjœ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M“hj”»ubj)�”}”(hhh]”jl)�”}”(hXcontrols how many additional frames a node is allowed to send in single transmit opportunity (TO). The default value of 0 means that the node is allowed exactly one frame per TO. A value of 1 allows two frames per TO, and so on. -1 = not available / don't set. Allowed values [0 .. 255].”h]”hX!controls how many additional frames a node is allowed to send in single transmit opportunity (TO). The default value of 0 means that the node is allowed exactly one frame per TO. A value of 1 allows two frames per TO, and so on. -1 = not available / don’t set. Allowed values [0 .. 255].”…”�”}”(hj³»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj°»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯»h´M“hjoºubjä)�”}”(hX``burst_tmr`` controls how many bit times to wait for the MAC to send a new frame before interrupting the burst. This value should be set to a value greater than the MAC inter-packet gap (which is typically 96 bits). -1 = not available / don't set. Allowed values [0 .. 255].”h]”(jê)�”}”(hŒ ``burst_tmr``”h]”jð)�”}”(hjÔ»h]”hŒ burst_tmr”…”�”}”(hjÖ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M–hjλubj)�”}”(hhh]”jl)�”}”(hXcontrols how many bit times to wait for the MAC to send a new frame before interrupting the burst. This value should be set to a value greater than the MAC inter-packet gap (which is typically 96 bits). -1 = not available / don't set. Allowed values [0 .. 255].”h]”hXcontrols how many bit times to wait for the MAC to send a new frame before interrupting the burst. This value should be set to a value greater than the MAC inter-packet gap (which is typically 96 bits). -1 = not available / don’t set. Allowed values [0 .. 255].”…”�”}”(hjí»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M”hjê»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjλubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jé»h´M–hjoºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¼h]”hŒ Description”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mšhj”–h²hubjl)�”}”(hŒÁA structure containing configuration parameters for setting/getting the PLCA RS configuration. The driver does not need to implement all the parameters, but should report what is actually used.”h]”hŒÁA structure containing configuration parameters for setting/getting the PLCA RS configuration. The driver does not need to implement all the parameters, but should report what is actually used.”…”�”}”(hj-¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M—hj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_plca_status (C struct)”Œc.phy_plca_status”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_plca_status”h]”j )�”}”(hŒstruct phy_plca_status”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjU¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ¼h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ¼h²hh³jb¼h´Mžubj3)�”}”(hŒphy_plca_status”h]”j9)�”}”(hjO¼h]”hŒphy_plca_status”…”�”}”(hju¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq¼ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjQ¼h²hh³jb¼h´Mžubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjM¼h²hh³jb¼h´Mžubah}”(h]”jH¼ah ]”(j^j_eh"• ]”h$]”h&]”jcˆjd)jehuh1jh³jb¼h´MžhjJ¼h²hubjg)�”}”(hhh]”jl)�”}”(hŒPStatus of the PLCA (Physical Layer Collision Avoidance) Reconciliation Sublayer.”h]”hŒPStatus of the PLCA (Physical Layer Collision Avoidance) Reconciliation Sublayer.”…”�”}”(hj—¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M§hj”¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjJ¼h²hh³jb¼h´Mžubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j¯¼jŒj¯¼j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÈ**Definition**:: struct phy_plca_status { bool pst; }; **Members** ``pst`` The PLCA status as reported by the PST bit in the PLCA STATUS register(31.CA03), indicating BEACON activity.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj»¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·¼ubhŒ:”…”�”}”(hj·¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M«hj³¼ubj¶)�”}”(hŒ)struct phy_plca_status { bool pst; };”h]”hŒ)struct phy_plca_status { bool pst; };”…”�”}”hjÔ¼sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M­hj³¼ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjå¼h]”hŒMembers”…”�”}”(hjç¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjã¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M±hj³¼ubjß)�”}”(hhh]”jä)�”}”(hŒt``pst`` The PLCA status as reported by the PST bit in the PLCA STATUS register(31.CA03), indicating BEACON activity.”h]”(jê)�”}”(hŒ``pst``”h]”jð)�”}”(hj½h]”hŒpst”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M«hjþ¼ubj)�”}”(hhh]”jl)�”}”(hŒlThe PLCA status as reported by the PST bit in the PLCA STATUS register(31.CA03), indicating BEACON activity.”h]”hŒlThe PLCA status as reported by the PST bit in the PLCA STATUS register(31.CA03), indicating BEACON activity.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½h´M«hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½h´M«hjû¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjF½h]”hŒ Description”…”�”}”(hjH½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjD½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¯hj”–h²hubjl)�”}”(hŒªA structure containing status information of the PLCA RS configuration. The driver does not need to implement all the parameters, but should report what is actually used.”h]”hŒªA structure containing status information of the PLCA RS configuration. The driver does not need to implement all the parameters, but should report what is actually used.”…”�”}”(hj\½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¬hj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_led (C struct)”Œ c.phy_led”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_led”h]”j )�”}”(hŒstruct phy_led”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj„½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€½h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€½h²hh³j‘½h´M³ubj3)�”}”(hŒphy_led”h]”j9)�”}”(hj~½h]”hŒphy_led”…”�”}”(hj¤½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ½ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj€½h²hh³j‘½h´M³ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj|½h²hh³j‘½h´M³ubah}”(h]”jw½ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‘½h´M³hjy½h²hubjg)�”}”(hhh]”jl)�”}”(hŒAn LED driven by the PHY”h]”hŒAn LED driven by the PHY”…”�”}”(hjƽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÀhjýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjy½h²hh³j‘½h´M³ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jÞ½jŒjÞ½j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX7**Definition**:: struct phy_led { struct list_head list; struct phy_device *phydev; struct led_classdev led_cdev; u8 index; }; **Members** ``list`` List of LEDs ``phydev`` PHY this LED is attached to ``led_cdev`` Standard LED class structure ``index`` Number of the LED”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjê½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæ½ubhŒ:”…”�”}”(hjæ½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÄhjâ½ubj¶)�”}”(hŒ}struct phy_led { struct list_head list; struct phy_device *phydev; struct led_classdev led_cdev; u8 index; };”h]”hŒ}struct phy_led { struct list_head list; struct phy_device *phydev; struct led_classdev led_cdev; u8 index; };”…”�”}”hj¾sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÆhjâ½ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj¾h]”hŒMembers”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÍhjâ½ubjß)�”}”(hhh]”(jä)�”}”(hŒ``list`` List of LEDs ”h]”(jê)�”}”(hŒ``list``”h]”jð)�”}”(hj3¾h]”hŒlist”…”�”}”(hj5¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÃhj-¾ubj)�”}”(hhh]”jl)�”}”(hŒ List of LEDs”h]”hŒ List of LEDs”…”�”}”(hjL¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jH¾h´MÃhjI¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jH¾h´MÃhj*¾ubjä)�”}”(hŒ'``phydev`` PHY this LED is attached to ”h]”(jê)�”}”(hŒ ``phydev``”h]”jð)�”}”(hjl¾h]”hŒphydev”…”�”}”(hjn¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÄhjf¾ubj)�”}”(hhh]”jl)�”}”(hŒPHY this LED is attached to”h]”hŒPHY this LED is attached to”…”�”}”(hj…¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�¾h´MÄhj‚¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�¾h´MÄhj*¾ubjä)�”}”(hŒ*``led_cdev`` Standard LED class structure ”h]”(jê)�”}”(hŒ ``led_cdev``”h]”jð)�”}”(hj¥¾h]”hŒled_cdev”…”�”}”(hj§¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÅhjŸ¾ubj)�”}”(hhh]”jl)�”}”(hŒStandard LED class structure”h]”hŒStandard LED class structure”…”�”}”(hj¾¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jº¾h´MÅhj»¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jº¾h´MÅhj*¾ubjä)�”}”(hŒ``index`` Number of the LED”h]”(jê)�”}”(hŒ ``index``”h]”jð)�”}”(hjÞ¾h]”hŒindex”…”�”}”(hjà¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjܾubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÅhjؾubj)�”}”(hhh]”jl)�”}”(hŒNumber of the LED”h]”hŒNumber of the LED”…”�”}”(hj÷¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÆhjô¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjؾubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jó¾h´MÅhj*¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjâ½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_mse_capability (C struct)”Œc.phy_mse_capability”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_mse_capability”h]”j )�”}”(hŒstruct phy_mse_capability”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj8¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4¿h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÌubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4¿h²hh³jE¿h´MÌubj3)�”}”(hŒphy_mse_capability”h]”j9)�”}”(hj2¿h]”hŒphy_mse_capability”…”�”}”(hjX¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT¿ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj4¿h²hh³jE¿h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0¿h²hh³jE¿h´MÌubah}”(h]”j+¿ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jE¿h´MÌhj-¿h²hubjg)�”}”(hhh]”jl)�”}”(hŒ=Capabilities of Mean Square Error (MSE) measurement interface”h]”hŒ=Capabilities of Mean Square Error (MSE) measurement interface”…”�”}”(hjz¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjw¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj-¿h²hh³jE¿h´MÌubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j’¿jŒj’¿j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX[**Definition**:: struct phy_mse_capability { u64 max_average_mse; u64 max_peak_mse; u64 refresh_rate_ps; u64 num_symbols; u32 supported_caps; }; **Members** ``max_average_mse`` The maximum value for an average MSE snapshot. This defines the scale for the measurement. If the PHY_MSE_CAP_AVG capability is supported, this value MUST be greater than 0. (vendor-specific units). ``max_peak_mse`` The maximum value for a peak MSE snapshot. If either PHY_MSE_CAP_PEAK or PHY_MSE_CAP_WORST_PEAK is supported, this value MUST be greater than 0. (vendor-specific units). ``refresh_rate_ps`` The typical interval, in picoseconds, between hardware updates of the MSE values. This is an estimate, and callers should not assume synchronous sampling. (vendor-specific units). ``num_symbols`` The number of symbols aggregated per hardware sample to calculate the MSE. (vendor-specific units). ``supported_caps`` A bitmask of PHY_MSE_CAP_* values indicating which measurement types (e.g., average, peak) and channels (e.g., per-pair or link-wide) are supported.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjž¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjš¿ubhŒ:”…”�”}”(hjš¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M!hj–¿ubj¶)�”}”(hŒ“struct phy_mse_capability { u64 max_average_mse; u64 max_peak_mse; u64 refresh_rate_ps; u64 num_symbols; u32 supported_caps; };”h]”hŒ“struct phy_mse_capability { u64 max_average_mse; u64 max_peak_mse; u64 refresh_rate_ps; u64 num_symbols; u32 supported_caps; };”…”�”}”hj·¿sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M#hj–¿ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjÈ¿h]”hŒMembers”…”�”}”(hjÊ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÆ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M+hj–¿ubjß)�”}”(hhh]”(jä)�”}”(hŒÛ``max_average_mse`` The maximum value for an average MSE snapshot. This defines the scale for the measurement. If the PHY_MSE_CAP_AVG capability is supported, this value MUST be greater than 0. (vendor-specific units). ”h]”(jê)�”}”(hŒ``max_average_mse``”h]”jð)�”}”(hjç¿h]”hŒmax_average_mse”…”�”}”(hjé¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjå¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M<hjá¿ubj)�”}”(hhh]”jl)�”}”(hŒÆThe maximum value for an average MSE snapshot. This defines the scale for the measurement. If the PHY_MSE_CAP_AVG capability is supported, this value MUST be greater than 0. (vendor-specific units).”h]”hŒÆThe maximum value for an average MSE snapshot. This defines the scale for the measurement. If the PHY_MSE_CAP_AVG capability is supported, this value MUST be greater than 0. (vendor-specific units).”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M:hjý¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jü¿h´M<hjÞ¿ubjä)�”}”(hŒ»``max_peak_mse`` The maximum value for a peak MSE snapshot. If either PHY_MSE_CAP_PEAK or PHY_MSE_CAP_WORST_PEAK is supported, this value MUST be greater than 0. (vendor-specific units). ”h]”(jê)�”}”(hŒ``max_peak_mse``”h]”jð)�”}”(hj!Àh]”hŒ max_peak_mse”…”�”}”(hj#Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M?hjÀubj)�”}”(hhh]”jl)�”}”(hŒ©The maximum value for a peak MSE snapshot. If either PHY_MSE_CAP_PEAK or PHY_MSE_CAP_WORST_PEAK is supported, this value MUST be greater than 0. (vendor-specific units).”h]”hŒ©The maximum value for a peak MSE snapshot. If either PHY_MSE_CAP_PEAK or PHY_MSE_CAP_WORST_PEAK is supported, this value MUST be greater than 0. (vendor-specific units).”…”�”}”(hj:Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M=hj7Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6Àh´M?hjÞ¿ubjä)�”}”(hŒÈ``refresh_rate_ps`` The typical interval, in picoseconds, between hardware updates of the MSE values. This is an estimate, and callers should not assume synchronous sampling. (vendor-specific units). ”h]”(jê)�”}”(hŒ``refresh_rate_ps``”h]”jð)�”}”(hj[Àh]”hŒrefresh_rate_ps”…”�”}”(hj]Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MBhjUÀubj)�”}”(hhh]”jl)�”}”(hŒ³The typical interval, in picoseconds, between hardware updates of the MSE values. This is an estimate, and callers should not assume synchronous sampling. (vendor-specific units).”h]”hŒ³The typical interval, in picoseconds, between hardware updates of the MSE values. This is an estimate, and callers should not assume synchronous sampling. (vendor-specific units).”…”�”}”(hjtÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M@hjqÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpÀh´MBhjÞ¿ubjä)�”}”(hŒt``num_symbols`` The number of symbols aggregated per hardware sample to calculate the MSE. (vendor-specific units). ”h]”(jê)�”}”(hŒ``num_symbols``”h]”jð)�”}”(hj•Àh]”hŒ num_symbols”…”�”}”(hj—Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MDhj�Àubj)�”}”(hhh]”jl)�”}”(hŒcThe number of symbols aggregated per hardware sample to calculate the MSE. (vendor-specific units).”h]”hŒcThe number of symbols aggregated per hardware sample to calculate the MSE. (vendor-specific units).”…”�”}”(hj®Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MChj«Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªÀh´MDhjÞ¿ubjä)�”}”(hŒ§``supported_caps`` A bitmask of PHY_MSE_CAP_* values indicating which measurement types (e.g., average, peak) and channels (e.g., per-pair or link-wide) are supported.”h]”(jê)�”}”(hŒ``supported_caps``”h]”jð)�”}”(hjÏÀh]”hŒsupported_caps”…”�”}”(hjÑÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MFhjÉÀubj)�”}”(hhh]”jl)�”}”(hŒ”A bitmask of PHY_MSE_CAP_* values indicating which measurement types (e.g., average, peak) and channels (e.g., per-pair or link-wide) are supported.”h]”hŒ”A bitmask of PHY_MSE_CAP_* values indicating which measurement types (e.g., average, peak) and channels (e.g., per-pair or link-wide) are supported.”…”�”}”(hjèÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MEhjåÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jäÀh´MFhjÞ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÁh]”hŒ Description”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MJhj”–h²hubjl)�”}”(hŒStandardization notes:”h]”hŒStandardization notes:”…”�”}”(hj(Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj”–h²hubjC[)�”}”(hhh]”(jH[)�”}”(hŒìPresence of MSE/SQI/pMSE is defined by OPEN Alliance specs, but numeric scaling, refresh/update rate and aggregation windows are not fixed and are vendor-/product-specific. (OA 100BASE-T1 TC1 v1.0 6.1.*; OA 1000BASE-T1 TC12 v2.2 6.1.*) ”h]”jl)�”}”(hŒëPresence of MSE/SQI/pMSE is defined by OPEN Alliance specs, but numeric scaling, refresh/update rate and aggregation windows are not fixed and are vendor-/product-specific. (OA 100BASE-T1 TC1 v1.0 6.1.*; OA 1000BASE-T1 TC12 v2.2 6.1.*)”h]”hŒëPresence of MSE/SQI/pMSE is defined by OPEN Alliance specs, but numeric scaling, refresh/update rate and aggregation windows are not fixed and are vendor-/product-specific. (OA 100BASE-T1 TC1 v1.0 6.1.*; OA 1000BASE-T1 TC12 v2.2 6.1.*)”…”�”}”(hj>Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hj:Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj7ÁubjH[)�”}”(hŒÉTypical recommendations: 2^16 symbols and 0..511 scaling for MSE; pMSE only defined for 100BASE-T1 (sliding window example), others are vendor extensions. Drivers must report actual scale/limits here. ”h]”jl)�”}”(hŒÈTypical recommendations: 2^16 symbols and 0..511 scaling for MSE; pMSE only defined for 100BASE-T1 (sliding window example), others are vendor extensions. Drivers must report actual scale/limits here.”h]”hŒÈTypical recommendations: 2^16 symbols and 0..511 scaling for MSE; pMSE only defined for 100BASE-T1 (sliding window example), others are vendor extensions. Drivers must report actual scale/limits here.”…”�”}”(hjWÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M%hjSÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj7Áubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jLÁh´M hj”–h²hubjl)�”}”(hX Describes the MSE measurement capabilities for the current link mode. These properties are dynamic and may change when link settings are modified. Callers should re-query this capability after any link state change to ensure they have the most up-to-date information.”h]”hX Describes the MSE measurement capabilities for the current link mode. These properties are dynamic and may change when link settings are modified. Callers should re-query this capability after any link state change to ensure they have the most up-to-date information.”…”�”}”(hjrÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M)hj”–h²hubjl)�”}”(hXCallers should only request measurements for channels and types that are indicated as supported by the **supported_caps** bitmask. If **supported_caps** is 0, the device provides no MSE diagnostics, and driver operations should typically return -EOPNOTSUPP.”h]”(hŒgCallers should only request measurements for channels and types that are indicated as supported by the ”…”�”}”(hj�Áh²hh³Nh´Nubj›)�”}”(hŒ**supported_caps**”h]”hŒsupported_caps”…”�”}”(hj‰Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ÁubhŒ bitmask. If ”…”�”}”(hj�Áh²hh³Nh´Nubj›)�”}”(hŒ**supported_caps**”h]”hŒsupported_caps”…”�”}”(hj›Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ÁubhŒi is 0, the device provides no MSE diagnostics, and driver operations should typically return -EOPNOTSUPP.”…”�”}”(hj�Áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M.hj”–h²hubjl)�”}”(hŒ«Snapshot values for average and peak MSE can be normalized to a 0..1 ratio by dividing the raw snapshot by the corresponding **max_average_mse** or **max_peak_mse** value.”h]”(hŒ}Snapshot values for average and peak MSE can be normalized to a 0..1 ratio by dividing the raw snapshot by the corresponding ”…”�”}”(hj´Áh²hh³Nh´Nubj›)�”}”(hŒ**max_average_mse**”h]”hŒmax_average_mse”…”�”}”(hj¼Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´ÁubhŒ or ”…”�”}”(hj´Áh²hh³Nh´Nubj›)�”}”(hŒ**max_peak_mse**”h]”hŒ max_peak_mse”…”�”}”(hjÎÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´ÁubhŒ value.”…”�”}”(hj´Áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M3hj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_mse_snapshot (C struct)”Œc.phy_mse_snapshot”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_mse_snapshot”h]”j )�”}”(hŒstruct phy_mse_snapshot”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüÁh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M:ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjüÁh²hh³j Âh´M:ubj3)�”}”(hŒphy_mse_snapshot”h]”j9)�”}”(hjúÁh]”hŒphy_mse_snapshot”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjüÁh²hh³j Âh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjøÁh²hh³j Âh´M:ubah}”(h]”jóÁah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j Âh´M:hjõÁh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1A snapshot of Mean Square Error (MSE) diagnostics”h]”hŒ1A snapshot of Mean Square Error (MSE) diagnostics”…”�”}”(hjBÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MQhj?Âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjõÁh²hh³j Âh´M:ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jZÂjŒjZÂj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Definition**:: struct phy_mse_snapshot { u64 average_mse; u64 peak_mse; u64 worst_peak_mse; }; **Members** ``average_mse`` The average MSE value over the measurement window. OPEN Alliance references MSE as a DCQ metric; recommends 2^16 symbols and 0..511 scaling. Exact scale and refresh are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.1; 1000BASE-T1 TC12 v2.2 6.1.1). ``peak_mse`` The peak MSE value observed within the measurement window. For 100BASE-T1, "pMSE" is optional and may be implemented via a sliding 128-symbol window with periodic capture; not standardized for 1000BASE-T1. (100BASE-T1 TC1 v1.0 6.1.3, Table "DCQ.peakMSE"). ``worst_peak_mse`` A latched high-water mark of the peak MSE since last read (read-to-clear if implemented). OPEN Alliance shows a latched "worst case peak MSE" for 100BASE-T1 pMSE; availability/semantics outside that are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.3, DCQ.peakMSE high byte; 1000BASE-T1 TC12 v2.2 treats DCQ details as vendor-specific.)”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjfÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjbÂubhŒ:”…”�”}”(hjbÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MUhj^Âubj¶)�”}”(hŒ[struct phy_mse_snapshot { u64 average_mse; u64 peak_mse; u64 worst_peak_mse; };”h]”hŒ[struct phy_mse_snapshot { u64 average_mse; u64 peak_mse; u64 worst_peak_mse; };”…”�”}”hjÂsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MWhj^Âubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj�Âh]”hŒMembers”…”�”}”(hj’Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŽÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M]hj^Âubjß)�”}”(hhh]”(jä)�”}”(hX``average_mse`` The average MSE value over the measurement window. OPEN Alliance references MSE as a DCQ metric; recommends 2^16 symbols and 0..511 scaling. Exact scale and refresh are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.1; 1000BASE-T1 TC12 v2.2 6.1.1). ”h]”(jê)�”}”(hŒ``average_mse``”h]”jð)�”}”(hj¯Âh]”hŒ average_mse”…”�”}”(hj±Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M]hj©Âubj)�”}”(hhh]”jl)�”}”(hŒóThe average MSE value over the measurement window. OPEN Alliance references MSE as a DCQ metric; recommends 2^16 symbols and 0..511 scaling. Exact scale and refresh are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.1; 1000BASE-T1 TC12 v2.2 6.1.1).”h]”hŒóThe average MSE value over the measurement window. OPEN Alliance references MSE as a DCQ metric; recommends 2^16 symbols and 0..511 scaling. Exact scale and refresh are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.1; 1000BASE-T1 TC12 v2.2 6.1.1).”…”�”}”(hjÈÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MZhjÅÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄÂh´M]hj¦Âubjä)�”}”(hX ``peak_mse`` The peak MSE value observed within the measurement window. For 100BASE-T1, "pMSE" is optional and may be implemented via a sliding 128-symbol window with periodic capture; not standardized for 1000BASE-T1. (100BASE-T1 TC1 v1.0 6.1.3, Table "DCQ.peakMSE"). ”h]”(jê)�”}”(hŒ ``peak_mse``”h]”jð)�”}”(hjéÂh]”hŒpeak_mse”…”�”}”(hjëÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjçÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MbhjãÂubj)�”}”(hhh]”jl)�”}”(hŒÿThe peak MSE value observed within the measurement window. For 100BASE-T1, "pMSE" is optional and may be implemented via a sliding 128-symbol window with periodic capture; not standardized for 1000BASE-T1. (100BASE-T1 TC1 v1.0 6.1.3, Table "DCQ.peakMSE").”h]”hXThe peak MSE value observed within the measurement window. For 100BASE-T1, “pMSEâ€� is optional and may be implemented via a sliding 128-symbol window with periodic capture; not standardized for 1000BASE-T1. (100BASE-T1 TC1 v1.0 6.1.3, Table “DCQ.peakMSEâ€�).”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M_hjÿÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jþÂh´Mbhj¦Âubjä)�”}”(hX_``worst_peak_mse`` A latched high-water mark of the peak MSE since last read (read-to-clear if implemented). OPEN Alliance shows a latched "worst case peak MSE" for 100BASE-T1 pMSE; availability/semantics outside that are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.3, DCQ.peakMSE high byte; 1000BASE-T1 TC12 v2.2 treats DCQ details as vendor-specific.)”h]”(jê)�”}”(hŒ``worst_peak_mse``”h]”jð)�”}”(hj#Ãh]”hŒworst_peak_mse”…”�”}”(hj%Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MghjÃubj)�”}”(hhh]”jl)�”}”(hXLA latched high-water mark of the peak MSE since last read (read-to-clear if implemented). OPEN Alliance shows a latched "worst case peak MSE" for 100BASE-T1 pMSE; availability/semantics outside that are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.3, DCQ.peakMSE high byte; 1000BASE-T1 TC12 v2.2 treats DCQ details as vendor-specific.)”h]”hXPA latched high-water mark of the peak MSE since last read (read-to-clear if implemented). OPEN Alliance shows a latched “worst case peak MSEâ€� for 100BASE-T1 pMSE; availability/semantics outside that are vendor-specific. (100BASE-T1 TC1 v1.0 6.1.3, DCQ.peakMSE high byte; 1000BASE-T1 TC12 v2.2 treats DCQ details as vendor-specific.)”…”�”}”(hj<Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mdhj9Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8Ãh´Mghj¦Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj^Âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjfÃh]”hŒ Description”…”�”}”(hjhÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mkhj”–h²hubjl)�”}”(hŒ]Holds a set of MSE diagnostic values that were all captured from a single measurement window.”h]”hŒ]Holds a set of MSE diagnostic values that were all captured from a single measurement window.”…”�”}”(hj|Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MRhj”–h²hubjl)�”}”(hŒ{Values are raw, device-scaled and not normalized. Use struct phy_mse_capability to interpret the scale and sampling window.”h]”hŒ{Values are raw, device-scaled and not normalized. Use struct phy_mse_capability to interpret the scale and sampling window.”…”�”}”(hj‹Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MUhj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_driver (C struct)”Œ c.phy_driver”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ phy_driver”h]”j )�”}”(hŒstruct phy_driver”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj³Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯Ãh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÃh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯Ãh²hh³jÀÃh´M[ubj3)�”}”(hŒ phy_driver”h]”j9)�”}”(hj­Ãh]”hŒ phy_driver”…”�”}”(hjÓÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏÃubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¯Ãh²hh³jÀÃh´M[ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj«Ãh²hh³jÀÃh´M[ubah}”(h]”j¦Ãah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÀÃh´M[hj¨Ãh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*Driver structure for a particular PHY type”h]”hŒ*Driver structure for a particular PHY type”…”�”}”(hjõÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MphjòÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¨Ãh²hh³jÀÃh´M[ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j ÄjŒj Äj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXA**Definition**:: struct phy_driver { struct mdio_driver_common mdiodrv; u32 phy_id; char *name; u32 phy_id_mask; const unsigned long * const features; u32 flags; const void *driver_data; int (*soft_reset)(struct phy_device *phydev); int (*config_init)(struct phy_device *phydev); int (*probe)(struct phy_device *phydev); int (*get_features)(struct phy_device *phydev); unsigned int (*inband_caps)(struct phy_device *phydev, phy_interface_t interface); int (*config_inband)(struct phy_device *phydev, unsigned int modes); int (*get_rate_matching)(struct phy_device *phydev, phy_interface_t iface); int (*suspend)(struct phy_device *phydev); int (*resume)(struct phy_device *phydev); int (*config_aneg)(struct phy_device *phydev); int (*aneg_done)(struct phy_device *phydev); int (*read_status)(struct phy_device *phydev); int (*config_intr)(struct phy_device *phydev); irqreturn_t (*handle_interrupt)(struct phy_device *phydev); void (*remove)(struct phy_device *phydev); int (*match_phy_device)(struct phy_device *phydev, const struct phy_driver *phydrv); int (*set_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); void (*get_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); void (*link_change_notify)(struct phy_device *dev); int (*read_mmd)(struct phy_device *dev, int devnum, u16 regnum); int (*write_mmd)(struct phy_device *dev, int devnum, u16 regnum, u16 val); int (*read_page)(struct phy_device *dev); int (*write_page)(struct phy_device *dev, int page); int (*module_info)(struct phy_device *dev, struct ethtool_modinfo *modinfo); int (*module_eeprom)(struct phy_device *dev, struct ethtool_eeprom *ee, u8 *data); int (*cable_test_start)(struct phy_device *dev); int (*cable_test_tdr_start)(struct phy_device *dev, const struct phy_tdr_config *config); int (*cable_test_get_status)(struct phy_device *dev, bool *finished); void (*get_phy_stats)(struct phy_device *dev, struct ethtool_eth_phy_stats *eth_stats, struct ethtool_phy_stats *stats); void (*get_link_stats)(struct phy_device *dev, struct ethtool_link_ext_stats *link_stats); int (*update_stats)(struct phy_device *dev); int (*get_sset_count)(struct phy_device *dev); void (*get_strings)(struct phy_device *dev, u8 *data); void (*get_stats)(struct phy_device *dev, struct ethtool_stats *stats, u64 *data); int (*disable_autonomous_eee)(struct phy_device *dev); int (*get_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, void *data); int (*set_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, const void *data); int (*set_loopback)(struct phy_device *dev, bool enable, int speed); int (*get_sqi)(struct phy_device *dev); int (*get_sqi_max)(struct phy_device *dev); int (*get_mse_capability)(struct phy_device *dev, struct phy_mse_capability *cap); int (*get_mse_snapshot)(struct phy_device *dev, enum phy_mse_channel channel, struct phy_mse_snapshot *snapshot); int (*get_plca_cfg)(struct phy_device *dev, struct phy_plca_cfg *plca_cfg); int (*set_plca_cfg)(struct phy_device *dev, const struct phy_plca_cfg *plca_cfg); int (*get_plca_status)(struct phy_device *dev, struct phy_plca_status *plca_st); int (*led_brightness_set)(struct phy_device *dev, u8 index, enum led_brightness value); int (*led_blink_set)(struct phy_device *dev, u8 index, unsigned long *delay_on, unsigned long *delay_off); int (*led_hw_is_supported)(struct phy_device *dev, u8 index, unsigned long rules); int (*led_hw_control_set)(struct phy_device *dev, u8 index, unsigned long rules); int (*led_hw_control_get)(struct phy_device *dev, u8 index, unsigned long *rules); int (*led_polarity_set)(struct phy_device *dev, int index, unsigned long modes); unsigned int (*get_next_update_time)(struct phy_device *dev); int (*attach_mii_port)(struct phy_device *dev, struct phy_port *port); int (*attach_mdi_port)(struct phy_device *dev, struct phy_port *port); }; **Members** ``mdiodrv`` Data common to all MDIO devices ``phy_id`` The result of reading the UID registers of this PHY type, and ANDing them with the phy_id_mask. This driver only works for PHYs with IDs which match this field ``name`` The friendly name of this PHY type ``phy_id_mask`` Defines the important bits of the phy_id ``features`` A mandatory list of features (speed, duplex, etc) supported by this PHY ``flags`` A bitfield defining certain other features this PHY supports (like interrupts) ``driver_data`` Static driver data ``soft_reset`` Called to issue a PHY software reset ``config_init`` Called to initialize the PHY, including after a reset ``probe`` Called during discovery. Used to set up device-specific structures, if any ``get_features`` Probe the hardware to determine what abilities it has. Should only set phydev->supported. ``inband_caps`` query whether in-band is supported for the given PHY interface mode. Returns a bitmask of bits defined by enum link_inband_signalling. ``config_inband`` configure in-band mode for the PHY ``get_rate_matching`` Get the supported type of rate matching for a particular phy interface. This is used by phy consumers to determine whether to advertise lower-speed modes for that interface. It is assumed that if a rate matching mode is supported on an interface, then that interface's rate can be adapted to all slower link speeds supported by the phy. If the interface is not supported, this should return ``RATE_MATCH_NONE``. ``suspend`` Suspend the hardware, saving state if needed ``resume`` Resume the hardware, restoring state if needed ``config_aneg`` Configures the advertisement and resets autonegotiation if phydev->autoneg is on, forces the speed to the current settings in phydev if phydev->autoneg is off ``aneg_done`` Determines the auto negotiation result ``read_status`` Determines the negotiated speed and duplex ``config_intr`` Enables or disables interrupts. It should also clear any pending interrupts prior to enabling the IRQs and after disabling them. ``handle_interrupt`` Override default interrupt handling ``remove`` Clears up any memory if needed ``match_phy_device`` Returns true if this is a suitable driver for the given phydev. If NULL, matching is based on phy_id and phy_id_mask. ``set_wol`` Some devices (e.g. qnap TS-119P II) require PHY register changes to enable Wake on LAN, so set_wol is provided to be called in the ethernet driver's set_wol function. ``get_wol`` See set_wol, but for checking whether Wake on LAN is enabled. ``link_change_notify`` Called to inform a PHY device driver when the core is about to change the link state. This callback is supposed to be used as fixup hook for drivers that need to take action when the link state changes. Drivers are by no means allowed to mess with the PHY device structure in their implementations. ``read_mmd`` PHY specific driver override for reading a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD read function will be used by phy_read_mmd(), which will use either a direct read for Clause 45 PHYs or an indirect read for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device. ``write_mmd`` PHY specific driver override for writing a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD write function will be used by phy_write_mmd(), which will use either a direct write for Clause 45 PHYs, or an indirect write for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device. val is the value to be written. ``read_page`` Return the current PHY register page number ``write_page`` Set the current PHY register page number ``module_info`` Get the size and type of the eeprom contained within a plug-in module ``module_eeprom`` Get the eeprom information from the plug-in module ``cable_test_start`` Start a cable test ``cable_test_tdr_start`` Start a raw TDR cable test ``cable_test_get_status`` Once per second, or on interrupt, request the status of the test. ``get_phy_stats`` Retrieve PHY statistics. **dev**: The PHY device for which the statistics are retrieved. **eth_stats**: structure where Ethernet PHY stats will be stored. **stats**: structure where additional PHY-specific stats will be stored. Retrieves the supported PHY statistics and populates the provided structures. The input structures are pre-initialized with `ETHTOOL_STAT_NOT_SET`, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to `ETHTOOL_STAT_NOT_SET` and will not be returned to userspace. ``get_link_stats`` Retrieve link statistics. **dev**: The PHY device for which the statistics are retrieved. **link_stats**: structure where link-specific stats will be stored. Retrieves link-related statistics for the given PHY device. The input structure is pre-initialized with `ETHTOOL_STAT_NOT_SET`, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to `ETHTOOL_STAT_NOT_SET` and will not be returned to userspace. ``update_stats`` Trigger periodic statistics updates. **dev**: The PHY device for which statistics updates are triggered. Periodically gathers statistics from the PHY device to update locally maintained 64-bit counters. This is necessary for PHYs that implement reduced-width counters (e.g., 16-bit or 32-bit) which can overflow more frequently compared to 64-bit counters. By invoking this callback, drivers can fetch the current counter values, handle overflow detection, and accumulate the results into local 64-bit counters for accurate reporting through the `get_phy_stats` and `get_link_stats` interfaces. Return: 0 on success or a negative error code on failure. ``get_sset_count`` Number of statistic counters ``get_strings`` Names of the statistic counters ``get_stats`` Return the statistic counter values ``disable_autonomous_eee`` Disable PHY-autonomous EEE Some PHYs manage EEE autonomously, preventing the MAC from controlling LPI signaling. This callback disables autonomous EEE at the PHY. Return: 0 on success, negative errno on failure. ``get_tunable`` Return the value of a tunable ``set_tunable`` Set the value of a tunable ``set_loopback`` Set the loopback mode of the PHY enable selects if the loopback mode is enabled or disabled. If the loopback mode is enabled, then the speed of the loopback mode can be requested with the speed argument. If the speed argument is zero, then any speed can be selected. If the speed argument is > 0, then this speed shall be selected for the loopback mode or EOPNOTSUPP shall be returned if speed selection is not supported. ``get_sqi`` Get the signal quality indication ``get_sqi_max`` Get the maximum signal quality indication ``get_mse_capability`` Get capabilities and scale of MSE measurement **dev**: PHY device **cap**: Output (filled on success) Fill **cap** with the PHY's MSE capability for the current link mode: scale limits (max_average_mse, max_peak_mse), update interval (refresh_rate_ps), sample length (num_symbols) and the capability bitmask (supported_caps). Implementations may defer capability report until hardware has converged; in that case they should return -EAGAIN and allow the caller to retry later. Return: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if the capability information is not yet available. ``get_mse_snapshot`` Retrieve a snapshot of MSE diagnostic values **dev**: PHY device **channel**: Channel identifier (PHY_MSE_CHANNEL_*) **snapshot**: Output (filled on success) Fill **snapshot** with a correlated set of MSE values from the most recent measurement window. Callers must validate **channel** against supported_caps returned by get_mse_capability(). Drivers must not coerce **channel**; if the requested selector is not implemented by the device or current link mode, the operation must fail. worst_peak_mse is latched and must be treated as read-to-clear. Return: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if measurements are not yet available. ``get_plca_cfg`` Return the current PLCA configuration ``set_plca_cfg`` Set the PLCA configuration ``get_plca_status`` Return the current PLCA status info ``led_brightness_set`` Set a PHY LED brightness. Index indicates which of the PHYs led should be set. Value follows the standard LED class meaning, e.g. LED_OFF, LED_HALF, LED_FULL. ``led_blink_set`` Set a PHY LED blinking. Index indicates which of the PHYs led should be configured to blink. Delays are in milliseconds and if both are zero then a sensible default should be chosen. The call should adjust the timings in that case and if it can't match the values specified exactly. ``led_hw_is_supported`` Can the HW support the given rules. **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** The core is interested in these rules Return 0 if yes, -EOPNOTSUPP if not, or an error code. ``led_hw_control_set`` Set the HW to control the LED **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** The rules used to control the LED Returns 0, or a an error code. ``led_hw_control_get`` Get how the HW is controlling the LED **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** Pointer to the rules used to control the LED Set ***rules** to how the HW is currently blinking. Returns 0 on success, or a error code if the current blinking cannot be represented in rules, or some other error happens. ``led_polarity_set`` Set the LED polarity modes **dev**: PHY device which has the LED **index**: Which LED of the PHY device **modes**: bitmap of LED polarity modes Configure LED with all the required polarity modes in **modes** to make it correctly turn ON or OFF. Returns 0, or an error code. ``get_next_update_time`` Get the time until the next update event **dev**: PHY device Callback to determine the time (in jiffies) until the next update event for the PHY state machine. Allows PHY drivers to dynamically adjust polling intervals based on link state or other conditions. Returns the time in jiffies until the next update event. ``attach_mii_port`` Attach the given MII port to the PHY device **dev**: PHY device to notify **port**: The port being added Called when an MII port that needs to be driven by the PHY is found. The port that is being passed may or may not be initialized. If it is already initialized, it is by the generic port representation from devicetree, which superseeds any strapping or vendor-specific properties. If the port isn't initialized, the port->mediums and port->lanes fields must be set, possibly according to strapping information. The PHY driver must set the port->interfaces field to indicate the possible MII modes that this PHY can output on the port. Returns 0, or an error code. ``attach_mdi_port`` Attach the given MII port to the PHY device **dev**: PHY device to notify **port**: The port being added Called when a port that needs to be driven by the PHY is found. The number of time this will be called depends on phydev->max_n_ports, which the driver can change in .probe(). The port that is being passed may or may not be initialized. If it is already initialized, it is by the generic port representation from devicetree, which superseeds any strapping or vendor-specific properties. If the port isn't initialized, the port->mediums and port->lanes fields must be set, possibly according to strapping information. Returns 0, or an error code.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÄubhŒ:”…”�”}”(hjÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MthjÄubj¶)�”}”(hXèstruct phy_driver { struct mdio_driver_common mdiodrv; u32 phy_id; char *name; u32 phy_id_mask; const unsigned long * const features; u32 flags; const void *driver_data; int (*soft_reset)(struct phy_device *phydev); int (*config_init)(struct phy_device *phydev); int (*probe)(struct phy_device *phydev); int (*get_features)(struct phy_device *phydev); unsigned int (*inband_caps)(struct phy_device *phydev, phy_interface_t interface); int (*config_inband)(struct phy_device *phydev, unsigned int modes); int (*get_rate_matching)(struct phy_device *phydev, phy_interface_t iface); int (*suspend)(struct phy_device *phydev); int (*resume)(struct phy_device *phydev); int (*config_aneg)(struct phy_device *phydev); int (*aneg_done)(struct phy_device *phydev); int (*read_status)(struct phy_device *phydev); int (*config_intr)(struct phy_device *phydev); irqreturn_t (*handle_interrupt)(struct phy_device *phydev); void (*remove)(struct phy_device *phydev); int (*match_phy_device)(struct phy_device *phydev, const struct phy_driver *phydrv); int (*set_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); void (*get_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); void (*link_change_notify)(struct phy_device *dev); int (*read_mmd)(struct phy_device *dev, int devnum, u16 regnum); int (*write_mmd)(struct phy_device *dev, int devnum, u16 regnum, u16 val); int (*read_page)(struct phy_device *dev); int (*write_page)(struct phy_device *dev, int page); int (*module_info)(struct phy_device *dev, struct ethtool_modinfo *modinfo); int (*module_eeprom)(struct phy_device *dev, struct ethtool_eeprom *ee, u8 *data); int (*cable_test_start)(struct phy_device *dev); int (*cable_test_tdr_start)(struct phy_device *dev, const struct phy_tdr_config *config); int (*cable_test_get_status)(struct phy_device *dev, bool *finished); void (*get_phy_stats)(struct phy_device *dev, struct ethtool_eth_phy_stats *eth_stats, struct ethtool_phy_stats *stats); void (*get_link_stats)(struct phy_device *dev, struct ethtool_link_ext_stats *link_stats); int (*update_stats)(struct phy_device *dev); int (*get_sset_count)(struct phy_device *dev); void (*get_strings)(struct phy_device *dev, u8 *data); void (*get_stats)(struct phy_device *dev, struct ethtool_stats *stats, u64 *data); int (*disable_autonomous_eee)(struct phy_device *dev); int (*get_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, void *data); int (*set_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, const void *data); int (*set_loopback)(struct phy_device *dev, bool enable, int speed); int (*get_sqi)(struct phy_device *dev); int (*get_sqi_max)(struct phy_device *dev); int (*get_mse_capability)(struct phy_device *dev, struct phy_mse_capability *cap); int (*get_mse_snapshot)(struct phy_device *dev, enum phy_mse_channel channel, struct phy_mse_snapshot *snapshot); int (*get_plca_cfg)(struct phy_device *dev, struct phy_plca_cfg *plca_cfg); int (*set_plca_cfg)(struct phy_device *dev, const struct phy_plca_cfg *plca_cfg); int (*get_plca_status)(struct phy_device *dev, struct phy_plca_status *plca_st); int (*led_brightness_set)(struct phy_device *dev, u8 index, enum led_brightness value); int (*led_blink_set)(struct phy_device *dev, u8 index, unsigned long *delay_on, unsigned long *delay_off); int (*led_hw_is_supported)(struct phy_device *dev, u8 index, unsigned long rules); int (*led_hw_control_set)(struct phy_device *dev, u8 index, unsigned long rules); int (*led_hw_control_get)(struct phy_device *dev, u8 index, unsigned long *rules); int (*led_polarity_set)(struct phy_device *dev, int index, unsigned long modes); unsigned int (*get_next_update_time)(struct phy_device *dev); int (*attach_mii_port)(struct phy_device *dev, struct phy_port *port); int (*attach_mdi_port)(struct phy_device *dev, struct phy_port *port); };”h]”hXèstruct phy_driver { struct mdio_driver_common mdiodrv; u32 phy_id; char *name; u32 phy_id_mask; const unsigned long * const features; u32 flags; const void *driver_data; int (*soft_reset)(struct phy_device *phydev); int (*config_init)(struct phy_device *phydev); int (*probe)(struct phy_device *phydev); int (*get_features)(struct phy_device *phydev); unsigned int (*inband_caps)(struct phy_device *phydev, phy_interface_t interface); int (*config_inband)(struct phy_device *phydev, unsigned int modes); int (*get_rate_matching)(struct phy_device *phydev, phy_interface_t iface); int (*suspend)(struct phy_device *phydev); int (*resume)(struct phy_device *phydev); int (*config_aneg)(struct phy_device *phydev); int (*aneg_done)(struct phy_device *phydev); int (*read_status)(struct phy_device *phydev); int (*config_intr)(struct phy_device *phydev); irqreturn_t (*handle_interrupt)(struct phy_device *phydev); void (*remove)(struct phy_device *phydev); int (*match_phy_device)(struct phy_device *phydev, const struct phy_driver *phydrv); int (*set_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); void (*get_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); void (*link_change_notify)(struct phy_device *dev); int (*read_mmd)(struct phy_device *dev, int devnum, u16 regnum); int (*write_mmd)(struct phy_device *dev, int devnum, u16 regnum, u16 val); int (*read_page)(struct phy_device *dev); int (*write_page)(struct phy_device *dev, int page); int (*module_info)(struct phy_device *dev, struct ethtool_modinfo *modinfo); int (*module_eeprom)(struct phy_device *dev, struct ethtool_eeprom *ee, u8 *data); int (*cable_test_start)(struct phy_device *dev); int (*cable_test_tdr_start)(struct phy_device *dev, const struct phy_tdr_config *config); int (*cable_test_get_status)(struct phy_device *dev, bool *finished); void (*get_phy_stats)(struct phy_device *dev, struct ethtool_eth_phy_stats *eth_stats, struct ethtool_phy_stats *stats); void (*get_link_stats)(struct phy_device *dev, struct ethtool_link_ext_stats *link_stats); int (*update_stats)(struct phy_device *dev); int (*get_sset_count)(struct phy_device *dev); void (*get_strings)(struct phy_device *dev, u8 *data); void (*get_stats)(struct phy_device *dev, struct ethtool_stats *stats, u64 *data); int (*disable_autonomous_eee)(struct phy_device *dev); int (*get_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, void *data); int (*set_tunable)(struct phy_device *dev, struct ethtool_tunable *tuna, const void *data); int (*set_loopback)(struct phy_device *dev, bool enable, int speed); int (*get_sqi)(struct phy_device *dev); int (*get_sqi_max)(struct phy_device *dev); int (*get_mse_capability)(struct phy_device *dev, struct phy_mse_capability *cap); int (*get_mse_snapshot)(struct phy_device *dev, enum phy_mse_channel channel, struct phy_mse_snapshot *snapshot); int (*get_plca_cfg)(struct phy_device *dev, struct phy_plca_cfg *plca_cfg); int (*set_plca_cfg)(struct phy_device *dev, const struct phy_plca_cfg *plca_cfg); int (*get_plca_status)(struct phy_device *dev, struct phy_plca_status *plca_st); int (*led_brightness_set)(struct phy_device *dev, u8 index, enum led_brightness value); int (*led_blink_set)(struct phy_device *dev, u8 index, unsigned long *delay_on, unsigned long *delay_off); int (*led_hw_is_supported)(struct phy_device *dev, u8 index, unsigned long rules); int (*led_hw_control_set)(struct phy_device *dev, u8 index, unsigned long rules); int (*led_hw_control_get)(struct phy_device *dev, u8 index, unsigned long *rules); int (*led_polarity_set)(struct phy_device *dev, int index, unsigned long modes); unsigned int (*get_next_update_time)(struct phy_device *dev); int (*attach_mii_port)(struct phy_device *dev, struct phy_port *port); int (*attach_mdi_port)(struct phy_device *dev, struct phy_port *port); };”…”�”}”hj2Äsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MvhjÄubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjCÄh]”hŒMembers”…”�”}”(hjEÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjAÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¶hjÄubjß)�”}”(hhh]”(jä)�”}”(hŒ,``mdiodrv`` Data common to all MDIO devices ”h]”(jê)�”}”(hŒ ``mdiodrv``”h]”jð)�”}”(hjbÄh]”hŒmdiodrv”…”�”}”(hjdÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mshj\Äubj)�”}”(hhh]”jl)�”}”(hŒData common to all MDIO devices”h]”hŒData common to all MDIO devices”…”�”}”(hj{Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jwÄh´MshjxÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwÄh´MshjYÄubjä)�”}”(hŒ¬``phy_id`` The result of reading the UID registers of this PHY type, and ANDing them with the phy_id_mask. This driver only works for PHYs with IDs which match this field ”h]”(jê)�”}”(hŒ ``phy_id``”h]”jð)�”}”(hj›Äh]”hŒphy_id”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mvhj•Äubj)�”}”(hhh]”jl)�”}”(hŒ The result of reading the UID registers of this PHY type, and ANDing them with the phy_id_mask. This driver only works for PHYs with IDs which match this field”h]”hŒ The result of reading the UID registers of this PHY type, and ANDing them with the phy_id_mask. This driver only works for PHYs with IDs which match this field”…”�”}”(hj´Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mthj±Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j°Äh´MvhjYÄubjä)�”}”(hŒ,``name`` The friendly name of this PHY type ”h]”(jê)�”}”(hŒ``name``”h]”jð)�”}”(hjÕÄh]”hŒname”…”�”}”(hj×Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MwhjÏÄubj)�”}”(hhh]”jl)�”}”(hŒ"The friendly name of this PHY type”h]”hŒ"The friendly name of this PHY type”…”�”}”(hjîÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêÄh´MwhjëÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêÄh´MwhjYÄubjä)�”}”(hŒ9``phy_id_mask`` Defines the important bits of the phy_id ”h]”(jê)�”}”(hŒ``phy_id_mask``”h]”jð)�”}”(hjÅh]”hŒ phy_id_mask”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MxhjÅubj)�”}”(hhh]”jl)�”}”(hŒ(Defines the important bits of the phy_id”h]”hŒ(Defines the important bits of the phy_id”…”�”}”(hj'Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#Åh´Mxhj$Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Åh´MxhjYÄubjä)�”}”(hŒU``features`` A mandatory list of features (speed, duplex, etc) supported by this PHY ”h]”(jê)�”}”(hŒ ``features``”h]”jð)�”}”(hjGÅh]”hŒfeatures”…”�”}”(hjIÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MzhjAÅubj)�”}”(hhh]”jl)�”}”(hŒGA mandatory list of features (speed, duplex, etc) supported by this PHY”h]”hŒGA mandatory list of features (speed, duplex, etc) supported by this PHY”…”�”}”(hj`Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Myhj]Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\Åh´MzhjYÄubjä)�”}”(hŒY``flags`` A bitfield defining certain other features this PHY supports (like interrupts) ”h]”(jê)�”}”(hŒ ``flags``”h]”jð)�”}”(hj�Åh]”hŒflags”…”�”}”(hjƒÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M|hj{Åubj)�”}”(hhh]”jl)�”}”(hŒNA bitfield defining certain other features this PHY supports (like interrupts)”h]”hŒNA bitfield defining certain other features this PHY supports (like interrupts)”…”�”}”(hjšÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M{hj—Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j–Åh´M|hjYÄubjä)�”}”(hŒ#``driver_data`` Static driver data ”h]”(jê)�”}”(hŒ``driver_data``”h]”jð)�”}”(hj»Åh]”hŒ driver_data”…”�”}”(hj½Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M}hjµÅubj)�”}”(hhh]”jl)�”}”(hŒStatic driver data”h]”hŒStatic driver data”…”�”}”(hjÔÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐÅh´M}hjÑÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐÅh´M}hjYÄubjä)�”}”(hŒ4``soft_reset`` Called to issue a PHY software reset ”h]”(jê)�”}”(hŒ``soft_reset``”h]”jð)�”}”(hjôÅh]”hŒ soft_reset”…”�”}”(hjöÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjòÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‘hjîÅubj)�”}”(hhh]”jl)�”}”(hŒ$Called to issue a PHY software reset”h]”hŒ$Called to issue a PHY software reset”…”�”}”(hj Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Æh´M‘hj Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Æh´M‘hjYÄubjä)�”}”(hŒF``config_init`` Called to initialize the PHY, including after a reset ”h]”(jê)�”}”(hŒ``config_init``”h]”jð)�”}”(hj-Æh]”hŒ config_init”…”�”}”(hj/Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M—hj'Æubj)�”}”(hhh]”jl)�”}”(hŒ5Called to initialize the PHY, including after a reset”•¯h]”hŒ5Called to initialize the PHY, including after a reset”…”�”}”(hjFÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M–hjCÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jBÆh´M—hjYÄubjä)�”}”(hŒV``probe`` Called during discovery. Used to set up device-specific structures, if any ”h]”(jê)�”}”(hŒ ``probe``”h]”jð)�”}”(hjgÆh]”hŒprobe”…”�”}”(hjiÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjeÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hjaÆubj)�”}”(hhh]”jl)�”}”(hŒKCalled during discovery. Used to set up device-specific structures, if any”h]”hŒKCalled during discovery. Used to set up device-specific structures, if any”…”�”}”(hj€Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mœhj}Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|Æh´M�hjYÄubjä)�”}”(hŒl``get_features`` Probe the hardware to determine what abilities it has. Should only set phydev->supported. ”h]”(jê)�”}”(hŒ``get_features``”h]”jð)�”}”(hj¡Æh]”hŒ get_features”…”�”}”(hj£Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M£hj›Æubj)�”}”(hhh]”jl)�”}”(hŒZProbe the hardware to determine what abilities it has. Should only set phydev->supported.”h]”hŒZProbe the hardware to determine what abilities it has. Should only set phydev->supported.”…”�”}”(hjºÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¢hj·Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶Æh´M£hjYÄubjä)�”}”(hŒ—``inband_caps`` query whether in-band is supported for the given PHY interface mode. Returns a bitmask of bits defined by enum link_inband_signalling. ”h]”(jê)�”}”(hŒ``inband_caps``”h]”jð)�”}”(hjÛÆh]”hŒ inband_caps”…”�”}”(hjÝÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MªhjÕÆubj)�”}”(hhh]”jl)�”}”(hŒ†query whether in-band is supported for the given PHY interface mode. Returns a bitmask of bits defined by enum link_inband_signalling.”h]”hŒ†query whether in-band is supported for the given PHY interface mode. Returns a bitmask of bits defined by enum link_inband_signalling.”…”�”}”(hjôÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¨hjñÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jðÆh´MªhjYÄubjä)�”}”(hŒ5``config_inband`` configure in-band mode for the PHY ”h]”(jê)�”}”(hŒ``config_inband``”h]”jð)�”}”(hjÇh]”hŒ config_inband”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M°hjÇubj)�”}”(hhh]”jl)�”}”(hŒ"configure in-band mode for the PHY”h]”hŒ"configure in-band mode for the PHY”…”�”}”(hj.Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*Çh´M°hj+Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*Çh´M°hjYÄubjä)�”}”(hX²``get_rate_matching`` Get the supported type of rate matching for a particular phy interface. This is used by phy consumers to determine whether to advertise lower-speed modes for that interface. It is assumed that if a rate matching mode is supported on an interface, then that interface's rate can be adapted to all slower link speeds supported by the phy. If the interface is not supported, this should return ``RATE_MATCH_NONE``. ”h]”(jê)�”}”(hŒ``get_rate_matching``”h]”jð)�”}”(hjNÇh]”hŒget_rate_matching”…”�”}”(hjPÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M»hjHÇubj)�”}”(hhh]”jl)�”}”(hX›Get the supported type of rate matching for a particular phy interface. This is used by phy consumers to determine whether to advertise lower-speed modes for that interface. It is assumed that if a rate matching mode is supported on an interface, then that interface's rate can be adapted to all slower link speeds supported by the phy. If the interface is not supported, this should return ``RATE_MATCH_NONE``.”h]”(hX‰Get the supported type of rate matching for a particular phy interface. This is used by phy consumers to determine whether to advertise lower-speed modes for that interface. It is assumed that if a rate matching mode is supported on an interface, then that interface’s rate can be adapted to all slower link speeds supported by the phy. If the interface is not supported, this should return ”…”�”}”(hjgÇh²hh³Nh´Nubjð)�”}”(hŒ``RATE_MATCH_NONE``”h]”hŒRATE_MATCH_NONE”…”�”}”(hjoÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjgÇubhŒ.”…”�”}”(hjgÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MµhjdÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jcÇh´M»hjYÄubjä)�”}”(hŒ9``suspend`` Suspend the hardware, saving state if needed ”h]”(jê)�”}”(hŒ ``suspend``”h]”jð)�”}”(hjšÇh]”hŒsuspend”…”�”}”(hjœÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÁhj”Çubj)�”}”(hhh]”jl)�”}”(hŒ,Suspend the hardware, saving state if needed”h]”hŒ,Suspend the hardware, saving state if needed”…”�”}”(hj³Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯Çh´MÁhj°Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯Çh´MÁhjYÄubjä)�”}”(hŒ:``resume`` Resume the hardware, restoring state if needed ”h]”(jê)�”}”(hŒ ``resume``”h]”jð)�”}”(hjÓÇh]”hŒresume”…”�”}”(hjÕÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÃhjÍÇubj)�”}”(hhh]”jl)�”}”(hŒ.Resume the hardware, restoring state if needed”h]”hŒ.Resume the hardware, restoring state if needed”…”�”}”(hjìÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèÇh´MÃhjéÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèÇh´MÃhjYÄubjä)�”}”(hŒ¯``config_aneg`` Configures the advertisement and resets autonegotiation if phydev->autoneg is on, forces the speed to the current settings in phydev if phydev->autoneg is off ”h]”(jê)�”}”(hŒ``config_aneg``”h]”jð)�”}”(hj Èh]”hŒ config_aneg”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÊhjÈubj)�”}”(hhh]”jl)�”}”(hŒžConfigures the advertisement and resets autonegotiation if phydev->autoneg is on, forces the speed to the current settings in phydev if phydev->autoneg is off”h]”hŒžConfigures the advertisement and resets autonegotiation if phydev->autoneg is on, forces the speed to the current settings in phydev if phydev->autoneg is off”…”�”}”(hj%Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÇhj"Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!Èh´MÊhjYÄubjä)�”}”(hŒ5``aneg_done`` Determines the auto negotiation result ”h]”(jê)�”}”(hŒ ``aneg_done``”h]”jð)�”}”(hjFÈh]”hŒ aneg_done”…”�”}”(hjHÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÎhj@Èubj)�”}”(hhh]”jl)�”}”(hŒ&Determines the auto negotiation result”h]”hŒ&Determines the auto negotiation result”…”�”}”(hj_Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j[Èh´MÎhj\Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[Èh´MÎhjYÄubjä)�”}”(hŒ;``read_status`` Determines the negotiated speed and duplex ”h]”(jê)�”}”(hŒ``read_status``”h]”jð)�”}”(hjÈh]”hŒ read_status”…”�”}”(hj�Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÑhjyÈubj)�”}”(hhh]”jl)�”}”(hŒ*Determines the negotiated speed and duplex”h]”hŒ*Determines the negotiated speed and duplex”…”�”}”(hj˜Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”Èh´MÑhj•Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”Èh´MÑhjYÄubjä)�”}”(hŒ‘``config_intr`` Enables or disables interrupts. It should also clear any pending interrupts prior to enabling the IRQs and after disabling them. ”h]”(jê)�”}”(hŒ``config_intr``”h]”jð)�”}”(hj¸Èh]”hŒ config_intr”…”�”}”(hjºÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M×hj²Èubj)�”}”(hhh]”jl)�”}”(hŒ€Enables or disables interrupts. It should also clear any pending interrupts prior to enabling the IRQs and after disabling them.”h]”hŒ€Enables or disables interrupts. It should also clear any pending interrupts prior to enabling the IRQs and after disabling them.”…”�”}”(hjÑÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÕhjÎÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÍÈh´M×hjYÄubjä)�”}”(hŒ9``handle_interrupt`` Override default interrupt handling ”h]”(jê)�”}”(hŒ``handle_interrupt``”h]”jð)�”}”(hjòÈh]”hŒhandle_interrupt”…”�”}”(hjôÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÛhjìÈubj)�”}”(hhh]”jl)�”}”(hŒ#Override default interrupt handling”h]”hŒ#Override default interrupt handling”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉh´MÛhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉh´MÛhjYÄubjä)�”}”(hŒ*``remove`` Clears up any memory if needed ”h]”(jê)�”}”(hŒ ``remove``”h]”jð)�”}”(hj+Éh]”hŒremove”…”�”}”(hj-Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÞhj%Éubj)�”}”(hhh]”jl)�”}”(hŒClears up any memory if needed”h]”hŒClears up any memory if needed”…”�”}”(hjDÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@Éh´MÞhjAÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@Éh´MÞhjYÄubjä)�”}”(hŒŒ``match_phy_device`` Returns true if this is a suitable driver for the given phydev. If NULL, matching is based on phy_id and phy_id_mask. ”h]”(jê)�”}”(hŒ``match_phy_device``”h]”jð)�”}”(hjdÉh]”hŒmatch_phy_device”…”�”}”(hjfÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjbÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mähj^Éubj)�”}”(hhh]”jl)�”}”(hŒvReturns true if this is a suitable driver for the given phydev. If NULL, matching is based on phy_id and phy_id_mask.”h]”hŒvReturns true if this is a suitable driver for the given phydev. If NULL, matching is based on phy_id and phy_id_mask.”…”�”}”(hj}Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MâhjzÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jyÉh´MähjYÄubjä)�”}”(hŒ³``set_wol`` Some devices (e.g. qnap TS-119P II) require PHY register changes to enable Wake on LAN, so set_wol is provided to be called in the ethernet driver's set_wol function. ”h]”(jê)�”}”(hŒ ``set_wol``”h]”jð)�”}”(hjžÉh]”hŒset_wol”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Míhj˜Éubj)�”}”(hhh]”jl)�”}”(hŒ¦Some devices (e.g. qnap TS-119P II) require PHY register changes to enable Wake on LAN, so set_wol is provided to be called in the ethernet driver's set_wol function.”h]”hŒ¨Some devices (e.g. qnap TS-119P II) require PHY register changes to enable Wake on LAN, so set_wol is provided to be called in the ethernet driver’s set_wol function.”…”�”}”(hj·Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mêhj´Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³Éh´MíhjYÄubjä)�”}”(hŒJ``get_wol`` See set_wol, but for checking whether Wake on LAN is enabled. ”h]”(jê)�”}”(hŒ ``get_wol``”h]”jð)�”}”(hjØÉh]”hŒget_wol”…”�”}”(hjÚÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MóhjÒÉubj)�”}”(hhh]”jl)�”}”(hŒ=See set_wol, but for checking whether Wake on LAN is enabled.”h]”hŒ=See set_wol, but for checking whether Wake on LAN is enabled.”…”�”}”(hjñÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MòhjîÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jíÉh´MóhjYÄubjä)�”}”(hXB``link_change_notify`` Called to inform a PHY device driver when the core is about to change the link state. This callback is supposed to be used as fixup hook for drivers that need to take action when the link state changes. Drivers are by no means allowed to mess with the PHY device structure in their implementations. ”h]”(jê)�”}”(hŒ``link_change_notify``”h]”jð)�”}”(hjÊh]”hŒlink_change_notify”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mýhj Êubj)�”}”(hhh]”jl)�”}”(hX*Called to inform a PHY device driver when the core is about to change the link state. This callback is supposed to be used as fixup hook for drivers that need to take action when the link state changes. Drivers are by no means allowed to mess with the PHY device structure in their implementations.”h]”hX*Called to inform a PHY device driver when the core is about to change the link state. This callback is supposed to be used as fixup hook for drivers that need to take action when the link state changes. Drivers are by no means allowed to mess with the PHY device structure in their implementations.”…”�”}”(hj+Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Møhj(Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'Êh´MýhjYÄubjä)�”}”(hX›``read_mmd`` PHY specific driver override for reading a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD read function will be used by phy_read_mmd(), which will use either a direct read for Clause 45 PHYs or an indirect read for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device. ”h]”(jê)�”}”(hŒ ``read_mmd``”h]”jð)�”}”(hjLÊh]”hŒread_mmd”…”�”}”(hjNÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjFÊubj)�”}”(hhh]”jl)�”}”(hX�PHY specific driver override for reading a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD read function will be used by phy_read_mmd(), which will use either a direct read for Clause 45 PHYs or an indirect read for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device.”h]”hX�PHY specific driver override for reading a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD read function will be used by phy_read_mmd(), which will use either a direct read for Clause 45 PHYs or an indirect read for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device.”…”�”}”(hjeÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjbÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jaÊh´M hjYÄubjä)�”}”(hXÂ``write_mmd`` PHY specific driver override for writing a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD write function will be used by phy_write_mmd(), which will use either a direct write for Clause 45 PHYs, or an indirect write for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device. val is the value to be written. ”h]”(jê)�”}”(hŒ ``write_mmd``”h]”jð)�”}”(hj†Êh]”hŒ write_mmd”…”�”}”(hjˆÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj€Êubj)�”}”(hhh]”jl)�”}”(hX³PHY specific driver override for writing a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD write function will be used by phy_write_mmd(), which will use either a direct write for Clause 45 PHYs, or an indirect write for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device. val is the value to be written.”h]”hX³PHY specific driver override for writing a MMD register. This function is optional for PHY specific drivers. When not provided, the default MMD write function will be used by phy_write_mmd(), which will use either a direct write for Clause 45 PHYs, or an indirect write for Clause 22 PHYs. devnum is the MMD device number within the PHY device, regnum is the register within the selected MMD device. val is the value to be written.”…”�”}”(hjŸÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjœÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›Êh´MhjYÄubjä)�”}”(hŒ:``read_page`` Return the current PHY register page number ”h]”(jê)�”}”(hŒ ``read_page``”h]”jð)�”}”(hjÀÊh]”hŒ read_page”…”�”}”(hjÂÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjºÊubj)�”}”(hhh]”jl)�”}”(hŒ+Return the current PHY register page number”h]”hŒ+Return the current PHY register page number”…”�”}”(hjÙÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕÊh´MhjÖÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕÊh´MhjYÄubjä)�”}”(hŒ8``write_page`` Set the current PHY register page number ”h]”(jê)�”}”(hŒ``write_page``”h]”jð)�”}”(hjùÊh]”hŒ write_page”…”�”}”(hjûÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjóÊubj)�”}”(hhh]”jl)�”}”(hŒ(Set the current PHY register page number”h]”hŒ(Set the current PHY register page number”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËh´MhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjóÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËh´MhjYÄubjä)�”}”(hŒV``module_info`` Get the size and type of the eeprom contained within a plug-in module ”h]”(jê)�”}”(hŒ``module_info``”h]”jð)�”}”(hj2Ëh]”hŒ module_info”…”�”}”(hj4Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M!hj,Ëubj)�”}”(hhh]”jl)�”}”(hŒEGet the size and type of the eeprom contained within a plug-in module”h]”hŒEGet the size and type of the eeprom contained within a plug-in module”…”�”}”(hjKËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjHËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGËh´M!hjYÄubjä)�”}”(hŒE``module_eeprom`` Get the eeprom information from the plug-in module ”h]”(jê)�”}”(hŒ``module_eeprom``”h]”jð)�”}”(hjlËh]”hŒ module_eeprom”…”�”}”(hjnËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M(hjfËubj)�”}”(hhh]”jl)�”}”(hŒ2Get the eeprom information from the plug-in module”h]”hŒ2Get the eeprom information from the plug-in module”…”�”}”(hj…Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M'hj‚Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Ëh´M(hjYÄubjä)�”}”(hŒ(``cable_test_start`` Start a cable test ”h]”(jê)�”}”(hŒ``cable_test_start``”h]”jð)�”}”(hj¦Ëh]”hŒcable_test_start”…”�”}”(hj¨Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M-hj Ëubj)�”}”(hhh]”jl)�”}”(hŒStart a cable test”h]”hŒStart a cable test”…”�”}”(hj¿Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»Ëh´M-hj¼Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»Ëh´M-hjYÄubjä)�”}”(hŒ4``cable_test_tdr_start`` Start a raw TDR cable test ”h]”(jê)�”}”(hŒ``cable_test_tdr_start``”h]”jð)�”}”(hjßËh]”hŒcable_test_tdr_start”…”�”}”(hjáËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝËubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M0hjÙËubj)�”}”(hhh]”jl)�”}”(hŒStart a raw TDR cable test”h]”hŒStart a raw TDR cable test”…”�”}”(hjøËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jôËh´M0hjõËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jôËh´M0hjYÄubjä)�”}”(hŒ\``cable_test_get_status`` Once per second, or on interrupt, request the status of the test. ”h]”(jê)�”}”(hŒ``cable_test_get_status``”h]”jð)�”}”(hjÌh]”hŒcable_test_get_status”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M6hjÌubj)�”}”(hhh]”jl)�”}”(hŒAOnce per second, or on interrupt, request the status of the test.”h]”hŒAOnce per second, or on interrupt, request the status of the test.”…”�”}”(hj1Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M5hj.Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-Ìh´M6hjYÄubjä)�”}”(hX>``get_phy_stats`` Retrieve PHY statistics. **dev**: The PHY device for which the statistics are retrieved. **eth_stats**: structure where Ethernet PHY stats will be stored. **stats**: structure where additional PHY-specific stats will be stored. Retrieves the supported PHY statistics and populates the provided structures. The input structures are pre-initialized with `ETHTOOL_STAT_NOT_SET`, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to `ETHTOOL_STAT_NOT_SET` and will not be returned to userspace. ”h]”(jê)�”}”(hŒ``get_phy_stats``”h]”jð)�”}”(hjRÌh]”hŒ get_phy_stats”…”�”}”(hjTÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjPÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MEhjLÌubj)�”}”(hhh]”(jl)�”}”(hŒãRetrieve PHY statistics. **dev**: The PHY device for which the statistics are retrieved. **eth_stats**: structure where Ethernet PHY stats will be stored. **stats**: structure where additional PHY-specific stats will be stored.”h]”(hŒRetrieve PHY statistics. ”…”�”}”(hjkÌh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjsÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjkÌubhŒ9: The PHY device for which the statistics are retrieved. ”…”�”}”(hjkÌh²hh³Nh´Nubj›)�”}”(hŒ **eth_stats**”h]”hŒ eth_stats”…”�”}”(hj…Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjkÌubhŒ5: structure where Ethernet PHY stats will be stored. ”…”�”}”(hjkÌh²hh³Nh´Nubj›)�”}”(hŒ **stats**”h]”hŒstats”…”�”}”(hj—Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjkÌubhŒ?: structure where additional PHY-specific stats will be stored.”…”�”}”(hjkÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M<hjhÌubjl)�”}”(hXFRetrieves the supported PHY statistics and populates the provided structures. The input structures are pre-initialized with `ETHTOOL_STAT_NOT_SET`, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to `ETHTOOL_STAT_NOT_SET` and will not be returned to userspace.”h]”(hŒ|Retrieves the supported PHY statistics and populates the provided structures. The input structures are pre-initialized with ”…”�”}”(hj°Ìh²hh³Nh´Nubj°ß)�”}”(hŒ`ETHTOOL_STAT_NOT_SET`”h]”hŒETHTOOL_STAT_NOT_SET”…”�”}”(hj¸Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhj°ÌubhŒw, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to ”…”�”}”(hj°Ìh²hh³Nh´Nubj°ß)�”}”(hŒ`ETHTOOL_STAT_NOT_SET`”h]”hŒETHTOOL_STAT_NOT_SET”…”�”}”(hjÊÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhj°ÌubhŒ' and will not be returned to userspace.”…”�”}”(hj°Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MAhjhÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjLÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgÌh´MEhjYÄubjä)�”}”(hXå``get_link_stats`` Retrieve link statistics. **dev**: The PHY device for which the statistics are retrieved. **link_stats**: structure where link-specific stats will be stored. Retrieves link-related statistics for the given PHY device. The input structure is pre-initialized with `ETHTOOL_STAT_NOT_SET`, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to `ETHTOOL_STAT_NOT_SET` and will not be returned to userspace. ”h]”(jê)�”}”(hŒ``get_link_stats``”h]”jð)�”}”(hjõÌh]”hŒget_link_stats”…”�”}”(hj÷Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjóÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MThjïÌubj)�”}”(hhh]”(jl)�”}”(hŒ�Retrieve link statistics. **dev**: The PHY device for which the statistics are retrieved. **link_stats**: structure where link-specific stats will be stored.”h]”(hŒRetrieve link statistics. ”…”�”}”(hjÍh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍubhŒ9: The PHY device for which the statistics are retrieved. ”…”�”}”(hjÍh²hh³Nh´Nubj›)�”}”(hŒ**link_stats**”h]”hŒ link_stats”…”�”}”(hj(Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍubhŒ5: structure where link-specific stats will be stored.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MLhj Íubjl)�”}”(hX2Retrieves link-related statistics for the given PHY device. The input structure is pre-initialized with `ETHTOOL_STAT_NOT_SET`, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to `ETHTOOL_STAT_NOT_SET` and will not be returned to userspace.”h]”(hŒhRetrieves link-related statistics for the given PHY device. The input structure is pre-initialized with ”…”�”}”(hjAÍh²hh³Nh´Nubj°ß)�”}”(hŒ`ETHTOOL_STAT_NOT_SET`”h]”hŒETHTOOL_STAT_NOT_SET”…”�”}”(hjIÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjAÍubhŒw, and the driver must only modify members corresponding to supported statistics. Unmodified members will remain set to ”…”�”}”(hjAÍh²hh³Nh´Nubj°ß)�”}”(hŒ`ETHTOOL_STAT_NOT_SET`”h]”hŒETHTOOL_STAT_NOT_SET”…”�”}”(hj[Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjAÍubhŒ' and will not be returned to userspace.”…”�”}”(hjAÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MPhj Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjïÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Íh´MThjYÄubjä)�”}”(hX ``update_stats`` Trigger periodic statistics updates. **dev**: The PHY device for which statistics updates are triggered. Periodically gathers statistics from the PHY device to update locally maintained 64-bit counters. This is necessary for PHYs that implement reduced-width counters (e.g., 16-bit or 32-bit) which can overflow more frequently compared to 64-bit counters. By invoking this callback, drivers can fetch the current counter values, handle overflow detection, and accumulate the results into local 64-bit counters for accurate reporting through the `get_phy_stats` and `get_link_stats` interfaces. Return: 0 on success or a negative error code on failure. ”h]”(jê)�”}”(hŒ``update_stats``”h]”jð)�”}”(hj†Íh]”hŒ update_stats”…”�”}”(hjˆÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mfhj€Íubj)�”}”(hhh]”(jl)�”}”(hŒhTrigger periodic statistics updates. **dev**: The PHY device for which statistics updates are triggered.”h]”(hŒ%Trigger periodic statistics updates. ”…”�”}”(hjŸÍh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj§Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸÍubhŒ<: The PHY device for which statistics updates are triggered.”…”�”}”(hjŸÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MZhjœÍubjl)�”}”(hXéPeriodically gathers statistics from the PHY device to update locally maintained 64-bit counters. This is necessary for PHYs that implement reduced-width counters (e.g., 16-bit or 32-bit) which can overflow more frequently compared to 64-bit counters. By invoking this callback, drivers can fetch the current counter values, handle overflow detection, and accumulate the results into local 64-bit counters for accurate reporting through the `get_phy_stats` and `get_link_stats` interfaces.”h]”(hX¹Periodically gathers statistics from the PHY device to update locally maintained 64-bit counters. This is necessary for PHYs that implement reduced-width counters (e.g., 16-bit or 32-bit) which can overflow more frequently compared to 64-bit counters. By invoking this callback, drivers can fetch the current counter values, handle overflow detection, and accumulate the results into local 64-bit counters for accurate reporting through the ”…”�”}”(hjÀÍh²hh³Nh´Nubj°ß)�”}”(hŒ`get_phy_stats`”h]”hŒ get_phy_stats”…”�”}”(hjÈÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjÀÍubhŒ and ”…”�”}”(hjÀÍh²hh³Nh´Nubj°ß)�”}”(hŒ`get_link_stats`”h]”hŒget_link_stats”…”�”}”(hjÚÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¯ßhjÀÍubhŒ interfaces.”…”�”}”(hjÀÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M]hjœÍubjl)�”}”(hŒ9Return: 0 on success or a negative error code on failure.”h]”hŒ9Return: 0 on success or a negative error code on failure.”…”�”}”(hjóÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›Íh´MfhjœÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj€Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›Íh´MfhjYÄubjä)�”}”(hŒ0``get_sset_count`` Number of statistic counters ”h]”(jê)�”}”(hŒ``get_sset_count``”h]”jð)�”}”(hjÎh]”hŒget_sset_count”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mjhj Îubj)�”}”(hhh]”jl)�”}”(hŒNumber of statistic counters”h]”hŒNumber of statistic counters”…”�”}”(hj,Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j(Îh´Mjhj)Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j(Îh´MjhjYÄubjä)�”}”(hŒ0``get_strings`` Names of the statistic counters ”h]”(jê)�”}”(hŒ``get_strings``”h]”jð)�”}”(hjLÎh]”hŒ get_strings”…”�”}”(hjNÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MlhjFÎubj)�”}”(hhh]”jl)�”}”(hŒNames of the statistic counters”h]”hŒNames of the statistic counters”…”�”}”(hjeÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jaÎh´MlhjbÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jaÎh´MlhjYÄubjä)�”}”(hŒ2``get_stats`` Return the statistic counter values ”h]”(jê)�”}”(hŒ ``get_stats``”h]”jð)�”}”(hj…Îh]”hŒ get_stats”…”�”}”(hj‡Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MnhjÎubj)�”}”(hhh]”jl)�”}”(hŒ#Return the statistic counter values”h]”hŒ#Return the statistic counter values”…”�”}”(hjžÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jšÎh´Mnhj›Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšÎh´MnhjYÄubjä)�”}”(hŒñ``disable_autonomous_eee`` Disable PHY-autonomous EEE Some PHYs manage EEE autonomously, preventing the MAC from controlling LPI signaling. This callback disables autonomous EEE at the PHY. Return: 0 on success, negative errno on failure. ”h]”(jê)�”}”(hŒ``disable_autonomous_eee``”h]”jð)�”}”(hj¾Îh]”hŒdisable_autonomous_eee”…”�”}”(hjÀÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Myhj¸Îubj)�”}”(hhh]”(jl)�”}”(hŒDisable PHY-autonomous EEE”h]”hŒDisable PHY-autonomous EEE”…”�”}”(hj×Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MshjÔÎubjl)�”}”(hŒ‡Some PHYs manage EEE autonomously, preventing the MAC from controlling LPI signaling. This callback disables autonomous EEE at the PHY.”h]”hŒ‡Some PHYs manage EEE autonomously, preventing the MAC from controlling LPI signaling. This callback disables autonomous EEE at the PHY.”…”�”}”(hjæÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MuhjÔÎubjl)�”}”(hŒ0Return: 0 on success, negative errno on failure.”h]”hŒ0Return: 0 on success, negative errno on failure.”…”�”}”(hjõÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓÎh´MyhjÔÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓÎh´MyhjYÄubjä)�”}”(hŒ.``get_tunable`` Return the value of a tunable ”h]”(jê)�”}”(hŒ``get_tunable``”h]”jð)�”}”(hjÏh]”hŒ get_tunable”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M~hjÏubj)�”}”(hhh]”jl)�”}”(hŒReturn the value of a tunable”h]”hŒReturn the value of a tunable”…”�”}”(hj.Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*Ïh´M~hj+Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*Ïh´M~hjYÄubjä)�”}”(hŒ+``set_tunable`` Set the value of a tunable ”h]”(jê)�”}”(hŒ``set_tunable``”h]”jð)�”}”(hjNÏh]”hŒ set_tunable”…”�”}”(hjPÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hjHÏubj)�”}”(hhh]”jl)�”}”(hŒSet the value of a tunable”h]”hŒSet the value of a tunable”…”�”}”(hjgÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jcÏh´M�hjdÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jcÏh´M�hjYÄubjä)�”}”(hX·``set_loopback`` Set the loopback mode of the PHY enable selects if the loopback mode is enabled or disabled. If the loopback mode is enabled, then the speed of the loopback mode can be requested with the speed argument. If the speed argument is zero, then any speed can be selected. If the speed argument is > 0, then this speed shall be selected for the loopback mode or EOPNOTSUPP shall be returned if speed selection is not supported. ”h]”(jê)�”}”(hŒ``set_loopback``”h]”jð)�”}”(hj‡Ïh]”hŒ set_loopback”…”�”}”(hj‰Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŒhj�Ïubj)�”}”(hhh]”jl)�”}”(hX¥Set the loopback mode of the PHY enable selects if the loopback mode is enabled or disabled. If the loopback mode is enabled, then the speed of the loopback mode can be requested with the speed argument. If the speed argument is zero, then any speed can be selected. If the speed argument is > 0, then this speed shall be selected for the loopback mode or EOPNOTSUPP shall be returned if speed selection is not supported.”h]”hX¥Set the loopback mode of the PHY enable selects if the loopback mode is enabled or disabled. If the loopback mode is enabled, then the speed of the loopback mode can be requested with the speed argument. If the speed argument is zero, then any speed can be selected. If the speed argument is > 0, then this speed shall be selected for the loopback mode or EOPNOTSUPP shall be returned if speed selection is not supported.”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M†hj�Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœÏh´MŒhjYÄubjä)�”}”(hŒ.``get_sqi`` Get the signal quality indication ”h]”(jê)�”}”(hŒ ``get_sqi``”h]”jð)�”}”(hjÁÏh]”hŒget_sqi”…”�”}”(hjÃÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj»Ïubj)�”}”(hhh]”jl)�”}”(hŒ!Get the signal quality indication”h]”hŒ!Get the signal quality indication”…”�”}”(hjÚÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖÏh´M�hj×Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖÏh´M�hjYÄubjä)�”}”(hŒ:``get_sqi_max`` Get the maximum signal quality indication ”h]”(jê)�”}”(hŒ``get_sqi_max``”h]”jð)�”}”(hjúÏh]”hŒ get_sqi_max”…”�”}”(hjüÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‘hjôÏubj)�”}”(hhh]”jl)�”}”(hŒ)Get the maximum signal quality indication”h]”hŒ)Get the maximum signal quality indication”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÐh´M‘hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐh´M‘hjYÄubjä)�”}”(hXÚ``get_mse_capability`` Get capabilities and scale of MSE measurement **dev**: PHY device **cap**: Output (filled on success) Fill **cap** with the PHY's MSE capability for the current link mode: scale limits (max_average_mse, max_peak_mse), update interval (refresh_rate_ps), sample length (num_symbols) and the capability bitmask (supported_caps). Implementations may defer capability report until hardware has converged; in that case they should return -EAGAIN and allow the caller to retry later. Return: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if the capability information is not yet available. ”h]”(jê)�”}”(hŒ``get_mse_capability``”h]”jð)�”}”(hj3Ðh]”hŒget_mse_capability”…”�”}”(hj5Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¥hj-Ðubj)�”}”(hhh]”(jl)�”}”(hŒhGet capabilities and scale of MSE measurement **dev**: PHY device **cap**: Output (filled on success)”h]”(hŒ.Get capabilities and scale of MSE measurement ”…”�”}”(hjLÐh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjTÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÐubhŒ: PHY device ”…”�”}”(hjLÐh²hh³Nh´Nubj›)�”}”(hŒ**cap**”h]”hŒcap”…”�”}”(hjfÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÐubhŒ: Output (filled on success)”…”�”}”(hjLÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M•hjIÐubjl)�”}”(hŒßFill **cap** with the PHY's MSE capability for the current link mode: scale limits (max_average_mse, max_peak_mse), update interval (refresh_rate_ps), sample length (num_symbols) and the capability bitmask (supported_caps).”h]”(hŒFill ”…”�”}”(hjÐh²hh³Nh´Nubj›)�”}”(hŒ**cap**”h]”hŒcap”…”�”}”(hj‡Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐubhŒÕ with the PHY’s MSE capability for the current link mode: scale limits (max_average_mse, max_peak_mse), update interval (refresh_rate_ps), sample length (num_symbols) and the capability bitmask (supported_caps).”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M™hjIÐubjl)�”}”(hŒ–Implementations may defer capability report until hardware has converged; in that case they should return -EAGAIN and allow the caller to retry later.”h]”hŒ–Implementations may defer capability report until hardware has converged; in that case they should return -EAGAIN and allow the caller to retry later.”…”�”}”(hj Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MžhjIÐubjl)�”}”(hŒßReturn: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if the capability information is not yet available.”h]”hŒßReturn: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if the capability information is not yet available.”…”�”}”(hj¯Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¢hjIÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj-Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHÐh´M¥hjYÄubjä)�”}”(hX``get_mse_snapshot`` Retrieve a snapshot of MSE diagnostic values **dev**: PHY device **channel**: Channel identifier (PHY_MSE_CHANNEL_*) **snapshot**: Output (filled on success) Fill **snapshot** with a correlated set of MSE values from the most recent measurement window. Callers must validate **channel** against supported_caps returned by get_mse_capability(). Drivers must not coerce **channel**; if the requested selector is not implemented by the device or current link mode, the operation must fail. worst_peak_mse is latched and must be treated as read-to-clear. Return: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if measurements are not yet available. ”h]”(jê)�”}”(hŒ``get_mse_snapshot``”h]”jð)�”}”(hjÐÐh]”hŒget_mse_snapshot”…”�”}”(hjÒÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M½hjÊÐubj)�”}”(hhh]”(jl)�”}”(hŒ£Retrieve a snapshot of MSE diagnostic values **dev**: PHY device **channel**: Channel identifier (PHY_MSE_CHANNEL_*) **snapshot**: Output (filled on success)”h]”(hŒ-Retrieve a snapshot of MSE diagnostic values ”…”�”}”(hjéÐh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjñÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjéÐubhŒ: PHY device ”…”�”}”(hjéÐh²hh³Nh´Nubj›)�”}”(hŒ **channel**”h]”hŒchannel”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjéÐubhŒ*: Channel identifier (PHY_MSE_CHANNEL_*) ”…”�”}”(hjéÐh²hh³Nh´Nubj›)�”}”(hŒ **snapshot**”h]”hŒsnapshot”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjéÐubhŒ: Output (filled on success)”…”�”}”(hjéÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M«hjæÐubjl)�”}”(hŒ^Fill **snapshot** with a correlated set of MSE values from the most recent measurement window.”h]”(hŒFill ”…”�”}”(hj.Ñh²hh³Nh´Nubj›)�”}”(hŒ **snapshot**”h]”hŒsnapshot”…”�”}”(hj6Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.ÑubhŒM with a correlated set of MSE values from the most recent measurement window.”…”�”}”(hj.Ñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M°hjæÐubjl)�”}”(hŒéCallers must validate **channel** against supported_caps returned by get_mse_capability(). Drivers must not coerce **channel**; if the requested selector is not implemented by the device or current link mode, the operation must fail.”h]”(hŒCallers must validate ”…”�”}”(hjOÑh²hh³Nh´Nubj›)�”}”(hŒ **channel**”h]”hŒchannel”…”�”}”(hjWÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOÑubhŒR against supported_caps returned by get_mse_capability(). Drivers must not coerce ”…”�”}”(hjOÑh²hh³Nh´Nubj›)�”}”(hŒ **channel**”h]”hŒchannel”…”�”}”(hjiÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOÑubhŒk; if the requested selector is not implemented by the device or current link mode, the operation must fail.”…”�”}”(hjOÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M³hjæÐubjl)�”}”(hŒ?worst_peak_mse is latched and must be treated as read-to-clear.”h]”hŒ?worst_peak_mse is latched and must be treated as read-to-clear.”…”�”}”(hj‚Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¸hjæÐubjl)�”}”(hŒÒReturn: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if measurements are not yet available.”h]”hŒÒReturn: 0 on success. On failure, returns a negative errno code, such as -EOPNOTSUPP if MSE measurement is not supported by the PHY or in the current link mode, or -EAGAIN if measurements are not yet available.”…”�”}”(hj‘Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MºhjæÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåÐh´M½hjYÄubjä)�”}”(hŒ7``get_plca_cfg`` Return the current PLCA configuration ”h]”(jê)�”}”(hŒ``get_plca_cfg``”h]”jð)�”}”(hj²Ñh]”hŒ get_plca_cfg”…”�”}”(hj´Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÄhj¬Ñubj)�”}”(hhh]”jl)�”}”(hŒ%Return the current PLCA configuration”h]”hŒ%Return the current PLCA configuration”…”�”}”(hjËÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇÑh´MÄhjÈÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇÑh´MÄhjYÄubjä)�”}”(hŒ,``set_plca_cfg`` Set the PLCA configuration ”h]”(jê)�”}”(hŒ``set_plca_cfg``”h]”jð)�”}”(hjëÑh]”hŒ set_plca_cfg”…”�”}”(hjíÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÇhjåÑubj)�”}”(hhh]”jl)�”}”(hŒSet the PLCA configuration”h]”hŒSet the PLCA configuration”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒh´MÇhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒh´MÇhjYÄubjä)�”}”(hŒ8``get_plca_status`` Return the current PLCA status info ”h]”(jê)�”}”(hŒ``get_plca_status``”h]”jð)�”}”(hj$Òh]”hŒget_plca_status”…”�”}”(hj&Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÊhjÒubj)�”}”(hhh]”jl)�”}”(hŒ#Return the current PLCA status info”h]”hŒ#Return the current PLCA status info”…”�”}”(hj=Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9Òh´MÊhj:Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9Òh´MÊhjYÄubjä)�”}”(hŒ¶``led_brightness_set`` Set a PHY LED brightness. Index indicates which of the PHYs led should be set. Value follows the standard LED class meaning, e.g. LED_OFF, LED_HALF, LED_FULL. ”h]”(jê)�”}”(hŒ``led_brightness_set``”h]”jð)�”}”(hj]Òh]”hŒled_brightness_set”…”�”}”(hj_Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÒhjWÒubj)�”}”(hhh]”jl)�”}”(hŒžSet a PHY LED brightness. Index indicates which of the PHYs led should be set. Value follows the standard LED class meaning, e.g. LED_OFF, LED_HALF, LED_FULL.”h]”hŒžSet a PHY LED brightness. Index indicates which of the PHYs led should be set. Value follows the standard LED class meaning, e.g. LED_OFF, LED_HALF, LED_FULL.”…”�”}”(hjvÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÏhjsÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrÒh´MÒhjYÄubjä)�”}”(hX/``led_blink_set`` Set a PHY LED blinking. Index indicates which of the PHYs led should be configured to blink. Delays are in milliseconds and if both are zero then a sensible default should be chosen. The call should adjust the timings in that case and if it can't match the values specified exactly. ”h]”(jê)�”}”(hŒ``led_blink_set``”h]”jð)�”}”(hj—Òh]”hŒ led_blink_set”…”�”}”(hj™Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÝhj‘Òubj)�”}”(hhh]”jl)�”}”(hXSet a PHY LED blinking. Index indicates which of the PHYs led should be configured to blink. Delays are in milliseconds and if both are zero then a sensible default should be chosen. The call should adjust the timings in that case and if it can't match the values specified exactly.”h]”hXSet a PHY LED blinking. Index indicates which of the PHYs led should be configured to blink. Delays are in milliseconds and if both are zero then a sensible default should be chosen. The call should adjust the timings in that case and if it can’t match the values specified exactly.”…”�”}”(hj°Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MØhj­Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬Òh´MÝhjYÄubjä)�”}”(hŒò``led_hw_is_supported`` Can the HW support the given rules. **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** The core is interested in these rules Return 0 if yes, -EOPNOTSUPP if not, or an error code. ”h]”(jê)�”}”(hŒ``led_hw_is_supported``”h]”jð)�”}”(hjÑÒh]”hŒled_hw_is_supported”…”�”}”(hjÓÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MèhjËÒubj)�”}”(hhh]”(jl)�”}”(hŒ Can the HW support the given rules. **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** The core is interested in these rules”h]”(hŒ$Can the HW support the given rules. ”…”�”}”(hjêÒh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjòÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêÒubhŒ: PHY device which has the LED ”…”�”}”(hjêÒh²hh³Nh´Nubj›)�”}”(hŒ **index**”h]”hŒindex”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêÒubhŒ: Which LED of the PHY device ”…”�”}”(hjêÒh²hh³Nh´Nubj›)�”}”(hŒ **rules**”h]”hŒrules”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêÒubhŒ& The core is interested in these rules”…”�”}”(hjêÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MãhjçÒubjl)�”}”(hŒ7Return 0 if yes, -EOPNOTSUPP if not, or an error code.”h]”hŒ7Return 0 if yes, -EOPNOTSUPP if not, or an error code.”…”�”}”(hj/Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jæÒh´MèhjçÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjËÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jæÒh´MèhjYÄubjä)�”}”(hŒÎ``led_hw_control_set`` Set the HW to control the LED **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** The rules used to control the LED Returns 0, or a an error code. ”h]”(jê)�”}”(hŒ``led_hw_control_set``”h]”jð)�”}”(hjOÓh]”hŒled_hw_control_set”…”�”}”(hjQÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MòhjIÓubj)�”}”(hhh]”(jl)�”}”(hŒ–Set the HW to control the LED **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** The rules used to control the LED”h]”(hŒSet the HW to control the LED ”…”�”}”(hjhÓh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjpÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjhÓubhŒ: PHY device which has the LED ”…”�”}”(hjhÓh²hh³Nh´Nubj›)�”}”(hŒ **index**”h]”hŒindex”…”�”}”(hj‚Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjhÓubhŒ: Which LED of the PHY device ”…”�”}”(hjhÓh²hh³Nh´Nubj›)�”}”(hŒ **rules**”h]”hŒrules”…”�”}”(hj”Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjhÓubhŒ" The rules used to control the LED”…”�”}”(hjhÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MíhjeÓubjl)�”}”(hŒReturns 0, or a an error code.”h]”hŒReturns 0, or a an error code.”…”�”}”(hj­Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdÓh´MòhjeÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjIÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdÓh´MòhjYÄubjä)�”}”(hXq``led_hw_control_get`` Get how the HW is controlling the LED **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** Pointer to the rules used to control the LED Set ***rules** to how the HW is currently blinking. Returns 0 on success, or a error code if the current blinking cannot be represented in rules, or some other error happens. ”h]”(jê)�”}”(hŒ``led_hw_control_get``”h]”jð)�”}”(hjÍÓh]”hŒled_hw_control_get”…”�”}”(hjÏÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MþhjÇÓubj)�”}”(hhh]”(jl)�”}”(hŒ©Get how the HW is controlling the LED **dev**: PHY device which has the LED **index**: Which LED of the PHY device **rules** Pointer to the rules used to control the LED”h]”(hŒ&Get how the HW is controlling the LED ”…”�”}”(hjæÓh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjîÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæÓubhŒ: PHY device which has the LED ”…”�”}”(hjæÓh²hh³Nh´Nubj›)�”}”(hŒ **index**”h]”hŒindex”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæÓubhŒ: Which LED of the PHY device ”…”�”}”(hjæÓh²hh³Nh´Nubj›)�”}”(hŒ **rules**”h]”hŒrules”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæÓubhŒ- Pointer to the rules used to control the LED”…”�”}”(hjæÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M÷hjãÓubjl)�”}”(hŒ®Set ***rules** to how the HW is currently blinking. Returns 0 on success, or a error code if the current blinking cannot be represented in rules, or some other error happens.”h]”(hŒSet ”…”�”}”(hj+Ôh²hh³Nh´Nubj›)�”}”(hŒ ***rules**”h]”hŒ*rules”…”�”}”(hj3Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+ÔubhŒ  to how the HW is currently blinking. Returns 0 on success, or a error code if the current blinking cannot be represented in rules, or some other error happens.”…”�”}”(hj+Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MühjãÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâÓh´MþhjYÄubjä)�”}”(hX)``led_polarity_set`` Set the LED polarity modes **dev**: PHY device which has the LED **index**: Which LED of the PHY device **modes**: bitmap of LED polarity modes Configure LED with all the required polarity modes in **modes** to make it correctly turn ON or OFF. Returns 0, or an error code. ”h]”(jê)�”}”(hŒ``led_polarity_set``”h]”jð)�”}”(hj^Ôh]”hŒled_polarity_set”…”�”}”(hj`Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjXÔubj)�”}”(hhh]”(jl)�”}”(hŒ�Set the LED polarity modes **dev**: PHY device which has the LED **index**: Which LED of the PHY device **modes**: bitmap of LED polarity modes”h]”(hŒSet the LED polarity modes ”…”�”}”(hjwÔh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjwÔubhŒ: PHY device which has the LED ”…”�”}”(hjwÔh²hh³Nh´Nubj›)�”}”(hŒ **index**”h]”hŒindex”…”�”}”(hj‘Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjwÔubhŒ: Which LED of the PHY device ”…”�”}”(hjwÔh²hh³Nh´Nubj›)�”}”(hŒ **modes**”h]”hŒmodes”…”�”}”(hj£Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjwÔubhŒ: bitmap of LED polarity modes”…”�”}”(hjwÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjtÔubjl)�”}”(hŒdConfigure LED with all the required polarity modes in **modes** to make it correctly turn ON or OFF.”h]”(hŒ6Configure LED with all the required polarity modes in ”…”�”}”(hj¼Ôh²hh³Nh´Nubj›)�”}”(hŒ **modes**”h]”hŒmodes”…”�”}”(hjÄÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼ÔubhŒ% to make it correctly turn ON or OFF.”…”�”}”(hj¼Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjtÔubjl)�”}”(hŒReturns 0, or an error code.”h]”hŒReturns 0, or an error code.”…”�”}”(hjÝÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsÔh´M hjtÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjXÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsÔh´M hjYÄubjä)�”}”(hXY``get_next_update_time`` Get the time until the next update event **dev**: PHY device Callback to determine the time (in jiffies) until the next update event for the PHY state machine. Allows PHY drivers to dynamically adjust polling intervals based on link state or other conditions. Returns the time in jiffies until the next update event. ”h]”(jê)�”}”(hŒ``get_next_update_time``”h]”jð)�”}”(hjýÔh]”hŒget_next_update_time”…”�”}”(hjÿÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjûÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj÷Ôubj)�”}”(hhh]”(jl)�”}”(hŒmediums and port->lanes fields must be set, possibly according to strapping information. The PHY driver must set the port->interfaces field to indicate the possible MII modes that this PHY can output on the port. Returns 0, or an error code. ”•h]”(jê)�”}”(hŒ``attach_mii_port``”h]”jð)�”}”(hjfÕh]”hŒattach_mii_port”…”�”}”(hjhÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M0hj`Õubj)�”}”(hhh]”(jl)�”}”(hŒhAttach the given MII port to the PHY device **dev**: PHY device to notify **port**: The port being added”h]”(hŒ,Attach the given MII port to the PHY device ”…”�”}”(hjÕh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj‡Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕubhŒ: PHY device to notify ”…”�”}”(hjÕh²hh³Nh´Nubj›)�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj™Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕubhŒ: The port being added”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj|Õubjl)�”}”(hŒDCalled when an MII port that needs to be driven by the PHY is found.”h]”hŒDCalled when an MII port that needs to be driven by the PHY is found.”…”�”}”(hj²Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M#hj|Õubjl)�”}”(hŒÒThe port that is being passed may or may not be initialized. If it is already initialized, it is by the generic port representation from devicetree, which superseeds any strapping or vendor-specific properties.”h]”hŒÒThe port that is being passed may or may not be initialized. If it is already initialized, it is by the generic port representation from devicetree, which superseeds any strapping or vendor-specific properties.”…”�”}”(hjÁÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M%hj|Õubjl)�”}”(hŒ�If the port isn't initialized, the port->mediums and port->lanes fields must be set, possibly according to strapping information.”h]”hŒƒIf the port isn’t initialized, the port->mediums and port->lanes fields must be set, possibly according to strapping information.”…”�”}”(hjÐÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M*hj|Õubjl)�”}”(hŒ{The PHY driver must set the port->interfaces field to indicate the possible MII modes that this PHY can output on the port.”h]”hŒ{The PHY driver must set the port->interfaces field to indicate the possible MII modes that this PHY can output on the port.”…”�”}”(hjßÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M-hj|Õubjl)�”}”(hŒReturns 0, or an error code.”h]”hŒReturns 0, or an error code.”…”�”}”(hjîÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{Õh´M0hj|Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj`Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{Õh´M0hjYÄubjä)�”}”(hX¢``attach_mdi_port`` Attach the given MII port to the PHY device **dev**: PHY device to notify **port**: The port being added Called when a port that needs to be driven by the PHY is found. The number of time this will be called depends on phydev->max_n_ports, which the driver can change in .probe(). The port that is being passed may or may not be initialized. If it is already initialized, it is by the generic port representation from devicetree, which superseeds any strapping or vendor-specific properties. If the port isn't initialized, the port->mediums and port->lanes fields must be set, possibly according to strapping information. Returns 0, or an error code.”h]”(jê)�”}”(hŒ``attach_mdi_port``”h]”jð)�”}”(hjÖh]”hŒattach_mdi_port”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MDhjÖubj)�”}”(hhh]”(jl)�”}”(hŒhAttach the given MII port to the PHY device **dev**: PHY device to notify **port**: The port being added”h]”(hŒ,Attach the given MII port to the PHY device ”…”�”}”(hj'Öh²hh³Nh´Nubj›)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj/Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'ÖubhŒ: PHY device to notify ”…”�”}”(hj'Öh²hh³Nh´Nubj›)�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjAÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'ÖubhŒ: The port being added”…”�”}”(hj'Öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M5hj$Öubjl)�”}”(hŒ¯Called when a port that needs to be driven by the PHY is found. The number of time this will be called depends on phydev->max_n_ports, which the driver can change in .probe().”h]”hŒ¯Called when a port that needs to be driven by the PHY is found. The number of time this will be called depends on phydev->max_n_ports, which the driver can change in .probe().”…”�”}”(hjZÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M9hj$Öubjl)�”}”(hŒÒThe port that is being passed may or may not be initialized. If it is already initialized, it is by the generic port representation from devicetree, which superseeds any strapping or vendor-specific properties.”h]”hŒÒThe port that is being passed may or may not be initialized. If it is already initialized, it is by the generic port representation from devicetree, which superseeds any strapping or vendor-specific properties.”…”�”}”(hjiÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M=hj$Öubjl)�”}”(hŒ�If the port isn't initialized, the port->mediums and port->lanes fields must be set, possibly according to strapping information.”h]”hŒƒIf the port isn’t initialized, the port->mediums and port->lanes fields must be set, possibly according to strapping information.”…”�”}”(hjxÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MBhj$Öubjl)�”}”(hŒReturns 0, or an error code.”h]”hŒReturns 0, or an error code.”…”�”}”(hj‡Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MEhj$Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#Öh´MDhjYÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj±Öh]”hŒ Description”…”�”}”(hj³Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MHhj”–h²hubjl)�”}”(hX™All functions are optional. If config_aneg or read_status are not implemented, the phy core uses the genphy versions. Note that none of these functions should be called from interrupt time. The goal is for the bus read/write functions to be able to block when the bus transaction is happening, and be freed up by an interrupt (The MPC85xx has this ability, though it is not currently supported in the driver).”h]”hX™All functions are optional. If config_aneg or read_status are not implemented, the phy core uses the genphy versions. Note that none of these functions should be called from interrupt time. The goal is for the bus read/write functions to be able to block when the bus transaction is happening, and be freed up by an interrupt (The MPC85xx has this ability, though it is not currently supported in the driver).”…”�”}”(hjÇÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M}hj”–h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_id_compare (C function)”Œc.phy_id_compare”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0bool phy_id_compare (u32 id1, u32 id2, u32 mask)”h]”j )�”}”(hŒ/bool phy_id_compare(u32 id1, u32 id2, u32 mask)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjïÖh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjëÖh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MTubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÖh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëÖh²hh³jüÖh´MTubj3)�”}”(hŒphy_id_compare”h]”j9)�”}”(hŒphy_id_compare”h]”hŒphy_id_compare”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ×ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjëÖh²hh³jüÖh´MTubj¡ )�”}”(hŒ(u32 id1, u32 id2, u32 mask)”h]”(j§ )�”}”(hŒu32 id1”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj.×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0׌modname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j×sbŒc.phy_id_compare”†”asbuh1hhj'×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'×ubj9)�”}”(hŒid1”h]”hŒid1”…”�”}”(hj\×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#×ubj§ )�”}”(hŒu32 id2”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjx×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hju×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jz׌modname”NŒ classname”Njå jè )�”}”jë ]”jJ׌c.phy_id_compare”†”asbuh1hhjq×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq×ubj9)�”}”(hŒid2”h]”hŒid2”…”�”}”(hj¤×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#×ubj§ )�”}”(hŒu32 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÀ×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÂ׌modname”NŒ classname”Njå jè )�”}”jë ]”jJ׌c.phy_id_compare”†”asbuh1hhj¹×ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹×ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjì×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#×ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjëÖh²hh³jüÖh´MTubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjçÖh²hh³jüÖh´MTubah}”(h]”jâÖah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüÖh´MThjäÖh²hubjg)�”}”(hhh]”jl)�”}”(hŒ7compare **id1** with **id2** taking account of **mask**”h]”(hŒcompare ”…”�”}”(hjØh²hh³Nh´Nubj›)�”}”(hŒ**id1**”h]”hŒid1”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØubhŒ with ”…”�”}”(hjØh²hh³Nh´Nubj›)�”}”(hŒ**id2**”h]”hŒid2”…”�”}”(hj0Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØubhŒ taking account of ”…”�”}”(hjØh²hh³Nh´Nubj›)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjBØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MThjØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjäÖh²hh³jüÖh´MTubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j`ØjŒj`Øj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX=**Parameters** ``u32 id1`` first PHY ID ``u32 id2`` second PHY ID ``u32 mask`` the PHY ID mask, set bits are significant in matching **Description** Return true if the bits from **id1** and **id2** specified by **mask** match. This uses an equivalent test to (**id** & **mask**) == (**phy_id** & **mask**).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjjØh]”hŒ Parameters”…”�”}”(hjlØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjhØubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MXhjdØubjß)�”}”(hhh]”(jä)�”}”(hŒ``u32 id1`` first PHY ID ”h]”(jê)�”}”(hŒ ``u32 id1``”h]”jð)�”}”(hj‰Øh]”hŒu32 id1”…”�”}”(hj‹Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MUhjƒØubj)�”}”(hhh]”jl)�”}”(hŒ first PHY ID”h]”hŒ first PHY ID”…”�”}”(hj¢Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jžØh´MUhjŸØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jžØh´MUhj€Øubjä)�”}”(hŒ``u32 id2`` second PHY ID ”h]”(jê)�”}”(hŒ ``u32 id2``”h]”jð)�”}”(hjÂØh]”hŒu32 id2”…”�”}”(hjÄØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MVhj¼Øubj)�”}”(hhh]”jl)�”}”(hŒ second PHY ID”h]”hŒ second PHY ID”…”�”}”(hjÛØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jרh´MVhjØØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jרh´MVhj€Øubjä)�”}”(hŒC``u32 mask`` the PHY ID mask, set bits are significant in matching ”h]”(jê)�”}”(hŒ ``u32 mask``”h]”jð)�”}”(hjûØh]”hŒu32 mask”…”�”}”(hjýØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MWhjõØubj)�”}”(hhh]”jl)�”}”(hŒ5the PHY ID mask, set bits are significant in matching”h]”hŒ5the PHY ID mask, set bits are significant in matching”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÙh´MWhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙh´MWhj€Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjdØubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj6Ùh]”hŒ Description”…”�”}”(hj8Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MYhjdØubjl)�”}”(hŒ�Return true if the bits from **id1** and **id2** specified by **mask** match. This uses an equivalent test to (**id** & **mask**) == (**phy_id** & **mask**).”h]”(hŒReturn true if the bits from ”…”�”}”(hjLÙh²hh³Nh´Nubj›)�”}”(hŒ**id1**”h]”hŒid1”…”�”}”(hjTÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÙubhŒ and ”…”�”}”(hjLÙh²hh³Nh´Nubj›)�”}”(hŒ**id2**”h]”hŒid2”…”�”}”(hjfÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÙubhŒ specified by ”…”�”}”(hjLÙh²hh³Nh´Nubj›)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjxÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÙubhŒ) match. This uses an equivalent test to (”…”�”}”(hjLÙh²hh³Nh´Nubj›)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjŠÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÙubhŒ & ”…”�”}”(hjLÙh²hh³Nh´Nubj›)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjœÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÙubhŒ) == (”…”�”}”(hjLÙh²hh³Nh´Nubj›)�”}”(hŒ **phy_id**”h]”hŒphy_id”…”�”}”(hj®Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÙubhŒ & ”…”�”}”hjLÙsbj›)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjÀÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjLÙubhŒ).”…”�”}”(hjLÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MXhjdØubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_id_compare_vendor (C function)”Œc.phy_id_compare_vendor”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4bool phy_id_compare_vendor (u32 id, u32 vendor_mask)”h]”j )�”}”(hŒ3bool phy_id_compare_vendor(u32 id, u32 vendor_mask)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjùÙh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõÙh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõÙh²hh³jÚh´Mbubj3)�”}”(hŒphy_id_compare_vendor”h]”j9)�”}”(hŒphy_id_compare_vendor”h]”hŒphy_id_compare_vendor”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjõÙh²hh³jÚh´Mbubj¡ )�”}”(hŒ(u32 id, u32 vendor_mask)”h]”(j§ )�”}”(hŒu32 id”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj8Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:ÚŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÚsbŒc.phy_id_compare_vendor”†”asbuh1hhj1Úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXÚh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1Úubj9)�”}”(hŒid”h]”hŒid”…”�”}”(hjfÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj-Úubj§ )�”}”(hŒu32 vendor_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‚Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j„ÚŒmodname”NŒ classname”Njå jè )�”}”jë ]”jTÚŒc.phy_id_compare_vendor”†”asbuh1hhj{Úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{Úubj9)�”}”(hŒ vendor_mask”h]”hŒ vendor_mask”…”�”}”(hj®Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj-Úubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjõÙh²hh³jÚh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjñÙh²hh³jÚh´Mbubah}”(h]”jìÙah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÚh´MbhjîÙh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#compare **id** with **vendor** mask”h]”(hŒcompare ”…”�”}”(hjØÚh²hh³Nh´Nubj›)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjàÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØÚubhŒ with ”…”�”}”(hjØÚh²hh³Nh´Nubj›)�”}”(hŒ **vendor**”h]”hŒvendor”…”�”}”(hjòÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØÚubhŒ mask”…”�”}”(hjØÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MbhjÕÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjîÙh²hh³jÚh´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÛjŒjÛj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ¨**Parameters** ``u32 id`` PHY ID ``u32 vendor_mask`` PHY Vendor mask **Return** true if the bits from **id** match **vendor** using the generic PHY Vendor mask.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÛh]”hŒ Parameters”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MfhjÛubjß)�”}”(hhh]”(jä)�”}”(hŒ``u32 id`` PHY ID ”h]”(jê)�”}”(hŒ ``u32 id``”h]”jð)�”}”(hj=Ûh]”hŒu32 id”…”�”}”(hj?Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mchj7Ûubj)�”}”(hhh]”jl)�”}”(hŒPHY ID”h]”hŒPHY ID”…”�”}”(hjVÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jRÛh´MchjSÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jRÛh´Mchj4Ûubjä)�”}”(hŒ$``u32 vendor_mask`` PHY Vendor mask ”h]”(jê)�”}”(hŒ``u32 vendor_mask``”h]”jð)�”}”(hjvÛh]”hŒu32 vendor_mask”…”�”}”(hjxÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjtÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MdhjpÛubj)�”}”(hhh]”jl)�”}”(hŒPHY Vendor mask”h]”hŒPHY Vendor mask”…”�”}”(hj�Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹Ûh´MdhjŒÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹Ûh´Mdhj4Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÛubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj±Ûh]”hŒReturn”…”�”}”(hj³Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MfhjÛubjl)�”}”(hŒPtrue if the bits from **id** match **vendor** using the generic PHY Vendor mask.”h]”(hŒtrue if the bits from ”…”�”}”(hjÇÛh²hh³Nh´Nubj›)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjÏÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇÛubhŒ match ”…”�”}”(hjÇÛh²hh³Nh´Nubj›)�”}”(hŒ **vendor**”h]”hŒvendor”…”�”}”(hjáÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇÛubhŒ# using the generic PHY Vendor mask.”…”�”}”(hjÇÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MfhjÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_id_compare_model (C function)”Œc.phy_id_compare_model”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2bool phy_id_compare_model (u32 id, u32 model_mask)”h]”j )�”}”(hŒ1bool phy_id_compare_model(u32 id, u32 model_mask)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÜh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Moubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Üh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜh²hh³j'Üh´Moubj3)�”}”(hŒphy_id_compare_model”h]”j9)�”}”(hŒphy_id_compare_model”h]”hŒphy_id_compare_model”…”�”}”(hj:Üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6Üubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÜh²hh³j'Üh´Moubj¡ )�”}”(hŒ(u32 id, u32 model_mask)”h]”(j§ )�”}”(hŒu32 id”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjYÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j[ÜŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j<ÜsbŒc.phy_id_compare_model”†”asbuh1hhjRÜubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRÜubj9)�”}”(hŒid”h]”hŒid”…”�”}”(hj‡Üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjNÜubj§ )�”}”(hŒu32 model_mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj£Üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¥ÜŒmodname”NŒ classname”Njå jè )�”}”jë ]”juÜŒc.phy_id_compare_model”†”asbuh1hhjœÜubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœÜubj9)�”}”(hŒ model_mask”h]”hŒ model_mask”…”�”}”(hjÏÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjNÜubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÜh²hh³j'Üh´Moubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÜh²hh³j'Üh´Moubah}”(h]”j Üah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j'Üh´MohjÜh²hubjg)�”}”(hhh]”jl)�”}”(hŒ"compare **id** with **model** mask”h]”(hŒcompare ”…”�”}”(hjùÜh²hh³Nh´Nubj›)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjùÜubhŒ with ”…”�”}”(hjùÜh²hh³Nh´Nubj›)�”}”(hŒ **model**”h]”hŒmodel”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjùÜubhŒ mask”…”�”}”(hjùÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MohjöÜh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÜh²hh³j'Üh´Moubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j5ÝjŒj5Ýj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ¤**Parameters** ``u32 id`` PHY ID ``u32 model_mask`` PHY Model mask **Return** true if the bits from **id** match **model** using the generic PHY Model mask.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj?Ýh]”hŒ Parameters”…”�”}”(hjAÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj=Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mshj9Ýubjß)�”}”(hhh]”(jä)�”}”(hŒ``u32 id`` PHY ID ”h]”(jê)�”}”(hŒ ``u32 id``”h]”jð)�”}”(hj^Ýh]”hŒu32 id”…”�”}”(hj`Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MphjXÝubj)�”}”(hhh]”jl)�”}”(hŒPHY ID”h]”hŒPHY ID”…”�”}”(hjwÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsÝh´MphjtÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsÝh´MphjUÝubjä)�”}”(hŒ"``u32 model_mask`` PHY Model mask ”h]”(jê)�”}”(hŒ``u32 model_mask``”h]”jð)�”}”(hj—Ýh]”hŒu32 model_mask”…”�”}”(hj™Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mqhj‘Ýubj)�”}”(hhh]”jl)�”}”(hŒPHY Model mask”h]”hŒPHY Model mask”…”�”}”(hj°Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬Ýh´Mqhj­Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬Ýh´MqhjUÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj9Ýubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÒÝh]”hŒReturn”…”�”}”(hjÔÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mshj9Ýubjl)�”}”(hŒNtrue if the bits from **id** match **model** using the generic PHY Model mask.”h]”(hŒtrue if the bits from ”…”�”}”(hjèÝh²hh³Nh´Nubj›)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjðÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjèÝubhŒ match ”…”�”}”(hjèÝh²hh³Nh´Nubj›)�”}”(hŒ **model**”h]”hŒmodel”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjèÝubhŒ" using the generic PHY Model mask.”…”�”}”(hjèÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mshj9Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphydev_id_compare (C function)”Œc.phydev_id_compare”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:bool phydev_id_compare (struct phy_device *phydev, u32 id)”h]”j )�”}”(hŒ9bool phydev_id_compare(struct phy_device *phydev, u32 id)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj;Þh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj7Þh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7Þh²hh³jHÞh´M|ubj3)�”}”(hŒphydev_id_compare”h]”j9)�”}”(hŒphydev_id_compare”h]”hŒphydev_id_compare”…”�”}”(hj[Þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWÞubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj7Þh²hh³jHÞh´M|ubj¡ )�”}”(hŒ#(struct phy_device *phydev, u32 id)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjwÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsÞubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj•Þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j—ÞŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j]ÞsbŒc.phydev_id_compare”†”asbuh1hhjsÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsÞubj )�”}”(hj h]”hŒ*”…”�”}”(hjÃÞh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjsÞubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÐÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjoÞubj§ )�”}”(hŒu32 id”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjìÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jîÞŒmodname”NŒ classname”Njå jè )�”}”jë ]”j±ÞŒc.phydev_id_compare”†”asbuh1hhjåÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåÞubj9)�”}”(hŒid”h]”hŒid”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjoÞubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj7Þh²hh³jHÞh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj3Þh²hh³jHÞh´M|ubah}”(h]”j.Þah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jHÞh´M|hj0Þh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*compare **id** with the PHY's Clause 22 ID”h]”(hŒcompare ”…”�”}”(hjBßh²hh³Nh´Nubj›)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjJßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjBßubhŒ with the PHY’s Clause 22 ID”…”�”}”(hjBßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M|hj?ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj0Þh²hh³jHÞh´M|ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jlßjŒjlßj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX2**Parameters** ``struct phy_device *phydev`` the PHY device ``u32 id`` the PHY ID to be matched **Description** Compare the **phydev** clause 22 ID with the provided **id** and return true or false depending whether it matches, using the bound driver mask. The **phydev** must be bound to a driver.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvßh]”hŒ Parameters”…”�”}”(hjxßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtßubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M€hjpßubjß)�”}”(hhh]”(jä)�”}”(hŒ-``struct phy_device *phydev`` the PHY device ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj•ßh]”hŒstruct phy_device *phydev”…”�”}”(hj—ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M}hj�ßubj)�”}”(hhh]”jl)�”}”(hŒthe PHY device”h]”hŒthe PHY device”…”�”}”(hj®ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªßh´M}hj«ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªßh´M}hjŒßubjä)�”}”(hŒ$``u32 id`` the PHY ID to be matched ”h]”(jê)�”}”(hŒ ``u32 id``”h]”jð)�”}”(hjÎßh]”hŒu32 id”…”�”}”(hjÐßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M~hjÈßubj)�”}”(hhh]”jl)�”}”(hŒthe PHY ID to be matched”h]”hŒthe PHY ID to be matched”…”�”}”(hjçßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jãßh´M~hjäßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãßh´M~hjŒßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpßubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj àh]”hŒ Description”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M€hjpßubjl)�”}”(hŒºCompare the **phydev** clause 22 ID with the provided **id** and return true or false depending whether it matches, using the bound driver mask. The **phydev** must be bound to a driver.”h]”(hŒ Compare the ”…”�”}”(hjàh²hh³Nh´Nubj›)�”}”(hŒ **phydev**”h]”hŒphydev”…”�”}”(hj'àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàubhŒ clause 22 ID with the provided ”…”�”}”(hjàh²hh³Nh´Nubj›)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj9àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàubhŒY and return true or false depending whether it matches, using the bound driver mask. The ”…”�”}”(hjàh²hh³Nh´Nubj›)�”}”(hŒ **phydev**”h]”hŒphydev”…”�”}”(hjKàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàubhŒ must be bound to a driver.”…”�”}”(hjàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjpßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_is_started (C function)”Œc.phy_is_started”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/bool phy_is_started (struct phy_device *phydev)”h]”j )�”}”(hŒ.bool phy_is_started(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj„àh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj€àh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’àh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€àh²hh³j‘àh´M�ubj3)�”}”(hŒphy_is_started”h]”j9)�”}”(hŒphy_is_started”h]”hŒphy_is_started”…”�”}”(hj¤àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj àubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj€àh²hh³j‘àh´M�ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÀàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼àubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼àubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÞàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jààŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¦àsbŒc.phy_is_started”†”asbuh1hhj¼àubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼àubj )�”}”(hj h]”hŒ*”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¼àubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¸àubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj€àh²hh³j‘àh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj|àh²hh³j‘àh´M�ubah}”(h]”jwàah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‘àh´M�hjyàh²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Convenience function to check whether PHY is started”h]”hŒ4Convenience function to check whether PHY is started”…”�”}”(hjCáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj@áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjyàh²hh³j‘àh´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j[ájŒj[áj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` The phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjeáh]”hŒ Parameters”…”�”}”(hjgáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjcáubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M”hj_áubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` The phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj„áh]”hŒstruct phy_device *phydev”…”�”}”(hj†áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚áubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M–hj~áubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‘hjšáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™áh´M–hj{áubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj_áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_driver_is_genphy (C function)”Œc.phy_driver_is_genphy”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5bool phy_driver_is_genphy (struct phy_device *phydev)”h]”j )�”}”(hŒ4bool phy_driver_is_genphy(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÞáh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÚáh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìáh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚáh²hh³jëáh´M™ubj3)�”}”(hŒphy_driver_is_genphy”h]”j9)�”}”(hŒphy_driver_is_genphy”h]”hŒphy_driver_is_genphy”…”�”}”(hjþáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúáubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÚáh²hh³jëáh´M™ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj8âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:âŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jâsbŒc.phy_driver_is_genphy”†”asbuh1hhjâubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâubj )�”}”(hj h]”hŒ*”…”�”}”(hjfâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjâubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjsâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjâubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÚáh²hh³jëáh´M™ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÖáh²hh³jëáh´M™ubah}”(h]”jÑáah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jëáh´M™hjÓáh²hubjg)�”}”(hhh]”jl)�”}”(hŒUConvenience function to check whether PHY is driven by one of the generic PHY drivers”h]”hŒUConvenience function to check whether PHY is driven by one of the generic PHY drivers”…”�”}”(hj�âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M™hjšâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÓáh²hh³jëáh´M™ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jµâjŒjµâj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ…**Parameters** ``struct phy_device *phydev`` The phy_device struct **Return** true if PHY is driven by one of the genphy drivers”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¿âh]”hŒ Parameters”…”�”}”(hjÁâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½âubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj¹âubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÞâh]”hŒstruct phy_device *phydev”…”�”}”(hjàâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜâubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M›hjØâubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hj÷âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jóâh´M›hjôâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jóâh´M›hjÕâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹âubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjãh]”hŒReturn”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M�hj¹âubjl)�”}”(hŒ2true if PHY is driven by one of the genphy drivers”h]”hŒ2true if PHY is driven by one of the genphy drivers”…”�”}”(hj/ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mœhj¹âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_disable_eee_mode (C function)”Œc.phy_disable_eee_mode”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDvoid phy_disable_eee_mode (struct phy_device *phydev, u32 link_mode)”h]”j )�”}”(hŒCvoid phy_disable_eee_mode(struct phy_device *phydev, u32 link_mode)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^ãh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjZãh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZãh²hh³jlãh´M¤ubj3)�”}”(hŒphy_disable_eee_mode”h]”j9)�”}”(hŒphy_disable_eee_mode”h]”hŒphy_disable_eee_mode”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{ãubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjZãh²hh³jlãh´M¤ubj¡ )�”}”(hŒ*(struct phy_device *phydev, u32 link_mode)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj›ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—ãubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj¹ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»ãŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�ãsbŒc.phy_disable_eee_mode”†”asbuh1hhj—ãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙãh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—ãubj )�”}”(hj h]”hŒ*”…”�”}”(hjçãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—ãubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjôãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“ãubj§ )�”}”(hŒ u32 link_mode”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jäŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÕãŒc.phy_disable_eee_mode”†”asbuh1hhj äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj äubj9)�”}”(hŒ link_mode”h]”hŒ link_mode”…”�”}”(hj<äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“ãubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjZãh²hh³jlãh´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjVãh²hh³jlãh´M¤ubah}”(h]”jQãah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jlãh´M¤hjSãh²hubjg)�”}”(hhh]”jl)�”}”(hŒDon't advertise an EEE mode.”h]”hŒDon’t advertise an EEE mode.”…”�”}”(hjfäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¤hjcäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjSãh²hh³jlãh´M¤ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j~äjŒj~äj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒv**Parameters** ``struct phy_device *phydev`` The phy_device struct ``u32 link_mode`` The EEE mode to be disabled”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjˆäh]”hŒ Parameters”…”�”}”(hjŠäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†äubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¨hj‚äubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj§äh]”hŒstruct phy_device *phydev”…”�”}”(hj©äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¥hj¡äubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hjÀäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼äh´M¥hj½äubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼äh´M¥hjžäubjä)�”}”(hŒ-``u32 link_mode`` The EEE mode to be disabled”h]”(jê)�”}”(hŒ``u32 link_mode``”h]”jð)�”}”(hjàäh]”hŒ u32 link_mode”…”�”}”(hjâäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞäubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M§hjÚäubj)�”}”(hhh]”jl)�”}”(hŒThe EEE mode to be disabled”h]”hŒThe EEE mode to be disabled”…”�”}”(hjùäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¦hjöäubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõäh´M§hjžäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_can_wakeup (C function)”Œc.phy_can_wakeup”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/bool phy_can_wakeup (struct phy_device *phydev)”h]”j )�”}”(hŒ.bool phy_can_wakeup(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj:åh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj6åh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6åh²hh³jGåh´M±ubj3)�”}”(hŒphy_can_wakeup”h]”j9)�”}”(hŒphy_can_wakeup”h]”hŒphy_can_wakeup”…”�”}”(hjZåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVåubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj6åh²hh³jGåh´M±ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjvåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjråubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjråubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj”åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–åŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j\åsbŒc.phy_can_wakeup”†”asbuh1hhjråubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjråubj )�”}”(hj h]”hŒ*”…”�”}”(hjÂåh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjråubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÏåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjråubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnåubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj6åh²hh³jGåh´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj2åh²hh³jGåh´M±ubah}”(h]”j-åah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jGåh´M±hj/åh²hubjg)�”}”(hhh]”jl)�”}”(hŒ9indicate whether PHY has driver model wakeup capabilities”h]”hŒ9indicate whether PHY has driver model wakeup capabilities”…”�”}”(hjùåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M±hjöåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj/åh²hh³jGåh´M±ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jæjŒjæj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ **Parameters** ``struct phy_device *phydev`` The phy_device struct **Return** true/false depending on the PHY driver's device_set_wakeup_capable() setting.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjæh]”hŒ Parameters”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mµhjæubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj:æh]”hŒstruct phy_device *phydev”…”�”}”(hj<æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8æubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M²hj4æubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hjSæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jOæh´M²hjPæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOæh´M²hj1æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjæubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjuæh]”hŒReturn”…”�”}”(hjwæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsæubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M´hjæubjl)�”}”(hŒMtrue/false depending on the PHY driver's device_set_wakeup_capable() setting.”h]”hŒOtrue/false depending on the PHY driver’s device_set_wakeup_capable() setting.”…”�”}”(hj‹æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M´hjæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_may_wakeup (C function)”Œc.phy_may_wakeup”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/bool phy_may_wakeup (struct phy_device *phydev)”h]”j )�”}”(hŒ.bool phy_may_wakeup(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjºæh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶æh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M½ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶æh²hh³jÇæh´M½ubj3)�”}”(hŒphy_may_wakeup”h]”j9)�”}”(hŒphy_may_wakeup”h]”hŒphy_may_wakeup”…”�”}”(hjÚæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖæubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶æh²hh³jÇæh´M½ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjöæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjòæubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jçŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÜæsbŒc.phy_may_wakeup”†”asbuh1hhjòæubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjòæubj )�”}”(hj h]”hŒ*”…”�”}”(hjBçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjòæubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjOçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîæubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶æh²hh³jÇæh´M½ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj²æh²hh³jÇæh´M½ubah}”(h]”j­æah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÇæh´M½hj¯æh²hubjg)�”}”(hhh]”jl)�”}”(hŒ'indicate whether PHY has wakeup enabled”h]”hŒ'indicate whether PHY has wakeup enabled”…”�”}”(hjyçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M½hjvçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯æh²hh³jÇæh´M½ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‘çjŒj‘çj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÝ**Parameters** ``struct phy_device *phydev`` The phy_device struct **Return** true/false depending on the PHY driver's device_set_wakeup_enable() setting if using the driver model, otherwise the legacy determination.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj›çh]”hŒ Parameters”…”�”}”(hj�çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™çubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÁhj•çubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjºçh]”hŒstruct phy_device *phydev”…”�”}”(hj¼çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¾hj´çubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hjÓçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏçh´M¾hjÐçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏçh´M¾hj±çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj•çubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjõçh]”hŒReturn”…”�”}”(hj÷çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóçubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÀhj•çubjl)�”}”(hŒŠtrue/false depending on the PHY driver's device_set_wakeup_enable() setting if using the driver model, otherwise the legacy determination.”h]”hŒŒtrue/false depending on the PHY driver’s device_set_wakeup_enable() setting if using the driver model, otherwise the legacy determination.”…”�”}”(hj èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÀhj•çubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_read (C function)”Œ c.phy_read”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ4int phy_read (struct phy_device *phydev, u32 regnum)”h]”j )�”}”(hŒ3int phy_read(struct phy_device *phydev, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj:èh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj6èh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6èh²hh³jHèh´MÉubj3)�”}”(hŒphy_read”h]”j9)�”}”(hŒphy_read”h]”hŒphy_read”…”�”}”(hj[èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWèubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj6èh²hh³jHèh´MÉubj¡ )�”}”(hŒ'(struct phy_device *phydev, u32 regnum)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjwèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsèubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj•èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j—èŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j]èsbŒ c.phy_read”†”asbuh1hhjsèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsèubj )�”}”(hj h]”hŒ*”…”�”}”(hjÃèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjsèubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÐèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjoèubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjìèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jîèŒmodname”NŒ classname”Njå jè )�”}”jë ]”j±èŒ c.phy_read”†”asbuh1hhjåèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåèubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjoèubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj6èh²hh³jHèh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj2èh²hh³jHèh´MÉubah}”(h]”j-èah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jHèh´MÉhj/èh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5Convenience function for reading a given PHY register”h]”hŒ5Convenience function for reading a given PHY register”…”�”}”(hjBéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÉhj?éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj/èh²hh³jHèh´MÉubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jZéjŒjZéj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÿ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to read **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjdéh]”hŒ Parameters”…”�”}”(hjféh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjbéubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÍhj^éubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjƒéh]”hŒstruct phy_device *phydev”…”�”}”(hj…éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÊhj}éubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjœéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜éh´MÊhj™éubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜éh´MÊhjzéubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj¼éh]”hŒ u32 regnum”…”�”}”(hj¾éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjºéubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MËhj¶éubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hjÕéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÑéh´MËhjÒéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÑéh´MËhjzéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj^éubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj÷éh]”hŒNOTE”…”�”}”(hjùéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjõéubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÍhj^éubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÍhj^éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_read (C function)”Œ c.__phy_read”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6int __phy_read (struct phy_device *phydev, u32 regnum)”h]”j )�”}”(hŒ5int __phy_read(struct phy_device *phydev, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj<êh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj8êh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Måubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKêh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj8êh²hh³jJêh´Måubj3)�”}”(hŒ __phy_read”h]”j9)�”}”(hŒ __phy_read”h]”hŒ __phy_read”…”�”}”(hj]êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYêubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj8êh²hh³jJêh´Måubj¡ )�”}”(hŒ'(struct phy_device *phydev, u32 regnum)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjyêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuêubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj—êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j™êŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j_êsbŒ c.__phy_read”†”asbuh1hhjuêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuêubj )�”}”(hj h]”hŒ*”…”�”}”(hjÅêh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjuêubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÒêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjqêubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjîêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jðêŒmodname”NŒ classname”Njå jè )�”}”jë ]”j³êŒ c.__phy_read”†”asbuh1hhjçêubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjçêubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjqêubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj8êh²hh³jJêh´Måubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj4êh²hh³jJêh´Måubah}”(h]”j/êah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jJêh´Måhj1êh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5convenience function for reading a given PHY register”h]”hŒ5convenience function for reading a given PHY register”…”�”}”(hjDëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MåhjAëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj1êh²hh³jJêh´Måubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j\ëjŒj\ëj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”•}”(hŒ¯**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to read **Description** The caller must have taken the MDIO bus lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjfëh]”hŒ Parameters”…”�”}”(hjhëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjdëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Méhj`ëubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj…ëh]”hŒstruct phy_device *phydev”…”�”}”(hj‡ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mæhjëubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjžëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jšëh´Mæhj›ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšëh´Mæhj|ëubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj¾ëh]”hŒ u32 regnum”…”�”}”(hjÀëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mçhj¸ëubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hj×ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓëh´MçhjÔëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓëh´Mçhj|ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj`ëubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjùëh]”hŒ Description”…”�”}”(hjûëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj÷ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Méhj`ëubjl)�”}”(hŒ-The caller must have taken the MDIO bus lock.”h]”hŒ-The caller must have taken the MDIO bus lock.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mèhj`ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_write (C function)”Œ c.phy_write”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>int phy_write (struct phy_device *phydev, u32 regnum, u16 val)”h]”j )�”}”(hŒ=int phy_write(struct phy_device *phydev, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj>ìh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj:ìh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj:ìh²hh³jLìh´Mñubj3)�”}”(hŒ phy_write”h]”j9)�”}”(hŒ phy_write”h]”hŒ phy_write”…”�”}”(hj_ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[ìubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj:ìh²hh³jLìh´Mñubj¡ )�”}”(hŒ0(struct phy_device *phydev, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj{ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwìubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj™ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›ìŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jaìsbŒ c.phy_write”†”asbuh1hhjwìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹ìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjwìubj )�”}”(hj h]”hŒ*”…”�”}”(hjÇìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjwìubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÔìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjsìubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjðìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jòìŒmodname”NŒ classname”Njå jè )�”}”jë ]”jµìŒ c.phy_write”†”asbuh1hhjéìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjéìubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjsìubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj8íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:íŒmodname”NŒ classname”Njå jè )�”}”jë ]”jµìŒ c.phy_write”†”asbuh1hhj1íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1íubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjdíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjsìubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj:ìh²hh³jLìh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj6ìh²hh³jLìh´Mñubah}”(h]”j1ìah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jLìh´Mñhj3ìh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5Convenience function for writing a given PHY register”h]”hŒ5Convenience function for writing a given PHY register”…”�”}”(hjŽíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mñhj‹íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj3ìh²hh³jLìh´Mñubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¦íjŒj¦íj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX,**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj°íh]”hŒ Parameters”…”�”}”(hj²íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj®íubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mõhjªíubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÏíh]”hŒstruct phy_device *phydev”…”�”}”(hjÑíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÍíubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MòhjÉíubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjèíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jäíh´Mòhjåíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jäíh´MòhjÆíubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjîh]”hŒ u32 regnum”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Móhjîubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hj!îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîh´Móhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîh´MóhjÆíubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjAîh]”hŒu16 val”…”�”}”(hjCîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Môhj;îubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hjZîh²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjbîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjZîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jVîh´MôhjWîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVîh´MôhjÆíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjªíubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjŠîh]”hŒNOTE”…”�”}”(hjŒîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆîubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Möhjªíubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Möhjªíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_write (C function)”Œ c.__phy_write”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@int __phy_write (struct phy_device *phydev, u32 regnum, u16 val)”h]”j )�”}”(hŒ?int __phy_write(struct phy_device *phydev, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÏîh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjËîh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËîh²hh³jÝîh´Mubj3)�”}”(hŒ __phy_write”h]”j9)�”}”(hŒ __phy_write”h]”hŒ __phy_write”…”�”}”(hjðîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìîubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjËîh²hh³jÝîh´Mubj¡ )�”}”(hŒ0(struct phy_device *phydev, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj*ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j,ïŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jòîsbŒ c.__phy_write”†”asbuh1hhjïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjïubj )�”}”(hj h]”hŒ*”…”�”}”(hjXïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjïubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjeïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj�ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jƒïŒmodname”NŒ classname”Njå jè )�”}”jë ]”jFïŒ c.__phy_write”†”asbuh1hhjzïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjzïubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj­ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÉïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jËïŒmodname”NŒ classname”Njå jè )�”}”jë ]”jFïŒ c.__phy_write”†”asbuh1hhjÂïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçïh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÂïubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjõïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjËîh²hh³jÝîh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÇîh²hh³jÝîh´Mubah}”(h]”jÂîah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÝîh´MhjÄîh²hubjg)�”}”(hhh]”jl)�”}”(hŒ5Convenience function for writing a given PHY register”h]”hŒ5Convenience function for writing a given PHY register”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÄîh²hh³jÝîh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j7ðjŒj7ðj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÜ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **Description** The caller must have taken the MDIO bus lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjAðh]”hŒ Parameters”…”�”}”(hjCðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj;ðubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj`ðh]”hŒstruct phy_device *phydev”…”�”}”(hjbðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj^ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjZðubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjyðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³juðh´Mhjvðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³juðh´MhjWðubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj™ðh]”hŒ u32 regnum”…”�”}”(hj›ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj“ðubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hj²ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j®ðh´Mhj¯ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j®ðh´MhjWðubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjÒðh]”hŒu16 val”…”�”}”(hjÔðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐðubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjÌðubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hjëðh²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjóðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçðh´Mhjèðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçðh´MhjWðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj;ðubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjñh]”hŒ Description”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj;ðubjl)�”}”(hŒ-The caller must have taken the MDIO bus lock.”h]”hŒ-The caller must have taken the MDIO bus lock.”…”�”}”(hj1ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj;ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!__phy_modify_changed (C function)”Œc.__phy_modify_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒSint __phy_modify_changed (struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒRint __phy_modify_changed(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj`ñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\ñh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\ñh²hh³jnñh´Mubj3)�”}”(hŒ__phy_modify_changed”h]”j9)�”}”(hŒ__phy_modify_changed”h]”hŒ__phy_modify_changed”…”�”}”(hj�ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}ñubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj\ñh²hh³jnñh´Mubj¡ )�”}”(hŒ:(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™ñubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj»ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j½ñŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jƒñsbŒc.__phy_modify_changed”†”asbuh1hhj™ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™ñubj )�”}”(hj h]”hŒ*”…”�”}”(hjéñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj™ñubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjöñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•ñubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jòŒmodname”NŒ classname”Njå jè )�”}”jë ]”j×ñŒc.__phy_modify_changed”†”asbuh1hhj òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0òh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj òubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj>òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•ñubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjZòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j\òŒmodname”NŒ classname”Njå jè )�”}”jë ]”j×ñŒc.__phy_modify_changed”†”asbuh1hhjSòubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSòubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj†òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•ñubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¢òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¤òŒmodname”NŒ classname”Njå jè )�”}”jë ]”j×ñŒc.__phy_modify_changed”†”asbuh1hhj›òubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀòh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj›òubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjÎòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•ñubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj\ñh²hh³jnñh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjXñh²hh³jnñh´Mubah}”(h]”jSñah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jnñh´MhjUñh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Convenience function for modifying a PHY register”h]”hŒ1Convenience function for modifying a PHY register”…”�”}”(hjøòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjõòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjUñh²hh³jnñh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jójŒjój�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¶**Parameters** ``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ``u32 regnum`` register number ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Description** Unlocked helper function which allows a PHY register to be modified as new register value = (old register value & ~mask) | set Returns negative errno, 0 if there was no change, and 1 in case of change”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjóh]”hŒ Parameters”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjóubjß)�”}”(hhh]”(jä)�”}”(hŒV``struct phy_device *phydev`` a pointer to a :c:type:`struct phy_device ` ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj9óh]”hŒstruct phy_device *phydev”…”�”}”(hj;óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj3óubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to a :c:type:`struct phy_device `”h]”(hŒa pointer to a ”…”�”}”(hjRóh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hj\óh]”hŒstruct phy_device”…”�”}”(hj^óh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjZóubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³jNóh´MhjRóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNóh´MhjOóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNóh´Mhj0óubjä)�”}”(hŒ``u32 regnum`` register number ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj‘óh]”hŒ u32 regnum”…”�”}”(hj“óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�óubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj‹óubj)�”}”(hhh]”jl)�”}”(hŒregister number”h]”hŒregister number”…”�”}”(hjªóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦óh´Mhj§óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦óh´Mhj0óubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hjÊóh]”hŒu16 mask”…”�”}”(hjÌóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈóubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjÄóubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hjãóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jßóh´Mhjàóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßóh´Mhj0óubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjôh]”hŒu16 set”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjýóubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jôh´Mhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jôh´Mhj0óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjóubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj>ôh]”hŒ Description”…”�”}”(hj@ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj<ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjóubjl)�”}”(hŒ~Unlocked helper function which allows a PHY register to be modified as new register value = (old register value & ~mask) | set”h]”hŒ~Unlocked helper function which allows a PHY register to be modified as new register value = (old register value & ~mask) | set”…”�”}”(hjTôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjóubjl)�”}”(hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”h]”hŒIReturns negative errno, 0 if there was no change, and 1 in case of change”…”�”}”(hjcôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_read_mmd_poll_timeout (C macro)”Œc.phy_read_mmd_poll_timeout”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_read_mmd_poll_timeout”h]”j )�”}”(hŒphy_read_mmd_poll_timeout”h]”j3)�”}”(hŒphy_read_mmd_poll_timeout”h]”j9)�”}”(hjŒôh]”hŒphy_read_mmd_poll_timeout”…”�”}”(hj–ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’ôubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŽôh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M'ubah}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŠôh²hh³j©ôh´M'ubah}”(h]”j…ôah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j©ôh´M'hj‡ôh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡ôh²hh³j©ôh´M'ubeh}”(h]”h ]”(j…Œmacro”eh"]”h$]”h&]”jŠj…j‹jÂôjŒjÂôj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubjl)�”}”(hŒk``phy_read_mmd_poll_timeout (phydev, devaddr, regnum, val, cond, sleep_us, timeout_us, sleep_before_read)``”h]”jð)�”}”(hjÈôh]”hŒgphy_read_mmd_poll_timeout (phydev, devaddr, regnum, val, cond, sleep_us, timeout_us, sleep_before_read)”…”�”}”(hjÊôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M)hj”–h²hubjÒ)�”}”(hŒNPeriodically poll a PHY register until a condition is met or a timeout occurs ”h]”jl)�”}”(hŒMPeriodically poll a PHY register until a condition is met or a timeout occurs”h]”hŒMPeriodically poll a PHY register until a condition is met or a timeout occurs”…”�”}”(hjâôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M'hjÞôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jðôh´M'hj”–h²hubj‘)�”}”(hXÏ**Parameters** ``phydev`` The phy_device struct ``devaddr`` The MMD to read from ``regnum`` The register on the MMD to read ``val`` Variable to read the register into ``cond`` Break condition (usually involving **val**) ``sleep_us`` Maximum time to sleep between reads in us (0 tight-loops). Please read usleep_range() function description for details and limitations. ``timeout_us`` Timeout in us, 0 means never timeout ``sleep_before_read`` if it is true, sleep **sleep_us** before read. **Return** 0 on success and -ETIMEDOUT upon a timeout. In either case, the last read value at **args** is stored in **val**. Must not be called from atomic context if sleep_us or timeout_us are used.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjýôh]”hŒ Parameters”…”�”}”(hjÿôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjûôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M+hj÷ôubjß)�”}”(hhh]”(jä)�”}”(hŒ!``phydev`` The phy_device struct ”h]”(jê)�”}”(hŒ ``phydev``”h]”jð)�”}”(hjõh]”hŒphydev”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M*hjõubj)�”}”(hhh]”jl)�”}”(hŒThe phy_device struct”h]”hŒThe phy_device struct”…”�”}”(hj5õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1õh´M*hj2õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1õh´M*hjõubjä)�”}”(hŒ!``devaddr`` The MMD to read from ”h]”(jê)�”}”(hŒ ``devaddr``”h]”jð)�”}”(hjUõh]”hŒdevaddr”…”�”}”(hjWõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M+hjOõubj)�”}”(hhh]”jl)�”}”(hŒThe MMD to read from”h]”hŒThe MMD to read from”…”�”}”(hjnõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jjõh´M+hjkõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jjõh´M+hjõubjä)�”}”(hŒ+``regnum`` The register on the MMD to read ”h]”(jê)�”}”(hŒ ``regnum``”h]”jð)�”}”(hjŽõh]”hŒregnum”…”�”}”(hj�õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M,hjˆõubj)�”}”(hhh]”jl)�”}”(hŒThe register on the MMD to read”h]”hŒThe register on the MMD to read”…”�”}”(hj§õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£õh´M,hj¤õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£õh´M,hjõubjä)�”}”(hŒ+``val`` Variable to read the register into ”h]”(jê)�”}”(hŒ``val``”h]”jð)�”}”(hjÇõh]”hŒval”…”�”}”(hjÉõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M-hjÁõubj)�”}”(hhh]”jl)�”}”(hŒ"Variable to read the register into”h]”hŒ"Variable to read the register into”…”�”}”(hjàõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜõh´M-hjÝõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜõh´M-hjõubjä)�”}”(hŒ5``cond`` Break condition (usually involving **val**) ”h]”(jê)�”}”(hŒ``cond``”h]”jð)�”}”(hjöh]”hŒcond”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþõubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M.hjúõubj)�”}”(hhh]”jl)�”}”(hŒ+Break condition (usually involving **val**)”h]”(hŒ#Break condition (usually involving ”…”�”}”(hjöh²hh³Nh´Nubj›)�”}”(hŒ**val**”h]”hŒval”…”�”}”(hj!öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöubhŒ)”…”�”}”(hjöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöh´M.hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöh´M.hjõubjä)�”}”(hŒ•``sleep_us`` Maximum time to sleep between reads in us (0 tight-loops). Please read usleep_range() function description for details and limitations. ”h]”(jê)�”}”(hŒ ``sleep_us``”h]”jð)�”}”(hjKöh]”hŒsleep_us”…”�”}”(hjMöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIöubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M1hjEöubj)�”}”(hhh]”jl)�”}”(hŒ‡Maximum time to sleep between reads in us (0 tight-loops). Please read usleep_range() function description for details and limitations.”h]”hŒ‡Maximum time to sleep between reads in us (0 tight-loops). Please read usleep_range() function description for details and limitations.”…”�”}”(hjdöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M/hjaöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`öh´M1hjõubjä)�”}”(hŒ4``timeout_us`` Timeout in us, 0 means never timeout ”h]”(jê)�”}”(hŒ``timeout_us``”h]”jð)�”}”(hj…öh]”hŒ timeout_us”…”�”}”(hj‡öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒöubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M2hjöubj)�”}”(hhh]”jl)�”}”(hŒ$Timeout in us, 0 means never timeout”h]”hŒ$Timeout in us, 0 means never timeout”…”�”}”(hjžöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jšöh´M2hj›öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jšöh´M2hjõubjä)�”}”(hŒE``sleep_before_read`` if it is true, sleep **sleep_us** before read. ”h]”(jê)�”}”(hŒ``sleep_before_read``”h]”jð)�”}”(hj¾öh]”hŒsleep_before_read”…”�”}”(hjÀöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M3hj¸öubj)�”}”(hhh]”jl)�”}”(hŒ.if it is true, sleep **sleep_us** before read.”h]”(hŒif it is true, sleep ”…”�”}”(hj×öh²hh³Nh´Nubj›)�”}”(hŒ **sleep_us**”h]”hŒsleep_us”…”�”}”(hjßöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj×öubhŒ before read.”…”�”}”(hj×öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓöh´M3hjÔöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓöh´M3hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷ôubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj ÷h]”hŒReturn”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M5hj÷ôubjl)�”}”(hŒ¼0 on success and -ETIMEDOUT upon a timeout. In either case, the last read value at **args** is stored in **val**. Must not be called from atomic context if sleep_us or timeout_us are used.”h]”(hŒS0 on success and -ETIMEDOUT upon a timeout. In either case, the last read value at ”…”�”}”(hj!÷h²hh³Nh´Nubj›)�”}”(hŒ**args**”h]”hŒargs”…”�”}”(hj)÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!÷ubhŒ is stored in ”…”�”}”(hj!÷h²hh³Nh´Nubj›)�”}”(hŒ**val**”h]”hŒval”…”�”}”(hj;÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj!÷ubhŒL. Must not be called from atomic context if sleep_us or timeout_us are used.”…”�”}”(hj!÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M5hj÷ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_set_bits (C function)”Œc.__phy_set_bits”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCint __phy_set_bits (struct phy_device *phydev, u32 regnum, u16 val)”h]”j )�”}”(hŒBint __phy_set_bits(struct phy_device *phydev, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjt÷h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjp÷h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjp÷h²hh³j‚÷h´Mkubj3)�”}”(hŒ__phy_set_bits”h]”j9)�”}”(hŒ__phy_set_bits”h]”hŒ__phy_set_bits”…”�”}”(hj•÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘÷ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjp÷h²hh³j‚÷h´Mkubj¡ )�”}”(hŒ0(struct phy_device *phydev, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj±÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­÷ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÏ÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌ÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑ÷Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j—÷sbŒc.__phy_set_bits”†”asbuh1hhj­÷ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­÷ubj )�”}”(hj h]”hŒ*”…”�”}”(hjý÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj­÷ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj©÷ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj&øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j(øŒmodname”NŒ classname”Njå jè )�”}”jë ]”jë÷Œc.__phy_set_bits”†”asbuh1hhjøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjøubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjRøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj©÷ubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjnøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jpøŒmodname”NŒ classname”Njå jè )�”}”jë ]”jë÷Œc.__phy_set_bits”†”asbuh1hhjgøubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒøh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjgøubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjšøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj©÷ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjp÷h²hh³j‚÷h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjl÷h²hh³j‚÷h´Mkubah}”(h]”jg÷ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‚÷h´Mkhji÷h²hubjg)�”}”(hhh]”jl)�”}”(hŒ7Convenience function for setting bits in a PHY register”h]”hŒ7Convenience function for setting bits in a PHY register”…”�”}”(hjÄøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MkhjÁøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhji÷h²hh³j‚÷h´Mkubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÜøjŒjÜøj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒË**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to write ``u16 val`` bits to set **Description** The caller must have taken the MDIO bus lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjæøh]”hŒ Parameters”…”�”}”(hjèøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjäøubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mohjàøubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjùh]”hŒstruct phy_device *phydev”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mlhjÿøubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jùh´Mlhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jùh´Mlhjüøubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj>ùh]”hŒ u32 regnum”…”�”}”(hj@ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mmhj8ùubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjWùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jSùh´MmhjTùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jSùh´Mmhjüøubjä)�”}”(hŒ``u16 val`` bits to set ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjwùh]”hŒu16 val”…”�”}”(hjyùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mnhjqùubj)�”}”(hhh]”jl)�”}”(hŒ bits to set”h]”hŒ bits to set”…”�”}”(hj�ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒùh´Mnhj�ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒùh´Mnhjüøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjàøubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj²ùh]”hŒ Description”…”�”}”(hj´ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mphjàøubjl)�”}”(hŒ-The caller must have taken the MDIO bus lock.”h]”hŒ-The caller must have taken the MDIO bus lock.”…”�”}”(hjÈùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mohjàøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_clear_bits (C function)”Œc.__phy_clear_bits”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEint __phy_clear_bits (struct phy_device *phydev, u32 regnum, u16 val)”h]”j )�”}”(hŒDint __phy_clear_bits(struct phy_device *phydev, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj÷ùh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjóùh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóùh²hh³júh´Mxubj3)�”}”(hŒ__phy_clear_bits”h]”j9)�”}”(hŒ__phy_clear_bits”h]”hŒ__phy_clear_bits”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjóùh²hh³júh´Mxubj¡ )�”}”(hŒ0(struct phy_device *phydev, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj4úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0úubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjRúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jTúŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já júsbŒc.__phy_clear_bits”†”asbuh1hhj0úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0úubj )�”}”(hj h]”hŒ*”…”�”}”(hj€úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj0úubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj�úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,úubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj©úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«úŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnúŒc.__phy_clear_bits”†”asbuh1hhj¢úubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢úubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjÕúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,úubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjñúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jóúŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnúŒc.__phy_clear_bits”†”asbuh1hhjêúubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêúubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,úubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjóùh²hh³júh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjïùh²hh³júh´Mxubah}”(h]”jêùah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³júh´Mxhjìùh²hubjg)�”}”(hhh]”jl)�”}”(hŒ8Convenience function for clearing bits in a PHY register”h]”hŒ8Convenience function for clearing bits in a PHY register”…”�”}”(hjGûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MxhjDûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjìùh²hh³júh´Mxubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j_ûjŒj_ûj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÍ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to write ``u16 val`` bits to clear **Description** The caller must have taken the MDIO bus lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjiûh]”hŒ Parameters”…”�”}”(hjkûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjgûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M|hjcûubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjˆûh]”hŒstruct phy_device *phydev”…”�”}”(hjŠûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Myhj‚ûubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj¡ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�ûh´Myhjžûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�ûh´Myhjûubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjÁûh]”hŒ u32 regnum”…”�”}”(hjÃûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mzhj»ûubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjÚûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖûh´Mzhj×ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖûh´Mzhjûubjä)�”}”(hŒ``u16 val`` bits to clear ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjúûh]”hŒu16 val”…”�”}”(hjüûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M{hjôûubj)�”}”(hhh]”jl)�”}”(hŒ bits to clear”h]”hŒ bits to clear”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jüh´M{hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jüh´M{hjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjcûubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj5üh]”hŒ Description”…”�”}”(hj7üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj3üubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M}hjcûubjl)�”}”(hŒ-The caller must have taken the MDIO bus lock.”h]”hŒ-The caller must have taken the MDIO bus lock.”…”�”}”(hjKüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M|hjcûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_set_bits (C function)”Œc.phy_set_bits”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒAint phy_set_bits (struct phy_device *phydev, u32 regnum, u16 val)”h]”j )�”}”(hŒ@int phy_set_bits(struct phy_device *phydev, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjzüh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjvüh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰üh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvüh²hh³jˆüh´M†ubj3)�”}”(hŒ phy_set_bits”h]”j9)�”}”(hŒ phy_set_bits”h]”hŒ phy_set_bits”…”�”}”(hj›üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—üubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjvüh²hh³jˆüh´M†ubj¡ )�”}”(hŒ0(struct phy_device *phydev, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj·üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄüh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³üubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÕüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j×üŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�üsbŒc.phy_set_bits”†”asbuh1hhj³üubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõüh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³üubj )�”}”(hj h]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj³üubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯üubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj,ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j.ýŒmodname”NŒ classname”Njå jè )�”}”jë ]”jñüŒc.phy_set_bits”†”asbuh1hhj%ýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj%ýubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjXýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯üubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjtýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jvýŒmodname”NŒ classname”Njå jè )�”}”jë ]”jñüŒc.phy_set_bits”†”asbuh1hhjmýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmýubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯üubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjvüh²hh³jˆüh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjrüh²hh³jˆüh´M†ubah}”(h]”jmüah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jˆüh´M†hjoüh²hubjg)�”}”(hhh]”jl)�”}”(hŒ7Convenience function for setting bits in a PHY register”h]”hŒ7Convenience function for setting bits in a PHY register”…”�”}”(hjÊýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M†hjÇýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjoüh²hh³jˆüh´M†ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jâýjŒjâýj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ‹**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to write ``u16 val`` bits to set”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjìýh]”hŒ Parameters”…”�”}”(hjîýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŠhjæýubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj þh]”hŒstruct phy_device *phydev”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‡hjþubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj$þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j þh´M‡hj!þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j þh´M‡hjþubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjDþh]”hŒ u32 regnum”…”�”}”(hjFþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjBþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mˆhj>þubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hj]þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jYþh´MˆhjZþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYþh´Mˆhjþubjä)�”}”(hŒ``u16 val`` bits to set”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hj}þh]”hŒu16 val”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŠhjwþubj)�”}”(hhh]”jl)�”}”(hŒ bits to set”h]”hŒ bits to set”…”�”}”(hj–þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‰hj“þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’þh´MŠhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjæýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_clear_bits (C function)”Œc.phy_clear_bits”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCint phy_clear_bits (struct phy_device *phydev, u32 regnum, u16 val)”h]”j )�”}”(hŒBint phy_clear_bits(struct phy_device *phydev, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj×þh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÓþh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓþh²hh³jåþh´M‘ubj3)�”}”(hŒphy_clear_bits”h]”j9)�”}”(hŒphy_clear_bits”h]”hŒphy_clear_bits”…”�”}”(hjøþh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôþubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÓþh²hh³jåþh´M‘ubj¡ )�”}”(hŒ0(struct phy_device *phydev, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj2ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j4ÿŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já júþsbŒc.phy_clear_bits”†”asbuh1hhjÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÿubj )�”}”(hj h]”hŒ*”…”�”}”(hj`ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÿubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjmÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ÿubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‰ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‹ÿŒmodname”NŒ classname”Njå jè )�”}”jë ]”jNÿŒc.phy_clear_bits”†”asbuh1hhj‚ÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚ÿubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjµÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ÿubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÑÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÓÿŒmodname”NŒ classname”Njå jè )�”}”jë ]”jNÿŒc.phy_clear_bits”†”asbuh1hhjÊÿubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÿh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊÿubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjýÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ÿubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÓþh²hh³jåþh´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÏþh²hh³jåþh´M‘ubah}”(h]”jÊþah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jåþh´M‘hjÌþh²hubjg)�”}”(hhh]”jl)�”}”(hŒ8Convenience function for clearing bits in a PHY register”h]”hŒ8Convenience function for clearing bits in a PHY register”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M‘hj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÌþh²hh³jåþh´M‘ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j?jŒj?j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct phy_device *phydev`` the phy_device struct ``u32 regnum`` register number to write ``u16 val`` bits to clear”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjIh]”hŒ Parameters”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M•hjCubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjhh]”hŒstruct phy_device *phydev”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M’hjbubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j}h´M’hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}h´M’hj_ubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj¡h]”hŒ u32 regnum”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M“hj›ubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¶h´M“hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶h´M“hj_ubjä)�”}”(hŒ``u16 val`` bits to clear”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjÚh]”hŒu16 val”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M•hjÔubj)�”}”(hhh]”jl)�”}”(hŒ bits to clear”h]”hŒ bits to clear”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M”hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jïh´M•hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__phy_set_bits_mmd (C function)”Œc.__phy_set_bits_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRint __phy_set_bits_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒQint __phy_set_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj0h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mœubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0h²hh³jBh´Mœubj3)�”}”(hŒ__phy_set_bits_mmd”h]”j9)�”}”(hŒ__phy_set_bits_mmd”h]”hŒ__phy_set_bits_mmd”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj0h²hh³jBh´Mœubj¡ )�”}”(hŒ;(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‘Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jWsbŒc.__phy_set_bits_mmd”†”asbuh1hhjmubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjmubj )�”}”(hj h]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjmubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjiubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjßubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjiubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”j«Œc.__phy_set_bits_mmd”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjiubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jeŒmodname”NŒ classname”Njå jè )�”}”jë ]”j«Œc.__phy_set_bits_mmd”†”asbuh1hhj\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\ube•h}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjiubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj0h²hh³jBh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj,h²hh³jBh´Mœubah}”(h]”j'ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jBh´Mœhj)h²hubjg)�”}”(hhh]”jl)�”}”(hŒ:Convenience function for setting bits in a register on MMD”h]”hŒ:Convenience function for setting bits in a register on MMD”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mœhj¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj)h²hh³jBh´Mœubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÑjŒjÑj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 val`` bits to set **Description** The caller must have taken the MDIO bus lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÛh]”hŒ Parameters”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjÕubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjúh]”hŒstruct phy_device *phydev”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mžhjôubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mžhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mžhjñubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj3h]”hŒ int devad”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MŸhj-ubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHh´MŸhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHh´MŸhjñubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjlh]”hŒ u32 regnum”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjfubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´M hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´M hjñubjä)�”}”(hŒ``u16 val`` bits to set ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hj¥h]”hŒu16 val”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¡hjŸubj)�”}”(hhh]”jl)�”}”(hŒ bits to set”h]”hŒ bits to set”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jºh´M¡hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jºh´M¡hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjàh]”hŒ Description”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M£hjÕubjl)�”}”(hŒ-The caller must have taken the MDIO bus lock.”h]”hŒ-The caller must have taken the MDIO bus lock.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¢hjÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!__phy_clear_bits_mmd (C function)”Œc.__phy_clear_bits_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒTint __phy_clear_bits_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒSint __phy_clear_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj!h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!h²hh³j3h´M¬ubj3)�”}”(hŒ__phy_clear_bits_mmd”h]”j9)�”}”(hŒ__phy_clear_bits_mmd”h]”hŒ__phy_clear_bits_mmd”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj!h²hh³j3h´M¬ubj¡ )�”}”(hŒ;(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‚Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jHsbŒc.__phy_clear_bits_mmd”†”asbuh1hhj^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^ubj )�”}”(hj h]”hŒ*”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÐubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jœŒc.__phy_clear_bits_mmd”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jVŒmodname”NŒ classname”Njå jè )�”}”jë ]”jœŒc.__phy_clear_bits_mmd”†”asbuh1hhjMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj!h²hh³j3h´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³j3h´M¬ubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j3h´M¬hjh²hubjg)�”}”(hhh]”jl)�”}”(hŒ;Convenience function for clearing bits in a register on MMD”h]”hŒ;Convenience function for clearing bits in a register on MMD”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¬hj§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³j3h´M¬ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÂjŒjÂj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 val`` bits to clear **Description** The caller must have taken the MDIO bus lock.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÌh]”hŒ Parameters”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M°hjÆubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjëh]”hŒstruct phy_device *phydev”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M®hjåubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M®hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M®hjâubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj$h]”hŒ int devad”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¯hjubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9h´M¯hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9h´M¯hjâubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj]h]”hŒ u32 regnum”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M°hjWubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jrh´M°hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jrh´M°hjâubjä)�”}”(hŒ``u16 val`` bits to clear ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hj–h]”hŒu16 val”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M±hj�ubj)�”}”(hhh]”jl)�”}”(hŒ bits to clear”h]”hŒ bits to clear”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«h´M±hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«h´M±hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÆubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÑh]”hŒ Description”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M³hjÆubjl)�”}”(hŒ-The caller must have taken the MDIO bus lock.”h]”hŒ-The caller must have taken the MDIO bus lock.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M²hjÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_set_bits_mmd (C function)”Œc.phy_set_bits_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPint phy_set_bits_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒOint phy_set_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j$h´M¼ubj3)�”}”(hŒphy_set_bits_mmd”h]”j9)�”}”(hŒphy_set_bits_mmd”h]”hŒphy_set_bits_mmd”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³j$h´M¼ubj¡ )�”}”(hŒ;(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jsŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j9sbŒc.phy_set_bits_mmd”†”asbuh1hhjOubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOubj )�”}”(hj h]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjOubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿŒmodname”NŒ classname”Njå jè )�”}”jë ]”j�Œc.phy_set_bits_mmd”†”asbuh1hhjöubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjöubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jGŒmodname”NŒ classname”Njå jè )�”}”jë ]”j�Œc.phy_set_bits_mmd”†”asbuh1hhj>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj>ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjKubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³j$h´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³j$h´M¼ubah}”(h]”j ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j$h´M¼hj h²hubjg)�”}”(hhh]”jl)�”}”(hŒ:Convenience function for setting bits in a register on MMD”h]”hŒ:Convenience function for setting bits in a register on MMD”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¼hj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj h²hh³j$h´M¼ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j³jŒj³j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÃ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 val`` bits to set”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÀhj·ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÜh]”hŒstruct phy_device *phydev”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¾hjÖubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñh´M¾hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñh´M¾hjÓubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj h]”hŒ int devad”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M¿hj ubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j* h´M¿hj+ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j* h´M¿hjÓubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjN h]”hŒ u32 regnum”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÀhjH ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc h´MÀhjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc h´MÀhjÓubjä)�”}”(hŒ``u16 val`` bits to set”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hj‡ h]”hŒu16 val”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÂhj� ubj)�”}”(hhh]”jl)�”}”(hŒ bits to set”h]”hŒ bits to set”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÁhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœ h´MÂhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_clear_bits_mmd (C function)”Œc.phy_clear_bits_mmd”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRint phy_clear_bits_mmd (struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒQint phy_clear_bits_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÝ h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝ h²hh³jï h´MÊubj3)�”}”(hŒphy_clear_bits_mmd”h]”j9)�”}”(hŒphy_clear_bits_mmd”h]”hŒphy_clear_bits_mmd”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþ ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÝ h²hh³jï h´MÊubj¡ )�”}”(hŒ;(struct phy_device *phydev, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9 ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j> Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j sbŒc.phy_clear_bits_mmd”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŒ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒ ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÊ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jX Œc.phy_clear_bits_mmd”†”asbuh1hhjÁ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁ ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jX Œc.phy_clear_bits_mmd”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÝ h²hh³jï h´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÙ h²hh³jï h´MÊubah}”(h]”jÔ ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jï h´MÊhjÖ h²hubjg)�”}”(hhh]”jl)�”}”(hŒ;Convenience function for clearing bits in a register on MMD”h]”hŒ;Convenience function for clearing bits in a register on MMD”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÊhjc h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÖ h²hh³jï h´MÊubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j~ jŒj~ j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÅ**Parameters** ``struct phy_device *phydev`` the phy_device struct ``int devad`` the MMD containing register to modify ``u32 regnum`` register number to modify ``u16 val`` bits to clear”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjˆ h]”hŒ Parameters”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÎhj‚ ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj§ h]”hŒstruct phy_device *phydev”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¥ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÌhj¡ ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼ h´MÌhj½ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼ h´MÌhjž ubjä)�”}”(hŒ4``int devad`` the MMD containing register to modify ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjà h]”hŒ int devad”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÍhjÚ ubj)�”}”(hhh]”jl)�”}”(hŒ%the MMD containing register to modify”h]”hŒ%the MMD containing register to modify”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõ h´MÍhjö ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõ h´MÍhjž ubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj h]”hŒ u32 regnum”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÎhj ubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j. h´MÎhj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j. h´MÎhjž ubjä)�”}”(hŒ``u16 val`` bits to clear”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjR h]”hŒu16 val”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÐhjL ubj)�”}”(hhh]”jl)�”}”(hŒ bits to clear”h]”hŒ bits to clear”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÏhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jg h´MÐhjž ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_interrupt_is_valid (C function)”Œc.phy_interrupt_is_valid”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool phy_interrupt_is_valid (struct phy_device *phydev)”h]”j )�”}”(hŒ6bool phy_interrupt_is_valid(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨ h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MØubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨ h²hh³j¹ h´MØubj3)�”}”(hŒphy_interrupt_is_valid”h]”j9)�”}”(hŒphy_interrupt_is_valid”h]”hŒphy_interrupt_is_valid”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈ ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¨ h²hh³j¹ h´MØubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÎ sbŒc.phy_interrupt_is_valid”†”asbuh1hhjä ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä ubj )�”}”(hj h]”hŒ*”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjä ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjà ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¨ h²hh³j¹ h´MØubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¤ h²hh³j¹ h´MØubah}”(h]”jŸ ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¹ h´MØhj¡ h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Convenience function for testing a given PHY irq”h]”hŒ0Convenience function for testing a given PHY irq”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MØhjh h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¡ h²hh³j¹ h´MØubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jƒ jŒjƒ j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct phy_device *phydev`` the phy_device struct **NOTE** must be kept in sync with addition/removal of PHY_POLL and PHY_MAC_INTERRUPT”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj� h]”hŒ Parameters”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÜhj‡ ubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` the phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj¬ h]”hŒstruct phy_device *phydev”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÙhj¦ ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁ h´MÙhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁ h´MÙhj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‡ ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjç h]”hŒNOTE”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÛhj‡ ubjl)�”}”(hŒLmust be kept in sync with addition/removal of PHY_POLL and PHY_MAC_INTERRUPT”h]”hŒLmust be kept in sync with addition/removal of PHY_POLL and PHY_MAC_INTERRUPT”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÛhj‡ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_polling_mode (C function)”Œc.phy_polling_mode”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool phy_polling_mode (struct phy_device *phydev)”h]”j )�”}”(hŒ0bool phy_polling_mode(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mäubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(h²hh³j9h´Mäubj3)�”}”(hŒphy_polling_mode”h]”j9)�”}”(hŒphy_polling_mode”h]”hŒphy_polling_mode”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj(h²hh³j9h´Mäubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jˆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jNsbŒc.phy_polling_mode”†”asbuh1hhjdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdubj )�”}”(hj h]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjdubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj`ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj(h²hh³j9h´Mäubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj$h²hh³j9h´Mäubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j9h´Mähj!h²hubjg)�”}”(hhh]”jl)�”}”(hŒUConvenience function for testing whether polling is used to detect PHY status changes”h]”hŒUConvenience function for testing whether polling is used to detect PHY status changes”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mähjèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj!h²hh³j9h´Mäubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj h]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mèhjubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj,h]”hŒstruct phy_device *phydev”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mêhj&ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MæhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jAh´Mêhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_has_hwtstamp (C function)”Œc.phy_has_hwtstamp”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool phy_has_hwtstamp (struct phy_device *phydev)”h]”j )�”}”(hŒ0bool phy_has_hwtstamp(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‚h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‚h²hh³j“h´Mõubj3)�”}”(hŒphy_has_hwtstamp”h]”j9)�”}”(hŒphy_has_hwtstamp”h]”hŒphy_has_hwtstamp”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‚h²hh³j“h´Mõubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jâŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¨sbŒc.phy_has_hwtstamp”†”asbuh1hhj¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾ubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¾ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjºubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‚h²hh³j“h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj~h²hh³j“h´Mõubah}”(h]”jyah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j“h´Mõhj{h²hubjg)�”}”(hhh]”jl)�”}”(hŒ-Tests whether a PHY time stamp configuration.”h]”hŒ-Tests whether a PHY time stamp configuration.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MõhjBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj{h²hh³j“h´Mõubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j]jŒj]j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjgh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mùhjaubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj†h]”hŒstruct phy_device *phydev”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mûhj€ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Möhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›h´Mûhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_has_rxtstamp (C function)”Œc.phy_has_rxtstamp”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool phy_has_rxtstamp (struct phy_device *phydev)”h]”j )�”}”(hŒ0bool phy_has_rxtstamp(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÜh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜh²hh³jíh´Mþubj3)�”}”(hŒphy_has_rxtstamp”h]”j9)�”}”(hŒphy_has_rxtstamp”h]”hŒphy_has_rxtstamp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÜh²hh³jíh´Mþubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j<Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.phy_has_rxtstamp”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÜh²hh³jíh´Mþubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjØh²hh³jíh´Mþubah}”(h]”jÓah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jíh´MþhjÕh²hubjg)�”}”(hhh]”jl)�”}”(hŒ3Tests whether a PHY supports receive time stamping.”h]”hŒ3Tests whether a PHY supports receive time stamping.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mþhjœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÕh²hh³jíh´Mþubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j·jŒj·j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÁh]”hŒ Parameters”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhj»ubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjàh]”hŒstruct phy_device *phydev”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjÚubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mÿhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõh´Mhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_has_tsinfo (C function)”Œc.phy_has_tsinfo”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/bool phy_has_tsinfo (struct phy_device *phydev)”h]”j )�”}”(hŒ.bool phy_has_tsinfo(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj6h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6h²hh³jGh´Mubj3)�”}”(hŒphy_has_tsinfo”h]”j9)�”}”(hŒphy_has_tsinfo”h]”hŒphy_has_tsinfo”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj6h²hh³jGh´Mubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j\sbŒc.phy_has_tsinfo”†”asbuh1hhjrubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrubj )�”}”(hj h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjrubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj6h²hh³jGh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj2h²hh³jGh´Mubah}”(h]”j-ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jGh´Mhj/h²hubjg)�”}”(hhh]”jl)�”}”(hŒQTests whether a PHY reports time stamping and/or PTP hardware clock capabilities.”h]”hŒQTests whether a PHY reports time stamping and/or PTP hardware clock capabilities.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj/h²hh³jGh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj:h]”hŒstruct phy_device *phydev”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hj4ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOh´M hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_has_txtstamp (C function)”Œc.phy_has_txtstamp”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1bool phy_has_txtstamp (struct phy_device *phydev)”h]”j )�”}”(hŒ0bool phy_has_txtstamp(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�h²hh³j¡h´Mubj3)�”}”(hŒphy_has_txtstamp”h]”j9)�”}”(hŒphy_has_txtstamp”h]”hŒphy_has_txtstamp”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�h²hh³j¡h´Mubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¶sbŒc.phy_has_txtstamp”†”asbuh1hhjÌubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÌubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÈubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�h²hh³j¡h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒh²hh³j¡h´Mubah}”(h]”j‡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¡h´Mhj‰h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Tests whether a PHY supports transmit time stamping.”h]”hŒ4Tests whether a PHY supports transmit time stamping.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰h²hh³j¡h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jkjŒjkj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjuh]”hŒ Parameters”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjoubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj”h]”hŒstruct phy_device *phydev”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MhjŽubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©h´Mhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phy_is_default_hwtstamp (C function)”Œc.phy_is_default_hwtstamp”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8bool phy_is_default_hwtstamp (struct phy_device *phydev)”h]”j )�”}”(hŒ7bool phy_is_default_hwtstamp(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjêh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M3ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjêh²hh³jûh´M3ubj3)�”}”(hŒphy_is_default_hwtstamp”h]”j9)�”}”(hŒphy_is_default_hwtstamp”h]”hŒphy_is_default_hwtstamp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjêh²hh³jûh´M3ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jJŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.phy_is_default_hwtstamp”†”asbuh1hhj&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj&ubj )�”}”(hj h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj&ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj"ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjêh²hh³jûh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjæh²hh³jûh´M3ubah}”(h]”jáah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jûh´M3hjãh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)Is the PHY hwtstamp the default timestamp”h]”hŒ)Is the PHY hwtstamp the default timestamp”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M3hjªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjãh²hh³jûh´M3ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÅjŒjÅj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXj**Parameters** ``struct phy_device *phydev`` Pointer to phy_device **Description** This is used to get default timestamping device taking into account the new API choice, which is selecting the timestamping from MAC by default if the phydev does not have default_timestamp flag enabled. **Return** True if phy is the default hw timestamp, false otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÏh]”hŒ Parameters”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M7hjÉubjß)�”}”(hhh]”jä)�”}”(hŒ4``struct phy_device *phydev`` Pointer to phy_device ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjîh]”hŒstruct phy_device *phydev”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M4hjèubj)�”}”(hhh]”jl)�”}”(hŒPointer to phy_device”h]”hŒPointer to phy_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M4hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M4hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÉubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj)h]”hŒ Description”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M6hjÉubjl)�”}”(hŒËThis is used to get default timestamping device taking into account the new API choice, which is selecting the timestamping from MAC by default if the phydev does not have default_timestamp flag enabled.”h]”hŒËThis is used to get default timestamping device taking into account the new API choice, which is selecting the timestamping from MAC by default if the phydev does not have default_timestamp flag enabled.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M5hjÉubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjPh]”hŒReturn”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M9hjÉubjl)�”}”(hŒ9True if phy is the default hw timestamp, false otherwise.”h]”hŒ9True if phy is the default hw timestamp, false otherwise.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´M:hjÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_on_sfp (C function)”Œ c.phy_on_sfp”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+bool phy_on_sfp (struct phy_device *phydev)”h]”j )�”}”(hŒ*bool phy_on_sfp(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‘h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘h²hh³j¢h´MBubj3)�”}”(hŒ phy_on_sfp”h]”j9)�”}”(hŒ phy_on_sfp”h]”hŒ phy_on_sfp”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‘h²hh³j¢h´MBubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jñŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·sbŒ c.phy_on_sfp”†”asbuh1hhjÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÍubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÉubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‘h²hh³j¢h´MBubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j¢h´MBubah}”(h]”jˆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢h´MBhjŠh²hubjg)�”}”(hhh]”jl)�”}”(hŒ=Convenience function for testing if a PHY is on an SFP module”h]”hŒ=Convenience function for testing if a PHY is on an SFP module”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MBhjQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŠh²hh³j¢h´MBubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jljŒjlj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MFhjpubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj•h]”hŒstruct phy_device *phydev”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MHhj�ubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MChj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªh´MHhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(phy_interface_mode_is_rgmii (C function)”Œc.phy_interface_mode_is_rgmii”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool phy_interface_mode_is_rgmii (phy_interface_t mode)”h]”j )�”}”(hŒ6bool phy_interface_mode_is_rgmii(phy_interface_t mode)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjëh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëh²hh³jüh´MKubj3)�”}”(hŒphy_interface_mode_is_rgmii”h]”j9)�”}”(hŒphy_interface_mode_is_rgmii”h]”hŒphy_interface_mode_is_rgmii”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjëh²hh³jüh´MKubj¡ )�”}”(hŒ(phy_interface_t mode)”h]”j§ )�”}”(hŒphy_interface_t mode”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jsbŒc.phy_interface_mode_is_rgmii”†”asbuh1hhj'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'ubj9)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj#ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjëh²hh³jüh´MKubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjçh²hh³jüh´MKubah}”(h]”jâah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüh´MKhjäh²hubjg)�”}”(hhh]”jl)�”}”(hŒPConvenience function for testing if a PHY interface mode is RGMII (all variants)”h]”hŒPConvenience function for testing if a PHY interface mode is RGMII (all variants)”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MKhjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjäh²hh³jüh´MKubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jžjŒjžj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒM**Parameters** ``phy_interface_t mode`` the :c:type:`phy_interface_t` enum”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¨h]”hŒ Parameters”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MOhj¢ubjß)�”}”(hhh]”jä)�”}”(hŒ;``phy_interface_t mode`` the :c:type:`phy_interface_t` enum”h]”(jê)�”}”(hŒ``phy_interface_t mode``”h]”jð)�”}”(hjÇh]”hŒphy_interface_t mode”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MQhjÁubj)�”}”(hhh]”jl)�”}”(hŒ"the :c:type:`phy_interface_t` enum”h]”(hŒthe ”…”�”}”(hjàh²hh³Nh´Nubh)�”}”(hŒ:c:type:`phy_interface_t`”h]”jð)�”}”(hjêh]”hŒphy_interface_t”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjèubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MMhjàubhŒ enum”…”�”}”(hjàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MMhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜh´MQhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(phy_interface_mode_is_8023z (C function)”Œc.phy_interface_mode_is_8023z”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool phy_interface_mode_is_8023z (phy_interface_t mode)”h]”j )�”}”(hŒ6bool phy_interface_mode_is_8023z(phy_interface_t mode)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj@h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MVubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@h²hh³jQh´MVubj3)�”}”(hŒphy_interface_mode_is_8023z”h]”j9)�”}”(hŒphy_interface_mode_is_8023z”h]”hŒphy_interface_mode_is_8023z”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ubah}”(h]”h ]”(jKjLeh"]”•$h$]”h&]”jPjQuh1j2hj@h²hh³jQh´MVubj¡ )�”}”(hŒ(phy_interface_t mode)”h]”j§ )�”}”(hŒphy_interface_t mode”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j…Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jfsbŒc.phy_interface_mode_is_8023z”†”asbuh1hhj|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|ubj9)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjxubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj@h²hh³jQh´MVubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj<h²hh³jQh´MVubah}”(h]”j7ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jQh´MVhj9h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2does the PHY interface mode use 802.3z negotiation”h]”hŒ2does the PHY interface mode use 802.3z negotiation”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MVhjØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj9h²hh³jQh´MVubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jójŒjój�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒþ**Parameters** ``phy_interface_t mode`` one of :c:type:`enum phy_interface_t ` **Description** Returns true if the PHY interface mode uses the 16-bit negotiation word as defined in 802.3z. (See 802.3-2015 37.2.1 Config_Reg encoding)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjýh]”hŒ Parameters”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MZhj÷ubjß)�”}”(hhh]”jä)�”}”(hŒQ``phy_interface_t mode`` one of :c:type:`enum phy_interface_t ` ”h]”(jê)�”}”(hŒ``phy_interface_t mode``”h]”jð)�”}”(hjh]”hŒphy_interface_t mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MXhjubj)�”}”(hhh]”jl)�”}”(hŒ7one of :c:type:`enum phy_interface_t `”h]”(hŒone of ”…”�”}”(hj5h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`enum phy_interface_t `”h]”jð)�”}”(hj?h]”hŒenum phy_interface_t”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³j1h´MXhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1h´MXhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1h´MXhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjvh]”hŒ Description”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MZhj÷ubjl)�”}”(hŒ‰Returns true if the PHY interface mode uses the 16-bit negotiation word as defined in 802.3z. (See 802.3-2015 37.2.1 Config_Reg encoding)”h]”hŒ‰Returns true if the PHY interface mode uses the 16-bit negotiation word as defined in 802.3z. (See 802.3-2015 37.2.1 Config_Reg encoding)”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MYhj÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_interface_is_rgmii (C function)”Œc.phy_interface_is_rgmii”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool phy_interface_is_rgmii (struct phy_device *phydev)”h]”j )�”}”(hŒ6bool phy_interface_is_rgmii(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj·h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mdubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·h²hh³jÈh´Mdubj3)�”}”(hŒphy_interface_is_rgmii”h]”j9)�”}”(hŒphy_interface_is_rgmii”h]”hŒphy_interface_is_rgmii”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj·h²hh³jÈh´Mdubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÝsbŒc.phy_interface_is_rgmii”†”asbuh1hhjóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóubj )�”}”(hj h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjóubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj·h²hh³jÈh´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj³h²hh³jÈh´Mdubah}”(h]”j®ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÈh´Mdhj°h²hubjg)�”}”(hhh]”jl)�”}”(hŒKConvenience function for testing if a PHY interface is RGMII (all variants)”h]”hŒKConvenience function for testing if a PHY interface is RGMII (all variants)”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mdhjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj°h²hh³jÈh´Mdubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j’jŒj’j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjœh]”hŒ Parameters”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mhhj–ubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj»h]”hŒstruct phy_device *phydev”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mjhjµubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MfhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÐh´Mjhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phy_is_pseudo_fixed_link (C function)”Œc.phy_is_pseudo_fixed_link”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9bool phy_is_pseudo_fixed_link (struct phy_device *phydev)”h]”j )�”}”(hŒ8bool phy_is_pseudo_fixed_link(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³j"h´Mnubj3)�”}”(hŒphy_is_pseudo_fixed_link”h]”j9)�”}”(hŒphy_is_pseudo_fixed_link”h]”hŒphy_is_pseudo_fixed_link”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³j"h´Mnubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jqŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j7sbŒc.phy_is_pseudo_fixed_link”†”asbuh1hhjMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjMubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjIubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³j"h´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj h²hh³j"h´Mnubah}”(h]”jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j"h´Mnhj h²hubjg)�”}”(hhh]”jl)�”}”(hŒkConvenience function for testing if this PHY is the CPU port facing side of an Ethernet switch, or similar.”h]”hŒkConvenience function for testing if this PHY is the CPU port facing side of an Ethernet switch, or similar.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MnhjÑh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj h²hh³j"h´Mnubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jìjŒjìj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒE**Parameters** ``struct phy_device *phydev`` the phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjöh]”hŒ Parameters”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mrhjðubjß)�”}”(hhh]”jä)�”}”(hŒ3``struct phy_device *phydev`` the phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjh]”hŒstruct phy_device *phydev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mthjubj)�”}”(hhh]”jl)�”}”(hŒthe phy_device struct”h]”hŒthe phy_device struct”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´Mphj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*h´Mthj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_module_driver (C macro)”Œc.phy_module_driver”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphy_module_driver”h]”j )�”}”(hŒphy_module_driver”h]”j3)�”}”(hŒphy_module_driver”h]”j9)�”}”(hjih]”hŒphy_module_driver”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjkh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÇ ubah}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjgh²hh³j†h´MÇ ubah}”(h]”jbah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j†h´MÇ hjdh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jfhjdh²hh³j†h´MÇ ubeh}”(h]”h ]”(j…Œmacro”eh"]”h$]”h&]”jŠj…j‹jŸjŒjŸj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubjl)�”}”(hŒ.``phy_module_driver (__phy_drivers, __count)``”h]”jð)�”}”(hj¥h]”hŒ*phy_module_driver (__phy_drivers, __count)”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÉ hj”–h²hubjÒ)�”}”(hŒ)Helper macro for registering PHY drivers ”h]”jl)�”}”(hŒ(Helper macro for registering PHY drivers”h]”hŒ(Helper macro for registering PHY drivers”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÇ hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÍh´MÇ hj”–h²hubj‘)�”}”(hX7**Parameters** ``__phy_drivers`` array of PHY drivers to register ``__count`` Numbers of members in array **Description** Helper macro for PHY drivers which do not do anything special in module init/exit. Each module may only use this macro once, and calling it replaces module_init() and module_exit().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÚh]”hŒ Parameters”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MË hjÔubjß)�”}”(hhh]”(jä)�”}”(hŒ3``__phy_drivers`` array of PHY drivers to register ”h]”(jê)�”}”(hŒ``__phy_drivers``”h]”jð)�”}”(hjùh]”hŒ __phy_drivers”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÈ hjóubj)�”}”(hhh]”jl)�”}”(hŒ array of PHY drivers to register”h]”hŒ array of PHY drivers to register”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MÈ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MÈ hjðubjä)�”}”(hŒ(``__count`` Numbers of members in array ”h]”(jê)�”}”(hŒ ``__count``”h]”jð)�”}”(hj2h]”hŒ__count”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÉ hj,ubj)�”}”(hhh]”jl)�”}”(hŒNumbers of members in array”h]”hŒNumbers of members in array”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jGh´MÉ hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGh´MÉ hjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÔubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjmh]”hŒ Description”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MË hjÔubjl)�”}”(hŒµHelper macro for PHY drivers which do not do anything special in module init/exit. Each module may only use this macro once, and calling it replaces module_init() and module_exit().”h]”hŒµHelper macro for PHY drivers which do not do anything special in module init/exit. Each module may only use this macro once, and calling it replaces module_init() and module_exit().”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:125: ./include/linux/phy.h”h´MÊ hjÔubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$genphy_match_phy_device (C function)”Œc.genphy_match_phy_device”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒXint genphy_match_phy_device (struct phy_device *phydev, const struct phy_driver *phydrv)”h]”j )�”}”(hŒWint genphy_match_phy_device(struct phy_device *phydev, const struct phy_driver *phydrv)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj®h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj®h²hh³jÀh´M¤ubj3)�”}”(hŒgenphy_match_phy_device”h]”j9)�”}”(hŒgenphy_match_phy_device”h]”hŒgenphy_match_phy_device”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj®h²hh³jÀh´M¤ubj¡ )�”}”(hŒ<(struct phy_device *phydev, const struct phy_driver *phydrv)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÕsbŒc.genphy_match_phy_device”†”asbuh1hhjëubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëubj )�”}”(hj h]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjëubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjçubj§ )�”}”(hŒconst struct phy_driver *phydrv”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]ubh)�”}”(hhh]”j9)�”}”(hŒ phy_driver”h]”hŒ phy_driver”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jœŒmodname”NŒ classname”Njå jè )�”}”jë ]”j)Œc.genphy_match_phy_device”†”asbuh1hhj]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj]ubj9)�”}”(hŒphydrv”h]”hŒphydrv”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjçubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj®h²hh³jÀh´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjªh²hh³jÀh´M¤ubah}”(h]”j¥ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÀh´M¤hj§h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$match a PHY device with a PHY driver”h]”hŒ$match a PHY device with a PHY driver”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¤hjúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj§h²hh³jÀh´M¤ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j jŒj j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXò**Parameters** ``struct phy_device *phydev`` target phy_device struct ``const struct phy_driver *phydrv`` target phy_driver struct **Description** Checks whether the given PHY device matches the specified PHY driver. For Clause 45 PHYs, iterates over the available device identifiers and compares them against the driver's expected PHY ID, applying the provided mask. For Clause 22 PHYs, a direct ID comparison is performed. **Return** 1 if the PHY device matches the driver, 0 otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj h]”hŒ Parameters”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¨hj ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj> h]”hŒstruct phy_device *phydev”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj< ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¥hj8 ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jS h´M¥hjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jS h´M¥hj5 ubjä)�”}”(hŒ=``const struct phy_driver *phydrv`` target phy_driver struct ”h]”(jê)�”}”(hŒ#``const struct phy_driver *phydrv``”h]”jð)�”}”(hjw h]”hŒconst struct phy_driver *phydrv”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhju ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¦hjq ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_driver struct”h]”hŒtarget phy_driver struct”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒ h´M¦hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒ h´M¦hj5 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj² h]”hŒ Description”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¨hj ubjl)�”}”(hXChecks whether the given PHY device matches the specified PHY driver. For Clause 45 PHYs, iterates over the available device identifiers and compares them against the driver's expected PHY ID, applying the provided mask. For Clause 22 PHYs, a direct ID comparison is performed.”h]”hXChecks whether the given PHY device matches the specified PHY driver. For Clause 45 PHYs, iterates over the available device identifiers and compares them against the driver’s expected PHY ID, applying the provided mask. For Clause 22 PHYs, a direct ID comparison is performed.”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¨hj ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÙ h]”hŒReturn”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M®hj ubjl)�”}”(hŒ41 if the PHY device matches the driver, 0 otherwise.”h]”hŒ41 if the PHY device matches the driver, 0 otherwise.”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M®hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒget_phy_device (C function)”Œc.get_phy_device”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOstruct phy_device * get_phy_device (struct mii_bus *bus, int addr, bool is_c45)”h]”j )�”}”(hŒMstruct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!h²hh³j+!h´MÃubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j?!Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œget_phy_device”sbŒc.get_phy_device”†”asbuh1hhj!h²hh³j+!h´MÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!h²hh³j+!h´MÃubj )�”}”(hj h]”hŒ*”…”�”}”(hjl!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj!h²hh³j+!h´MÃubj3)�”}”(hŒget_phy_device”h]”j9)�”}”(hj[!h]”hŒget_phy_device”…”�”}”(hj}!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjy!ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj!h²hh³j+!h´MÃubj¡ )�”}”(hŒ,(struct mii_bus *bus, int addr, bool is_c45)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj˜!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”!ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj¶!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸!Œmodname”NŒ classname”Njå jè )�”}”jë ]”jY!Œc.get_phy_device”†”asbuh1hhj”!ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”!ubj )�”}”(hj h]”hŒ*”…”�”}”(hjâ!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj”!ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjï!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�!ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj$"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�!ubj§ )�”}”(hŒ bool is_c45”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj="h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj9"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9"ubj9)�”}”(hŒis_c45”h]”hŒis_c45”…”�”}”(hjX"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�!ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj!h²hh³j+!h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj!h²hh³j+!h´MÃubah}”(h]”j!ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j+!h´MÃhj!h²hubjg)�”}”(hhh]”jl)�”}”(hŒDreads the specified PHY device and returns its **phy_device** struct”h]”(hŒ/reads the specified PHY device and returns its ”…”�”}”(hj‚"h²hh³Nh´Nubj›)�”}”(hŒ**phy_device**”h]”hŒ phy_device”…”�”}”(hjŠ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚"ubhŒ struct”…”�”}”(hj‚"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÃhj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj!h²hh³j+!h´MÃubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬"jŒj¬"j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXë**Parameters** ``struct mii_bus *bus`` the target MII bus ``int addr`` PHY address on the MII bus ``bool is_c45`` If true the PHY uses the 802.3 clause 45 protocol **Description** Probe for a PHY at **addr** on **bus**. When probing for a clause 22 PHY, then read the ID registers. If we find a valid ID, allocate and return a :c:type:`struct phy_device `. When probing for a clause 45 PHY, read the "devices in package" registers. If the "devices in package" appears valid, read the ID registers for each MMD, allocate and return a :c:type:`struct phy_device `. Returns an allocated :c:type:`struct phy_device ` on success, ``-ENODEV`` if there is no PHY present, or ``-EIO`` on bus access error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶"h]”hŒ Parameters”…”�”}”(hj¸"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÇhj°"ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the target MII bus ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjÕ"h]”hŒstruct mii_bus *bus”…”�”}”(hj×"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÅhjÏ"ubj)�”}”(hhh]”jl)�”}”(hŒthe target MII bus”h]”hŒthe target MII bus”…”�”}”(hjî"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jê"h´MÅhjë"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jê"h´MÅhjÌ"ubjä)�”}”(hŒ(``int addr`` PHY address on the MII bus ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj#h]”hŒint addr”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÆhj#ubj)�”}”(hhh]”jl)�”}”(hŒPHY address on the MII bus”h]”hŒPHY address on the MII bus”…”�”}”(hj'#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j##h´MÆhj$#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j##h´MÆhjÌ"ubjä)�”}”(hŒB``bool is_c45`` If true the PHY uses the 802.3 clause 45 protocol ”h]”(jê)�”}”(hŒ``bool is_c45``”h]”jð)�”}”(hjG#h]”hŒ bool is_c45”…”�”}”(hjI#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjE#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÇhjA#ubj)�”}”(hhh]”jl)�”}”(hŒ1If true the PHY uses the 802.3 clause 45 protocol”h]”hŒ1If true the PHY uses the 802.3 clause 45 protocol”…”�”}”(hj`#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\#h´MÇhj]#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\#h´MÇhjÌ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°"ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‚#h]”hŒ Description”…”�”}”(hj„#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÉhj°"ubjl)�”}”(hŒ'Probe for a PHY at **addr** on **bus**.”h]”(hŒProbe for a PHY at ”…”�”}”(hj˜#h²hh³Nh´Nubj›)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜#ubhŒ on ”…”�”}”(hj˜#h²hh³Nh´Nubj›)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hj²#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜#ubhŒ.”…”�”}”(hj˜#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÈhj°"ubjl)�”}”(hŒ”When probing for a clause 22 PHY, then read the ID registers. If we find a valid ID, allocate and return a :c:type:`struct phy_device `.”h]”(hŒkWhen probing for a clause 22 PHY, then read the ID registers. If we find a valid ID, allocate and return a ”…”�”}”(hjË#h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hjÕ#h]”hŒstruct phy_device”…”�”}”(hj×#h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÓ#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÊhjË#ubhŒ.”…”�”}”(hjË#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jò#h´MÊhj°"ubjl)�”}”(hŒÙWhen probing for a clause 45 PHY, read the "devices in package" registers. If the "devices in package" appears valid, read the ID registers for each MMD, allocate and return a :c:type:`struct phy_device `.”h]”(hŒ¸When probing for a clause 45 PHY, read the “devices in packageâ€� registers. If the “devices in packageâ€� appears valid, read the ID registers for each MMD, allocate and return a ”…”�”}”(hjý#h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hj$h]”hŒstruct phy_device”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÍhjý#ubhŒ.”…”�”}”(hjý#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j$$h´MÍhj°"ubjl)�”}”(hŒ’Returns an allocated :c:type:`struct phy_device ` on success, ``-ENODEV`` if there is no PHY present, or ``-EIO`` on bus access error.”h]”(hŒReturns an allocated ”…”�”}”(hj/$h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hj9$h]”hŒstruct phy_device”…”�”}”(hj;$h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj7$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÑhj/$ubhŒ on success, ”…”�”}”(hj/$h²hh³Nh´Nubjð)�”}”(hŒ ``-ENODEV``”h]”hŒ-ENODEV”…”�”}”(hj[$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/$ubhŒ if there is no PHY present, or ”…”�”}”(hj/$h²hh³Nh´Nubjð)�”}”(hŒ``-EIO``”h]”hŒ-EIO”…”�”}”(hjm$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/$ubhŒ on bus access error.”…”�”}”(hj/$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jV$h´MÑhj°"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_device_register (C function)”Œc.phy_device_register”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int phy_device_register (struct phy_device *phydev)”h]”j )�”}”(hŒ2int phy_device_register(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡$h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Møubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡$h²hh³j³$h´Møubj3)�”}”(hŒphy_device_register”h]”j9)�”}”(hŒphy_device_register”h]”hŒphy_device_register”…”�”}”(hjÆ$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂ$ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡$h²hh³j³$h´Møubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞ$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞ$ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j%Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÈ$sbŒc.phy_device_register”†”asbuh1hhjÞ$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞ$ubj )�”}”(hj h]”hŒ*”…”�”}”(hj.%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÞ$ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj;%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚ$ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡$h²hh³j³$h´Møubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�$h²hh³j³$h´Møubah}”(h]”j˜$ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j³$h´Møhjš$h²hubjg)�”}”(hhh]”jl)�”}”(hŒ'Register the phy device on the MDIO bus”h]”hŒ'Register the phy device on the MDIO bus”…”�”}”(hje%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Møhjb%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjš$h²hh³j³$h´Møubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j}%jŒj}%j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ`**Parameters** ``struct phy_device *phydev`` phy_device structure to be added to the MDIO bus”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‡%h]”hŒ Parameters”…”�”}”(hj‰%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mühj�%ubjß)�”}”(hhh]”jä)�”}”(hŒN``struct phy_device *phydev`` phy_device structure to be added to the MDIO bus”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj¦%h]”hŒstruct phy_device *phydev”…”�”}”(hj¨%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mþhj %ubj)�”}”(hhh]”jl)�”}”(hŒ0phy_device structure to be added to the MDIO bus”h]”hŒ0phy_device structure to be added to the MDIO bus”…”�”}”(hj¿%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mùhj¼%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj %ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»%h´Mþhj�%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_device_remove (C function)”Œc.phy_device_remove”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ2void phy_device_remove (struct phy_device *phydev)”h]”j )�”}”(hŒ1void phy_device_remove(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjü%h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjü%h²hh³j&h´Mubj3)�”}”(hŒphy_device_remove”h]”j9)�”}”(hŒphy_device_remove”h]”hŒphy_device_remove”…”�”}”(hj!&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjü%h²hh³j&h´Mubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj=&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9&ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj[&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]&Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j#&sbŒc.phy_device_remove”†”asbuh1hhj9&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9&ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9&ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj–&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj5&ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjü%h²hh³j&h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjø%h²hh³j&h´Mubah}”(h]”jó%ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j&h´Mhjõ%h²hubjg)�”}”(hhh]”jl)�”}”(hŒ;Remove a previously registered phy device from the MDIO bus”h]”hŒ;Remove a previously registered phy device from the MDIO bus”…”�”}”(hjÀ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mhj½&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjõ%h²hh³j&h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jØ&jŒjØ&j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phy_device *phydev`` phy_device structure to remove **Description** This doesn't free the phy_device itself, it merely reverses the effects of phy_device_register(). Use phy_device_free() to free the device after calling this function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjâ&h]”hŒ Parameters”…”�”}”(hjä&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjà&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M#hjÜ&ubjß)�”}”(hhh]”jä)�”}”(hŒ=``struct phy_device *phydev`` phy_device structure to remove ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj'h]”hŒstruct phy_device *phydev”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjû&ubj)�”}”(hhh]”jl)�”}”(hŒphy_device structure to remove”h]”hŒphy_device structure to remove”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'h´M hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjû&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'h´M hjø&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÜ&ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj<'h]”hŒ Description”…”�”}”(hj>'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M"hjÜ&ubjl)�”}”(hŒ§This doesn't free the phy_device itself, it merely reverses the effects of phy_device_register(). Use phy_device_free() to free the device after calling this function.”h]”hŒ©This doesn’t free the phy_device itself, it merely reverses the effects of phy_device_register(). Use phy_device_free() to free the device after calling this function.”…”�”}”(hjR'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M!hjÜ&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_get_c45_ids (C function)”Œc.phy_get_c45_ids”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/int phy_get_c45_ids (struct phy_device *phydev)”h]”j )�”}”(hŒ.int phy_get_c45_ids(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj}'h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}'h²hh³j�'h´M5ubj3)�”}”(hŒphy_get_c45_ids”h]”j9)�”}”(hŒphy_get_c45_ids”h]”hŒphy_get_c45_ids”…”�”}”(hj¢'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž'ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj}'h²hh³j�'h´M5ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¾'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjº'ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÜ'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÞ'Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¤'sbŒc.phy_get_c45_ids”†”asbuh1hhjº'ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjº'ubj )�”}”(hj h]”hŒ*”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjº'ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjº'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¶'ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj}'h²hh³j�'h´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjy'h²hh³j�'h´M5ubah}”(h]”jt'ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�'h´M5hjv'h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Read 802.3-c45 IDs for phy device.”h]”hŒ"Read 802.3-c45 IDs for phy device.”…”�”}”(hjA(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M5hj>(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjv'h²hh³j�'h´M5ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jY(jŒjY(j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÚ**Parameters** ``struct phy_device *phydev`` phy_device structure to read 802.3-c45 IDs **Description** Returns zero on success, ``-EIO`` on bus access error, or ``-ENODEV`` if the "devices in package" is invalid.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjc(h]”hŒ Parameters”…”�”}”(hje(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhja(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M9hj](ubjß)�”}”(hhh]”jä)�”}”(hŒI``struct phy_device *phydev`` phy_device structure to read 802.3-c45 IDs ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj‚(h]”hŒstruct phy_device *phydev”…”�”}”(hj„(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M6hj|(ubj)�”}”(hhh]”jl)�”}”(hŒ*phy_device structure to read 802.3-c45 IDs”h]”hŒ*phy_device structure to read 802.3-c45 IDs”…”�”}”(hj›(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—(h´M6hj˜(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—(h´M6hjy(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj](ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj½(h]”hŒ Description”…”�”}”(hj¿(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj»(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M8hj](ubjl)�”}”(hŒmReturns zero on success, ``-EIO`` on bus access error, or ``-ENODEV`` if the "devices in package" is invalid.”h]”(hŒReturns zero on success, ”…”�”}”(hjÓ(h²hh³Nh´Nubjð)�”}”(hŒ``-EIO``”h]”hŒ-EIO”…”�”}”(hjÛ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ(ubhŒ on bus access error, or ”…”�”}”(hjÓ(h²hh³Nh´Nubjð)�”}”(hŒ ``-ENODEV``”h]”hŒ-ENODEV”…”�”}”(hjí(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ(ubhŒ, if the “devices in packageâ€� is invalid.”…”�”}”(hjÓ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M7hj](ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_find_next (C function)”Œc.phy_find_next”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOstruct phy_device * phy_find_next (struct mii_bus *bus, struct phy_device *pos)”h]”j )�”}”(hŒMstruct phy_device *phy_find_next(struct mii_bus *bus, struct phy_device *pos)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj&)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj")h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj")h²hh³j3)h´MCubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjE)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjB)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jG)Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ phy_find_next”sbŒc.phy_find_next”†”asbuh1hhj")h²hh³j3)h´MCubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj")h²hh³j3)h´MCubj )�”}”(hj h]”hŒ*”…”�”}”(hjt)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj")h²hh³j3)h´MCubj3)�”}”(hŒ phy_find_next”h]”j9)�”}”(hjc)h]”hŒ phy_find_next”…”�”}”(hj…)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�)ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj")h²hh³j3)h´MCubj¡ )�”}”(hŒ-(struct mii_bus *bus, struct phy_device *pos)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœ)ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj¾)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÀ)Œmodname”NŒ classname”Njå jè )�”}”jë ]”ja)Œc.phy_find_next”†”asbuh1hhjœ)ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ)h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœ)ubj )�”}”(hj h]”hŒ*”…”�”}”(hjê)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjœ)ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj÷)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj˜)ubj§ )�”}”(hŒstruct phy_device *pos”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj *ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj *ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj.*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0*Œmodname”NŒ classname”Njå jè )�”}”jë ]”ja)Œc.phy_find_next”†”asbuh1hhj *ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL*h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj *ubj )�”}”(hj h]”hŒ*”…”�”}”(hjZ*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj *ubj9)�”}”(hŒpos”h]”hŒpos”…”�”}”(hjg*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj *ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj˜)ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj")h²hh³j3)h´MCubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj)h²hh³j3)h´MCubah}”(h]”j)ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j3)h´MChj)h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$finds the next PHY device on the bus”h]”hŒ$finds the next PHY device on the bus”…”�”}”(hj‘*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MChjŽ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj)h²hh³j3)h´MCubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©*jŒj©*j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ’**Parameters** ``struct mii_bus *bus`` the target MII bus ``struct phy_device *pos`` cursor **Return** next phy_device on the bus, or NULL”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³*h]”hŒ Parameters”…”�”}”(hjµ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MGhj­*ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the target MII bus ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjÒ*h]”hŒstruct mii_bus *bus”…”�”}”(hjÔ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MDhjÌ*ubj)�”}”(hhh]”jl)�”}”(hŒthe target MII bus”h]”hŒthe target MII bus”…”�”}”(hjë*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jç*h´MDhjè*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jç*h´MDhjÉ*ubjä)�”}”(hŒ"``struct phy_device *pos`` cursor ”h]”(jê)�”}”(hŒ``struct phy_device *pos``”h]”jð)�”}”(hj +h]”hŒstruct phy_device *pos”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj +ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MEhj+ubj)�”}”(hhh]”jl)�”}”(hŒcursor”h]”hŒcursor”…”�”}”(hj$+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j +h´MEhj!+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j +h´MEhjÉ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­*ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjF+h]”hŒReturn”…”�”}”(hjH+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjD+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MGhj­*ubjl)�”}”(hŒ#next phy_device on the bus, or NULL”h]”hŒ#next phy_device on the bus, or NULL”…”�”}”(hj\+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MGhj­*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_connect_direct (C function)”Œc.phy_connect_direct”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ‹int phy_connect_direct (struct net_device *dev, struct phy_device *phydev, void (*handler)(struct net_device *), phy_interface_t interface)”h]”j )�”}”(hŒ‰int phy_connect_direct(struct net_device *dev, struct phy_device *phydev, void (*handler)(struct net_device*), phy_interface_t interface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‹+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‡+h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Miubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡+h²hh³j™+h´Miubj3)�”}”(hŒphy_connect_direct”h]”j9)�”}”(hŒphy_connect_direct”h]”hŒphy_connect_direct”…”�”}”(hj¬+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨+ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‡+h²hh³j™+h´Miubj¡ )�”}”(hŒs(struct net_device *dev, struct phy_device *phydev, void (*handler)(struct net_device*), phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄ+ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjæ+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jè+Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j®+sbŒc.phy_connect_direct”†”asbuh1hhjÄ+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄ+ubj )�”}”(hj h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÄ+ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj!,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀ+ubj§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj:,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6,ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZ,Œmodname”NŒ classname”Njå jè )�”}”jë ]”j,Œc.phy_connect_direct”†”asbuh1hhj6,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6,ubj )�”}”(hj h]”hŒ*”…”�”}”(hj„,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6,ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj‘,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀ+ubj§ )�”}”(hŒ#void (*handler)(struct net_device*)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjª,h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¦,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸,h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦,ubj )�”}”(hjh]”hŒ(”…”�”}”(hjÆ,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦,ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓ,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦,ubj9)�”}”(hŒhandler”h]”hŒhandler”…”�”}”(hjà,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦,ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjî,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦,ubj )�”}”(hjh]”hŒ(”…”�”}”(hjû,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦,ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦,ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦,ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj&-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j(-Œmodname”NŒ classname”Njå jè )�”}”jë ]”j,Œc.phy_connect_direct”†”asbuh1hhj¦,ubj )�”}”(hj h]”hŒ*”…”�”}”(hjD-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦,ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjQ-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀ+ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjl-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jn-Œmodname”NŒ classname”Njå jè )�”}”jë ]”j,Œc.phy_connect_direct”†”asbuh1hhje-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje-ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hj˜-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÀ+ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‡+h²hh³j™+h´Miubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjƒ+h²hh³j™+h´Miubah}”(h]”j~+ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j™+h´Mihj€+h²hubjg)�”}”(hhh]”jl)�”}”(hŒ3connect an ethernet device to a specific phy_device”h]”hŒ3connect an ethernet device to a specific phy_device”…”�”}”(hjÂ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mihj¿-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj€+h²hh³j™+h´Miubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÚ-jŒjÚ-j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct net_device *dev`` the network device to connect ``struct phy_device *phydev`` the pointer to the phy device ``void (*handler)(struct net_device *)`` callback function for state change notifications ``phy_interface_t interface`` PHY device's interface”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjä-h]”hŒ Parameters”…”�”}”(hjæ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MmhjÞ-ubjß)�”}”(hhh]”(jä)�”}”(hŒ9``struct net_device *dev`` the network device to connect ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj.h]”hŒstruct net_device *dev”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mjhjý-ubj)�”}”(hhh]”jl)�”}”(hŒthe network device to connect”h]”hŒthe network device to connect”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j.h´Mjhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j.h´Mjhjú-ubjä)�”}”(hŒ<``struct phy_device *phydev`` the pointer to the phy device ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj<.h]”hŒstruct phy_device *phydev”…”�”}”(hj>.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj:.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mkhj6.ubj)�”}”(hhh]”jl)�”}”(hŒthe pointer to the phy device”h]”hŒthe pointer to the phy device”…”�”}”(hjU.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jQ.h´MkhjR.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jQ.h´Mkhjú-ubjä)�”}”(hŒZ``void (*handler)(struct net_device *)`` callback function for state change notifications ”h]”(jê)�”}”(hŒ(``void (*handler)(struct net_device *)``”h]”jð)�”}”(hju.h]”hŒ$void (*handler)(struct net_device *)”…”�”}”(hjw.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjs.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mlhjo.ubj)�”}”(hhh]”jl)�”}”(hŒ0callback function for state change notifications”h]”hŒ0callback function for state change notifications”…”�”}”(hjŽ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠ.h´Mlhj‹.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠ.h´Mlhjú-ubjä)�”}”(hŒ4``phy_interface_t interface`` PHY device's interface”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj®.h]”hŒphy_interface_t interface”…”�”}”(hj°.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mnhj¨.ubj)�”}”(hhh]”jl)�”}”(hŒPHY device's interface”h]”hŒPHY device’s interface”…”�”}”(hjÇ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MmhjÄ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃ.h´Mnhjú-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÞ-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_connect (C function)”Œ c.phy_connect”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ�struct phy_device * phy_connect (struct net_device *dev, const char *bus_id, void (*handler)(struct net_device *), phy_interface_t interface)”h]”j )�”}”(hŒŠstruct phy_device *phy_connect(struct net_device *dev, const char *bus_id, void (*handler)(struct net_device*), phy_interface_t interface)”•h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/h²hh³j/h´M…ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj'/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j)/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œ phy_connect”sbŒ c.phy_connect”†”asbuh1hhj/h²hh³j/h´M…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj/h²hh³j/h´M…ubj )�”}”(hj h]”hŒ*”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj/h²hh³j/h´M…ubj3)�”}”(hŒ phy_connect”h]”j9)�”}”(hjE/h]”hŒ phy_connect”…”�”}”(hjg/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc/ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj/h²hh³j/h´M…ubj¡ )�”}”(hŒl(struct net_device *dev, const char *bus_id, void (*handler)(struct net_device*), phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~/ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¢/Œmodname”NŒ classname”Njå jè )�”}”jë ]”jC/Œ c.phy_connect”†”asbuh1hhj~/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~/ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÌ/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj~/ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÙ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjz/ubj§ )�”}”(hŒconst char *bus_id”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjò/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî/ubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjî/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî/ubj )�”}”(hj h]”hŒ*”…”�”}”(hj)0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjî/ubj9)�”}”(hŒbus_id”h]”hŒbus_id”…”�”}”(hj60h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjz/ubj§ )�”}”(hŒ#void (*handler)(struct net_device*)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjK0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK0ubj )�”}”(hjh]”hŒ(”…”�”}”(hjk0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK0ubj )�”}”(hj h]”hŒ*”…”�”}”(hjx0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK0ubj9)�”}”(hŒhandler”h]”hŒhandler”…”�”}”(hj…0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK0ubj )�”}”(hjEh]”hŒ)”…”�”}”(hj“0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK0ubj )�”}”(hjh]”hŒ(”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK0ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj­0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK0ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjK0ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjË0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÍ0Œmodname”NŒ classname”Njå jè )�”}”jë ]”jC/Œ c.phy_connect”†”asbuh1hhjK0ubj )�”}”(hj h]”hŒ*”…”�”}”(hjé0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK0ubj )�”}”(hjEh]”hŒ)”…”�”}”(hjö0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjK0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjz/ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1Œmodname”NŒ classname”Njå jè )�”}”jë ]”jC/Œ c.phy_connect”†”asbuh1hhj 1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj 1ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hj=1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj 1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjz/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj/h²hh³j/h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj/h²hh³j/h´M…ubah}”(h]”jû.ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j/h´M…hjý.h²hubjg)�”}”(hhh]”jl)�”}”(hŒ*connect an ethernet device to a PHY device”h]”hŒ*connect an ethernet device to a PHY device”…”�”}”(hjg1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M…hjd1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjý.h²hh³j/h´M…ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j1jŒj1j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX®**Parameters** ``struct net_device *dev`` the network device to connect ``const char *bus_id`` the id string of the PHY device to connect ``void (*handler)(struct net_device *)`` callback function for state change notifications ``phy_interface_t interface`` PHY device's interface **Description** Convenience function for connecting ethernet devices to PHY devices. The default behavior is for the PHY infrastructure to handle everything, and only notify the connected driver when the link status changes. If you don't want, or can't use the provided functionality, you may choose to call only the subset of functions which provide the desired functionality.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‰1h]”hŒ Parameters”…”�”}”(hj‹1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‰hjƒ1ubjß)�”}”(hhh]”(jä)�”}”(hŒ9``struct net_device *dev`` the network device to connect ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hj¨1h]”hŒstruct net_device *dev”…”�”}”(hjª1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M†hj¢1ubj)�”}”(hhh]”jl)�”}”(hŒthe network device to connect”h]”hŒthe network device to connect”…”�”}”(hjÁ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j½1h´M†hj¾1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j½1h´M†hjŸ1ubjä)�”}”(hŒB``const char *bus_id`` the id string of the PHY device to connect ”h]”(jê)�”}”(hŒ``const char *bus_id``”h]”jð)�”}”(hjá1h]”hŒconst char *bus_id”…”�”}”(hjã1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjß1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‡hjÛ1ubj)�”}”(hhh]”jl)�”}”(hŒ*the id string of the PHY device to connect”h]”hŒ*the id string of the PHY device to connect”…”�”}”(hjú1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jö1h´M‡hj÷1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jö1h´M‡hjŸ1ubjä)�”}”(hŒZ``void (*handler)(struct net_device *)`` callback function for state change notifications ”h]”(jê)�”}”(hŒ(``void (*handler)(struct net_device *)``”h]”jð)�”}”(hj2h]”hŒ$void (*handler)(struct net_device *)”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mˆhj2ubj)�”}”(hhh]”jl)�”}”(hŒ0callback function for state change notifications”h]”hŒ0callback function for state change notifications”…”�”}”(hj32h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j/2h´Mˆhj02ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j/2h´MˆhjŸ1ubjä)�”}”(hŒ5``phy_interface_t interface`` PHY device's interface ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjS2h]”hŒphy_interface_t interface”…”�”}”(hjU2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‰hjM2ubj)�”}”(hhh]”jl)�”}”(hŒPHY device's interface”h]”hŒPHY device’s interface”…”�”}”(hjl2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh2h´M‰hji2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh2h´M‰hjŸ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjƒ1ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŽ2h]”hŒ Description”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‹hjƒ1ubjß)�”}”(hhh]”jä)�”}”(hXkConvenience function for connecting ethernet devices to PHY devices. The default behavior is for the PHY infrastructure to handle everything, and only notify the connected driver when the link status changes. If you don't want, or can't use the provided functionality, you may choose to call only the subset of functions which provide the desired functionality.”h]”(jê)�”}”(hŒ,Convenience function for connecting ethernet”h]”hŒ,Convenience function for connecting ethernet”…”�”}”(hj«2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M�hj§2ubj)�”}”(hhh]”jl)�”}”(hX>devices to PHY devices. The default behavior is for the PHY infrastructure to handle everything, and only notify the connected driver when the link status changes. If you don't want, or can't use the provided functionality, you may choose to call only the subset of functions which provide the desired functionality.”h]”hXBdevices to PHY devices. The default behavior is for the PHY infrastructure to handle everything, and only notify the connected driver when the link status changes. If you don’t want, or can’t use the provided functionality, you may choose to call only the subset of functions which provide the desired functionality.”…”�”}”(hj½2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŒhjº2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹2h´M�hj¤2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjƒ1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_disconnect (C function)”Œc.phy_disconnect”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void phy_disconnect (struct phy_device *phydev)”h]”j )�”}”(hŒ.void phy_disconnect(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjþ2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjú2h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjú2h²hh³j 3h´M¯ubj3)�”}”(hŒphy_disconnect”h]”j9)�”}”(hŒphy_disconnect”h]”hŒphy_disconnect”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjú2h²hh³j 3h´M¯ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj;3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj73ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj73ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjV3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j[3Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j!3sbŒc.phy_disconnect”†”asbuh1hhj73ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy3h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj73ubj )�”}”(hj h]”hŒ*”…”�”}”(hj‡3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj73ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj”3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj73ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj33ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjú2h²hh³j 3h´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjö2h²hh³j 3h´M¯ubah}”(h]”jñ2ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j 3h´M¯hjó2h²hubjg)�”}”(hhh]”jl)�”}”(hŒ?disable interrupts, stop state machine, and detach a PHY device”h]”hŒ?disable interrupts, stop state machine, and detach a PHY device”…”�”}”(hj¾3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¯hj»3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjó2h²hh³j 3h´M¯ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÖ3jŒjÖ3j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjà3h]”hŒ Parameters”…”�”}”(hjâ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M³hjÚ3ubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÿ3h]”hŒstruct phy_device *phydev”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjý3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mµhjù3ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M±hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4h´Mµhjö3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚ3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_detach (C function)”Œ c.phy_detach”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ+void phy_detach (struct phy_device *phydev)”h]”j )�”}”(hŒ*void phy_detach(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjU4h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU4h²hh³jg4h´MXubj3)�”}”(hŒ phy_detach”h]”j9)�”}”(hŒ phy_detach”h]”hŒ phy_detach”…”�”}”(hjz4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv4ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjU4h²hh³jg4h´MXubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj–4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’4ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj´4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¶4Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j|4sbŒ c.phy_detach”†”asbuh1hhj’4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’4ubj )�”}”(hj h]”hŒ*”…”�”}”(hjâ4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’4ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjï4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ4ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjU4h²hh³jg4h´MXubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjQ4h²hh³jg4h´MXubah}”(h]”jL4ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jg4h´MXhjN4h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+detach a PHY device from its network device”h]”hŒ+detach a PHY device from its network device”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MXhj5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjN4h²hh³jg4h´MXubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j15jŒj15j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒß**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** This detaches the phy device from its network device and the phy driver, and drops the reference count taken in phy_attach_direct().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj;5h]”hŒ Parameters”…”�”}”(hj=5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj95ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M\hj55ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjZ5h]”hŒstruct phy_device *phydev”…”�”}”(hj\5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjX5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MYhjT5ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjs5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jo5h´MYhjp5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jo5h´MYhjQ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj55ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj•5h]”hŒ Description”…”�”}”(hj—5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj“5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M[hj55ubjl)�”}”(hŒ„This detaches the phy device from its network device and the phy driver, and drops the reference count taken in phy_attach_direct().”h]”hŒ„This detaches the phy device from its network device and the phy driver, and drops the reference count taken in phy_attach_direct().”…”�”}”(hj«5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MZhj55ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_attach_direct (C function)”Œc.phy_attach_direct”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒoint phy_attach_direct (struct net_device *dev, struct phy_device *phydev, u32 flags, phy_interface_t interface)”h]”j )�”}”(hŒnint phy_attach_direct(struct net_device *dev, struct phy_device *phydev, u32 flags, phy_interface_t interface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÖ5h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÖ5h²hh³jè5h´Mfubj3)�”}”(hŒphy_attach_direct”h]”j9)�”}”(hŒphy_attach_direct”h]”hŒphy_attach_direct”…”�”}”(hjû5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷5ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÖ5h²hh³jè5h´Mfubj¡ )�”}”(hŒY(struct net_device *dev, struct phy_device *phydev, u32 flags, phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct net_device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6ubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj56h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj26ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j76Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jý5sbŒc.phy_attach_direct”†”asbuh1hhj6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6ubj )�”}”(hj h]”hŒ*”…”�”}”(hjc6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjp6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6ubj§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‰6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…6ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj§6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j©6Œmodname”NŒ classname”Njå jè )�”}”jë ]”jQ6Œc.phy_attach_direct”†”asbuh1hhj…6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…6ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓ6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj…6ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjà6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6ubj§ )�”}”(hŒ u32 flags”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjü6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jþ6Œmodname”NŒ classname”Njå jè )�”}”jë ]”jQ6Œc.phy_attach_direct”†”asbuh1hhjõ6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ6ubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj(7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjD7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jF7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jQ6Œc.phy_attach_direct”†”asbuh1hhj=7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=7ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjp7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÖ5h²hh³jè5h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÒ5h²hh³jè5h´Mfubah}”(h]”jÍ5ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jè5h´MfhjÏ5h²hubjg)�”}”(hhh]”jl)�”}”(hŒ5attach a network device to a given PHY device pointer”h]”hŒ5attach a network device to a given PHY device pointer”…”�”}”(hjš7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mfhj—7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÏ5h²hh³jè5h´Mfubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j²7jŒj²7j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX’**Parameters** ``struct net_device *dev`` network device to attach ``struct phy_device *phydev`` Pointer to phy_device to attach ``u32 flags`` PHY device's dev_flags ``phy_interface_t interface`` PHY device's interface **Description** Called by drivers to attach to a particular PHY device. The phy_device is found, and properly hooked up to the phy_driver. If no driver is attached, then a generic driver is used. The phy_device is given a ptr to the attaching device, and given a callback for link status change. The phy_device is returned to the attaching driver. This function takes a reference on the phy device.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¼7h]”hŒ Parameters”…”�”}”(hj¾7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjº7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mjhj¶7ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``struct net_device *dev`` network device to attach ”h]”(jê)�”}”(hŒ``struct net_device *dev``”h]”jð)�”}”(hjÛ7h]”hŒstruct net_device *dev”…”�”}”(hjÝ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÙ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MghjÕ7ubj)�”}”(hhh]”jl)�”}”(hŒnetwork device to attach”h]”hŒnetwork device to attach”…”�”}”(hjô7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jð7h´Mghjñ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jð7h´MghjÒ7ubjä)�”}”(hŒ>``struct phy_device *phydev`` Pointer to phy_device to attach ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj8h]”hŒstruct phy_device *phydev”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mhhj8ubj)�”}”(hhh]”jl)�”}”(hŒPointer to phy_device to attach”h]”hŒPointer to phy_device to attach”…”�”}”(hj-8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)8h´Mhhj*8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)8h´MhhjÒ7ubjä)�”}”(hŒ%``u32 flags`` PHY device's dev_flags ”h]”(jê)�”}”(hŒ ``u32 flags``”h]”jð)�”}”(hjM8h]”hŒ u32 flags”…”�”}”(hjO8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjK8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MihjG8ubj)�”}”(hhh]”jl)�”}”(hŒPHY device's dev_flags”h]”hŒPHY device’s dev_flags”…”�”}”(hjf8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jb8h´Mihjc8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb8h´MihjÒ7ubjä)�”}”(hŒ5``phy_interface_t interface`` PHY device's interface ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj†8h]”hŒphy_interface_t interface”…”�”}”(hjˆ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mjhj€8ubj)�”}”(hhh]”jl)�”}”(hŒPHY device's interface”h]”hŒPHY device’s interface”…”�”}”(hjŸ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j›8h´Mjhjœ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j›8h´MjhjÒ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶7ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÁ8h]”hŒ Description”…”�”}”(hjÃ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¿8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mlhj¶7ubjß)�”}”(hhh]”jä)�”}”(hX�Called by drivers to attach to a particular PHY device. The phy_device is found, and properly hooked up to the phy_driver. If no driver is attached, then a generic driver is used. The phy_device is given a ptr to the attaching device, and given a callback for link status change. The phy_device is returned to the attaching driver. This function takes a reference on the phy device.”h]”(jê)�”}”(hŒ/Called by drivers to attach to a particular PHY”h]”hŒ/Called by drivers to attach to a particular PHY”…”�”}”(hjÞ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MqhjÚ8ubj)�”}”(hhh]”jl)�”}”(hXQdevice. The phy_device is found, and properly hooked up to the phy_driver. If no driver is attached, then a generic driver is used. The phy_device is given a ptr to the attaching device, and given a callback for link status change. The phy_device is returned to the attaching driver. This function takes a reference on the phy device.”h]”hXQdevice. The phy_device is found, and properly hooked up to the phy_driver. If no driver is attached, then a generic driver is used. The phy_device is given a ptr to the attaching device, and given a callback for link status change. The phy_device is returned to the attaching driver. This function takes a reference on the phy device.”…”�”}”(hjð8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mmhjí8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì8h´Mqhj×8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phy_reset_after_clk_enable (C function)”Œc.phy_reset_after_clk_enable”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:int phy_reset_after_clk_enable (struct phy_device *phydev)”h]”j )�”}”(hŒ9int phy_reset_after_clk_enable(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj19h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj-9h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj-9h²hh³j?9h´M]ubj3)�”}”(hŒphy_reset_after_clk_enable”h]”j9)�”}”(hŒphy_reset_after_clk_enable”h]”hŒphy_reset_after_clk_enable”…”�”}”(hjR9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjN9ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj-9h²hh³j?9h´M]ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjn9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj9ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjŒ9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŽ9Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jT9sbŒc.phy_reset_after_clk_enable”†”asbuh1hhjj9ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬9h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj9ubj )�”}”(hj h]”hŒ*”…”�”}”(hjº9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjj9ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÇ9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjf9ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj-9h²hh³j?9h´M]ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj)9h²hh³j?9h´M]ubah}”(h]”j$9ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j?9h´M]hj&9h²hubjg)�”}”(hhh]”jl)�”}”(hŒperform a PHY reset if needed”h]”hŒperform a PHY reset if needed”…”�”}”(hjñ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M]hjî9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj&9h²hh³j?9h´M]ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j :jŒj :j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX8**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Some PHYs are known to need a reset after their refclk was enabled. This function evaluates the flags and perform the reset if it's needed. Returns < 0 on error, 0 if the phy wasn't reset and 1 if the phy was reset.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj:h]”hŒ Parameters”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mahj :ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj2:h]”hŒstruct phy_device *phydev”…”�”}”(hj4:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M^hj,:ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjK:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jG:h´M^hjH:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jG:h´M^hj):ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj :ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjm:h]”hŒ Description”…”�”}”(hjo:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjk:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M`hj :ubjß)�”}”(hhh]”jä)�”}”(hŒ×Some PHYs are known to need a reset after their refclk was enabled. This function evaluates the flags and perform the reset if it's needed. Returns < 0 on error, 0 if the phy wasn't reset and 1 if the phy was reset.”h]”(jê)�”}”(hŒ:Some PHYs are known to need a reset after their refclk was”h]”hŒ:Some PHYs are known to need a reset after their refclk was”…”�”}”(hjŠ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mbhj†:ubj)�”}”(hhh]”jl)�”}”(hŒœenabled. This function evaluates the flags and perform the reset if it's needed. Returns < 0 on error, 0 if the phy wasn't reset and 1 if the phy was reset.”h]”hŒ enabled. This function evaluates the flags and perform the reset if it’s needed. Returns < 0 on error, 0 if the phy wasn’t reset and 1 if the phy was reset.”…”�”}”(hjœ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mahj™:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜:h´Mbhjƒ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj :ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ genphy_setup_forced (C function)”Œc.genphy_setup_forced”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int genphy_setup_forced (struct phy_device *phydev)”h]”j )�”}”(hŒ2int genphy_setup_forced(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÝ:h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÙ:h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì:h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ:h²hh³jë:h´MÍubj3)�”}”(hŒgenphy_setup_forced”h]”j9)�”}”(hŒgenphy_setup_forced”h]”hŒgenphy_setup_forced”…”�”}”(hjþ:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjú:ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÙ:h²hh³jë:h´MÍubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj';h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj8;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:;Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j;sbŒc.genphy_setup_forced”†”asbuh1hhj;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;ubj )�”}”(hj h]”hŒ*”…”�”}”(hjf;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj;ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjs;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj;ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÙ:h²hh³jë:h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÕ:h²hh³jë:h´MÍubah}”(h]”jÐ:ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jë:h´MÍhjÒ:h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.configures/forces speed/duplex from **phydev**”h]”(hŒ$configures/forces speed/duplex from ”…”�”}”(hj�;h²hh³Nh´Nubj›)�”}”(hŒ **phydev**”h]”hŒphydev”…”�”}”(hj¥;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÍhjš;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÒ:h²hh³jë:h´MÍubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÃ;jŒjÃ;j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒè**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Configures MII_BMCR to force speed/duplex to the values in phydev. Assumes that the values are valid. Please see phy_sanitize_settings().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÍ;h]”hŒ Parameters”…”�”}”(hjÏ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjË;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÑhjÇ;ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjì;h]”hŒstruct phy_device *phydev”…”�”}”(hjî;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjê;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÎhjæ;ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j<h´MÎhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j<h´MÎhjã;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇ;ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj'<h]”hŒ Description”…”�”}”(hj)<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÐhjÇ;ubjß)�”}”(hhh]”jä)�”}”(hŒ‰Configures MII_BMCR to force speed/duplex to the values in phydev. Assumes that the values are valid. Please see phy_sanitize_settings().”h]”(jê)�”}”(hŒ)Configures MII_BMCR to force speed/duplex”h]”hŒ)Configures MII_BMCR to force speed/duplex”…”�”}”(hjD<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÑhj@<ubj)�”}”(hhh]”jl)�”}”(hŒ_to the values in phydev. Assumes that the values are valid. Please see phy_sanitize_settings().”h]”hŒ_to the values in phydev. Assumes that the values are valid. Please see phy_sanitize_settings().”…”�”}”(hjV<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jR<h´MÑhjS<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jR<h´MÑhj=<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇ;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ genphy_restart_aneg (C function)”Œc.genphy_restart_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int genphy_restart_aneg (struct phy_device *phydev)”h]”j )�”}”(hŒ2int genphy_restart_aneg(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj–<h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj’<h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M2 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’<h²hh³j¤<h´M2 ubj3)�”}”(hŒgenphy_restart_aneg”h]”j9)�”}”(hŒgenphy_restart_aneg”h]”hŒgenphy_restart_aneg”…”�”}”(hj·<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³<ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj’<h²hh³j¤<h´M2 ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÓ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ<ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjñ<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jó<Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¹<sbŒc.genphy_restart_aneg”†”asbuh1hhjÏ<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ<ubj )�”}”(hj h]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÏ<ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj,=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjË<ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj’<h²hh³j¤<h´M2 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŽ<h²hh³j¤<h´M2 ubah}”(h]”j‰<ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¤<h´M2 hj‹<h²hubjg)�”}”(hhh]”jl)�”}”(hŒ"Enable and Restart Autonegotiation”h]”hŒ"Enable and Restart Autonegotiation”…”�”}”(hjV=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M2 hjS=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‹<h²hh³j¤<h´M2 ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jn=jŒjn=j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒH**Parameters** ``struct phy_device *phydev`` target phy_device struct”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjx=h]”hŒ Parameters”…”�”}”(hjz=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjv=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M6 hjr=ubjß)�”}”(hhh]”jä)�”}”(hŒ6``struct phy_device *phydev`` target phy_device struct”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj—=h]”hŒstruct phy_device *phydev”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M8 hj‘=ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M3 hj­=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬=h´M8 hjŽ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjr=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*genphy_check_and_restart_aneg (C function)”Œc.genphy_check_and_restart_aneg”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKint genphy_check_and_restart_aneg (struct phy_device *phydev, bool restart)”h]”j )�”}”(hŒJint genphy_check_and_restart_aneg(struct phy_device *phydev, bool restart)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjñ=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjí=h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M> ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjí=h²hh³jÿ=h´M> ubj3)�”}”(hŒgenphy_check_and_restart_aneg”h]”j9)�”}”(hŒgenphy_check_and_restart_aneg”h]”hŒgenphy_check_and_restart_aneg”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjí=h²hh³jÿ=h´M> ubj¡ )�”}”(hŒ)(struct phy_device *phydev, bool restart)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj.>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*>ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjL>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jN>Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j>sbŒc.genphy_check_and_restart_aneg”†”asbuh1hhj*>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*>ubj )�”}”(hj h]”hŒ*”…”�”}”(hjz>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj*>ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj‡>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj&>ubj§ )�”}”(hŒ bool restart”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjœ>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœ>ubj9)�”}”(hŒrestart”h]”hŒrestart”…”�”}”(hj»>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj&>ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjí=h²hh³jÿ=h´M> ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjé=h²hh³jÿ=h´M> ubah}”(h]”jä=ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÿ=h´M> hjæ=h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Enable and restart auto-negotiation”h]”hŒ#Enable and restart auto-negotiation”…”�”}”(hjå>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M> hjâ>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjæ=h²hh³jÿ=h´M> ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jý>jŒjý>j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ¿**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool restart`` whether aneg restart is requested **Description** Check, and restart auto-negotiation if needed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj?h]”hŒ Parameters”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MB hj?ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj&?h]”hŒstruct phy_device *phydev”…”�”}”(hj(?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj$?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M? hj ?ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j;?h´M? hjlink to reflect the current link value. In order to do this, we need to read the status register twice, keeping the second value.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj>Fh]”hŒ Parameters”…”�”}”(hj@Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjlink to reflect the current link value. In order to do this, we need to read the status register twice, keeping the second value.”h]”(jê)�”}”(hŒ/Update the value in phydev->link to reflect the”h]”hŒ/Update the value in phydev->link to reflect the”…”�”}”(hjµFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÙ hj±Fubj)�”}”(hhh]”jl)�”}”(hŒncurrent link value. In order to do this, we need to read the status register twice, keeping the second value.”h]”hŒncurrent link value. In order to do this, we need to read the status register twice, keeping the second value.”…”�”}”(hjÇFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÃFh´MÙ hjÄFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃFh´MÙ hj®Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8Fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%genphy_read_status_fixed (C function)”Œc.genphy_read_status_fixed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8int genphy_read_status_fixed (struct phy_device *phydev)”h]”j )�”}”(hŒ7int genphy_read_status_fixed(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjGh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M9 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjGh²hh³jGh´M9 ubj3)�”}”(hŒgenphy_read_status_fixed”h]”j9)�”}”(hŒgenphy_read_status_fixed”h]”hŒgenphy_read_status_fixed”…”�”}”(hj(Gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$Gubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjGh²hh³jGh´M9 ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjDGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Gubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQGh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Gubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjbGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdGŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j*GsbŒc.genphy_read_status_fixed”†”asbuh1hhj@Gubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@Gubj )�”}”(hj h]”hŒ*”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@Gubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjsupported accordingly. **Return** 0 on success, < 0 on failure”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjOh]”hŒ Parameters”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjÿNubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj$Oh]”hŒstruct phy_device *phydev”…”�”}”(hj&Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mÿ hjOubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj=Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9Oh´Mÿ hj:Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9Oh´Mÿ hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÿNubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj_Oh]”hŒ Description”…”�”}”(hjaOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjÿNubjl)�”}”(hŒFReads the PHY's abilities and populates phydev->supported accordingly.”h]”hŒHReads the PHY’s abilities and populates phydev->supported accordingly.”…”�”}”(hjuOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjÿNubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj†Oh]”hŒReturn”…”�”}”(hjˆOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjÿNubjl)�”}”(hŒ0 on success, < 0 on failure”h]”hŒ0 on success, < 0 on failure”…”�”}”(hjœOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjÿNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phy_remove_link_mode (C function)”Œc.phy_remove_link_mode”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDvoid phy_remove_link_mode (struct phy_device *phydev, u32 link_mode)”h]”j )�”}”(hŒCvoid phy_remove_link_mode(struct phy_device *phydev, u32 link_mode)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjËOh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÇOh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŠ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚOh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÇOh²hh³jÙOh´MŠ ubj3)�”}”(hŒphy_remove_link_mode”h]”j9)�”}”(hŒphy_remove_link_mode”h]”hŒphy_remove_link_mode”…”�”}”(hjìOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèOubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÇOh²hh³jÙOh´MŠ ubj¡ )�”}”(hŒ*(struct phy_device *phydev, u32 link_mode)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj&Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j(PŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jîOsbŒc.phy_remove_link_mode”†”asbuh1hhjPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPubj )�”}”(hj h]”hŒ*”…”�”}”(hjTPh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjPubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjaPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPubj§ )�”}”(hŒ u32 link_mode”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj}Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjzPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jPŒmodname”NŒ classname”Njå jè )�”}”jë ]”jBPŒc.phy_remove_link_mode”†”asbuh1hhjvPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvPubj9)�”}”(hŒ link_mode”h]”hŒ link_mode”…”�”}”(hj©Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÇOh²hh³jÙOh´MŠ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÃOh²hh³jÙOh´MŠ ubah}”(h]”j¾Oah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÙOh´MŠ hjÀOh²hubjg)�”}”(hhh]”jl)�”}”(hŒRemove a supported link mode”h]”hŒRemove a supported link mode”…”�”}”(hjÓPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŠ hjÐPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÀOh²hh³jÙOh´MŠ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jëPjŒjëPj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX+**Parameters** ``struct phy_device *phydev`` phy_device structure to remove link mode from ``u32 link_mode`` Link mode to be removed **Description** Some MACs don't support all link modes which the PHY does. e.g. a 1G MAC often does not support 1000Half. Add a helper to remove a link mode.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjõPh]”hŒ Parameters”…”�”}”(hj÷Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóPubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŽ hjïPubjß)�”}”(hhh]”(jä)�”}”(hŒL``struct phy_device *phydev`` phy_device structure to remove link mode from ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjQh]”hŒstruct phy_device *phydev”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‹ hjQubj)�”}”(hhh]”jl)�”}”(hŒ-phy_device structure to remove link mode from”h]”hŒ-phy_device structure to remove link mode from”…”�”}”(hj-Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)Qh´M‹ hj*Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)Qh´M‹ hj Qubjä)�”}”(hŒ*``u32 link_mode`` Link mode to be removed ”h]”(jê)�”}”(hŒ``u32 link_mode``”h]”jð)�”}”(hjMQh]”hŒ u32 link_mode”…”�”}”(hjOQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKQubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŒ hjGQubj)�”}”(hhh]”jl)�”}”(hŒLink mode to be removed”h]”hŒLink mode to be removed”…”�”}”(hjfQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbQh´MŒ hjcQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbQh´MŒ hj Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjïPubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjˆQh]”hŒ Description”…”�”}”(hjŠQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŽ hjïPubjl)�”}”(hŒŽSome MACs don't support all link modes which the PHY does. e.g. a 1G MAC often does not support 1000Half. Add a helper to remove a link mode.”h]”hŒ�Some MACs don’t support all link modes which the PHY does. e.g. a 1G MAC often does not support 1000Half. Add a helper to remove a link mode.”…”�”}”(hjžQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŽ hjïPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phy_advertise_supported (C function)”Œc.phy_advertise_supported”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8void phy_advertise_supported (struct phy_device *phydev)”h]”j )�”}”(hŒ7void phy_advertise_supported(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍQh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÉQh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¢ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÉQh²hh³jÛQh´M¢ ubj3)�”}”(hŒphy_advertise_supported”h]”j9)�”}”(hŒphy_advertise_supported”h]”hŒphy_advertise_supported”…”�”}”(hjîQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêQubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÉQh²hh³jÛQh´M¢ ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj(Rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j*RŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jðQsbŒc.phy_advertise_supported”†”asbuh1hhjRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHRh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRubj )�”}”(hj h]”hŒ*”…”�”}”(hjVRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjRubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjcRh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjRubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÉQh²hh³jÛQh´M¢ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÅQh²hh³jÛQh´M¢ ubah}”(h]”jÀQah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÛQh´M¢ hjÂQh²hubjg)�”}”(hhh]”jl)�”}”(hŒAdvertise all supported modes”h]”hŒAdvertise all supported modes”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¢ hjŠRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÂQh²hh³jÛQh´M¢ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¥RjŒj¥Rj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ©**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Called to advertise all supported modes, doesn't touch pause mode advertising.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¯Rh]”hŒ Parameters”…”�”}”(hj±Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj­Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¦ hj©Rubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÎRh]”hŒstruct phy_device *phydev”…”�”}”(hjÐRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌRubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M£ hjÈRubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjçRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jãRh´M£ hjäRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãRh´M£ hjÅRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj©Rubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj Sh]”hŒ Description”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¥ hj©Rubjl)�”}”(hŒNCalled to advertise all supported modes, doesn't touch pause mode advertising.”h]”hŒPCalled to advertise all supported modes, doesn’t touch pause mode advertising.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¥ hj©Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_advertise_eee_all (C function)”Œc.phy_advertise_eee_all”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void phy_advertise_eee_all (struct phy_device *phydev)”h]”j )�”}”(hŒ5void phy_advertise_eee_all(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjNSh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjJSh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M³ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjJSh²hh³j\Sh´M³ ubj3)�”}”(hŒphy_advertise_eee_all”h]”j9)�”}”(hŒphy_advertise_eee_all”h]”hŒphy_advertise_eee_all”…”�”}”(hjoSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkSubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjJSh²hh³j\Sh´M³ ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‹Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡Subj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡Subh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj©Sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«SŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jqSsbŒc.phy_advertise_eee_all”†”asbuh1hhj‡Subj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡Subj )�”}”(hj h]”hŒ*”…”�”}”(hj×Sh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‡Subj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjäSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒSubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjJSh²hh³j\Sh´M³ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjFSh²hh³j\Sh´M³ ubah}”(h]”jASah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j\Sh´M³ hjCSh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Advertise all supported EEE modes”h]”hŒ!Advertise all supported EEE modes”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M³ hj Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjCSh²hh³j\Sh´M³ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j&TjŒj&Tj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¡**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Per default phylib preserves the EEE advertising at the time of phy probing, which might be a subset of the supported EEE modes. Use this function when all supported EEE modes should be advertised. This does not trigger auto-negotiation, so must be called before phy_start()/ phylink_start() which will start auto-negotiation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj0Th]”hŒ Parameters”…”�”}”(hj2Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M· hj*Tubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjOTh]”hŒstruct phy_device *phydev”…”�”}”(hjQTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M´ hjITubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjhTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdTh´M´ hjeTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjITubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdTh´M´ hjFTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj*Tubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŠTh]”hŒ Description”…”�”}”(hjŒTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjˆTubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¶ hj*Tubjl)�”}”(hXFPer default phylib preserves the EEE advertising at the time of phy probing, which might be a subset of the supported EEE modes. Use this function when all supported EEE modes should be advertised. This does not trigger auto-negotiation, so must be called before phy_start()/ phylink_start() which will start auto-negotiation.”h]”hXFPer default phylib preserves the EEE advertising at the time of phy probing, which might be a subset of the supported EEE modes. Use this function when all supported EEE modes should be advertised. This does not trigger auto-negotiation, so must be called before phy_start()/ phylink_start() which will start auto-negotiation.”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¶ hj*Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_support_eee (C function)”Œc.phy_support_eee”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void phy_support_eee (struct phy_device *phydev)”h]”j )�”}”(hŒ/void phy_support_eee(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÏTh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjËTh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÄ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËTh²hh³jÝTh´MÄ ubj3)�”}”(hŒphy_support_eee”h]”j9)�”}”(hŒphy_support_eee”h]”hŒphy_support_eee”…”�”}”(hjðTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjìTubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjËTh²hh³jÝTh´MÄ ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj*Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j,UŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jòTsbŒc.phy_support_eee”†”asbuh1hhjUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUubj )�”}”(hj h]”hŒ*”…”�”}”(hjXUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjUubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjeUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjUubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjËTh²hh³jÝTh´MÄ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÇTh²hh³jÝTh´MÄ ubah}”(h]”jÂTah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÝTh´MÄ hjÄTh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Set initial EEE policy configuration”h]”hŒ$Set initial EEE policy configuration”…”�”}”(hj�Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÄ hjŒUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÄTh²hh³jÝTh´MÄ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j§UjŒj§Uj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXÉ**Parameters** ``struct phy_device *phydev`` Target phy_device struct **Description** This function configures the initial policy for Energy Efficient Ethernet (EEE) on the specified PHY device, influencing that EEE capabilities are advertised before the link is established. It should be called during PHY registration by the MAC driver and/or the PHY driver (for SmartEEE PHYs) if MAC supports LPI or PHY is capable to compensate missing LPI functionality of the MAC. The function sets default EEE policy parameters, including preparing the PHY to advertise EEE capabilities based on hardware support. It also sets the expected configuration for Low Power Idle (LPI) in the MAC driver. If the PHY framework determines that both local and remote advertisements support EEE, and the negotiated link mode is compatible with EEE, it will set enable_tx_lpi = true. The MAC driver is expected to act on this setting by enabling the LPI timer if enable_tx_lpi is set.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj±Uh]”hŒ Parameters”…”�”}”(hj³Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÈ hj«Uubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` Target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÐUh]”hŒstruct phy_device *phydev”…”�”}”(hjÒUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÎUubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÅ hjÊUubj)�”}”(hhh]”jl)�”}”(hŒTarget phy_device struct”h]”hŒTarget phy_device struct”…”�”}”(hjéUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jåUh´MÅ hjæUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jåUh´MÅ hjÇUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj«Uubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj Vh]”hŒ Description”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÇ hj«Uubjl)�”}”(hXThis function configures the initial policy for Energy Efficient Ethernet (EEE) on the specified PHY device, influencing that EEE capabilities are advertised before the link is established. It should be called during PHY registration by the MAC driver and/or the PHY driver (for SmartEEE PHYs) if MAC supports LPI or PHY is capable to compensate missing LPI functionality of the MAC.”h]”hXThis function configures the initial policy for Energy Efficient Ethernet (EEE) on the specified PHY device, influencing that EEE capabilities are advertised before the link is established. It should be called during PHY registration by the MAC driver and/or the PHY driver (for SmartEEE PHYs) if MAC supports LPI or PHY is capable to compensate missing LPI functionality of the MAC.”…”�”}”(hj!Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÆ hj«Uubjl)�”}”(hŒ…The function sets default EEE policy parameters, including preparing the PHY to advertise EEE capabilities based on hardware support.”h]”hŒ…The function sets default EEE policy parameters, including preparing the PHY to advertise EEE capabilities based on hardware support.”…”�”}”(hj0Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÍ hj«Uubjl)�”}”(hXfIt also sets the expected configuration for Low Power Idle (LPI) in the MAC driver. If the PHY framework determines that both local and remote advertisements support EEE, and the negotiated link mode is compatible with EEE, it will set enable_tx_lpi = true. The MAC driver is expected to act on this setting by enabling the LPI timer if enable_tx_lpi is set.”h]”hXfIt also sets the expected configuration for Low Power Idle (LPI) in the MAC driver. If the PHY framework determines that both local and remote advertisements support EEE, and the negotiated link mode is compatible with EEE, it will set enable_tx_lpi = true. The MAC driver is expected to act on this setting by enabling the LPI timer if enable_tx_lpi is set.”…”�”}”(hj?Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÐ hj«Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_disable_eee (C function)”Œc.phy_disable_eee”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void phy_disable_eee (struct phy_device *phydev)”h]”j )�”}”(hŒ/void phy_disable_eee(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjnVh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjjVh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mï ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Vh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjVh²hh³j|Vh´Mï ubj3)�”}”(hŒphy_disable_eee”h]”j9)�”}”(hŒphy_disable_eee”h]”hŒphy_disable_eee”…”�”}”(hj�Vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Vubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjjVh²hh³j|Vh´Mï ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj«Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§Vubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Vh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§Vubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÉVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jËVŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‘VsbŒc.phy_disable_eee”†”asbuh1hhj§Vubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§Vubj )�”}”(hj h]”hŒ*”…”�”}”(hj÷Vh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj§Vubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Vubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjjVh²hh³j|Vh´Mï ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjfVh²hh³j|Vh´Mï ubah}”(h]”jaVah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j|Vh´Mï hjcVh²hubjg)�”}”(hhh]”jl)�”}”(hŒDisable EEE for the PHY”h]”hŒDisable EEE for the PHY”…”�”}”(hj.Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mï hj+Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjcVh²hh³j|Vh´Mï ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jFWjŒjFWj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÄ**Parameters** ``struct phy_device *phydev`` Target phy_device struct **Description** This function is used by MAC drivers for MAC's which don't support EEE. It disables EEE on the PHY layer.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjPWh]”hŒ Parameters”…”�”}”(hjRWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjNWubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mó hjJWubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` Target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjoWh]”hŒstruct phy_device *phydev”…”�”}”(hjqWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjmWubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mð hjiWubj)�”}”(hhh]”jl)�”}”(hŒTarget phy_device struct”h]”hŒTarget phy_device struct”…”�”}”(hjˆWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„Wh´Mð hj…Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„Wh´Mð hjfWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJWubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjªWh]”hŒ Description”…”�”}”(hj¬Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¨Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mò hjJWubjl)�”}”(hŒiThis function is used by MAC drivers for MAC's which don't support EEE. It disables EEE on the PHY layer.”h]”hŒmThis function is used by MAC drivers for MAC’s which don’t support EEE. It disables EEE on the PHY layer.”…”�”}”(hjÀWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mñ hjJWubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"phy_support_sym_pause (C function)”Œc.phy_support_sym_pause”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6void phy_support_sym_pause (struct phy_device *phydev)”h]”j )�”}”(hŒ5void phy_support_sym_pause(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjïWh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjëWh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjëWh²hh³jýWh´M ubj3)�”}”(hŒphy_support_sym_pause”h]”j9)�”}”(hŒphy_support_sym_pause”h]”hŒphy_support_sym_pause”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Xubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjëWh²hh³jýWh´M ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj,Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(Xubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Xh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(Xubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjJXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jLXŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jXsbŒc.phy_support_sym_pause”†”asbuh1hhj(Xubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(Xubj )�”}”(hj h]”hŒ*”…”�”}”(hjxXh²hh³Nh´Nubah•}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj(Xubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj…Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj$Xubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjëWh²hh³jýWh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjçWh²hh³jýWh´M ubah}”(h]”jâWah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jýWh´M hjäWh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#Enable support of symmetrical pause”h]”hŒ#Enable support of symmetrical pause”…”�”}”(hj¯Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hj¬Xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjäWh²hh³jýWh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÇXjŒjÇXj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ«**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Called by the MAC to indicate is supports symmetrical Pause, but not asym pause.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÑXh]”hŒ Parameters”…”�”}”(hjÓXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏXubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjËXubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjðXh]”hŒstruct phy_device *phydev”…”�”}”(hjòXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjêXubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jYh´M hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jYh´M hjçXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjËXubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj+Yh]”hŒ Description”…”�”}”(hj-Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjËXubjl)�”}”(hŒPCalled by the MAC to indicate is supports symmetrical Pause, but not asym pause.”h]”hŒPCalled by the MAC to indicate is supports symmetrical Pause, but not asym pause.”…”�”}”(hjAYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjËXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_support_asym_pause (C function)”Œc.phy_support_asym_pause”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void phy_support_asym_pause (struct phy_device *phydev)”h]”j )�”}”(hŒ6void phy_support_asym_pause(struct phy_device *phydev)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjpYh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjlYh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlYh²hh³j~Yh´M ubj3)�”}”(hŒphy_support_asym_pause”h]”j9)�”}”(hŒphy_support_asym_pause”h]”hŒphy_support_asym_pause”…”�”}”(hj‘Yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Yubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjlYh²hh³j~Yh´M ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj­Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©Yubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjËYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÍYŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j“YsbŒc.phy_support_asym_pause”†”asbuh1hhj©Yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj©Yubj )�”}”(hj h]”hŒ*”…”�”}”(hjùYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj©Yubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©Yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¥Yubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjlYh²hh³j~Yh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjhYh²hh³j~Yh´M ubah}”(h]”jcYah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j~Yh´M hjeYh²hubjg)�”}”(hhh]”jl)�”}”(hŒEnable support of asym pause”h]”hŒEnable support of asym pause”…”�”}”(hj0Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hj-Zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjeYh²hh³j~Yh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jHZjŒjHZj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Called by the MAC to indicate is supports Asym Pause.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjRZh]”hŒ Parameters”…”�”}”(hjTZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjPZubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjLZubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjqZh]”hŒstruct phy_device *phydev”…”�”}”(hjsZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjoZubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjkZubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjŠZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†Zh´M hj‡Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†Zh´M hjhZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLZubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¬Zh]”hŒ Description”…”�”}”(hj®Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjªZubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjLZubjl)�”}”(hŒ5Called by the MAC to indicate is supports Asym Pause.”h]”hŒ5Called by the MAC to indicate is supports Asym Pause.”…”�”}”(hjÂZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjLZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_set_sym_pause (C function)”Œc.phy_set_sym_pause”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRvoid phy_set_sym_pause (struct phy_device *phydev, bool rx, bool tx, bool autoneg)”h]”j )�”}”(hŒQvoid phy_set_sym_pause(struct phy_device *phydev, bool rx, bool tx, bool autoneg)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjñZh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjíZh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjíZh²hh³jÿZh´M ubj3)�”}”(hŒphy_set_sym_pause”h]”j9)�”}”(hŒphy_set_sym_pause”h]”hŒphy_set_sym_pause”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjíZh²hh³jÿZh´M ubj¡ )�”}”(hŒ;(struct phy_device *phydev, bool rx, bool tx, bool autoneg)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj.[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*[ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjL[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jN[Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j[sbŒc.phy_set_sym_pause”†”asbuh1hhj*[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj*[ubj )�”}”(hj h]”hŒ*”…”�”}”(hjz[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj*[ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj‡[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj&[ubj§ )�”}”(hŒbool rx”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjœ[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœ[ubj9)�”}”(hŒrx”h]”hŒrx”…”�”}”(hj»[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj&[ubj§ )�”}”(hŒbool tx”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÔ[h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÐ[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐ[ubj9)�”}”(hŒtx”h]”hŒtx”…”�”}”(hjï[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐ[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj&[ubj§ )�”}”(hŒ bool autoneg”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\ubj9)�”}”(hŒautoneg”h]”hŒautoneg”…”�”}”(hj#\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj&[ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjíZh²hh³jÿZh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjéZh²hh³jÿZh´M ubah}”(h]”jäZah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÿZh´M hjæZh²hubjg)�”}”(hhh]”jl)�”}”(hŒConfigure symmetric Pause”h]”hŒConfigure symmetric Pause”…”�”}”(hjM\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjJ\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjæZh²hh³jÿZh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹je\jŒje\j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXn**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool rx`` Receiver Pause is supported ``bool tx`` Transmit Pause is supported ``bool autoneg`` Auto neg should be used **Description** Configure advertised Pause support depending on if receiver pause and pause auto neg is supported. Generally called from the set_pauseparam .ndo.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjo\h]”hŒ Parameters”…”�”}”(hjq\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjm\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hji\ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjŽ\h]”hŒstruct phy_device *phydev”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjˆ\ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj§\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£\h´M hj¤\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£\h´M hj…\ubjä)�”}”(hŒ(``bool rx`` Receiver Pause is supported ”h]”(jê)�”}”(hŒ ``bool rx``”h]”jð)�”}”(hjÇ\h]”hŒbool rx”…”�”}”(hjÉ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjÁ\ubj)�”}”(hhh]”jl)�”}”(hŒReceiver Pause is supported”h]”hŒReceiver Pause is supported”…”�”}”(hjà\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜ\h´M hjÝ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜ\h´M hj…\ubjä)�”}”(hŒ(``bool tx`` Transmit Pause is supported ”h]”(jê)�”}”(hŒ ``bool tx``”h]”jð)�”}”(hj]h]”hŒbool tx”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hjú\ubj)�”}”(hhh]”jl)�”}”(hŒTransmit Pause is supported”h]”hŒTransmit Pause is supported”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j]h´M hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j]h´M hj…\ubjä)�”}”(hŒ)``bool autoneg`` Auto neg should be used ”h]”(jê)�”}”(hŒ``bool autoneg``”h]”jð)�”}”(hj9]h]”hŒ bool autoneg”…”�”}”(hj;]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hj3]ubj)�”}”(hhh]”jl)�”}”(hŒAuto neg should be used”h]”hŒAuto neg should be used”…”�”}”(hjR]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jN]h´M hjO]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jN]h´M hj…\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhji\ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjt]h]”hŒ Description”…”�”}”(hjv]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjr]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hji\ubjl)�”}”(hŒ‘Configure advertised Pause support depending on if receiver pause and pause auto neg is supported. Generally called from the set_pauseparam .ndo.”h]”hŒ‘Configure advertised Pause support depending on if receiver pause and pause auto neg is supported. Generally called from the set_pauseparam .ndo.”…”�”}”(hjŠ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M hji\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_set_asym_pause (C function)”Œc.phy_set_asym_pause”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEvoid phy_set_asym_pause (struct phy_device *phydev, bool rx, bool tx)”h]”j )�”}”(hŒDvoid phy_set_asym_pause(struct phy_device *phydev, bool rx, bool tx)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¹]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjµ]h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M2 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµ]h²hh³jÇ]h´M2 ubj3)�”}”(hŒphy_set_asym_pause”h]”j9)�”}”(hŒphy_set_asym_pause”h]”hŒphy_set_asym_pause”…”�”}”(hjÚ]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖ]ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjµ]h²hh³jÇ]h´M2 ubj¡ )�”}”(hŒ-(struct phy_device *phydev, bool rx, bool tx)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjö]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò]ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j^Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÜ]sbŒc.phy_set_asym_pause”†”asbuh1hhjò]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjò]ubj )�”}”(hj h]”hŒ*”…”�”}”(hjB^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjò]ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjO^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjî]ubj§ )�”}”(hŒbool rx”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjh^h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjd^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hju^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjd^ubj9)�”}”(hŒrx”h]”hŒrx”…”�”}”(hjƒ^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjd^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjî]ubj§ )�”}”(hŒbool tx”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjœ^h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj˜^ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜^ubj9)�”}”(hŒtx”h]”hŒtx”…”�”}”(hj·^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjî]ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjµ]h²hh³jÇ]h´M2 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj±]h²hh³jÇ]h´M2 ubah}”(h]”j¬]ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÇ]h´M2 hj®]h²hubjg)�”}”(hhh]”jl)�”}”(hŒConfigure Pause and Asym Pause”h]”hŒConfigure Pause and Asym Pause”…”�”}”(hjá^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M2 hjÞ^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®]h²hh³jÇ]h´M2 ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jù^jŒjù^j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX|**Parameters** ``struct phy_device *phydev`` target phy_device struct ``bool rx`` Receiver Pause is supported ``bool tx`` Transmit Pause is supported **Description** Configure advertised Pause support depending on if transmit and receiver pause is supported. If there has been a change in adverting, trigger a new autoneg. Generally called from the set_pauseparam .ndo.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj_h]”hŒ Parameters”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M6 hjý^ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj"_h]”hŒstruct phy_device *phydev”…”�”}”(hj$_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj _ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M3 hj_ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj;_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j7_h´M3 hj8_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j7_h´M3 hj_ubjä)�”}”(hŒ(``bool rx`` Receiver Pause is supported ”h]”(jê)�”}”(hŒ ``bool rx``”h]”jð)�”}”(hj[_h]”hŒbool rx”…”�”}”(hj]_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjY_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M4 hjU_ubj)�”}”(hhh]”jl)�”}”(hŒReceiver Pause is supported”h]”hŒReceiver Pause is supported”…”�”}”(hjt_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jp_h´M4 hjq_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jp_h´M4 hj_ubjä)�”}”(hŒ(``bool tx`` Transmit Pause is supported ”h]”(jê)�”}”(hŒ ``bool tx``”h]”jð)�”}”(hj”_h]”hŒbool tx”…”�”}”(hj–_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M5 hjŽ_ubj)�”}”(hhh]”jl)�”}”(hŒTransmit Pause is supported”h]”hŒTransmit Pause is supported”…”�”}”(hj­_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©_h´M5 hjª_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©_h´M5 hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjý^ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÏ_h]”hŒ Description”…”�”}”(hjÑ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÍ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M7 hjý^ubjl)�”}”(hŒËConfigure advertised Pause support depending on if transmit and receiver pause is supported. If there has been a change in adverting, trigger a new autoneg. Generally called from the set_pauseparam .ndo.”h]”hŒËConfigure advertised Pause support depending on if transmit and receiver pause is supported. If there has been a change in adverting, trigger a new autoneg. Generally called from the set_pauseparam .ndo.”…”�”}”(hjå_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M7 hjý^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_validate_pause (C function)”Œc.phy_validate_pause”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRbool phy_validate_pause (struct phy_device *phydev, struct ethtool_pauseparam *pp)”h]”j )�”}”(hŒQbool phy_validate_pause(struct phy_device *phydev, struct ethtool_pauseparam *pp)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj`h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MJ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`h²hh³j!`h´MJ ubj3)�”}”(hŒphy_validate_pause”h]”j9)�”}”(hŒphy_validate_pause”h]”hŒphy_validate_pause”…”�”}”(hj4`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0`ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj`h²hh³j!`h´MJ ubj¡ )�”}”(hŒ:(struct phy_device *phydev, struct ethtool_pauseparam *pp)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjP`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL`ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjn`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjk`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jp`Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j6`sbŒc.phy_validate_pause”†”asbuh1hhjL`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL`ubj )�”}”(hj h]”hŒ*”…”�”}”(hjœ`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjL`ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj©`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjL`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjH`ubj§ )�”}”(hŒstruct ethtool_pauseparam *pp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÂ`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾`ubh)�”}”(hhh]”j9)�”}”(hŒethtool_pauseparam”h]”hŒethtool_pauseparam”…”�”}”(hjà`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jâ`Œmodname”NŒ classname”Njå jè )�”}”jë ]”jŠ`Œc.phy_validate_pause”†”asbuh1hhj¾`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾`ubj )�”}”(hj h]”hŒ*”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¾`ubj9)�”}”(hŒpp”h]”hŒpp”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjH`ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj`h²hh³j!`h´MJ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj `h²hh³j!`h´MJ ubah}”(h]”j`ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j!`h´MJ hj `h²hubjg)�”}”(hhh]”jl)�”}”(hŒ3Test if the PHY/MAC support the pause configuration”h]”hŒ3Test if the PHY/MAC support the pause configuration”…”�”}”(hjCah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MJ hj@ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj `h²hh³j!`h´MJ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j[ajŒj[aj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX!**Parameters** ``struct phy_device *phydev`` phy_device struct ``struct ethtool_pauseparam *pp`` requested pause configuration **Description** Test if the PHY/MAC combination supports the Pause configuration the user is requesting. Returns True if it is supported, false otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjeah]”hŒ Parameters”…”�”}”(hjgah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjcaubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MN hj_aubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct phy_device *phydev`` phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj„ah]”hŒstruct phy_device *phydev”…”�”}”(hj†ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚aubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MK hj~aubj)�”}”(hhh]”jl)�”}”(hŒphy_device struct”h]”hŒphy_device struct”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™ah´MK hjšaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™ah´MK hj{aubjä)�”}”(hŒ@``struct ethtool_pauseparam *pp`` requested pause configuration ”h]”(jê)�”}”(hŒ!``struct ethtool_pauseparam *pp``”h]”jð)�”}”(hj½ah]”hŒstruct ethtool_pauseparam *pp”…”�”}”(hj¿ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»aubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´ML hj·aubj)�”}”(hhh]”jl)�”}”(hŒrequested pause configuration”h]”hŒrequested pause configuration”…”�”}”(hjÖah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒah´ML hjÓaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒah´ML hj{aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj_aubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjøah]”hŒ Description”…”�”}”(hjúah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöaubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MN hj_aubjl)�”}”(hŒŠTest if the PHY/MAC combination supports the Pause configuration the user is requesting. Returns True if it is supported, false otherwise.”h]”hŒŠTest if the PHY/MAC combination supports the Pause configuration the user is requesting. Returns True if it is supported, false otherwise.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MN hj_aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_get_pause (C function)”Œc.phy_get_pause”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNvoid phy_get_pause (struct phy_device *phydev, bool *tx_pause, bool *rx_pause)”h]”j )�”}”(hŒMvoid phy_get_pause(struct phy_device *phydev, bool *tx_pause, bool *rx_pause)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj=bh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj9bh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mc ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9bh²hh³jKbh´Mc ubj3)�”}”(hŒ phy_get_pause”h]”j9)�”}”(hŒ phy_get_pause”h]”hŒ phy_get_pause”…”�”}”(hj^bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZbubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj9bh²hh³jKbh´Mc ubj¡ )�”}”(hŒ;(struct phy_device *phydev, bool *tx_pause, bool *rx_pause)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjzbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvbubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj˜bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jšbŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j`bsbŒc.phy_get_pause”†”asbuh1hhjvbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvbubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjvbubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÓbh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjrbubj§ )�”}”(hŒbool *tx_pause”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjìbh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjèbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùbh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèbubj )�”}”(hj h]”hŒ*”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjèbubj9)�”}”(hŒtx_pause”h]”hŒtx_pause”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjrbubj§ )�”}”(hŒbool *rx_pause”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj-ch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj)cubj )�”}”(hj h]”hŒ*”…”�”}”(hjHch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj)cubj9)�”}”(hŒrx_pause”h]”hŒrx_pause”…”�”}”(hjUch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjrbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj9bh²hh³jKbh´Mc ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj5bh²hh³jKbh´Mc ubah}”(h]”j0bah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jKbh´Mc hj2bh²hubjg)�”}”(hhh]”jl)�”}”(hŒresolve negotiated pause modes”h]”hŒresolve negotiated pause modes”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mc hj|ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj2bh²hh³jKbh´Mc ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j—cjŒj—cj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXÑ**Parameters** ``struct phy_device *phydev`` phy_device struct ``bool *tx_pause`` pointer to bool to indicate whether transmit pause should be enabled. ``bool *rx_pause`` pointer to bool to indicate whether receive pause should be enabled. **Description** Resolve and return the flow control modes according to the negotiation result. This includes checking that we are operating in full duplex mode. See linkmode_resolve_pause() for further details.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¡ch]”hŒ Parameters”…”�”}”(hj£ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸcubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mg hj›cubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct phy_device *phydev`` phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjÀch]”hŒstruct phy_device *phydev”…”�”}”(hjÂch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾cubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Md hjºcubj)�”}”(hhh]”jl)�”}”(hŒphy_device struct”h]”hŒphy_device struct”…”�”}”(hjÙch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕch´Md hjÖcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕch´Md hj·cubjä)�”}”(hŒY``bool *tx_pause`` pointer to bool to indicate whether transmit pause should be enabled. ”h]”(jê)�”}”(hŒ``bool *tx_pause``”h]”jð)�”}”(hjùch]”hŒbool *tx_pause”…”�”}”(hjûch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷cubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mf hjócubj)�”}”(hhh]”jl)�”}”(hŒEpointer to bool to indicate whether transmit pause should be enabled.”h]”hŒEpointer to bool to indicate whether transmit pause should be enabled.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Me hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjócubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdh´Mf hj·cubjä)�”}”(hŒX``bool *rx_pause`` pointer to bool to indicate whether receive pause should be enabled. ”h]”(jê)�”}”(hŒ``bool *rx_pause``”h]”jð)�”}”(hj3dh]”hŒbool *rx_pause”…”�”}”(hj5dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1dubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mh hj-dubj)�”}”(hhh]”jl)�”}”(hŒDpointer to bool to indicate whether receive pause should be enabled.”h]”hŒDpointer to bool to indicate whether receive pause should be enabled.”…”�”}”(hjLdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mg hjIdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHdh´Mh hj·cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj›cubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjodh]”hŒ Description”…”�”}”(hjqdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjmdubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mj hj›cubjl)�”}”(hŒÂResolve and return the flow control modes according to the negotiation result. This includes checking that we are operating in full duplex mode. See linkmode_resolve_pause() for further details.”h]”hŒÂResolve and return the flow control modes according to the negotiation result. This includes checking that we are operating in full duplex mode. See linkmode_resolve_pause() for further details.”…”�”}”(hj…dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mi hj›cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_get_internal_delay (C function)”Œc.phy_get_internal_delay”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒes32 phy_get_internal_delay (struct phy_device *phydev, const int *delay_values, int size, bool is_rx)”h]”j )�”}”(hŒds32 phy_get_internal_delay(struct phy_device *phydev, const int *delay_values, int size, bool is_rx)”h]”(h)�”}”(hhh]”j9)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj·dh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¹dŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œphy_get_internal_delay”sbŒc.phy_get_internal_delay”†”asbuh1hhj°dh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‰ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙdh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°dh²hh³jØdh´M‰ ubj3)�”}”(hŒphy_get_internal_delay”h]”j9)�”}”(hjÕdh]”hŒphy_get_internal_delay”…”�”}”(hjëdh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçdubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj°dh²hh³jØdh´M‰ ubj¡ )�”}”(hŒJ(struct phy_device *phydev, const int *delay_values, int size, bool is_rx)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj$eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j&eŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÓdŒc.phy_get_internal_delay”†”asbuh1hhjeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeubj )�”}”(hj h]”hŒ*”…”�”}”(hjPeh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjeubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj]eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjþdubj§ )�”}”(hŒconst int *delay_values”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjveh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjreubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjreubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‘eh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjreubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjreubj )�”}”(hj h]”hŒ*”…”�”}”(hj­eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjreubj9)�”}”(hŒ delay_values”h]”hŒ delay_values”…”�”}”(hjºeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjreubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjþdubj§ )�”}”(hŒint size”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÓeh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏeubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏeubj9)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjïeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjþdubj§ )�”}”(hŒ bool is_rx”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfubj9)�”}”(hŒis_rx”h]”hŒis_rx”…”�”}”(hj#fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjþdubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj°dh²hh³jØdh´M‰ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¬dh²hh³jØdh´M‰ ubah}”(h]”j§dah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jØdh´M‰ hj©dh²hubjg)�”}”(hhh]”jl)�”}”(hŒ'returns the index of the internal delay”h]”hŒ'returns the index of the internal delay”…”�”}”(hjMfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‰ hjJfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj©dh²hh³jØdh´M‰ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jefjŒjefj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¸**Parameters** ``struct phy_device *phydev`` phy_device struct ``const int *delay_values`` array of delays the PHY supports ``int size`` the size of the delay array ``bool is_rx`` boolean to indicate to get the rx internal delay **Description** Returns the index within the array of internal delay passed in. If the device property is not present then the interface type is checked if the interface defines use of internal delay then a 1 is returned otherwise a 0 is returned. The array must be in ascending order. If PHY does not have an ascending order array then size = 0 and the value of the delay property is returned. Return -EINVAL if the delay is invalid or cannot be found.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjofh]”hŒ Parameters”…”�”}”(hjqfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjmfubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M� hjifubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct phy_device *phydev`` phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjŽfh]”hŒstruct phy_device *phydev”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŠ hjˆfubj)�”}”(hhh]”jl)�”}”(hŒphy_device struct”h]”hŒphy_device struct”…”�”}”(hj§fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£fh´MŠ hj¤fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£fh´MŠ hj…fubjä)�”}”(hŒ=``const int *delay_values`` array of delays the PHY supports ”h]”(jê)�”}”(hŒ``const int *delay_values``”h]”jð)�”}”(hjÇfh]”hŒconst int *delay_values”…”�”}”(hjÉfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‹ hjÁfubj)�”}”(hhh]”jl)�”}”(hŒ array of delays the PHY supports”h]”hŒ array of delays the PHY supports”…”�”}”(hjàfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜfh´M‹ hjÝfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜfh´M‹ hj…fubjä)�”}”(hŒ)``int size`` the size of the delay array ”h]”(jê)�”}”(hŒ ``int size``”h]”jð)�”}”(hjgh]”hŒint size”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþfubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŒ hjúfubj)�”}”(hhh]”jl)�”}”(hŒthe size of the delay array”h]”hŒthe size of the delay array”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jgh´MŒ hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jgh´MŒ hj…fubjä)�”}”(hŒ@``bool is_rx`` boolean to indicate to get the rx internal delay ”h]”(jê)�”}”(hŒ``bool is_rx``”h]”jð)�”}”(hj9gh]”hŒ bool is_rx”…”�”}”(hj;gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7gubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M� hj3gubj)�”}”(hhh]”jl)�”}”(hŒ0boolean to indicate to get the rx internal delay”h]”hŒ0boolean to indicate to get the rx internal delay”…”�”}”(hjRgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNgh´M� hjOgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNgh´M� hj…fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjifubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjtgh]”hŒ Description”…”�”}”(hjvgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjrgubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M� hjifubjl)�”}”(hXµReturns the index within the array of internal delay passed in. If the device property is not present then the interface type is checked if the interface defines use of internal delay then a 1 is returned otherwise a 0 is returned. The array must be in ascending order. If PHY does not have an ascending order array then size = 0 and the value of the delay property is returned. Return -EINVAL if the delay is invalid or cannot be found.”h]”hXµReturns the index within the array of internal delay passed in. If the device property is not present then the interface type is checked if the interface defines use of internal delay then a 1 is returned otherwise a 0 is returned. The array must be in ascending order. If PHY does not have an ascending order array then size = 0 and the value of the delay property is returned. Return -EINVAL if the delay is invalid or cannot be found.”…”�”}”(hjŠgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MŽ hjifubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phy_get_tx_amplitude_gain (C function)”Œc.phy_get_tx_amplitude_gain”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ„int phy_get_tx_amplitude_gain (struct phy_device *phydev, struct device *dev, enum ethtool_link_mode_bit_indices linkmode, u32 *val)”h]”j )�”}”(hŒƒint phy_get_tx_amplitude_gain(struct phy_device *phydev, struct device *dev, enum ethtool_link_mode_bit_indices linkmode, u32 *val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¹gh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjµgh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MØ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈgh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjµgh²hh³jÇgh´MØ ubj3)�”}”(hŒphy_get_tx_amplitude_gain”h]”j9)�”}”(hŒphy_get_tx_amplitude_gain”h]”hŒphy_get_tx_amplitude_gain”…”�”}”(hjÚgh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖgubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjµgh²hh³jÇgh´MØ ubj¡ )�”}”(hŒf(struct phy_device *phydev, struct device *dev, enum ethtool_link_mode_bit_indices linkmode, u32 *val)”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjögh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjògubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjògubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jhŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÜgsbŒc.phy_get_tx_amplitude_gain”†”asbuh1hhjògubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjògubj )�”}”(hj h]”hŒ*”…”�”}”(hjBhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjògubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjOhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjògubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîgubj§ )�”}”(hŒstruct device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjhhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdhubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdhubh)�”}”(hhh]”j9)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj†hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jˆhŒmodname”NŒ classname”Njå jè )�”}”jë ]”j0hŒc.phy_get_tx_amplitude_gain”†”asbuh1hhjdhubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤hh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdhubj )�”}”(hj h]”hŒ*”…”�”}”(hj²hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjdhubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¿hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîgubj§ )�”}”(hŒ+enum ethtool_link_mode_bit_indices linkmode”h]”(j)�”}”(hj÷h]”hŒenum”…”�”}”(hjØhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔhubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåhh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔhubh)�”}”(hhh]”j9)�”}”(hŒethtool_link_mode_bit_indices”h]”hŒethtool_link_mode_bit_indices”…”�”}”(hjöhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jøhŒmodname”NŒ classname”Njå jè )�”}”jë ]”j0hŒc.phy_get_tx_amplitude_gain”†”asbuh1hhjÔhubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔhubj9)�”}”(hŒlinkmode”h]”hŒlinkmode”…”�”}”(hj"ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîgubj§ )�”}”(hŒu32 *val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj>ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j@iŒmodname”NŒ classname”Njå jè )�”}”jë ]”j0hŒc.phy_get_tx_amplitude_gain”†”asbuh1hhj7iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj7iubj )�”}”(hj h]”hŒ*”…”�”}”(hjjih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj7iubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjwih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjîgubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjµgh²hh³jÇgh´MØ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj±gh²hh³jÇgh´MØ ubah}”(h]”j¬gah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÇgh´MØ hj®gh²hubjg)�”}”(hhh]”jl)�”}”(hŒ#stores tx amplitude gain in **val**”h]”(hŒstores tx amplitude gain in ”…”�”}”(hj¡ih²hh³Nh´Nubj›)�”}”(hŒ**val**”h]”hŒval”…”�”}”(hj©ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¡iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MØ hjžih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®gh²hh³jÇgh´MØ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÇijŒjÇij�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX<**Parameters** ``struct phy_device *phydev`` phy_device struct ``struct device *dev`` pointer to the devices device struct ``enum ethtool_link_mode_bit_indices linkmode`` linkmode for which the tx amplitude gain should be retrieved ``u32 *val`` tx amplitude gain **Return** 0 on success, < 0 on failure”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÑih]”hŒ Parameters”…”�”}”(hjÓih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏiubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÜ hjËiubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct phy_device *phydev`` phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjðih]”hŒstruct phy_device *phydev”…”�”}”(hjòih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîiubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÙ hjêiubj)�”}”(hhh]”jl)�”}”(hŒphy_device struct”h]”hŒphy_device struct”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jjh´MÙ hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jjh´MÙ hjçiubjä)�”}”(hŒ<``struct device *dev`` pointer to the devices device struct ”h]”(jê)�”}”(hŒ``struct device *dev``”h]”jð)�”}”(hj)jh]”hŒstruct device *dev”…”�”}”(hj+jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'jubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÚ hj#jubj)�”}”(hhh]”jl)�”}”(hŒ$pointer to the devices device struct”h]”hŒ$pointer to the devices device struct”…”�”}”(hjBjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>jh´MÚ hj?jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>jh´MÚ hjçiubjä)�”}”(hŒm``enum ethtool_link_mode_bit_indices linkmode`` linkmode for which the tx amplitude gain should be retrieved ”h]”(jê)�”}”(hŒ/``enum ethtool_link_mode_bit_indices linkmode``”h]”jð)�”}”(hjbjh]”hŒ+enum ethtool_link_mode_bit_indices linkmode”…”�”}”(hjdjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`jubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÛ hj\jubj)�”}”(hhh]”jl)�”}”(hŒksbŒc.phy_get_mac_termination”†”asbuh1hhjTkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTkubj )�”}”(hj h]”hŒ*”…”�”}”(hj¤kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjTkubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj±kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPkubj§ )�”}”(hŒstruct device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÊkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆkubh)�”}”(hhh]”j9)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjèkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jêkŒmodname”NŒ classname”Njå jè )�”}”jë ]”j’kŒc.phy_get_mac_termination”†”asbuh1hhjÆkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÆkubj )�”}”(hj h]”hŒ*”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÆkubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj!lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPkubj§ )�”}”(hŒu32 *val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj=lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j?lŒmodname”NŒ classname”Njå jè )�”}”jë ]”j’kŒc.phy_get_mac_termination”†”asbuh1hhj6lubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj6lubj )�”}”(hj h]”hŒ*”…”�”}”(hjilh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj6lubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjvlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjPkubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjkh²hh³j)kh´Mð ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjkh²hh³j)kh´Mð ubah}”(h]”jkah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j)kh´Mð hjkh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!stores MAC termination in **val**”h]”(hŒstores MAC termination in ”…”�”}”(hj lh²hh³Nh´Nubj›)�”}”(hŒ**val**”h]”hŒval”…”�”}”(hj¨lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mð hj�lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjkh²hh³j)kh´Mð ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÆljŒjÆlj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÊ**Parameters** ``struct phy_device *phydev`` phy_device struct ``struct device *dev`` pointer to the devices device struct ``u32 *val`` MAC termination **Return** 0 on success, < 0 on failure”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÐlh]”hŒ Parameters”…”�”}”(hjÒlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÎlubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mô hjÊlubjß)�”}”(hhh]”(jä)�”}”(hŒ0``struct phy_device *phydev`` phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjïlh]”hŒstruct phy_device *phydev”…”�”}”(hjñlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjílubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mñ hjélubj)�”}”(hhh]”jl)�”}”(hŒphy_device struct”h]”hŒphy_device struct”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jmh´Mñ hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjélubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jmh´Mñ hjælubjä)�”}”(hŒ<``struct device *dev`` pointer to the devices device struct ”h]”(jê)�”}”(hŒ``struct device *dev``”h]”jð)�”}”(hj(mh]”hŒstruct device *dev”…”�”}”(hj*mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&mubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mò hj"mubj)�”}”(hhh]”jl)�”}”(hŒ$pointer to the devices device struct”h]”hŒ$pointer to the devices device struct”…”�”}”(hjAmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j=mh´Mò hj>mubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=mh´Mò hjælubjä)�”}”(hŒ``u32 *val`` MAC termination ”h]”(jê)�”}”(hŒ ``u32 *val``”h]”jð)�”}”(hjamh]”hŒu32 *val”…”�”}”(hjcmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_mubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mó hj[mubj)�”}”(hhh]”jl)�”}”(hŒMAC termination”h]”hŒMAC termination”…”�”}”(hjzmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvmh´Mó hjwmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvmh´Mó hjælubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊlubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjœmh]”hŒReturn”…”�”}”(hjžmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjšmubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mõ hjÊlubjl)�”}”(hŒ0 on success, < 0 on failure”h]”hŒ0 on success, < 0 on failure”…”�”}”(hj²mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mõ hjÊlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_get_sfp_port (C function)”Œc.phy_get_sfp_port”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>struct phy_port * phy_get_sfp_port (struct phy_device *phydev)”h]”j )�”}”(hŒSets the phy_port controlling the MII this PHY is attached to.”h]”hŒ>Sets the phy_port controlling the MII this PHY is attached to.”…”�”}”(hjÍph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M€hjÊph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj’oh²hh³j«oh´M€ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jåpjŒjåpj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ®**Parameters** ``struct phy_device *phydev`` pointer to the PHY device we set the upstream of. ``struct phy_port *port`` The phy_port upstream of this PHY, can be NULL.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjïph]”hŒ Parameters”…”�”}”(hjñph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjípubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M„hjépubjß)�”}”(hhh]”(jä)�”}”(hŒP``struct phy_device *phydev`` pointer to the PHY device we set the upstream of. ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjqh]”hŒstruct phy_device *phydev”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj qubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M‚hjqubj)�”}”(hhh]”jl)�”}”(hŒ1pointer to the PHY device we set the upstream of.”h]”hŒ1pointer to the PHY device we set the upstream of.”…”�”}”(hj'qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#qh´M‚hj$qubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#qh´M‚hjqubjä)�”}”(hŒI``struct phy_port *port`` The phy_port upstream of this PHY, can be NULL.”h]”(jê)�”}”(hŒ``struct phy_port *port``”h]”jð)�”}”(hjGqh]”hŒstruct phy_port *port”…”�”}”(hjIqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEqubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M„hjAqubj)�”}”(hhh]”jl)�”}”(hŒ/The phy_port upstream of this PHY, can be NULL.”h]”hŒ/The phy_port upstream of this PHY, can be NULL.”…”�”}”(hj`qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mƒhj]qubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\qh´M„hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjépubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$fwnode_mdio_find_device (C function)”Œc.fwnode_mdio_find_device”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKstruct mdio_device * fwnode_mdio_find_device (struct fwnode_handle *fwnode)”h]”j )�”}”(hŒIstruct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¡qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�qh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�qh²hh³j®qh´M“ubh)�”}”(hhh]”j9)�”}”(hŒ mdio_device”h]”hŒ mdio_device”…”�”}”(hjÀqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÂqŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œfwnode_mdio_find_device”sbŒc.fwnode_mdio_find_device”†”asbuh1hhj�qh²hh³j®qh´M“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáqh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�qh²hh³j®qh´M“ubj )�”}”(hj h]”hŒ*”…”�”}”(hjïqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�qh²hh³j®qh´M“ubj3)�”}”(hŒfwnode_mdio_find_device”h]”j9)�”}”(hjÞqh]”hŒfwnode_mdio_find_device”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüqubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�qh²hh³j®qh´M“ubj¡ )�”}”(hŒ(struct fwnode_handle *fwnode)”h]”j§ )�”}”(hŒstruct fwnode_handle *fwnode”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrubh)�”}”(hhh]”j9)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj9rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j;rŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÜqŒc.fwnode_mdio_find_device”†”asbuh1hhjrubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjrubj )�”}”(hj h]”hŒ*”…”�”}”(hjerh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjrubj9)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjrrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjrubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�qh²hh³j®qh´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj™qh²hh³j®qh´M“ubah}”(h]”j”qah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j®qh´M“hj–qh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Given a fwnode, find the mdio_device”h]”hŒ$Given a fwnode, find the mdio_device”…”�”}”(hjœrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M“hj™rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj–qh²hh³j®qh´M“ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j´rjŒj´rj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX3**Parameters** ``struct fwnode_handle *fwnode`` pointer to the mdio_device's fwnode **Description** If successful, returns a pointer to the mdio_device with the embedded struct device refcount incremented by one, or NULL on failure. The caller should call put_device() on the mdio_device after its use.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¾rh]”hŒ Parameters”…”�”}”(hjÀrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼rubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M—hj¸rubjß)�”}”(hhh]”jä)�”}”(hŒE``struct fwnode_handle *fwnode`` pointer to the mdio_device's fwnode ”h]”(jê)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”jð)�”}”(hjÝrh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hjßrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M”hj×rubj)�”}”(hhh]”jl)�”}”(hŒ#pointer to the mdio_device's fwnode”h]”hŒ%pointer to the mdio_device’s fwnode”…”�”}”(hjörh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jòrh´M”hjórubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jòrh´M”hjÔrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸rubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjsh]”hŒ Description”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M–hj¸rubjl)�”}”(hŒÊIf successful, returns a pointer to the mdio_device with the embedded struct device refcount incremented by one, or NULL on failure. The caller should call put_device() on the mdio_device after its use.”h]”hŒÊIf successful, returns a pointer to the mdio_device with the embedded struct device refcount incremented by one, or NULL on failure. The caller should call put_device() on the mdio_device after its use.”…”�”}”(hj.sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M•hj¸rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#fwnode_phy_find_device (C function)”Œc.fwnode_phy_find_device”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMstruct phy_device * fwnode_phy_find_device (struct fwnode_handle *phy_fwnode)”h]”j )�”}”(hŒKstruct phy_device *fwnode_phy_find_device(struct fwnode_handle *phy_fwnode)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj]sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYsh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´Mªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjksh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYsh²hh³jjsh´Mªubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj|sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjysubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j~sŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œfwnode_phy_find_device”sbŒc.fwnode_phy_find_device”†”asbuh1hhjYsh²hh³jjsh´Mªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYsh²hh³jjsh´Mªubj )�”}”(hj h]”hŒ*”…”�”}”(hj«sh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjYsh²hh³jjsh´Mªubj3)�”}”(hŒfwnode_phy_find_device”h]”j9)�”}”(hjšsh]”hŒfwnode_phy_find_device”…”�”}”(hj¼sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸subah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjYsh²hh³jjsh´Mªubj¡ )�”}”(hŒ"(struct fwnode_handle *phy_fwnode)”h]”j§ )�”}”(hŒ struct fwnode_handle *phy_fwnode”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj×sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäsh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓsubh)�”}”(hhh]”j9)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjõsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j÷sŒmodname”NŒ classname”Njå jè )�”}”jë ]”j˜sŒc.fwnode_phy_find_device”†”asbuh1hhjÓsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓsubj )�”}”(hj h]”hŒ*”…”�”}”(hj!th²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÓsubj9)�”}”(hŒ phy_fwnode”h]”hŒ phy_fwnode”…”�”}”(hj.th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏsubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjYsh²hh³jjsh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjUsh²hh³jjsh´Mªubah}”(h]”jPsah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jjsh´MªhjRsh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)For provided phy_fwnode, find phy_device.”h]”hŒ)For provided phy_fwnode, find phy_device.”…”�”}”(hjXth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MªhjUth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjRsh²hh³jjsh´Mªubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jptjŒjptj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒé**Parameters** ``struct fwnode_handle *phy_fwnode`` Pointer to the phy's fwnode. **Description** If successful, returns a pointer to the phy_device with the embedded struct device refcount incremented by one, or NULL on failure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjzth]”hŒ Parameters”…”�”}”(hj|th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjxtubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M®hjttubjß)�”}”(hhh]”jä)�”}”(hŒB``struct fwnode_handle *phy_fwnode`` Pointer to the phy's fwnode. ”h]”(jê)�”}”(hŒ$``struct fwnode_handle *phy_fwnode``”h]”jð)�”}”(hj™th]”hŒ struct fwnode_handle *phy_fwnode”…”�”}”(hj›th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—tubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M¬hj“tubj)�”}”(hhh]”jl)�”}”(hŒPointer to the phy's fwnode.”h]”hŒPointer to the phy’s fwnode.”…”�”}”(hj²th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j®th´M¬hj¯tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j®th´M¬hj�tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjttubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÔth]”hŒ Description”…”�”}”(hjÖth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒtubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M®hjttubjl)�”}”(hŒƒIf successful, returns a pointer to the phy_device with the embedded struct device refcount incremented by one, or NULL on failure.”h]”hŒƒIf successful, returns a pointer to the phy_device with the embedded struct device refcount incremented by one, or NULL on failure.”…”�”}”(hjêth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´M­hjttubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ fwnode_get_phy_node (C function)”Œc.fwnode_get_phy_node”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒOstruct fwnode_handle * fwnode_get_phy_node (const struct fwnode_handle *fwnode)”h]”j )�”}”(hŒMstruct fwnode_handle *fwnode_get_phy_node(const struct fwnode_handle *fwnode)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuh²hh³j&uh´MÃubh)�”}”(hhh]”j9)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj8uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j:uŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œfwnode_get_phy_node”sbŒc.fwnode_get_phy_node”†”asbuh1hhjuh²hh³j&uh´MÃubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjuh²hh³j&uh´MÃubj )�”}”(hj h]”hŒ*”…”�”}”(hjguh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjuh²hh³j&uh´MÃubj3)�”}”(hŒfwnode_get_phy_node”h]”j9)�”}”(hjVuh]”hŒfwnode_get_phy_node”…”�”}”(hjxuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtuubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjuh²hh³j&uh´MÃubj¡ )�”}”(hŒ$(const struct fwnode_handle *fwnode)”h]”j§ )�”}”(hŒ"const struct fwnode_handle *fwnode”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj“uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�uubj)�”}”(hjh]”hŒstruct”…”�”}”(hj®uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�uubh)�”}”(hhh]”j9)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjÌuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÎuŒmodname”NŒ classname”Njå jè )�”}”jë ]”jTuŒc.fwnode_get_phy_node”†”asbuh1hhj�uubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�uubj )�”}”(hj h]”hŒ*”…”�”}”(hjøuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj�uubj9)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj‹uubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjuh²hh³j&uh´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjuh²hh³j&uh´MÃubah}”(h]”j uah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j&uh´MÃhjuh²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Get the phy_node using the named reference.”h]”hŒ+Get the phy_node using the named reference.”…”�”}”(hj/vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÃhj,vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjuh²hh³j&uh´MÃubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jGvjŒjGvj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXe**Parameters** ``const struct fwnode_handle *fwnode`` Pointer to fwnode from which phy_node has to be obtained. **Description** Refer return conditions of fwnode_find_reference(). For ACPI, only "phy-handle" is supported. Legacy DT properties "phy" and "phy-device" are not supported in ACPI. DT supports all the three named references to the phy node.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjQvh]”hŒ Parameters”…”�”}”(hjSvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOvubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÇhjKvubjß)�”}”(hhh]”jä)�”}”(hŒa``const struct fwnode_handle *fwnode`` Pointer to fwnode from which phy_node has to be obtained. ”h]”(jê)�”}”(hŒ&``const struct fwnode_handle *fwnode``”h]”jð)�”}”(hjpvh]”hŒ"const struct fwnode_handle *fwnode”…”�”}”(hjrvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjnvubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÄhjjvubj)�”}”(hhh]”jl)�”}”(hŒ9Pointer to fwnode from which phy_node has to be obtained.”h]”hŒ9Pointer to fwnode from which phy_node has to be obtained.”…”�”}”(hj‰vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…vh´MÄhj†vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…vh´MÄhjgvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjKvubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj«vh]”hŒ Description”…”�”}”(hj­vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÆhjKvubjl)�”}”(hŒàRefer return conditions of fwnode_find_reference(). For ACPI, only "phy-handle" is supported. Legacy DT properties "phy" and "phy-device" are not supported in ACPI. DT supports all the three named references to the phy node.”h]”hŒìRefer return conditions of fwnode_find_reference(). For ACPI, only “phy-handleâ€� is supported. Legacy DT properties “phyâ€� and “phy-deviceâ€� are not supported in ACPI. DT supports all the three named references to the phy node.”…”�”}”(hjÁvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:128: ./drivers/net/phy/phy_device.c”h´MÅhjKvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_uses_state_machine (C function)”Œc.phy_uses_state_machine”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7bool phy_uses_state_machine (struct phy_device *phydev)”h]”j )�”}”(hŒ6bool phy_uses_state_machine(struct phy_device *phydev)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjðvh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjìvh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþvh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjìvh²hh³jývh´M ubj3)�”}”(hŒphy_uses_state_machine”h]”j9)�”}”(hŒphy_uses_state_machine”h]”hŒphy_uses_state_machine”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj wubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjìvh²hh³jývh´M ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj,wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(wubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjJwh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jLwŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jwsbŒc.phy_uses_state_machine”†”asbuh1hhj(wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(wubj )�”}”(hj h]”hŒ*”…”�”}”(hjxwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj(wubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj…wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj$wubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjìvh²hh³jývh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjèvh²hh³jývh´M ubah}”(h]”jãvah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jývh´M hjåvh²hubjg)�”}”(hhh]”jl)�”}”(hŒ3test whether consumer driver uses PAL state machine”h]”hŒ3test whether consumer driver uses PAL state machine”…”�”}”(hj¯wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M hj¬wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjåvh²hh³jývh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÇwjŒjÇwj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXÁ**Parameters** ``struct phy_device *phydev`` the target PHY device structure **Description** Ultimately, this aims to indirectly determine whether the PHY is attached to a consumer which uses the state machine by calling phy_start() and phy_stop(). When the PHY driver consumer uses phylib, it must have previously called phy_connect_direct() or one of its derivatives, so that phy_prepare_link() has set up a hook for monitoring state changes. When the PHY driver is used by the MAC driver consumer through phylink (the only other provider of a phy_link_change() method), using the PHY state machine is not optional. **Return** true if consumer calls phy_start() and phy_stop(), false otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÑwh]”hŒ Parameters”…”�”}”(hjÓwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏwubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M hjËwubjß)�”}”(hhh]”jä)�”}”(hŒ>``struct phy_device *phydev`` the target PHY device structure ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjðwh]”hŒstruct phy_device *phydev”…”�”}”(hjòwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîwubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M hjêwubj)�”}”(hhh]”jl)�”}”(hŒthe target PHY device structure”h]”hŒthe target PHY device structure”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxh´M hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxh´M hjçwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjËwubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj+xh]”hŒ Description”…”�”}”(hj-xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)xubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M hjËwubjl)�”}”(hŒ›Ultimately, this aims to indirectly determine whether the PHY is attached to a consumer which uses the state machine by calling phy_start() and phy_stop().”h]”hŒ›Ultimately, this aims to indirectly determine whether the PHY is attached to a consumer which uses the state machine by calling phy_start() and phy_stop().”…”�”}”(hjAxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M hjËwubjl)�”}”(hŒÃWhen the PHY driver consumer uses phylib, it must have previously called phy_connect_direct() or one of its derivatives, so that phy_prepare_link() has set up a hook for monitoring state changes.”h]”hŒÃWhen the PHY driver consumer uses phylib, it must have previously called phy_connect_direct() or one of its derivatives, so that phy_prepare_link() has set up a hook for monitoring state changes.”…”�”}”(hjPxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MhjËwubjl)�”}”(hŒ¬When the PHY driver is used by the MAC driver consumer through phylink (the only other provider of a phy_link_change() method), using the PHY state machine is not optional.”h]”hŒ¬When the PHY driver is used by the MAC driver consumer through phylink (the only other provider of a phy_link_change() method), using the PHY state machine is not optional.”…”�”}”(hj_xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MhjËwubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjpxh]”hŒReturn”…”�”}”(hjrxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjnxubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MhjËwubjl)�”}”(hŒCtrue if consumer calls phy_start() and phy_stop(), false otherwise.”h]”hŒCtrue if consumer calls phy_start() and phy_stop(), false otherwise.”…”�”}”(hj†xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MhjËwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒget_phy_c45_ids (C function)”Œc.get_phy_c45_ids”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWint get_phy_c45_ids (struct mii_bus *bus, int addr, struct phy_c45_device_ids *c45_ids)”h]”j )�”}”(hŒVint get_phy_c45_ids(struct mii_bus *bus, int addr, struct phy_c45_device_ids *c45_ids)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjµxh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj±xh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±xh²hh³jÃxh´M$ubj3)�”}”(hŒget_phy_c45_ids”h]”j9)�”}”(hŒget_phy_c45_ids”h]”hŒget_phy_c45_ids”…”�”}”(hjÖxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒxubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj±xh²hh³jÃxh´M$ubj¡ )�”}”(hŒC(struct mii_bus *bus, int addr, struct phy_c45_device_ids *c45_ids)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjòxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîxubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jØxsbŒc.get_phy_c45_ids”†”asbuh1hhjîxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîxubj )�”}”(hj h]”hŒ*”…”�”}”(hj>yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjîxubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjKyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjêxubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjdyh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj`yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjryh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`yubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj€yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjêxubj§ )�”}”(hŒ"struct phy_c45_device_ids *c45_ids”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj™yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•yubh)�”}”(hhh]”j9)�”}”(hŒphy_c45_device_ids”h]”hŒphy_c45_device_ids”…”�”}”(hj·yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¹yŒmodname”NŒ classname”Njå jè )�”}”jë ]”j,yŒc.get_phy_c45_ids”†”asbuh1hhj•yubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕyh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•yubj )�”}”(hj h]”hŒ*”…”�”}”(hjãyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•yubj9)�”}”(hŒc45_ids”h]”hŒc45_ids”…”�”}”(hjðyh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjêxubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj±xh²hh³jÃxh´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj­xh²hh³jÃxh´M$ubah}”(h]”j¨xah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÃxh´M$hjªxh²hubjg)�”}”(hhh]”jl)�”}”(hŒ/reads the specified addr for its 802.3-c45 IDs.”h]”hŒ/reads the specified addr for its 802.3-c45 IDs.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M$hjzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjªxh²hh³jÃxh´M$ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j2zjŒj2zj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXù**Parameters** ``struct mii_bus *bus`` the target MII bus ``int addr`` PHY address on the MII bus ``struct phy_c45_device_ids *c45_ids`` where to store the c45 ID information. **Description** Read the PHY "devices in package". If this appears to be valid, read the PHY identifiers for each device. Return the "devices in package" and identifiers in **c45_ids**. Returns zero on success, ``-EIO`` on bus access error, or ``-ENODEV`` if the "devices in package" is invalid or no device responds.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:zubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M(hj6zubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the target MII bus ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj[zh]”hŒstruct mii_bus *bus”…”�”}”(hj]zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYzubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M%hjUzubj)�”}”(hhh]”jl)�”}”(hŒthe target MII bus”h]”hŒthe target MII bus”…”�”}”(hjtzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jpzh´M%hjqzubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpzh´M%hjRzubjä)�”}”(hŒ(``int addr`` PHY address on the MII bus ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj”zh]”hŒint addr”…”�”}”(hj–zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’zubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M&hjŽzubj)�”}”(hhh]”jl)�”}”(hŒPHY address on the MII bus”h]”hŒPHY address on the MII bus”…”�”}”(hj­zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©zh´M&hjªzubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©zh´M&hjRzubjä)�”}”(hŒN``struct phy_c45_device_ids *c45_ids`` where to store the c45 ID information. ”h]”(jê)�”}”(hŒ&``struct phy_c45_device_ids *c45_ids``”h]”jð)�”}”(hjÍzh]”hŒ"struct phy_c45_device_ids *c45_ids”…”�”}”(hjÏzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËzubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M'hjÇzubj)�”}”(hhh]”jl)�”}”(hŒ&where to store the c45 ID information.”h]”hŒ&where to store the c45 ID information.”…”�”}”(hjæzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâzh´M'hjãzubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâzh´M'hjRzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6zubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj{h]”hŒ Description”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M)hj6zubjl)�”}”(hŒ©Read the PHY "devices in package". If this appears to be valid, read the PHY identifiers for each device. Return the "devices in package" and identifiers in **c45_ids**.”h]”(hŒ¥Read the PHY “devices in packageâ€�. If this appears to be valid, read the PHY identifiers for each device. Return the “devices in packageâ€� and identifiers in ”…”�”}”(hj{h²hh³Nh´Nubj›)�”}”(hŒ **c45_ids**”h]”hŒc45_ids”…”�”}”(hj&{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{ubhŒ.”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M(hj6zubjl)�”}”(hŒƒReturns zero on success, ``-EIO`` on bus access error, or ``-ENODEV`` if the "devices in package" is invalid or no device responds.”h]”(hŒReturns zero on success, ”…”�”}”(hj?{h²hh³Nh´Nubjð)�”}”(hŒ``-EIO``”h]”hŒ-EIO”…”�”}”(hjG{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?{ubhŒ on bus access error, or ”…”�”}”(hj?{h²hh³Nh´Nubjð)�”}”(hŒ ``-ENODEV``”h]”hŒ-ENODEV”…”�”}”(hjY{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?{ubhŒB if the “devices in packageâ€� is invalid or no device responds.”…”�”}”(hj?{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M,hj6zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒget_phy_c22_id (C function)”Œc.get_phy_c22_id”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ?int get_phy_c22_id (struct mii_bus *bus, int addr, u32 *phy_id)”h]”j )�”}”(hŒ>int get_phy_c22_id(struct mii_bus *bus, int addr, u32 *phy_id)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj’{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽ{h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M†ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ{h²hh³j {h´M†ubj3)�”}”(hŒget_phy_c22_id”h]”j9)�”}”(hŒget_phy_c22_id”h]”hŒget_phy_c22_id”…”�”}”(hj³{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯{ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŽ{h²hh³j {h´M†ubj¡ )�”}”(hŒ,(struct mii_bus *bus, int addr, u32 *phy_id)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÏ{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjË{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjË{ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjí{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjê{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jï{Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jµ{sbŒc.get_phy_c22_id”†”asbuh1hhjË{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjË{ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjË{ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj(|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjË{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÇ{ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjA|h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj=|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=|ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÇ{ubj§ )�”}”(hŒ u32 *phy_id”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjy|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j{|Œmodname”NŒ classname”Njå jè )�”}”jë ]”j |Œc.get_phy_c22_id”†”asbuh1hhjr|ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—|h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjr|ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjr|ubj9)�”}”(hŒphy_id”h]”hŒphy_id”…”�”}”(hj²|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÇ{ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŽ{h²hh³j {h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŠ{h²hh³j {h´M†ubah}”(h]”j…{ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j {h´M†hj‡{h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.reads the specified addr for its clause 22 ID.”h]”hŒ.reads the specified addr for its clause 22 ID.”…”�”}”(hjÜ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M†hjÙ|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡{h²hh³j {h´M†ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jô|jŒjô|j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX–**Parameters** ``struct mii_bus *bus`` the target MII bus ``int addr`` PHY address on the MII bus ``u32 *phy_id`` where to store the ID retrieved. **Description** Read the 802.3 clause 22 PHY ID from the PHY at **addr** on the **bus**, placing it in **phy_id**. Return zero on successful read and the ID is valid, ``-EIO`` on bus access error, or ``-ENODEV`` if no device responds or invalid ID.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjþ|h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MŠhjø|ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the target MII bus ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj}h]”hŒstruct mii_bus *bus”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M‡hj}ubj)�”}”(hhh]”jl)�”}”(hŒthe target MII bus”h]”hŒthe target MII bus”…”�”}”(hj6}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2}h´M‡hj3}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2}h´M‡hj}ubjä)�”}”(hŒ(``int addr`` PHY address on the MII bus ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjV}h]”hŒint addr”…”�”}”(hjX}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjT}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MˆhjP}ubj)�”}”(hhh]”jl)�”}”(hŒPHY address on the MII bus”h]”hŒPHY address on the MII bus”…”�”}”(hjo}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jk}h´Mˆhjl}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jk}h´Mˆhj}ubjä)�”}”(hŒ1``u32 *phy_id`` where to store the ID retrieved. ”h]”(jê)�”}”(hŒ``u32 *phy_id``”h]”jð)�”}”(hj�}h]”hŒ u32 *phy_id”…”�”}”(hj‘}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M‰hj‰}ubj)�”}”(hhh]”jl)�”}”(hŒ where to store the ID retrieved.”h]”hŒ where to store the ID retrieved.”…”�”}”(hj¨}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤}h´M‰hj¥}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤}h´M‰hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjø|ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÊ}h]”hŒ Description”…”�”}”(hjÌ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÈ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M‹hjø|ubjl)�”}”(hŒèRead the 802.3 clause 22 PHY ID from the PHY at **addr** on the **bus**, placing it in **phy_id**. Return zero on successful read and the ID is valid, ``-EIO`` on bus access error, or ``-ENODEV`` if no device responds or invalid ID.”h]”(hŒ0Read the 802.3 clause 22 PHY ID from the PHY at ”…”�”}”(hjà}h²hh³Nh´Nubj›)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hjè}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjà}ubhŒ on the ”…”�”}”(hjà}h²hh³Nh´Nubj›)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hjú}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjà}ubhŒ, placing it in ”…”�”}”(hjà}h²hh³Nh´Nubj›)�”}”(hŒ **phy_id**”h]”hŒphy_id”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjà}ubhŒ6. Return zero on successful read and the ID is valid, ”…”�”}”(hjà}h²hh³Nh´Nubjð)�”}”(hŒ``-EIO``”h]”hŒ-EIO”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà}ubhŒ on bus access error, or ”…”�”}”(hjà}h²hh³Nh´Nubjð)�”}”(hŒ ``-ENODEV``”h]”hŒ-ENODEV”…”�”}”(hj0~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjà}ubhŒ% if no device responds or invalid ID.”…”�”}”(hjà}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MŠhjø|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_prepare_link (C function)”Œc.phy_prepare_link”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWvoid phy_prepare_link (struct phy_device *phydev, void (*handler)(struct net_device *))”h]”j )�”}”(hŒUvoid phy_prepare_link(struct phy_device *phydev, void (*handler)(struct net_device*))”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hji~h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hje~h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje~h²hh³jw~h´MWubj3)�”}”(hŒphy_prepare_link”h]”j9)�”}”(hŒphy_prepare_link”h]”hŒphy_prepare_link”…”�”}”(hjŠ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†~ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hje~h²hh³jw~h´MWubj¡ )�”}”(hŒ@(struct phy_device *phydev, void (*handler)(struct net_device*))”h]”(j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢~ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjÄ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆ~Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŒ~sbŒc.phy_prepare_link”†”asbuh1hhj¢~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢~ubj )�”}”(hj h]”hŒ*”…”�”}”(hjò~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢~ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hjÿ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž~ubj§ )�”}”(hŒ#void (*handler)(struct net_device*)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hjh]”hŒ(”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒhandler”h]”hŒhandler”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubj )�”}”(hjEh]”hŒ)”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj )�”}”(hjh]”hŒ(”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj)�”}”(hjh]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j–Œmodname”NŒ classname”Njå jè )�”}”jë ]”jà~Œc.phy_prepare_link”†”asbuh1hhjubj )�”}”(hj h]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj )�”}”(hjEh]”hŒ)”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž~ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hje~h²hh³jw~h´MWubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhja~h²hh³jw~h´MWubah}”(h]”j\~ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jw~h´MWhj^~h²hubjg)�”}”(hhh]”jl)�”}”(hŒ-prepares the PHY layer to monitor link status”h]”hŒ-prepares the PHY layer to monitor link status”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MWhjåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^~h²hh³jw~h´MWubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j€jŒj€j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXØ**Parameters** ``struct phy_device *phydev`` target phy_device struct ``void (*handler)(struct net_device *)`` callback function for link status change notifications **Description** Tells the PHY infrastructure to handle the gory details on monitoring link status (whether through polling or an interrupt), and to call back to the connected device driver when the link status changes. If you want to monitor your own link state, don't call this function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj €h]”hŒ Parameters”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M[hj€ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj)€h]”hŒstruct phy_device *phydev”…”�”}”(hj+€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MXhj#€ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjB€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>€h´MXhj?€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>€h´MXhj €ubjä)�”}”(hŒ```void (*handler)(struct net_device *)`` callback function for link status change notifications ”h]”(jê)�”}”(hŒ(``void (*handler)(struct net_device *)``”h]”jð)�”}”(hjb€h]”hŒ$void (*handler)(struct net_device *)”…”�”}”(hjd€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MYhj\€ubj)�”}”(hhh]”jl)�”}”(hŒ6callback function for link status change notifications”h]”hŒ6callback function for link status change notifications”…”�”}”(hj{€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jw€h´MYhjx€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jw€h´MYhj €ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj€ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�€h]”hŒ Description”…”�”}”(hjŸ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj›€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M[hj€ubjß)�”}”(hhh]”jä)�”}”(hXTells the PHY infrastructure to handle the gory details on monitoring link status (whether through polling or an interrupt), and to call back to the connected device driver when the link status changes. If you want to monitor your own link state, don't call this function.”h]”(jê)�”}”(hŒ*Tells the PHY infrastructure to handle the”h]”hŒ*Tells the PHY infrastructure to handle the”…”�”}”(hjº€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M_hj¶€ubj)�”}”(hhh]”jl)�”}”(hŒågory details on monitoring link status (whether through polling or an interrupt), and to call back to the connected device driver when the link status changes. If you want to monitor your own link state, don't call this function.”h]”hŒçgory details on monitoring link status (whether through polling or an interrupt), and to call back to the connected device driver when the link status changes. If you want to monitor your own link state, don’t call this function.”…”�”}”(hjÌ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M\hjÉ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈ€h´M_hj³€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_poll_reset (C function)”Œc.phy_poll_reset”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.int phy_poll_reset (struct phy_device *phydev)”h]”j )�”}”(hŒ-int phy_poll_reset(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj �h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj �h²hh³j�h´MÂubj3)�”}”(hŒphy_poll_reset”h]”j9)�”}”(hŒphy_poll_reset”h]”hŒphy_poll_reset”…”�”}”(hj.�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj �h²hh³j�h´MÂubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjF�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF�ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jj�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j0�sbŒc.phy_poll_reset”†”asbuh1hhjF�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj–�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjF�ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjF�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjB�ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj �h²hh³j�h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�h²hh³j�h´MÂubah}”(h]”j�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�h´MÂhj�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Safely wait until a PHY reset has properly completed”h]”hŒ4Safely wait until a PHY reset has properly completed”…”�”}”(hjÍ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÂhjÊ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�h²hh³j�h´MÂubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jå�jŒjå�j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXM**Parameters** ``struct phy_device *phydev`` The PHY device to poll **Description** According to IEEE 802.3, Section 2, Subsection 22.2.4.1.1, as published in 2008, a PHY reset may take up to 0.5 seconds. The MII BMCR register must be polled until the BMCR_RESET bit clears. Furthermore, any attempts to write to PHY registers may have no effect or even generate MDIO bus errors until this is complete. Some PHYs (such as the Marvell 88E1111) don't entirely conform to the standard and do not fully reset after the BMCR_RESET bit is set, and may even *REQUIRE* a soft-reset to properly restart autonegotiation. In an effort to support such broken PHYs, this function is separate from the standard phy_init_hw() which will zero all the other bits in the BMCR and reapply all driver-specific and board-specific fixups.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjï�h]”hŒ Parameters”…”�”}”(hjñ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjí�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÆhjé�ubjß)�”}”(hhh]”jä)�”}”(hŒ5``struct phy_device *phydev`` The PHY device to poll ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj‚h]”hŒstruct phy_device *phydev”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÃhj‚ubj)�”}”(hhh]”jl)�”}”(hŒThe PHY device to poll”h]”hŒThe PHY device to poll”…”�”}”(hj'‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#‚h´MÃhj$‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#‚h´MÃhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjé�ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjI‚h]”hŒ Description”…”�”}”(hjK‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjG‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÅhjé�ubjß)�”}”(hhh]”jä)�”}”(hXàAccording to IEEE 802.3, Section 2, Subsection 22.2.4.1.1, as published in 2008, a PHY reset may take up to 0.5 seconds. The MII BMCR register must be polled until the BMCR_RESET bit clears. Furthermore, any attempts to write to PHY registers may have no effect or even generate MDIO bus errors until this is complete. Some PHYs (such as the Marvell 88E1111) don't entirely conform to the standard and do not fully reset after the BMCR_RESET bit is set, and may even *REQUIRE* a soft-reset to properly restart autonegotiation. In an effort to support such broken PHYs, this function is separate from the standard phy_init_hw() which will zero all the other bits in the BMCR and reapply all driver-specific and board-specific fixups.”h]”(jê)�”}”(hŒ=According to IEEE 802.3, Section 2, Subsection 22.2.4.1.1, as”h]”hŒ=According to IEEE 802.3, Section 2, Subsection 22.2.4.1.1, as”…”�”}”(hjf‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÐhjb‚ubj)�”}”(hhh]”(jl)�”}”(hŒ�published in 2008, a PHY reset may take up to 0.5 seconds. The MII BMCR register must be polled until the BMCR_RESET bit clears.”h]”hŒ�published in 2008, a PHY reset may take up to 0.5 seconds. The MII BMCR register must be polled until the BMCR_RESET bit clears.”…”�”}”(hjx‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÆhju‚ubjl)�”}”(hŒFurthermore, any attempts to write to PHY registers may have no effect or even generate MDIO bus errors until this is complete.”h]”hŒFurthermore, any attempts to write to PHY registers may have no effect or even generate MDIO bus errors until this is complete.”…”�”}”(hj‡‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÉhju‚ubjl)�”}”(hXžSome PHYs (such as the Marvell 88E1111) don't entirely conform to the standard and do not fully reset after the BMCR_RESET bit is set, and may even *REQUIRE* a soft-reset to properly restart autonegotiation. In an effort to support such broken PHYs, this function is separate from the standard phy_init_hw() which will zero all the other bits in the BMCR and reapply all driver-specific and board-specific fixups.”h]”(hŒ–Some PHYs (such as the Marvell 88E1111) don’t entirely conform to the standard and do not fully reset after the BMCR_RESET bit is set, and may even ”…”�”}”(hj–‚h²h•h³Nh´NubjÑ‹)�”}”(hŒ *REQUIRE*”h]”hŒREQUIRE”…”�”}”(hjž‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jЋhj–‚ubhX a soft-reset to properly restart autonegotiation. In an effort to support such broken PHYs, this function is separate from the standard phy_init_hw() which will zero all the other bits in the BMCR and reapply all driver-specific and board-specific fixups.”…”�”}”(hj–‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÌhju‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjb‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jt‚h´MÐhj_‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjé�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_sfp_connect_phy (C function)”Œc.phy_sfp_connect_phy”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ@int phy_sfp_connect_phy (void *upstream, struct phy_device *phy)”h]”j )�”}”(hŒ?int phy_sfp_connect_phy(void *upstream, struct phy_device *phy)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjé‚h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjå‚h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjå‚h²hh³j÷‚h´Mnubj3)�”}”(hŒphy_sfp_connect_phy”h]”j9)�”}”(hŒphy_sfp_connect_phy”h]”hŒphy_sfp_connect_phy”…”�”}”(hj ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjå‚h²hh³j÷‚h´Mnubj¡ )�”}”(hŒ((void *upstream, struct phy_device *phy)”h]”(j§ )�”}”(hŒvoid *upstream”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&ƒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj"ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"ƒubj )�”}”(hj h]”hŒ*”…”�”}”(hjBƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj"ƒubj9)�”}”(hŒupstream”h]”hŒupstream”…”�”}”(hjOƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒubj§ )�”}”(hŒstruct phy_device *phy”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjhƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdƒubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj†ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jˆƒŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j ƒsbŒc.phy_sfp_connect_phy”†”asbuh1hhjdƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjdƒubj )�”}”(hj h]”hŒ*”…”�”}”(hj´ƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjdƒubj9)�”}”(hŒphy”h]”hŒphy”…”�”}”(hjÁƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjå‚h²hh³j÷‚h´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjá‚h²hh³j÷‚h´Mnubah}”(h]”jÜ‚ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j÷‚h´MnhjÞ‚h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Connect the SFP module's PHY to the upstream PHY”h]”hŒ2Connect the SFP module’s PHY to the upstream PHY”…”�”}”(hjëƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mnhjèƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÞ‚h²hh³j÷‚h´Mnubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j„jŒj„j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX]**Parameters** ``void *upstream`` pointer to the upstream phy device ``struct phy_device *phy`` pointer to the SFP module's phy device **Description** This helper allows keeping track of PHY devices on the link. It adds the SFP module's phy to the phy namespace of the upstream phy **Return** 0 on success, otherwise a negative error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj „h]”hŒ Parameters”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj „ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mrhj„ubjß)�”}”(hhh]”(jä)�”}”(hŒ6``void *upstream`` pointer to the upstream phy device ”h]”(jê)�”}”(hŒ``void *upstream``”h]”jð)�”}”(hj,„h]”hŒvoid *upstream”…”�”}”(hj.„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mohj&„ubj)�”}”(hhh]”jl)�”}”(hŒ"pointer to the upstream phy device”h]”hŒ"pointer to the upstream phy device”…”�”}”(hjE„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jA„h´MohjB„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jA„h´Mohj#„ubjä)�”}”(hŒB``struct phy_device *phy`` pointer to the SFP module's phy device ”h]”(jê)�”}”(hŒ``struct phy_device *phy``”h]”jð)�”}”(hje„h]”hŒstruct phy_device *phy”…”�”}”(hjg„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjc„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mphj_„ubj)�”}”(hhh]”jl)�”}”(hŒ&pointer to the SFP module's phy device”h]”hŒ(pointer to the SFP module’s phy device”…”�”}”(hj~„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jz„h´Mphj{„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jz„h´Mphj#„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj„ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj „h]”hŒ Description”…”�”}”(hj¢„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjž„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mrhj„ubjl)�”}”(hŒ‚This helper allows keeping track of PHY devices on the link. It adds the SFP module's phy to the phy namespace of the upstream phy”h]”hŒ„This helper allows keeping track of PHY devices on the link. It adds the SFP module’s phy to the phy namespace of the upstream phy”…”�”}”(hj¶„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mqhj„ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÇ„h]”hŒReturn”…”�”}”(hjÉ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÅ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mthj„ubjl)�”}”(hŒ.0 on success, otherwise a negative error code.”h]”hŒ.0 on success, otherwise a negative error code.”…”�”}”(hjÝ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Muhj„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phy_sfp_disconnect_phy (C function)”Œc.phy_sfp_disconnect_phy”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDvoid phy_sfp_disconnect_phy (void *upstream, struct phy_device *phy)”h]”j )�”}”(hŒCvoid phy_sfp_disconnect_phy(void *upstream, struct phy_device *phy)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj…h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MŽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…h²hh³j…h´MŽubj3)�”}”(hŒphy_sfp_disconnect_phy”h]”j9)�”}”(hŒphy_sfp_disconnect_phy”h]”hŒphy_sfp_disconnect_phy”…”�”}”(hj-…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)…ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj…h²hh³j…h´MŽubj¡ )�”}”(hŒ((void *upstream, struct phy_device *phy)”h]”(j§ )�”}”(hŒvoid *upstream”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjI…h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjE…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE…ubj )�”}”(hj h]”hŒ*”…”�”}”(hje…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjE…ubj9)�”}”(hŒupstream”h]”hŒupstream”…”�”}”(hjr…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjA…ubj§ )�”}”(hŒstruct phy_device *phy”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‹…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡…ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj©…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j«…Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j/…sbŒc.phy_sfp_disconnect_phy”†”asbuh1hhj‡…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡…ubj )�”}”(hj h]”hŒ*”…”�”}”(hj×…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‡…ubj9)�”}”(hŒphy”h]”hŒphy”…”�”}”(hjä…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjA…ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj…h²hh³j…h´MŽubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj…h²hh³j…h´MŽubah}”(h]”jÿ„ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j…h´MŽhj…h²hubjg)�”}”(hhh]”jl)�”}”(hŒ5Disconnect the SFP module's PHY from the upstream PHY”h]”hŒ7Disconnect the SFP module’s PHY from the upstream PHY”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MŽhj †h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj…h²hh³j…h´MŽubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j&†jŒj&†j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXŒ**Parameters** ``void *upstream`` pointer to the upstream phy device ``struct phy_device *phy`` pointer to the SFP module's phy device **Description** This helper allows keeping track of PHY devices on the link. It removes the SFP module's phy to the phy namespace of the upstream phy. As the module phy will be destroyed, re-inserting the same module will add a new phy with a new index.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj0†h]”hŒ Parameters”…”�”}”(hj2†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M’hj*†ubjß)�”}”(hhh]”(jä)�”}”(hŒ6``void *upstream`` pointer to the upstream phy device ”h]”(jê)�”}”(hŒ``void *upstream``”h]”jð)�”}”(hjO†h]”hŒvoid *upstream”…”�”}”(hjQ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjM†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M�hjI†ubj)�”}”(hhh]”jl)�”}”(hŒ"pointer to the upstream phy device”h]”hŒ"pointer to the upstream phy device”…”�”}”(hjh†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jd†h´M�hje†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jd†h´M�hjF†ubjä)�”}”(hŒB``struct phy_device *phy`` pointer to the SFP module's phy device ”h]”(jê)�”}”(hŒ``struct phy_device *phy``”h]”jð)�”}”(hjˆ†h]”hŒstruct phy_device *phy”…”�”}”(hjІh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj††ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M�hj‚†ubj)�”}”(hhh]”jl)�”}”(hŒ&pointer to the SFP module's phy device”h]”hŒ(pointer to the SFP module’s phy device”…”�”}”(hj¡†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�†h´M�hjž†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�†h´M�hjF†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj*†ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÆh]”hŒ Description”…”�”}”(hjņh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÁ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M’hj*†ubjl)�”}”(hŒíThis helper allows keeping track of PHY devices on the link. It removes the SFP module's phy to the phy namespace of the upstream phy. As the module phy will be destroyed, re-inserting the same module will add a new phy with a new index.”h]”hŒïThis helper allows keeping track of PHY devices on the link. It removes the SFP module’s phy to the phy namespace of the upstream phy. As the module phy will be destroyed, re-inserting the same module will add a new phy with a new index.”…”�”}”(hjÙ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M‘hj*†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_sfp_attach (C function)”Œc.phy_sfp_attach”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9void phy_sfp_attach (void *upstream, struct sfp_bus *bus)”h]”j )�”}”(hŒ8void phy_sfp_attach(void *upstream, struct sfp_bus *bus)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‡h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡h²hh³j‡h´M¥ubj3)�”}”(hŒphy_sfp_attach”h]”j9)�”}”(hŒphy_sfp_attach”h]”hŒphy_sfp_attach”…”�”}”(hj)‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%‡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‡h²hh³j‡h´M¥ubj¡ )�”}”(hŒ%(void *upstream, struct sfp_bus *bus)”h]”(j§ )�”}”(hŒvoid *upstream”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjE‡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjA‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjA‡ubj )�”}”(hj h]”hŒ*”…”�”}”(hja‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjA‡ubj9)�”}”(hŒupstream”h]”hŒupstream”…”�”}”(hjn‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj=‡ubj§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‡‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ‡ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj¥‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§‡Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j+‡sbŒc.phy_sfp_attach”†”asbuh1hhjƒ‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŇh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ‡ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓ‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒ‡ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjà‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj=‡ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‡h²hh³j‡h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‡h²hh³j‡h´M¥ubah}”(h]”jû†ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‡h´M¥hjý†h²hubjg)�”}”(hhh]”jl)�”}”(hŒ5attach the SFP bus to the PHY upstream network device”h]”hŒ5attach the SFP bus to the PHY upstream network device”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M¥hjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjý†h²hh³j‡h´M¥ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j"ˆjŒj"ˆj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒÑ**Parameters** ``void *upstream`` pointer to the phy device ``struct sfp_bus *bus`` sfp bus representing cage being attached **Description** This is used to fill in the sfp_upstream_ops .attach member.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj,ˆh]”hŒ Parameters”…”�”}”(hj.ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M©hj&ˆubjß)�”}”(hhh]”(jä)�”}”(hŒ-``void *upstream`` pointer to the phy device ”h]”(jê)�”}”(hŒ``void *upstream``”h]”jð)�”}”(hjKˆh]”hŒvoid *upstream”…”�”}”(hjMˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjIˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M¦hjEˆubj)�”}”(hhh]”jl)�”}”(hŒpointer to the phy device”h]”hŒpointer to the phy device”…”�”}”(hjdˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`ˆh´M¦hjaˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`ˆh´M¦hjBˆubjä)�”}”(hŒA``struct sfp_bus *bus`` sfp bus representing cage being attached ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hj„ˆh]”hŒstruct sfp_bus *bus”…”�”}”(hj†ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M§hj~ˆubj)�”}”(hhh]”jl)�”}”(hŒ(sfp bus representing cage being attached”h]”hŒ(sfp bus representing cage being attached”…”�”}”(hj�ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™ˆh´M§hjšˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™ˆh´M§hjBˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&ˆubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¿ˆh]”hŒ Description”…”�”}”(hjÁˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M©hj&ˆubjl)�”}”(hŒŠubjä)�”}”(hŒA``struct sfp_bus *bus`` sfp bus representing cage being attached ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hj€Šh]”hŒstruct sfp_bus *bus”…”�”}”(hj‚Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M·hjzŠubj)�”}”(hhh]”jl)�”}”(hŒ(sfp bus representing cage being attached”h]”hŒ(sfp bus representing cage being attached”…”�”}”(hj™Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•Šh´M·hj–Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•Šh´M·hj>Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"Šubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj»Šh]”hŒ Description”…”�”}”(hj½Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¹Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M¹hj"Šubjl)�”}”(hŒ 0 if it has changed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%‘h]”hŒ Parameters”…”�”}”(hj'‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M{hj‘ubjß)�”}”(hhh]”(jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hjD‘h]”hŒstruct phy_device *phydev”…”�”}”(hjF‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjB‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mxhj>‘ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hj]‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jY‘h´MxhjZ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jY‘h´Mxhj;‘ubjä)�”}”(hŒI``const unsigned long *advert`` auto-negotiation parameters to advertise ”h]”(jê)�”}”(hŒ``const unsigned long *advert``”h]”jð)�”}”(hj}‘h]”hŒconst unsigned long *advert”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Myhjw‘ubj)�”}”(hhh]”jl)�”}”(hŒ(auto-negotiation parameters to advertise”h]”hŒ(auto-negotiation parameters to advertise”…”�”}”(hj–‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’‘h´Myhj“‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’‘h´Myhj;‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¸‘h]”hŒ Description”…”�”}”(hjº‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M{hj‘ubjß)�”}”(hhh]”jä)�”}”(hŒÞWrites MII_ADVERTISE with the appropriate values, after sanitizing the values to make sure we only advertise what is supported. Returns < 0 on error, 0 if the PHY's advertisement hasn't changed, and > 0 if it has changed.”h]”(jê)�”}”(hŒ1Writes MII_ADVERTISE with the appropriate values,”h]”hŒ1Writes MII_ADVERTISE with the appropriate values,”…”�”}”(hjÕ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M}hjÑ‘ubj)�”}”(hhh]”jl)�”}”(hŒ¬after sanitizing the values to make sure we only advertise what is supported. Returns < 0 on error, 0 if the PHY's advertisement hasn't changed, and > 0 if it has changed.”h]”hŒ°after sanitizing the values to make sure we only advertise what is supported. Returns < 0 on error, 0 if the PHY’s advertisement hasn’t changed, and > 0 if it has changed.”…”�”}”(hjç‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M|hjä‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jã‘h´M}hjΑubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%genphy_c37_config_advert (C function)”Œc.genphy_c37_config_advert”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ8int genphy_c37_config_advert (struct phy_device *phydev)”h]”j )�”}”(hŒ7int genphy_c37_config_advert(struct phy_device *phydev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj(’h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$’h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$’h²hh³j6’h´M«ubj3)�”}”(hŒgenphy_c37_config_advert”h]”j9)�”}”(hŒgenphy_c37_config_advert”h]”hŒgenphy_c37_config_advert”…”�”}”(hjI’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE’ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj$’h²hh³j6’h´M«ubj¡ )�”}”(hŒ(struct phy_device *phydev)”h]”j§ )�”}”(hŒstruct phy_device *phydev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hje’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja’ubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjƒ’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j…’Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jK’sbŒc.genphy_c37_config_advert”†”asbuh1hhja’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja’ubj )�”}”(hj h]”hŒ*”…”�”}”(hj±’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hja’ubj9)�”}”(hŒphydev”h]”hŒphydev”…”�”}”(hj¾’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj]’ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj$’h²hh³j6’h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj ’h²hh³j6’h´M«ubah}”(h]”j’ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j6’h´M«hj’h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2sanitize and advertise auto-negotiation parameters”h]”hŒ2sanitize and advertise auto-negotiation parameters”…”�”}”(hjè’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M«hjå’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj’h²hh³j6’h´M«ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j“jŒj“j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXz**Parameters** ``struct phy_device *phydev`` target phy_device struct **Description** Writes MII_ADVERTISE with the appropriate values, after sanitizing the values to make sure we only advertise what is supported. Returns < 0 on error, 0 if the PHY's advertisement hasn't changed, and > 0 if it has changed. This function is intended for Clause 37 1000Base-X mode.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj “h]”hŒ Parameters”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M¯hj“ubjß)�”}”(hhh]”jä)�”}”(hŒ7``struct phy_device *phydev`` target phy_device struct ”h]”(jê)�”}”(hŒ``struct phy_device *phydev``”h]”jð)�”}”(hj)“h]”hŒstruct phy_device *phydev”…”�”}”(hj+“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj'“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M¬hj#“ubj)�”}”(hhh]”jl)�”}”(hŒtarget phy_device struct”h]”hŒtarget phy_device struct”…”�”}”(hjB“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j>“h´M¬hj?“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j>“h´M¬hj “ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjd“h]”hŒ Description”…”�”}”(hjf“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjb“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M®hj“ubjß)�”}”(hhh]”jä)�”}”(hXWrites MII_ADVERTISE with the appropriate values, after sanitizing the values to make sure we only advertise what is supported. Returns < 0 on error, 0 if the PHY's advertisement hasn't changed, and > 0 if it has changed. This function is intended for Clause 37 1000Base-X mode.”h]”(jê)�”}”(hŒ1Writes MII_ADVERTISE with the appropriate values,”h]”hŒ1Writes MII_ADVERTISE with the appropriate values,”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M±hj}“ubj)�”}”(hhh]”jl)�”}”(hŒåafter sanitizing the values to make sure we only advertise what is supported. Returns < 0 on error, 0 if the PHY's advertisement hasn't changed, and > 0 if it has changed. This function is intended for Clause 37 1000Base-X mode.”h]”hŒéafter sanitizing the values to make sure we only advertise what is supported. Returns < 0 on error, 0 if the PHY’s advertisement hasn’t changed, and > 0 if it has changed. This function is intended for Clause 37 1000Base-X mode.”…”�”}”(hj““h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M¯hj�“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�“h´M±hjz“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphy_probe (C function)”Œ c.phy_probe”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ"int phy_probe (struct device *dev)”h]”j )�”}”(hŒ!int phy_probe(struct device *dev)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÔ“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjГh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjГh²hh³jâ“h´MÛubj3)�”}”(hŒ phy_probe”h]”j9)�”}”(hŒ phy_probe”h]”hŒ phy_probe”…”�”}”(hjõ“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ“ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjГh²hh³jâ“h´MÛubj¡ )�”}”(hŒ(struct device *dev)”h]”j§ )�”}”(hŒstruct device *dev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ”ubh)�”}”(hhh]”j9)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj/”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1”Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j÷“sbŒ c.phy_probe”†”asbuh1hhj ”ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ”ubj )�”}”(hj h]”hŒ*”…”�”}”(hj]”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ”ubj9)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ”ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjГh²hh³jâ“h´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÌ“h²hh³jâ“h´MÛubah}”(h]”jÇ“ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jâ“h´MÛhjÉ“h²hubjg)�”}”(hhh]”jl)�”}”(hŒprobe and init a PHY device”h]”hŒprobe and init a PHY device”…”�”}”(hj””h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÛhj‘”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÉ“h²hh³jâ“h´MÛubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¬”jŒj¬”j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct device *dev`` device to probe and init **Description** Take care of setting up the phy_device structure, set the state to READY.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¶”h]”hŒ Parameters”…”�”}”(hj¸”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´Mßhj°”ubjß)�”}”(hhh]”jä)�”}”(hŒ0``struct device *dev`` device to probe and init ”h]”(jê)�”}”(hŒ``struct device *dev``”h]”jð)�”}”(hjÕ”h]”hŒstruct device *dev”…”�”}”(hj×”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÜhjÏ”ubj)�”}”(hhh]”jl)�”}”(hŒdevice to probe and init”h]”hŒdevice to probe and init”…”�”}”(hjî”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jê”h´MÜhjë”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jê”h´MÜhjÌ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°”ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj•h]”hŒ Description”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÞhj°”ubjl)�”}”(hŒITake care of setting up the phy_device structure, set the state to READY.”h]”hŒITake care of setting up the phy_device structure, set the state to READY.”…”�”}”(hj&•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´MÝhj°”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phy_driver_register (C function)”Œc.phy_driver_register”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint phy_driver_register (struct phy_driver *new_driver, struct module *owner)”h]”j )�”}”(hŒLint phy_driver_register(struct phy_driver *new_driver, struct module *owner)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjU•h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjQ•h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M‘ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjQ•h²hh³jc•h´M‘ubj3)�”}”(hŒphy_driver_register”h]”j9)�”}”(hŒphy_driver_register”h]”hŒphy_driver_register”…”�”}”(hjv•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr•ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjQ•h²hh³jc•h´M‘ubj¡ )�”}”(hŒ5(struct phy_driver *new_driver, struct module *owner)”h]”(j§ )�”}”(hŒstruct phy_driver *new_driver”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj’•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ•h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ•ubh)�”}”(hhh]”j9)�”}”(hŒ phy_driver”h]”hŒ phy_driver”…”�”}”(hj°•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j²•Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jx•sbŒc.phy_driver_register”†”asbuh1hhjŽ•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjЕh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽ•ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÞ•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŽ•ubj9)�”}”(hŒ new_driver”h]”hŒ new_driver”…”�”}”(hjë•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽ•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŠ•ubj§ )�”}”(hŒstruct module *owner”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–ubh)�”}”(hhh]”j9)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj"–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j$–Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÌ•Œc.phy_driver_register”†”asbuh1hhj–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@–h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–ubj )�”}”(hj h]”hŒ*”…”�”}”(hjN–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj–ubj9)�”}”(hŒowner”h]”hŒowner”…”�”}”(hj[–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŠ•ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjQ•h²hh³jc•h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjM•h²hh³jc•h´M‘ubah}”(h]”jH•ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jc•h´M‘hjJ•h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(register a phy_driver with the PHY layer”h]”hŒ(register a phy_driver with the PHY layer”…”�”}”(hj…–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M‘hj‚–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjJ•h²hh³jc•h´M‘ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�–jŒj�–j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hŒ�**Parameters** ``struct phy_driver *new_driver`` new phy_driver to register ``struct module *owner`` module owning this PHY”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj§–h]”hŒ Parameters”…”�”}”(hj©–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¥–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M•hj¡–ubjß)�”}”(hhh]”(jä)�”}”(hŒ=``struct phy_driver *new_driver`` new phy_driver to register ”h]”(jê)�”}”(hŒ!``struct phy_driver *new_driver``”h]”jð)�”}”(hjÆ–h]”hŒstruct phy_driver *new_driver”…”�”}”(hjÈ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M’hjÀ–ubj)�”}”(hhh]”jl)�”}”(hŒnew phy_driver to register”h]”hŒnew phy_driver to register”…”�”}”(hjß–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛ–h´M’hjÜ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛ–h´M’hj½–ubjä)�”}”(hŒ/``struct module *owner`` module owning this PHY”h]”(jê)�”}”(hŒ``struct module *owner``”h]”jð)�”}”(hjÿ–h]”hŒstruct module *owner”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjý–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M”hjù–ubj)�”}”(hhh]”jl)�”}”(hŒmodule owning this PHY”h]”hŒmodule owning this PHY”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ]/var/lib/git/docbuild/linux/Documentation/networking/kapi:131: ./drivers/net/phy/phy_device.c”h´M“hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—h´M”hj½–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¡–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__mdiobus_read (C function)”Œc.__mdiobus_read”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ>int __mdiobus_read (struct mii_bus *bus, int addr, u32 regnum)”h]”j )�”}”(hŒ=int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjY—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjU—h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KRubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU—h²hh³jg—h´KRubj3)�”}”(hŒ__mdiobus_read”h]”j9)�”}”(hŒ__mdiobus_read”h]”hŒ__mdiobus_read”…”�”}”(hjz—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv—ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjU—h²hh³jg—h´KRubj¡ )�”}”(hŒ+(struct mii_bus *bus, int addr, u32 regnum)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj–—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’—ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj´—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¶—Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j|—sbŒc.__mdiobus_read”†”asbuh1hhj’—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’—ubj )�”}”(hj h]”hŒ*”…”�”}”(hjâ—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’—ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjï—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ—ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj$˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ—ubj§ )�”}”(hŒ u32 regnum”•�h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj@˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jB˜Œmodname”NŒ classname”Njå jè )�”}”jë ]”jЗŒc.__mdiobus_read”†”asbuh1hhj9˜ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9˜ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjl˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ—ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjU—h²hh³jg—h´KRubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjQ—h²hh³jg—h´KRubah}”(h]”jL—ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jg—h´KRhjN—h²hubjg)�”}”(hhh]”jl)�”}”(hŒ-Unlocked version of the mdiobus_read function”h]”hŒ-Unlocked version of the mdiobus_read function”…”�”}”(hj–˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KRhj“˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjN—h²hh³jg—h´KRubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j®˜jŒj®˜j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXZ**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to read **Return** The register value if successful, negative error code on failure **Description** Read a MDIO bus register. Caller must hold the mdio bus lock. **NOTE** MUST NOT be called from interrupt context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¸˜h]”hŒ Parameters”…”�”}”(hjº˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KVhj²˜ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjטh]”hŒstruct mii_bus *bus”…”�”}”(hjÙ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KShjјubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjð˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì˜h´KShjí˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjјubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì˜h´KShjΘubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj™h]”hŒint addr”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KThj ™ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj)™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%™h´KThj&™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%™h´KThjΘubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjI™h]”hŒ u32 regnum”…”�”}”(hjK™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjG™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KUhjC™ubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hjb™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^™h´KUhj_™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^™h´KUhjΘubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj²˜ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj„™h]”hŒReturn”…”�”}”(hj†™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KWhj²˜ubjl)�”}”(hŒ@The register value if successful, negative error code on failure”h]”hŒ@The register value if successful, negative error code on failure”…”�”}”(hjš™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KWhj²˜ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj«™h]”hŒ Description”…”�”}”(hj­™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KYhj²˜ubjl)�”}”(hŒ=Read a MDIO bus register. Caller must hold the mdio bus lock.”h]”hŒ=Read a MDIO bus register. Caller must hold the mdio bus lock.”…”�”}”(hjÁ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KXhj²˜ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjÒ™h]”hŒNOTE”…”�”}”(hjÔ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjЙubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KZhj²˜ubjl)�”}”(hŒ*MUST NOT be called from interrupt context.”h]”hŒ*MUST NOT be called from interrupt context.”…”�”}”(hjè™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K[hj²˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__mdiobus_write (C function)”Œc.__mdiobus_write”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒHint __mdiobus_write (struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”j )�”}”(hŒGint __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjšh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Ksubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšh²hh³j%šh´Ksubj3)�”}”(hŒ__mdiobus_write”h]”j9)�”}”(hŒ__mdiobus_write”h]”hŒ__mdiobus_write”…”�”}”(hj8šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4šubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjšh²hh³j%šh´Ksubj¡ )�”}”(hŒ4(struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjTšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjašh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPšubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjršh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjošubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jtšŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j:šsbŒc.__mdiobus_write”†”asbuh1hhjPšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’šh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPšubj )�”}”(hj h]”hŒ*”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjPšubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj­šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLšubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÆšh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔšh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjšubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjâšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLšubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjþšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j›Œmodname”NŒ classname”Njå jè )�”}”jë ]”jŽšŒc.__mdiobus_write”†”asbuh1hhj÷šubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷šubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj*›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLšubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjF›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jH›Œmodname”NŒ classname”Njå jè )�”}”jë ]”jŽšŒc.__mdiobus_write”†”asbuh1hhj?›ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?›ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjr›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjšh²hh³j%šh´Ksubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjšh²hh³j%šh´Ksubah}”(h]”j šah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j%šh´Kshj šh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Unlocked version of the mdiobus_write function”h]”hŒ.Unlocked version of the mdiobus_write function”…”�”}”(hjœ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kshj™›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj šh²hh³j%šh´Ksubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j´›jŒj´›j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXz**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **Return** Zero if successful, negative error code on failure **Description** Write a MDIO bus register. Caller must hold the mdio bus lock. **NOTE** MUST NOT be called from interrupt context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¾›h]”hŒ Parameters”…”�”}”(hjÀ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kwhj¸›ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjÝ›h]”hŒstruct mii_bus *bus”…”�”}”(hjß›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kthj×›ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjö›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jò›h´Kthjó›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jò›h´KthjÔ›ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjœh]”hŒint addr”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kuhjœubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj/œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+œh´Kuhj,œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+œh´KuhjÔ›ubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjOœh]”hŒ u32 regnum”…”�”}”(hjQœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KvhjIœubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjhœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdœh´Kvhjeœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdœh´KvhjÔ›ubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjˆœh]”hŒu16 val”…”�”}”(hjŠœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kwhj‚œubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hj¡œh²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj©œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¡œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�œh´Kwhjžœubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�œh´KwhjÔ›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸›ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÑœh]”hŒReturn”…”�”}”(hjÓœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏœubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kyhj¸›ubjl)�”}”(hŒ2Zero if successful, negative error code on failure”h]”hŒ2Zero if successful, negative error code on failure”…”�”}”(hjçœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kyhj¸›ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjøœh]”hŒ Description”…”�”}”(hjúœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöœubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K{hj¸›ubjl)�”}”(hŒ>Write a MDIO bus register. Caller must hold the mdio bus lock.”h]”hŒ>Write a MDIO bus register. Caller must hold the mdio bus lock.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kzhj¸›ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj�h]”hŒNOTE”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K|hj¸›ubjl)�”}”(hŒ*MUST NOT be called from interrupt context.”h]”hŒ*MUST NOT be called from interrupt context.”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K}hj¸›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%__mdiobus_modify_changed (C function)”Œc.__mdiobus_modify_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ[int __mdiobus_modify_changed (struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒZint __mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjd�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj`�h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K•ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`�h²hh³jr�h´K•ubj3)�”}”(hŒ__mdiobus_modify_changed”h]”j9)�”}”(hŒ__mdiobus_modify_changed”h]”hŒ__mdiobus_modify_changed”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj��ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj`�h²hh³jr�h´K•ubj¡ )�”}”(hŒ>(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¡�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj��ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj��ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj¿�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÁ�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‡�sbŒc.__mdiobus_modify_changed”†”asbuh1hhj��ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj��ubj )�”}”(hj h]”hŒ*”…”�”}”(hjí�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj��ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjú�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj��ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™�ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj/žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™�ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjKžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjHžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jMžŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÛ�Œc.__mdiobus_modify_changed”†”asbuh1hhjDžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjižh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjDžubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjwžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjDžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™�ubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj“žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j•žŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÛ�Œc.__mdiobus_modify_changed”†”asbuh1hhjŒžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±žh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒžubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj¿žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™�ubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÛžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÝžŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÛ�Œc.__mdiobus_modify_changed”†”asbuh1hhjÔžubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùžh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔžubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj™�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj`�h²hh³jr�h´K•ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj\�h²hh³jr�h´K•ubah}”(h]”jW�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jr�h´K•hjY�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Unlocked version of the mdiobus_modify function”h]”hŒ/Unlocked version of the mdiobus_modify function”…”�”}”(hj1Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K•hj.Ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjY�h²hh³jr�h´K•ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jIŸjŒjIŸj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX×**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Return** 1 if the register was modified, 0 if no change was needed, negative on any error condition **Description** Read, modify, and if any change, write the register value back to the device. **NOTE** MUST NOT be called from interrupt context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjSŸh]”hŒ Parameters”…”�”}”(hjUŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjQŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K™hjMŸubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjrŸh]”hŒstruct mii_bus *bus”…”�”}”(hjtŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjpŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K–hjlŸubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj‹Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‡Ÿh´K–hjˆŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‡Ÿh´K–hjiŸubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj«Ÿh]”hŒint addr”…”�”}”(hj­Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K—hj¥Ÿubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjÄŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀŸh´K—hjÁŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀŸh´K—hjiŸubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjäŸh]”hŒ u32 regnum”…”�”}”(hjæŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K˜hjÞŸubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hjýŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jùŸh´K˜hjúŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jùŸh´K˜hjiŸubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj h]”hŒu16 mask”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K™hj ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2 h´K™hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2 h´K™hjiŸubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjV h]”hŒu16 set”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KšhjP ubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jk h´Kšhjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jk h´KšhjiŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjMŸubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj‘ h]”hŒReturn”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KœhjMŸubjl)�”}”(hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”h]”hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KœhjMŸubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¸ h]”hŒ Description”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KŸhjMŸubjl)�”}”(hŒMRead, modify, and if any change, write the register value back to the device.”h]”hŒMRead, modify, and if any change, write the register value back to the device.”…”�”}”(hjΠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KžhjMŸubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjß h]”hŒNOTE”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÝ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¡hjMŸubjl)�”}”(hŒ*MUST NOT be called from interrupt context.”h]”hŒ*MUST NOT be called from interrupt context.”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¢hjMŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ__mdiobus_c45_read (C function)”Œc.__mdiobus_c45_read”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint __mdiobus_c45_read (struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”j )�”}”(hŒLint __mdiobus_c45_read(struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj$¡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ¡h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¡h²hh³j2¡h´K¸ubj3)�”}”(hŒ__mdiobus_c45_read”h]”j9)�”}”(hŒ__mdiobus_c45_read”h]”hŒ__mdiobus_c45_read”…”�”}”(hjE¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA¡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj ¡h²hh³j2¡h´K¸ubj¡ )�”}”(hŒ6(struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hja¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]¡ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�¡Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jG¡sbŒc.__mdiobus_c45_read”†”asbuh1hhj]¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj]¡ubj )�”}”(hj h]”hŒ*”…”�”}”(hj­¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj]¡ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjº¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjY¡ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÓ¡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏ¡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá¡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏ¡ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjï¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjY¡ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj$¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjY¡ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj@¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jB¢Œmodname”NŒ classname”Njå jè )�”}”jë ]”j›¡Œc.__mdiobus_c45_read”†”asbuh1hhj9¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^¢h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9¢ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjl¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjY¡ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj ¡h²hh³j2¡h´K¸ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¡h²hh³j2¡h´K¸ubah}”(h]”j¡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j2¡h´K¸hj¡h²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Unlocked version of the mdiobus_c45_read function”h]”hŒ1Unlocked version of the mdiobus_c45_read function”…”�”}”(hj–¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¸hj“¢h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¡h²hh³j2¡h´K¸ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j®¢jŒj®¢j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX‚**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to read **Return** The register value if successful, negative error code on failure **Description** Read a MDIO bus register. Caller must hold the mdio bus lock. **NOTE** MUST NOT be called from interrupt context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¸¢h]”hŒ Parameters”…”�”}”(hjº¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¼hj²¢ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj×¢h]”hŒstruct mii_bus *bus”…”�”}”(hjÙ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¹hjÑ¢ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjð¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jì¢h´K¹hjí¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jì¢h´K¹hj΢ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj£h]”hŒint addr”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kºhj £ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj)£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j%£h´Kºhj&£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj £ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j%£h´Kºhj΢ubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjI£h]”hŒ int devad”…”�”}”(hjK£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjG£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K»hjC£ubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hjb£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^£h´K»hj_£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^£h´K»hj΢ubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj‚£h]”hŒ u32 regnum”…”�”}”(hj„£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj€£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¼hj|£ubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—£h´K¼hj˜£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—£h´K¼hj΢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj²¢ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj½£h]”hŒReturn”…”�”}”(hj¿£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj»£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¾hj²¢ubjl)�”}”(hŒ@The register value if successful, negative error code on failure”h]”hŒ@The register value if successful, negative error code on failure”…”�”}”(hjÓ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¾hj²¢ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjä£h]”hŒ Description”…”�”}”(hjæ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÀhj²¢ubjl)�”}”(hŒ=Read a MDIO bus register. Caller must hold the mdio bus lock.”h]”hŒ=Read a MDIO bus register. Caller must hold the mdio bus lock.”…”�”}”(hjú£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´K¿hj²¢ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj ¤h]”hŒNOTE”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÁhj²¢ubjl)�”}”(hŒ*MUST NOT be called from interrupt context.”h]”hŒ*MUST NOT be called from interrupt context.”…”�”}”(hj!¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÂhj²¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ __mdiobus_c45_write (C function)”Œc.__mdiobus_c45_write”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWint __mdiobus_c45_write (struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒVint __mdiobus_c45_write(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjP¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjL¤h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÚubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjL¤h²hh³j^¤h´KÚubj3)�”}”(hŒ__mdiobus_c45_write”h]”j9)�”}”(hŒ__mdiobus_c45_write”h]”hŒ__mdiobus_c45_write”…”�”}”(hjq¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm¤ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjL¤h²hh³j^¤h´KÚubj¡ )�”}”(hŒ?(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰¤ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj«¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j­¤Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já js¤sbŒc.__mdiobus_c45_write”†”asbuh1hhj‰¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˤh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰¤ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÙ¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj‰¤ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjæ¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…¤ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjû¤ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjû¤ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjû¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…¤ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj4¥h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj0¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0¥ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjP¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…¤ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjl¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jn¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”jǤŒc.__mdiobus_c45_write”†”asbuh1hhje¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje¥ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj˜¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…¤ubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj´¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¶¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”jǤŒc.__mdiobus_c45_write”†”asbuh1hhj­¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­¥ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjà¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj…¤ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjL¤h²hh³j^¤h´KÚubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjH¤h²hh³j^¤h´KÚubah}”(h]”jC¤ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j^¤h´KÚhjE¤h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Unlocked version of the mdiobus_write function”h]”hŒ.Unlocked version of the mdiobus_write function”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÚhj¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjE¤h²hh³j^¤h´KÚubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j"¦jŒj"¦j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX¢**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **Return** Zero if successful, negative error code on failure **Description** Write a MDIO bus register. Caller must hold the mdio bus lock. **NOTE** MUST NOT be called from interrupt context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj,¦h]”hŒ Parameters”…”�”}”(hj.¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÞhj&¦ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjK¦h]”hŒstruct mii_bus *bus”…”�”}”(hjM¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjI¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÛhjE¦ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjd¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j`¦h´KÛhja¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j`¦h´KÛhjB¦ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj„¦h]”hŒint addr”…”�”}”(hj†¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‚¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÜhj~¦ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj�¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j™¦h´KÜhjš¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j™¦h´KÜhjB¦ubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj½¦h]”hŒ int devad”…”�”}”(hj¿¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj»¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÝhj·¦ubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hjÖ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒ¦h´KÝhjÓ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÒ¦h´KÝhjB¦ubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjö¦h]”hŒ u32 regnum”…”�”}”(hjø¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjô¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´KÞhjð¦ubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j §h´KÞhj §ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j §h´KÞhjB¦ubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hj/§h]”hŒu16 val”…”�”}”(hj1§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj-§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kßhj)§ubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hjH§h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjP§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjH§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jD§h´KßhjE§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jD§h´KßhjB¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&¦ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjx§h]”hŒReturn”…”�”}”(hjz§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjv§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Káhj&¦ubjl)�”}”(hŒ2Zero if successful, negative error code on failure”h]”hŒ2Zero if successful, negative error code on failure”…”�”}”(hjާh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Káhj&¦ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŸ§h]”hŒ Description”…”�”}”(hj¡§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kãhj&¦ubjl)�”}”(hŒ>Write a MDIO bus register. Caller must hold the mdio bus lock.”h]”hŒ>Write a MDIO bus register. Caller must hold the mdio bus lock.”…”�”}”(hjµ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kâhj&¦ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjƧh]”hŒNOTE”…”�”}”(hjȧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjħubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kähj&¦ubjl)�”}”(hŒ*MUST NOT be called from interrupt context.”h]”hŒ*MUST NOT be called from interrupt context.”…”�”}”(hjܧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Kåhj&¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ mdiobus_read_nested (C function)”Œc.mdiobus_read_nested”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCint mdiobus_read_nested (struct mii_bus *bus, int addr, u32 regnum)”h]”j )�”}”(hŒBint mdiobus_read_nested(struct mii_bus *bus, int addr, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¨h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¨h²hh³j¨h´M"ubj3)�”}”(hŒmdiobus_read_nested”h]”j9)�”}”(hŒmdiobus_read_nested”h]”hŒmdiobus_read_nested”…”�”}”(hj,¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(¨ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¨h²hh³j¨h´M"ubj¡ )�”}”(hŒ+(struct mii_bus *bus, int addr, u32 regnum)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjH¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjD¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjD¨ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjf¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jh¨Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j.¨sbŒc.mdiobus_read_nested”†”asbuh1hhjD¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†¨h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjD¨ubj )�”}”(hj h]”hŒ*”…”�”}”(hj”¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjD¨ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj¡¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjD¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@¨ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjº¨h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjȨh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶¨ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjÖ¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@¨ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjò¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjï¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jô¨Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‚¨Œc.mdiobus_read_nested”†”asbuh1hhjë¨ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjë¨ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjë¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@¨ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¨h²hh³j¨h´M"ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨h²hh³j¨h´M"ubah}”(h]”jþ§ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¨h´M"hj¨h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+Nested version of the mdiobus_read function”h]”hŒ+Nested version of the mdiobus_read function”…”�”}”(hjH©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M"hjE©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¨h²hh³j¨h´M"ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j`©jŒj`©j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXÔ**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to read **Return** The register value if successful, negative error code on failure **Description** In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested(). **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjj©h]”hŒ Parameters”…”�”}”(hjl©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjh©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M&hjd©ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj‰©h]”hŒstruct mii_bus *bus”…”�”}”(hj‹©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M#hjƒ©ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj¢©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jž©h´M#hjŸ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jž©h´M#hj€©ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj©h]”hŒint addr”…”�”}”(hjÄ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M$hj¼©ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjÛ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jשh´M$hjØ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jשh´M$hj€©ubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjû©h]”hŒ u32 regnum”…”�”}”(hjý©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjù©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M%hjõ©ubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªh´M%hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªh´M%hj€©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjd©ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj6ªh]”hŒReturn”…”�”}”(hj8ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M'hjd©ubjl)�”}”(hŒ@The register value if successful, negative error code on failure”h]”hŒ@The register value if successful, negative error code on failure”…”�”}”(hjLªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M'hjd©ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj]ªh]”hŒ Description”…”�”}”(hj_ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M)hjd©ubjl)�”}”(hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”h]”hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”…”�”}”(hjsªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M(hjd©ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj„ªh]”hŒNOTE”…”�”}”(hj†ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M+hjd©ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hjšªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M,hjd©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdiobus_read (C function)”Œc.mdiobus_read”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒhjA¬ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj`¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j\¬h´M>hj]¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j\¬h´M>hj>¬ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj€¬h]”hŒint addr”…”�”}”(hj‚¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M?hjz¬ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj™¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•¬h´M?hj–¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•¬h´M?hj>¬ubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj¹¬h]”hŒ u32 regnum”…”�”}”(hj»¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj·¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M@hj³¬ubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hjÒ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jάh´M@hjϬubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jάh´M@hj>¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"¬ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjô¬h]”hŒReturn”…”�”}”(hjö¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjò¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MBhj"¬ubjl)�”}”(hŒ@The register value if successful, negative error code on failure”h]”hŒ@The register value if successful, negative error code on failure”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MBhj"¬ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj­h]”hŒNOTE”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MDhj"¬ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj1­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MDhj"¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdiobus_c45_read (C function)”Œc.mdiobus_c45_read”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKint mdiobus_c45_read (struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”j )�”}”(hŒJint mdiobus_c45_read(struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj`­h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\­h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\­h²hh³jn­h´MUubj3)�”}”(hŒmdiobus_c45_read”h]”j9)�”}”(hŒmdiobus_c45_read”h]”hŒmdiobus_c45_read”…”�”}”(hj�­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}­ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj\­h²hh³jn­h´MUubj¡ )�”}”(hŒ6(struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™­ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj»­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j½­Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jƒ­sbŒc.mdiobus_c45_read”†”asbuh1hhj™­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj™­ubj )�”}”(hj h]”hŒ*”…”�”}”(hjé­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj™­ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjö­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•­ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ®ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj+®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•­ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjD®h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj@®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@®ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj`®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•­ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj|®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjy®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j~®Œmodname”NŒ classname”Njå jè )�”}”jë ]”j×­Œc.mdiobus_c45_read”†”asbuh1hhju®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hju®ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj¨®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hju®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj•­ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj\­h²hh³jn­h´MUubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjX­h²hh³jn­h´MUubah}”(h]”jS­ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jn­h´MUhjU­h²hubjg)�”}”(hhh]”jl)�”}”(hŒ:Convenience function for reading a given MII mgmt register”h]”hŒ:Convenience function for reading a given MII mgmt register”…”�”}”(hjÒ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MUhjÏ®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjU­h²hh³jn­h´MUubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jê®jŒjê®j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXŒ**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to read **Return** The register value if successful, negative error code on failure **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”•h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjô®h]”hŒ Parameters”…”�”}”(hjö®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjò®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MYhjî®ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj¯h]”hŒstruct mii_bus *bus”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MVhj ¯ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj,¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j(¯h´MVhj)¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j(¯h´MVhj ¯ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjL¯h]”hŒint addr”…”�”}”(hjN¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjJ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MWhjF¯ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hje¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ja¯h´MWhjb¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ja¯h´MWhj ¯ubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj…¯h]”hŒ int devad”…”�”}”(hj‡¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjƒ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MXhj¯ubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hjž¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jš¯h´MXhj›¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jš¯h´MXhj ¯ubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj¾¯h]”hŒ u32 regnum”…”�”}”(hjÀ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MYhj¸¯ubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hjׯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÓ¯h´MYhjÔ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓ¯h´MYhj ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjî®ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjù¯h]”hŒReturn”…”�”}”(hjû¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj÷¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M[hjî®ubjl)�”}”(hŒ@The register value if successful, negative error code on failure”h]”hŒ@The register value if successful, negative error code on failure”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M[hjî®ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj °h]”hŒNOTE”…”�”}”(hj"°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M]hjî®ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj6°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M]hjî®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$mdiobus_c45_read_nested (C function)”Œc.mdiobus_c45_read_nested”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRint mdiobus_c45_read_nested (struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”j )�”}”(hŒQint mdiobus_c45_read_nested(struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hje°h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hja°h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja°h²hh³js°h´Mnubj3)�”}”(hŒmdiobus_c45_read_nested”h]”j9)�”}”(hŒmdiobus_c45_read_nested”h]”hŒmdiobus_c45_read_nested”…”�”}”(hj†°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚°ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hja°h²hh³js°h´Mnubj¡ )�”}”(hŒ6(struct mii_bus *bus, int addr, int devad, u32 regnum)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¢°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž°ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjÀ°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jˆ°sbŒc.mdiobus_c45_read_nested”†”asbuh1hhjž°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjž°ubj )�”}”(hj h]”hŒ*”…”�”}”(hjî°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjž°ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjû°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjš°ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj0±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjš°ubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjI±h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjE±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjE±ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hje±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjš°ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj�±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jƒ±Œmodname”NŒ classname”Njå jè )�”}”jë ]”jܰŒc.mdiobus_c45_read_nested”†”asbuh1hhjz±ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjz±ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj­±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjš°ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hja°h²hh³js°h´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj]°h²hh³js°h´Mnubah}”(h]”jX°ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³js°h´MnhjZ°h²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Nested version of the mdiobus_c45_read function”h]”hŒ/Nested version of the mdiobus_c45_read function”…”�”}”(hj×±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MnhjÔ±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjZ°h²hh³js°h´Mnubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jï±jŒjï±j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXü**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to read **Return** The register value if successful, negative error code on failure **Description** In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested(). **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjù±h]”hŒ Parameters”…”�”}”(hjû±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj÷±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mrhjó±ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj²h]”hŒstruct mii_bus *bus”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mohj²ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj1²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j-²h´Mohj.²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-²h´Mohj²ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjQ²h]”hŒint addr”…”�”}”(hjS²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjO²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MphjK²ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jf²h´Mphjg²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jf²h´Mphj²ubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjвh]”hŒ int devad”…”�”}”(hjŒ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjˆ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mqhj„²ubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hj£²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŸ²h´Mqhj ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŸ²h´Mqhj²ubjä)�”}”(hŒ'``u32 regnum`` register number to read ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjòh]”hŒ u32 regnum”…”�”}”(hjŲh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÁ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mrhj½²ubj)�”}”(hhh]”jl)�”}”(hŒregister number to read”h]”hŒregister number to read”…”�”}”(hjܲh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jزh´MrhjÙ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jزh´Mrhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjó±ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjþ²h]”hŒReturn”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mthjó±ubjl)�”}”(hŒ@The register value if successful, negative error code on failure”h]”hŒ@The register value if successful, negative error code on failure”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mthjó±ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj%³h]”hŒ Description”…”�”}”(hj'³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mvhjó±ubjl)�”}”(hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”h]”hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”…”�”}”(hj;³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Muhjó±ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjL³h]”hŒNOTE”…”�”}”(hjN³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjJ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mxhjó±ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hjb³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Myhjó±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!mdiobus_write_nested (C function)”Œc.mdiobus_write_nested”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint mdiobus_write_nested (struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”j )�”}”(hŒLint mdiobus_write_nested(struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‘³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�³h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M‹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�³h²hh³jŸ³h´M‹ubj3)�”}”(hŒmdiobus_write_nested”h]”j9)�”}”(hŒmdiobus_write_nested”h]”hŒmdiobus_write_nested”…”�”}”(hj²³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®³ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�³h²hh³jŸ³h´M‹ubj¡ )�”}”(hŒ4(struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjγh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjʳubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjʳubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjì³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j´³sbŒc.mdiobus_write_nested”†”asbuh1hhjʳubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjʳubj )�”}”(hj h]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjʳubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj'´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjʳubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƳubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj@´h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj<´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj<´ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj\´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƳubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjx´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hju´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jz´Œmodname”NŒ classname”Njå jè )�”}”jë ]”j´Œc.mdiobus_write_nested”†”asbuh1hhjq´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq´ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj¤´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƳubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÀ´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j´Œmodname”NŒ classname”Njå jè )�”}”jë ]”j´Œc.mdiobus_write_nested”†”asbuh1hhj¹´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¹´ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hjì´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjƳubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�³h²hh³jŸ³h´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‰³h²hh³jŸ³h´M‹ubah}”(h]”j„³ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŸ³h´M‹hj†³h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Nested version of the mdiobus_write function”h]”hŒ,Nested version of the mdiobus_write function”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M‹hjµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj†³h²hh³jŸ³h´M‹ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j.µjŒj.µj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXó**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **Return** Zero if successful, negative error code on failure **Description** In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested(). **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8µh]”hŒ Parameters”…”�”}”(hj:µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6µubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M�hj2µubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjWµh]”hŒstruct mii_bus *bus”…”�”}”(hjYµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjUµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MŒhjQµubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjpµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jlµh´MŒhjmµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlµh´MŒhjNµubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj�µh]”hŒint addr”…”�”}”(hj’µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj޵ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M�hjеubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj©µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¥µh´M�hj¦µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjеubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥µh´M�hjNµubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjɵh]”hŒ u32 regnum”…”�”}”(hj˵h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjǵubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MŽhjõubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjâµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÞµh´MŽhjßµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÞµh´MŽhjNµubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hj¶h]”hŒu16 val”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M�hjüµubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hj¶h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj#¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¶h´M�hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¶h´M�hjNµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2µubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjK¶h]”hŒReturn”…”�”}”(hjM¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjI¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M‘hj2µubjl)�”}”(hŒ2Zero if successful, negative error code on failure”h]”hŒ2Zero if successful, negative error code on failure”…”�”}”(hja¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M‘hj2µubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjr¶h]”hŒ Description”…”�”}”(hjt¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjp¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M“hj2µubjl)�”}”(hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”h]”hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”…”�”}”(hjˆ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M’hj2µubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj™¶h]”hŒNOTE”…”�”}”(hj›¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M•hj2µubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj¯¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M–hj2µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdiobus_write (C function)”Œc.mdiobus_write”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFint mdiobus_write (struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”j )�”}”(hŒEint mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÞ¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÚ¶h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚ¶h²hh³jì¶h´M§ubj3)�”}”(hŒ mdiobus_write”h]”j9)�”}”(hŒ mdiobus_write”h]”hŒ mdiobus_write”…”�”}”(hjÿ¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjû¶ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÚ¶h²hh³jì¶h´M§ubj¡ )�”}”(hŒ4(struct mii_bus *bus, int addr, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·ubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj9·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j;·Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j·sbŒc.mdiobus_write”†”asbuh1hhj·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·ubj )�”}”(hj h]”hŒ*”…”�”}”(hjg·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj·ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjt·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‰·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰·ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj©·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÅ·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÇ·Œmodname”NŒ classname”Njå jè )�”}”jë ]”jU·Œc.mdiobus_write”†”asbuh1hhj¾·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã·h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾·ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjñ·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸Œmodname”NŒ classname”Njå jè )�”}”jë ]”jU·Œc.mdiobus_write”†”asbuh1hhj¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¸ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hj9¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj·ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÚ¶h²hh³jì¶h´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÖ¶h²hh³jì¶h´M§ubah}”(h]”jѶah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jì¶h´M§hjÓ¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒ:Convenience function for writing a given MII mgmt register”h]”hŒ:Convenience function for writing a given MII mgmt register”…”�”}”(hjc¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M§hj`¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÓ¶h²hh³jì¶h´M§ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j{¸jŒj{¸j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXƒ**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **Return** Zero if successful, negative error code on failure **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj…¸h]”hŒ Parameters”…”�”}”(hj‡¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M«hj¸ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj¤¸h]”hŒstruct mii_bus *bus”…”�”}”(hj¦¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M¨hjž¸ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj½¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¹¸h´M¨hjº¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjž¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹¸h´M¨hj›¸ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjݸh]”hŒint addr”…”�”}”(hj߸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M©hj׸ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjö¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jò¸h´M©hjó¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj׸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jò¸h´M©hj›¸ubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj¹h]”hŒ u32 regnum”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mªhj¹ubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hj/¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j+¹h´Mªhj,¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j+¹h´Mªhj›¸ubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjO¹h]”hŒu16 val”…”�”}”(hjQ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjM¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M«hjI¹ubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hjh¹h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hjp¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjh¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jd¹h´M«hje¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jd¹h´M«hj›¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj˜¹h]”hŒReturn”…”�”}”(hjš¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj–¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M­hj¸ubjl)�”}”(hŒ2Zero if successful, negative error code on failure”h]”hŒ2Zero if successful, negative error code on failure”…”�”}”(hj®¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M­hj¸ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hj¿¹h]”hŒNOTE”…”�”}”(hjÁ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj½¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M¯hj¸ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hjÕ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M¯hj¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdiobus_c45_write (C function)”Œc.mdiobus_c45_write”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUint mdiobus_c45_write (struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒTint mdiobus_c45_write(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjºh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÀubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjºh²hh³jºh´MÀubj3)�”}”(hŒmdiobus_c45_write”h]”j9)�”}”(hŒmdiobus_c45_write”h]”hŒmdiobus_c45_write”…”�”}”(hj%ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!ºubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjºh²hh³jºh´MÀubj¡ )�”}”(hŒ?(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjAºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=ºubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj_ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\ºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jaºŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j'ºsbŒc.mdiobus_c45_write”†”asbuh1hhj=ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=ºubj )�”}”(hj h]”hŒ*”…”�”}”(hj�ºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj=ºubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjšºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ºubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj³ºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¯ºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯ºubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjϺh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ºubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjèºh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjäºubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjäºubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjäºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ºubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj »h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j"»Œmodname”NŒ classname”Njå jè )�”}”jë ]”j{ºŒc.mdiobus_c45_write”†”asbuh1hhj»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjL»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ºubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjh»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jj»Œmodname”NŒ classname”Njå jè )�”}”jë ]”j{ºŒc.mdiobus_c45_write”†”asbuh1hhja»ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hja»ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hj”»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj9ºubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjºh²hh³jºh´MÀubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjü¹h²hh³jºh´MÀubah}”(h]”j÷¹ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jºh´MÀhjù¹h²hubjg)�”}”(hhh]”jl)�”}”(hŒ:Convenience function for writing a given MII mgmt register”h]”hŒ:Convenience function for writing a given MII mgmt register”…”�”}”(hj¾»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÀhj»»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjù¹h²hh³jºh´MÀubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÖ»jŒjÖ»j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX«**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **Return** Zero if successful, negative error code on failure **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjà»h]”hŒ Parameters”…”�”}”(hjâ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÄhjÚ»ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjÿ»h]”hŒstruct mii_bus *bus”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjý»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÁhjù»ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¼h´MÁhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¼h´MÁhjö»ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj8¼h]”hŒint addr”…”�”}”(hj:¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj6¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÂhj2¼ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjQ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jM¼h´MÂhjN¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jM¼h´MÂhjö»ubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjq¼h]”hŒ int devad”…”�”}”(hjs¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjo¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÃhjk¼ubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hjмh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†¼h´MÃhj‡¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†¼h´MÃhjö»ubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjª¼h]”hŒ u32 regnum”…”�”}”(hj¬¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÄhj¤¼ubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¿¼h´MÄhjÀ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¿¼h´MÄhjö»ubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjã¼h]”hŒu16 val”…”�”}”(hjå¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjá¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÅhjݼubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hjü¼h²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jø¼h´MÅhjù¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjݼubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jø¼h´MÅhjö»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚ»ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj,½h]”hŒReturn”…”�”}”(hj.½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÇhjÚ»ubjl)�”}”(hŒ2Zero if successful, negative error code on failure”h]”hŒ2Zero if successful, negative error code on failure”…”�”}”(hjB½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÇhjÚ»ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjS½h]”hŒNOTE”…”�”}”(hjU½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjQ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÉhjÚ»ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hji½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÉhjÚ»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%mdiobus_c45_write_nested (C function)”Œc.mdiobus_c45_write_nested”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ\int mdiobus_c45_write_nested (struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”j )�”}”(hŒ[int mdiobus_c45_write_nested(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj˜½h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj”½h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÛubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”½h²hh³j¦½h´MÛubj3)�”}”(hŒmdiobus_c45_write_nested”h]”j9)�”}”(hŒmdiobus_c45_write_nested”h]”hŒmdiobus_c45_write_nested”…”�”}”(hj¹½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµ½ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj”½h²hh³j¦½h´MÛubj¡ )�”}”(hŒ?(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 val)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÕ½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjѽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjѽubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjó½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jõ½Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j»½sbŒc.mdiobus_c45_write_nested”†”asbuh1hhjѽubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjѽubj )�”}”(hj h]”hŒ*”…”�”}”(hj!¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjѽubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj.¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjѽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjͽubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjG¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjC¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC¾ubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjc¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjͽubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj|¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjx¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjоh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx¾ubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj˜¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjͽubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj´¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¶¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¾Œc.mdiobus_c45_write_nested”†”asbuh1hhj­¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­¾ubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjà¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjͽubj§ )�”}”(hŒu16 val”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjü¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjù¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jþ¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¾Œc.mdiobus_c45_write_nested”†”asbuh1hhjõ¾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ¾ubj9)�”}”(hŒval”h]”hŒval”…”�”}”(hj(¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjͽubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj”½h²hh³j¦½h´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�½h²hh³j¦½h´MÛubah}”(h]”j‹½ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¦½h´MÛhj�½h²hubjg)�”}”(hhh]”jl)�”}”(hŒ0Nested version of the mdiobus_c45_write function”h]”hŒ0Nested version of the mdiobus_c45_write function”…”�”}”(hjR¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÛhjO¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�½h²hh³j¦½h´MÛubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jj¿jŒjj¿j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to write ``u16 val`` value to write to **regnum** **Return** Zero if successful, negative error code on failure **Description** In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested(). **NOTE** MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjt¿h]”hŒ Parameters”…”�”}”(hjv¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjr¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mßhjn¿ubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj“¿h]”hŒstruct mii_bus *bus”…”�”}”(hj•¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÜhj�¿ubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj¬¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨¿h´MÜhj©¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨¿h´MÜhjŠ¿ubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjÌ¿h]”hŒint addr”…”�”}”(hjοh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÝhjÆ¿ubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjå¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³já¿h´MÝhjâ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³já¿h´MÝhjŠ¿ubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjÀh]”hŒ int devad”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MÞhjÿ¿ubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀh´MÞhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀh´MÞhjŠ¿ubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj>Àh]”hŒ u32 regnum”…”�”}”(hj@Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mßhj8Àubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjWÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jSÀh´MßhjTÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jSÀh´MßhjŠ¿ubjä)�”}”(hŒ)``u16 val`` value to write to **regnum** ”h]”(jê)�”}”(hŒ ``u16 val``”h]”jð)�”}”(hjwÀh]”hŒu16 val”…”�”}”(hjyÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MàhjqÀubj)�”}”(hhh]”jl)�”}”(hŒvalue to write to **regnum**”h]”(hŒvalue to write to ”…”�”}”(hj�Àh²hh³Nh´Nubj›)�”}”(hŒ **regnum**”h]”hŒregnum”…”�”}”(hj˜Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒÀh´Màhj�Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒÀh´MàhjŠ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjn¿ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÀÀh]”hŒReturn”…”�”}”(hjÂÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mâhjn¿ubjl)�”}”(hŒ2Zero if successful, negative error code on failure”h]”hŒ2Zero if successful, negative error code on failure”…”�”}”(hjÖÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mâhjn¿ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjçÀh]”hŒ Description”…”�”}”(hjéÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjåÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mähjn¿ubjl)�”}”(hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”h]”hŒ]In case of nested MDIO bus access avoid lockdep false positives by using mutex_lock_nested().”…”�”}”(hjýÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mãhjn¿ubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjÁh]”hŒNOTE”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mæhjn¿ubjl)�”}”(hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”h]”hŒ„MUST NOT be called from interrupt context, because the bus read/write functions may wait for an interrupt to conclude the operation.”…”�”}”(hj$Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mçhjn¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdiobus_modify (C function)”Œc.mdiobus_modify”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQint mdiobus_modify (struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒPint mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjSÁh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjOÁh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOÁh²hh³jaÁh´Mubj3)�”}”(hŒmdiobus_modify”h]”j9)�”}”(hŒmdiobus_modify”h]”hŒmdiobus_modify”…”�”}”(hjtÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpÁubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjOÁh²hh³jaÁh´Mubj¡ )�”}”(hŒ>(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒÁubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj®Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°ÁŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jvÁsbŒc.mdiobus_modify”†”asbuh1hhjŒÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÁh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŒÁubj )�”}”(hj h]”hŒ*”…”�”}”(hjÜÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŒÁubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjéÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆÁubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjþÁubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþÁubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆÁubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj:Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j<ÂŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÊÁŒc.mdiobus_modify”†”asbuh1hhj3Âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj3Âubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hjfÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj3Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆÁubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj‚Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j„ÂŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÊÁŒc.mdiobus_modify”†”asbuh1hhj{Âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj{Âubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj®Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆÁubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÊÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÌÂŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÊÁŒc.mdiobus_modify”†”asbuh1hhjÃÂubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÂh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÃÂubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjöÂh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjˆÁubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjOÁh²hh³jaÁh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjKÁh²hh³jaÁh´Mubah}”(h]”jFÁah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jaÁh´MhjHÁh²hubjg)�”}”(hhh]”jl)�”}”(hŒ?Convenience function for modifying a given mdio device register”h]”hŒ?Convenience function for modifying a given mdio device register”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MhjÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjHÁh²hh³jaÁh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j8ÃjŒj8Ãj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to write ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Return** 0 on success, negative on any error condition”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjBÃh]”hŒ Parameters”…”�”}”(hjDÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj@Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mhj<Ãubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjaÃh]”hŒstruct mii_bus *bus”…”�”}”(hjcÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mhj[Ãubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjzÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jvÃh´MhjwÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jvÃh´MhjXÃubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjšÃh]”hŒint addr”…”�”}”(hjœÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj˜Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mhj”Ãubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj³Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯Ãh´Mhj°Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯Ãh´MhjXÃubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjÓÃh]”hŒ u32 regnum”…”�”}”(hjÕÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÑÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MhjÍÃubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjìÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jèÃh´MhjéÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jèÃh´MhjXÃubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj Äh]”hŒu16 mask”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MhjÄubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj%Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!Äh´Mhj"Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j!Äh´MhjXÃubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjEÄh]”hŒu16 set”…”�”}”(hjGÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjCÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mhj?Äubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hj^Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jZÄh´Mhj[Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jZÄh´MhjXÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj<Ãubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj€Äh]”hŒReturn”…”�”}”(hj‚Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mhj<Ãubjl)�”}”(hŒ-0 on success, negative on any error condition”h]”hŒ-0 on success, negative on any error condition”…”�”}”(hj–Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mhj<Ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmdiobus_c45_modify (C function)”Œc.mdiobus_c45_modify”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`int mdiobus_c45_modify (struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒ_int mdiobus_c45_modify(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÅÄh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÁÄh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁÄh²hh³jÓÄh´M&ubj3)�”}”(hŒmdiobus_c45_modify”h]”j9)�”}”(hŒmdiobus_c45_modify”h]”hŒmdiobus_c45_modify”…”�”}”(hjæÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâÄubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÁÄh²hh³jÓÄh´M&ubj¡ )�”}”(hŒI(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþÄubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþÄubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j"ÅŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jèÄsbŒc.mdiobus_c45_modify”†”asbuh1hhjþÄubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþÄubj )�”}”(hj h]”hŒ*”…”�”}”(hjNÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjþÄubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj[Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúÄubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjtÅh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjpÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjpÅubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúÄubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj©Åh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¥Åubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥Åubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjÅÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúÄubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjáÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…•%Œreftype”já Œ reftarget”jãÅŒmodname”NŒ classname”Njå jè )�”}”jë ]”j<ÅŒc.mdiobus_c45_modify”†”asbuh1hhjÚÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿÅh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÚÅubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj Æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúÄubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj)Æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j+ÆŒmodname”NŒ classname”Njå jè )�”}”jë ]”j<ÅŒc.mdiobus_c45_modify”†”asbuh1hhj"Æubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÆh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"Æubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjUÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúÄubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjqÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jsÆŒmodname”NŒ classname”Njå jè )�”}”jë ]”j<ÅŒc.mdiobus_c45_modify”†”asbuh1hhjjÆubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Æh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjÆubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hj�Æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúÄubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÁÄh²hh³jÓÄh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj½Äh²hh³jÓÄh´M&ubah}”(h]”j¸Äah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÓÄh´M&hjºÄh²hubjg)�”}”(hhh]”jl)�”}”(hŒ?Convenience function for modifying a given mdio device register”h]”hŒ?Convenience function for modifying a given mdio device register”…”�”}”(hjÇÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M&hjÄÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjºÄh²hh³jÓÄh´M&ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j߯jŒj߯j�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX;**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to write ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Return** 0 on success, negative on any error condition”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjéÆh]”hŒ Parameters”…”�”}”(hjëÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjçÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M*hjãÆubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjÇh]”hŒstruct mii_bus *bus”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M(hjÇubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hj!Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇh´M(hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇh´M(hjÿÆubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjAÇh]”hŒint addr”…”�”}”(hjCÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M)hj;Çubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjZÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jVÇh´M)hjWÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVÇh´M)hjÿÆubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjzÇh]”hŒ int devad”…”�”}”(hj|Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjxÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M*hjtÇubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hj“Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Çh´M*hj�Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Çh´M*hjÿÆubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj³Çh]”hŒ u32 regnum”…”�”}”(hjµÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M+hj­Çubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjÌÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÈÇh´M+hjÉÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈÇh´M+hjÿÆubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hjìÇh]”hŒu16 mask”…”�”}”(hjîÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M,hjæÇubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÈh´M,hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈh´M,hjÿÆubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hj%Èh]”hŒu16 set”…”�”}”(hj'Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M-hjÈubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hj>Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:Èh´M-hj;Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:Èh´M-hjÿÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjãÆubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj`Èh]”hŒReturn”…”�”}”(hjbÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M/hjãÆubjl)�”}”(hŒ-0 on success, negative on any error condition”h]”hŒ-0 on success, negative on any error condition”…”�”}”(hjvÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M/hjãÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#mdiobus_modify_changed (C function)”Œc.mdiobus_modify_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYint mdiobus_modify_changed (struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒXint mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¥Èh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡Èh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡Èh²hh³j³Èh´M@ubj3)�”}”(hŒmdiobus_modify_changed”h]”j9)�”}”(hŒmdiobus_modify_changed”h]”hŒmdiobus_modify_changed”…”�”}”(hjÆÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂÈubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡Èh²hh³j³Èh´M@ubj¡ )�”}”(hŒ>(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞÈubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞÈubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÈÈsbŒc.mdiobus_modify_changed”†”asbuh1hhjÞÈubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞÈubj )�”}”(hj h]”hŒ*”…”�”}”(hj.Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÞÈubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj;Éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚÈubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjTÉh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjPÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPÉubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjpÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚÈubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjŒÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŽÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.mdiobus_modify_changed”†”asbuh1hhj…Éubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…Éubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj¸Éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚÈubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÔÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÖÉŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.mdiobus_modify_changed”†”asbuh1hhjÍÉubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÉh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍÉubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚÈubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÊŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÉŒc.mdiobus_modify_changed”†”asbuh1hhjÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Êh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÊubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjHÊh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚÈubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡Èh²hh³j³Èh´M@ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�Èh²hh³j³Èh´M@ubah}”(h]”j˜Èah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j³Èh´M@hjšÈh²hubjg)�”}”(hhh]”jl)�”}”(hŒ[Convenience function for modifying a given mdio device register and returning if it changed”h]”hŒ[Convenience function for modifying a given mdio device register and returning if it changed”…”�”}”(hjrÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M@hjoÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšÈh²hh³j³Èh´M@ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jŠÊjŒjŠÊj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX@**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``u32 regnum`` register number to write ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Return** 1 if the register was modified, 0 if no change was needed, negative on any error condition”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj”Êh]”hŒ Parameters”…”�”}”(hj–Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MDhjŽÊubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj³Êh]”hŒstruct mii_bus *bus”…”�”}”(hjµÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MBhj­Êubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjÌÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÈÊh´MBhjÉÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈÊh´MBhjªÊubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjìÊh]”hŒint addr”…”�”}”(hjîÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MChjæÊubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jËh´MChjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jËh´MChjªÊubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hj%Ëh]”hŒ u32 regnum”…”�”}”(hj'Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MDhjËubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hj>Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:Ëh´MDhj;Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:Ëh´MDhjªÊubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj^Ëh]”hŒu16 mask”…”�”}”(hj`Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MEhjXËubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hjwËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsËh´MEhjtËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsËh´MEhjªÊubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hj—Ëh]”hŒu16 set”…”�”}”(hj™Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MFhj‘Ëubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hj°Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬Ëh´MFhj­Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬Ëh´MFhjªÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŽÊubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjÒËh]”hŒReturn”…”�”}”(hjÔËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐËubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MHhjŽÊubjl)�”}”(hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”h]”hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”…”�”}”(hjèËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MHhjŽÊubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'mdiobus_c45_modify_changed (C function)”Œc.mdiobus_c45_modify_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒhint mdiobus_c45_modify_changed (struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒgint mdiobus_c45_modify_changed(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÌh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MYubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Ìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÌh²hh³j%Ìh´MYubj3)�”}”(hŒmdiobus_c45_modify_changed”h]”j9)�”}”(hŒmdiobus_c45_modify_changed”h]”hŒmdiobus_c45_modify_changed”…”�”}”(hj8Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4Ìubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÌh²hh³j%Ìh´MYubj¡ )�”}”(hŒI(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjTÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPÌubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPÌubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjrÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jtÌŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j:ÌsbŒc.mdiobus_c45_modify_changed”†”asbuh1hhjPÌubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Ìh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjPÌubj )�”}”(hj h]”hŒ*”…”�”}”(hj Ìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjPÌubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj­Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLÌubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÆÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÂÌubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔÌh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÂÌubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjâÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLÌubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjûÌh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj÷Ìubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj÷Ìubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLÌubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj3Íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0Íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j5ÍŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŽÌŒc.mdiobus_c45_modify_changed”†”asbuh1hhj,Íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj,Íubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj_Íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLÌubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj{Íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j}ÍŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŽÌŒc.mdiobus_c45_modify_changed”†”asbuh1hhjtÍubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtÍubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj§Íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLÌubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÃÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÅÍŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŽÌŒc.mdiobus_c45_modify_changed”†”asbuh1hhj¼Íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáÍh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¼Íubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjïÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjLÌubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÌh²hh³j%Ìh´MYubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÌh²hh³j%Ìh´MYubah}”(h]”j Ìah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j%Ìh´MYhj Ìh²hubjg)�”}”(hhh]”jl)�”}”(hŒ[Convenience function for modifying a given mdio device register and returning if it changed”h]”hŒ[Convenience function for modifying a given mdio device register and returning if it changed”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´MYhjÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj Ìh²hh³j%Ìh´MYubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j1ÎjŒj1Îj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hXh**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to write ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Return** 1 if the register was modified, 0 if no change was needed, negative on any error condition”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj;Îh]”hŒ Parameters”…”�”}”(hj=Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj9Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M]hj5Îubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hjZÎh]”hŒstruct mii_bus *bus”…”�”}”(hj\Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjXÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M[hjTÎubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjsÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³joÎh´M[hjpÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³joÎh´M[hjQÎubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hj“Îh]”hŒint addr”…”�”}”(hj•Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‘Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M\hj�Îubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hj¬Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¨Îh´M\hj©Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¨Îh´M\hjQÎubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hjÌÎh]”hŒ int devad”…”�”}”(hjÎÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÊÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M]hjÆÎubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hjåÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jáÎh´M]hjâÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáÎh´M]hjQÎubjä)�”}”(hŒ(``u32 regnum`` register number to write ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjÏh]”hŒ u32 regnum”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M^hjÿÎubj)�”}”(hhh]”jl)�”}”(hŒregister number to write”h]”hŒregister number to write”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏh´M^hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏh´M^hjQÎubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hj>Ïh]”hŒu16 mask”…”�”}”(hj@Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M_hj8Ïubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hjWÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jSÏh´M_hjTÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jSÏh´M_hjQÎubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjwÏh]”hŒu16 set”…”�”}”(hjyÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´M`hjqÏubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hj�Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒÏh´M`hj�Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒÏh´M`hjQÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj5Îubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj²Ïh]”hŒReturn”…”�”}”(hj´Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj°Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mbhj5Îubjl)�”}”(hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”h]”hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”…”�”}”(hjÈÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:134: ./drivers/net/phy/mdio_bus.c”h´Mbhj5Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)__mdiobus_c45_modify_changed (C function)”Œc.__mdiobus_c45_modify_changed”hNt”auh1híhj”–h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒjint __mdiobus_c45_modify_changed (struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”j )�”}”(hŒiint __mdiobus_c45_modify_changed(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj÷Ïh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjóÏh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´Kþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjóÏh²hh³jÐh´Kþubj3)�”}”(hŒ__mdiobus_c45_modify_changed”h]”j9)�”}”(hŒ__mdiobus_c45_modify_changed”h]”hŒ__mdiobus_c45_modify_changed”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjóÏh²hh³jÐh´Kþubj¡ )�”}”(hŒI(struct mii_bus *bus, int addr, int devad, u32 regnum, u16 mask, u16 set)”h]”(j§ )�”}”(hŒstruct mii_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj4Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0Ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0Ðubh)�”}”(hhh]”j9)�”}”(hŒmii_bus”h]”hŒmii_bus”…”�”}”(hjRÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jTÐŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÐsbŒc.__mdiobus_c45_modify_changed”†”asbuh1hhj0Ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0Ðubj )�”}”(hj h]”hŒ*”…”�”}”(hj€Ðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj0Ðubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ðubj§ )�”}”(hŒint addr”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¦Ðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢Ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢Ðubj9)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjÂÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ðubj§ )�”}”(hŒ int devad”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÛÐh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj×Ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÐh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×Ðubj9)�”}”(hŒdevad”h]”hŒdevad”…”�”}”(hj÷Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ðubj§ )�”}”(hŒ u32 regnum”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnÐŒc.__mdiobus_c45_modify_changed”†”asbuh1hhj Ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Ñubj9)�”}”(hŒregnum”h]”hŒregnum”…”�”}”(hj?Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ðubj§ )�”}”(hŒu16 mask”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj[Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjXÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]ÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnÐŒc.__mdiobus_c45_modify_changed”†”asbuh1hhjTÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjTÑubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj‡Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ðubj§ )�”}”(hŒu16 set”h]”(h)�”}”(hhh]”j9)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj£Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¥ÑŒmodname”NŒ classname”Njå jè )�”}”jë ]”jnÐŒc.__mdiobus_c45_modify_changed”†”asbuh1hhjœÑubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÑh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœÑubj9)�”}”(hŒset”h]”hŒset”…”�”}”(hjÏÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Ðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjóÏh²hh³jÐh´Kþubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjïÏh²hh³jÐh´Kþubah}”(h]”jêÏah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÐh´KþhjìÏh²hubjg)�”}”(hhh]”jl)�”}”(hŒ/Unlocked version of the mdiobus_modify function”h]”hŒ/Unlocked version of the mdiobus_modify function”…”�”}”(hjùÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´KþhjöÑh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjìÏh²hh³jÐh´Kþubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÒjŒjÒj�‰jމj�‰uh1hþh²hhj”–h³Nh´Nubj‘)�”}”(hX$**Parameters** ``struct mii_bus *bus`` the mii_bus struct ``int addr`` the phy address ``int devad`` device address to read ``u32 regnum`` register number to modify ``u16 mask`` bit mask of bits to clear ``u16 set`` bit mask of bits to set **Return** 1 if the register was modified, 0 if no change was needed, negative on any error condition **Description** Read, modify, and if any change, write the register value back to the device. Any error returns a negative number. **NOTE** MUST NOT be called from interrupt context.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÒh]”hŒ Parameters”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjÒubjß)�”}”(hhh]”(jä)�”}”(hŒ+``struct mii_bus *bus`` the mii_bus struct ”h]”(jê)�”}”(hŒ``struct mii_bus *bus``”h]”jð)�”}”(hj:Òh]”hŒstruct mii_bus *bus”…”�”}”(hj<Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´Kÿhj4Òubj)�”}”(hhh]”jl)�”}”(hŒthe mii_bus struct”h]”hŒthe mii_bus struct”…”�”}”(hjSÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jOÒh´KÿhjPÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOÒh´Kÿhj1Òubjä)�”}”(hŒ``int addr`` the phy address ”h]”(jê)�”}”(hŒ ``int addr``”h]”jð)�”}”(hjsÒh]”hŒint addr”…”�”}”(hjuÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjqÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjmÒubj)�”}”(hhh]”jl)�”}”(hŒthe phy address”h]”hŒthe phy address”…”�”}”(hjŒÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jˆÒh´Mhj‰Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jˆÒh´Mhj1Òubjä)�”}”(hŒ%``int devad`` device address to read ”h]”(jê)�”}”(hŒ ``int devad``”h]”jð)�”}”(hj¬Òh]”hŒ int devad”…”�”}”(hj®Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjªÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´Mhj¦Òubj)�”}”(hhh]”jl)�”}”(hŒdevice address to read”h]”hŒdevice address to read”…”�”}”(hjÅÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁÒh´MhjÂÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁÒh´Mhj1Òubjä)�”}”(hŒ)``u32 regnum`` register number to modify ”h]”(jê)�”}”(hŒ``u32 regnum``”h]”jð)�”}”(hjåÒh]”hŒ u32 regnum”…”�”}”(hjçÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjãÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjßÒubj)�”}”(hhh]”jl)�”}”(hŒregister number to modify”h]”hŒregister number to modify”…”�”}”(hjþÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³júÒh´MhjûÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³júÒh´Mhj1Òubjä)�”}”(hŒ'``u16 mask`` bit mask of bits to clear ”h]”(jê)�”}”(hŒ ``u16 mask``”h]”jð)�”}”(hjÓh]”hŒu16 mask”…”�”}”(hj Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjÓubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to clear”h]”hŒbit mask of bits to clear”…”�”}”(hj7Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j3Óh´Mhj4Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3Óh´Mhj1Òubjä)�”}”(hŒ$``u16 set`` bit mask of bits to set ”h]”(jê)�”}”(hŒ ``u16 set``”h]”jð)�”}”(hjWÓh]”hŒu16 set”…”�”}”(hjYÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjUÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjQÓubj)�”}”(hhh]”jl)�”}”(hŒbit mask of bits to set”h]”hŒbit mask of bits to set”…”�”}”(hjpÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jlÓh´MhjmÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlÓh´Mhj1Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÒubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj’Óh]”hŒReturn”…”�”}”(hj”Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjÒubjl)�”}”(hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”h]”hŒZ1 if the register was modified, 0 if no change was needed, negative on any error condition”…”�”}”(hj¨Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjÒubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¹Óh]”hŒ Description”…”�”}”(hj»Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj·Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´M hjÒubjl)�”}”(hŒrRead, modify, and if any change, write the register value back to the device. Any error returns a negative number.”h]”hŒrRead, modify, and if any change, write the register value back to the device. Any error returns a negative number.”…”�”}”(hjÏÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´MhjÒubjl)�”}”(hŒ**NOTE**”h]”j›)�”}”(hjàÓh]”hŒNOTE”…”�”}”(hjâÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´M hjÒubjl)�”}”(hŒ*MUST NOT be called from interrupt context.”h]”hŒ*MUST NOT be called from interrupt context.”…”�”}”(hjöÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/kapi:137: ./drivers/net/phy/mdio_bus.c”h´M hjÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj”–h²hh³Nh´Nubeh}”(h]”Œ phy-support”ah ]”h"]”Œ phy support”ah$]”h&]”uh1hµhj~Âh²hh³hÊh´Koubh¶)�”}”(hhh]”(h»)�”}”(hŒPHYLINK”h]”hŒPHYLINK”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÔh²hh³hÊh´K�ubjÒ)�”}”(hŒÇPHYLINK interfaces traditional network drivers with PHYLIB, fixed-links, and SFF modules (eg, hot-pluggable SFP) that may contain PHYs. PHYLINK provides management of the link state and link modes. ”h]”jl)�”}”(hŒÆPHYLINK interfaces traditional network drivers with PHYLIB, fixed-links, and SFF modules (eg, hot-pluggable SFP) that may contain PHYs. PHYLINK provides management of the link state and link modes.”h]”hŒÆPHYLINK interfaces traditional network drivers with PHYLIB, fixed-links, and SFF modules (eg, hot-pluggable SFP) that may contain PHYs. PHYLINK provides management of the link state and link modes.”…”�”}”(hj)Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³hÊh´K�hj%Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³hÊh´K�hjÔh²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_link_state (C struct)”Œc.phylink_link_state”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphylink_link_state”h]”j )�”}”(hŒstruct phylink_link_state”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjVÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRÔh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÔh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjRÔh²hh³jcÔh´Kubj3)�”}”(hŒphylink_link_state”h]”j9)�”}”(hjPÔh]”hŒphylink_link_state”…”�”}”(hjvÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjrÔubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjRÔh²hh³jcÔh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjNÔh²hh³jcÔh´Kubah}”(h]”jIÔah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jcÔh´KhjKÔh²hubjg)�”}”(hhh]”jl)�”}”(hŒlink state structure”h]”hŒlink state structure”…”�”}”(hj˜Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kihj•Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjKÔh²hh³jcÔh´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j°ÔjŒj°Ôj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX£**Definition**:: struct phylink_link_state { unsigned long advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long lp_advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; phy_interface_t interface; int speed; int duplex; int pause; int rate_matching; unsigned int link:1; unsigned int an_complete:1; }; **Members** ``advertising`` ethtool bitmask containing advertised link modes ``lp_advertising`` ethtool bitmask containing link partner advertised link modes ``interface`` link :c:type:`typedef phy_interface_t ` mode ``speed`` link speed, one of the SPEED_* constants. ``duplex`` link duplex mode, one of DUPLEX_* constants. ``pause`` link pause state, described by MLO_PAUSE_* constants. ``rate_matching`` rate matching being performed, one of the RATE_MATCH_* constants. If rate matching is taking place, then the speed/duplex of the medium link mode (**speed** and **duplex**) and the speed/duplex of the phy interface mode (**interface**) are different. ``link`` true if the link is up. ``an_complete`` true if autonegotiation has completed.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¼Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸ÔubhŒ:”…”�”}”(hj¸Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kmhj´Ôubj¶)�”}”(hX\struct phylink_link_state { unsigned long advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long lp_advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; phy_interface_t interface; int speed; int duplex; int pause; int rate_matching; unsigned int link:1; unsigned int an_complete:1; };”h]”hX\struct phylink_link_state { unsigned long advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; unsigned long lp_advertising[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; phy_interface_t interface; int speed; int duplex; int pause; int rate_matching; unsigned int link:1; unsigned int an_complete:1; };”…”�”}”hjÕÔsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kohj´Ôubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjæÔh]”hŒMembers”…”�”}”(hjèÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjäÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K{hj´Ôubjß)�”}”(hhh]”(jä)�”}”(hŒA``advertising`` ethtool bitmask containing advertised link modes ”h]”(jê)�”}”(hŒ``advertising``”h]”jð)�”}”(hjÕh]”hŒ advertising”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KkhjÿÔubj)�”}”(hhh]”jl)�”}”(hŒ0ethtool bitmask containing advertised link modes”h]”hŒ0ethtool bitmask containing advertised link modes”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕh´KkhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕh´KkhjüÔubjä)�”}”(hŒQ``lp_advertising`` ethtool bitmask containing link partner advertised link modes ”h]”(jê)�”}”(hŒ``lp_advertising``”h]”jð)�”}”(hj>Õh]”hŒlp_advertising”…”�”}”(hj@Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kmhj8Õubj)�”}”(hhh]”jl)�”}”(hŒ=ethtool bitmask containing link partner advertised link modes”h]”hŒ=ethtool bitmask containing link partner advertised link modes”…”�”}”(hjWÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KlhjTÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jSÕh´KmhjüÔubjä)�”}”(hŒL``interface`` link :c:type:`typedef phy_interface_t ` mode ”h]”(jê)�”}”(hŒ ``interface``”h]”jð)�”}”(hjxÕh]”hŒ interface”…”�”}”(hjzÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjvÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KnhjrÕubj)�”}”(hhh]”jl)�”}”(hŒ=link :c:type:`typedef phy_interface_t ` mode”h]”(hŒlink ”…”�”}”(hj‘Õh²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hj›Õh]”hŒtypedef phy_interface_t”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj™Õubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³j�Õh´Knhj‘ÕubhŒ mode”…”�”}”(hj‘Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Õh´KnhjŽÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Õh´KnhjüÔubjä)�”}”(hŒ4``speed`` link speed, one of the SPEED_* constants. ”h]”(jê)�”}”(hŒ ``speed``”h]”jð)�”}”(hjÔÕh]”hŒspeed”…”�”}”(hjÖÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KohjÎÕubj)�”}”(hhh]”jl)�”}”(hŒ)link speed, one of the SPEED_* constants.”h]”hŒ)link speed, one of the SPEED_* constants.”…”�”}”(hjíÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jéÕh´KohjêÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéÕh´KohjüÔubjä)�”}”(hŒ8``duplex`` link duplex mode, one of DUPLEX_* constants. ”h]”(jê)�”}”(hŒ ``duplex``”h]”jð)�”}”(hj Öh]”hŒduplex”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KphjÖubj)�”}”(hhh]”jl)�”}”(hŒ,link duplex mode, one of DUPLEX_* constants.”h]”hŒ,link duplex mode, one of DUPLEX_* constants.”…”�”}”(hj&Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j"Öh´Kphj#Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j"Öh´KphjüÔubjä)�”}”(hŒ@``pause`` link pause state, described by MLO_PAUSE_* constants. ”h]”(jê)�”}”(hŒ ``pause``”h]”jð)�”}”(hjFÖh]”hŒpause”…”�”}”(hjHÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjDÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kqhj@Öubj)�”}”(hhh]”jl)�”}”(hŒ5link pause state, described by MLO_PAUSE_* constants.”h]”hŒ5link pause state, described by MLO_PAUSE_* constants.”…”�”}”(hj_Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j[Öh´Kqhj\Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[Öh´KqhjüÔubjä)�”}”(hX ``rate_matching`` rate matching being performed, one of the RATE_MATCH_* constants. If rate matching is taking place, then the speed/duplex of the medium link mode (**speed** and **duplex**) and the speed/duplex of the phy interface mode (**interface**) are different. ”h]”(jê)�”}”(hŒ``rate_matching``”h]”jð)�”}”(hjÖh]”hŒ rate_matching”…”�”}”(hj�Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KuhjyÖubj)�”}”(hhh]”jl)�”}”(hŒúrate matching being performed, one of the RATE_MATCH_* constants. If rate matching is taking place, then the speed/duplex of the medium link mode (**speed** and **duplex**) and the speed/duplex of the phy interface mode (**interface**) are different.”h]”(hŒ“rate matching being performed, one of the RATE_MATCH_* constants. If rate matching is taking place, then the speed/duplex of the medium link mode (”…”�”}”(hj˜Öh²hh³Nh´Nubj›)�”}”(hŒ **speed**”h]”hŒspeed”…”�”}”(hj Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜ÖubhŒ and ”…”�”}”(hj˜Öh²hh³Nh´Nubj›)�”}”(hŒ **duplex**”h]”hŒduplex”…”�”}”(hj²Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜ÖubhŒ2) and the speed/duplex of the phy interface mode (”…”�”}”(hj˜Öh²hh³Nh´Nubj›)�”}”(hŒ **interface**”h]”hŒ interface”…”�”}”(hjÄÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj˜ÖubhŒ) are different.”…”�”}”(hj˜Öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Krhj•Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”Öh´KuhjüÔubjä)�”}”(hŒ!``link`` true if the link is up. ”h]”(jê)�”}”(hŒ``link``”h]”jð)�”}”(hjïÖh]”hŒlink”…”�”}”(hjñÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KvhjéÖubj)�”}”(hhh]”jl)�”}”(hŒtrue if the link is up.”h]”hŒtrue if the link is up.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j×h´Kvhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j×h´KvhjüÔubjä)�”}”(hŒ6``an_complete`` true if autonegotiation has completed.”h]”(jê)�”}”(hŒ``an_complete``”h]”jð)�”}”(hj(×h]”hŒ an_complete”…”�”}”(hj*×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kvhj"×ubj)�”}”(hhh]”jl)�”}”(hŒ&true if autonegotiation has completed.”h]”hŒ&true if autonegotiation has completed.”…”�”}”(hjA×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kwhj>×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=×h´KvhjüÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj´Ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_config (C struct)”Œc.phylink_config”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphylink_config”h]”j )�”}”(hŒstruct phylink_config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‚×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~×h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~×h²hh³j�×h´K}ubj3)�”}”(hŒphylink_config”h]”j9)�”}”(hj|×h]”hŒphylink_config”…”�”}”(hj¢×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž×ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj~×h²hh³j�×h´K}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjz×h²hh³j�×h´K}ubah}”(h]”ju×ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�×h´K}hjw×h²hubjg)�”}”(hhh]”jl)�”}”(hŒPHYLINK configuration structure”h]”hŒPHYLINK configuration structure”…”�”}”(hjÄ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KŠhjÁ×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjw×h²hh³j�×h´K}ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jÜ×jŒjÜ×j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXÅ**Definition**:: struct phylink_config { struct device *dev; enum phylink_op_type type; bool poll_fixed_state; bool mac_managed_pm; bool mac_requires_rxc; bool default_an_inband; bool eee_rx_clk_stop_enable; void (*get_fixed_state)(struct phylink_config *config, struct phylink_link_state *state); unsigned long supported_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long lpi_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long mac_capabilities; unsigned long lpi_capabilities; u32 lpi_timer_default; bool eee_enabled_default; bool wol_phy_legacy; bool wol_phy_speed_ctrl; u32 wol_mac_support; }; **Members** ``dev`` a pointer to a struct device associated with the MAC ``type`` operation type of PHYLINK instance ``poll_fixed_state`` if true, starts link_poll, if MAC link is at ``MLO_AN_FIXED`` mode. ``mac_managed_pm`` if true, indicate the MAC driver is responsible for PHY PM. ``mac_requires_rxc`` if true, the MAC always requires a receive clock from PHY. The PHY driver should start the clock signal as soon as possible and avoid stopping it during suspend events. ``default_an_inband`` if true, defaults to MLO_AN_INBAND rather than MLO_AN_PHY. A fixed-link specification will override. ``eee_rx_clk_stop_enable`` if true, PHY can stop the receive clock during LPI ``get_fixed_state`` callback to execute to determine the fixed link state, if MAC link is at ``MLO_AN_FIXED`` mode. ``supported_interfaces`` bitmap describing which PHY_INTERFACE_MODE_xxx are supported by the MAC/PCS. ``lpi_interfaces`` bitmap describing which PHY interface modes can support LPI signalling. ``mac_capabilities`` MAC pause/speed/duplex capabilities. ``lpi_capabilities`` MAC speeds which can support LPI signalling ``lpi_timer_default`` Default EEE LPI timer setting. ``eee_enabled_default`` If set, EEE will be enabled by phylink at creation time ``wol_phy_legacy`` Use Wake-on-Lan with PHY even if phy_can_wakeup() is false ``wol_phy_speed_ctrl`` Use phy speed control on suspend/resume ``wol_mac_support`` Bitmask of MAC supported ``WAKE_*`` options”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjè×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjä×ubhŒ:”…”�”}”(hjä×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KŽhjà×ubj¶)�”}”(hX¥struct phylink_config { struct device *dev; enum phylink_op_type type; bool poll_fixed_state; bool mac_managed_pm; bool mac_requires_rxc; bool default_an_inband; bool eee_rx_clk_stop_enable; void (*get_fixed_state)(struct phylink_config *config, struct phylink_link_state *state); unsigned long supported_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long lpi_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long mac_capabilities; unsigned long lpi_capabilities; u32 lpi_timer_default; bool eee_enabled_default; bool wol_phy_legacy; bool wol_phy_speed_ctrl; u32 wol_mac_support; };”h]”hX¥struct phylink_config { struct device *dev; enum phylink_op_type type; bool poll_fixed_state; bool mac_managed_pm; bool mac_requires_rxc; bool default_an_inband; bool eee_rx_clk_stop_enable; void (*get_fixed_state)(struct phylink_config *config, struct phylink_link_state *state); unsigned long supported_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long lpi_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long mac_capabilities; unsigned long lpi_capabilities; u32 lpi_timer_default; bool eee_enabled_default; bool wol_phy_legacy; bool wol_phy_speed_ctrl; u32 wol_mac_support; };”…”�”}”hjØsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K�hjà×ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjØh]”hŒMembers”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K¤hjà×ubjß)�”}”(hhh]”(jä)�”}”(hŒ=``dev`` a pointer to a struct device associated with the MAC ”h]”(jê)�”}”(hŒ``dev``”h]”jð)�”}”(hj1Øh]”hŒdev”…”�”}”(hj3Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj/Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KŒhj+Øubj)�”}”(hhh]”jl)�”}”(hŒ4a pointer to a struct device associated with the MAC”h]”hŒ4a pointer to a struct device associated with the MAC”…”�”}”(hjJØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jFØh´KŒhjGØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jFØh´KŒhj(Øubjä)�”}”(hŒ,``type`` operation type of PHYLINK instance ”h]”(jê)�”}”(hŒ``type``”h]”jð)�”}”(hjjØh]”hŒtype”…”�”}”(hjlØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K�hjdØubj)�”}”(hhh]”jl)�”}”(hŒ"operation type of PHYLINK instance”h]”hŒ"operation type of PHYLINK instance”…”�”}”(hjƒØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jØh´K�hj€Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jØh´K�hj(Øubjä)�”}”(hŒY``poll_fixed_state`` if true, starts link_poll, if MAC link is at ``MLO_AN_FIXED`` mode. ”h]”(jê)�”}”(hŒ``poll_fixed_state``”h]”jð)�”}”(hj£Øh]”hŒpoll_fixed_state”…”�”}”(hj¥Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¡Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K�hj�Øubj)�”}”(hhh]”jl)�”}”(hŒCif true, starts link_poll, if MAC link is at ``MLO_AN_FIXED`` mode.”h]”(hŒ-if true, starts link_poll, if MAC link is at ”…”�”}”(hj¼Øh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_FIXED``”h]”hŒ MLO_AN_FIXED”…”�”}”(hjÄØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¼ØubhŒ mode.”…”�”}”(hj¼Øh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KŽhj¹Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¸Øh´K�hj(Øubjä)�”}”(hŒO``mac_managed_pm`` if true, indicate the MAC driver is responsible for PHY PM. ”h]”(jê)�”}”(hŒ``mac_managed_pm``”h]”jð)�”}”(hjïØh]”hŒmac_managed_pm”…”�”}”(hjñØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjíØubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K�hjéØubj)�”}”(hhh]”jl)�”}”(hŒ;if true, indicate the MAC driver is responsible for PHY PM.”h]”hŒ;if true, indicate the MAC driver is responsible for PHY PM.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÙh´K�hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÙh´K�hj(Øubjä)�”}”(hŒ¾``mac_requires_rxc`` if true, the MAC always requires a receive clock from PHY. The PHY driver should start the clock signal as soon as possible and avoid stopping it during suspend events. ”h]”(jê)�”}”(hŒ``mac_requires_rxc``”h]”jð)�”}”(hj(Ùh]”hŒmac_requires_rxc”…”�”}”(hj*Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K“hj"Ùubj)�”}”(hhh]”jl)�”}”(hŒ¨if true, the MAC always requires a receive clock from PHY. The PHY driver should start the clock signal as soon as possible and avoid stopping it during suspend events.”h]”hŒ¨if true, the MAC always requires a receive clock from PHY. The PHY driver should start the clock signal as soon as possible and avoid stopping it during suspend events.”…”�”}”(hjAÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K‘hj>Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j=Ùh´K“hj(Øubjä)�”}”(hŒ{``default_an_inband`` if true, defaults to MLO_AN_INBAND rather than MLO_AN_PHY. A fixed-link specification will override. ”h]”(jê)�”}”(hŒ``default_an_inband``”h]”jð)�”}”(hjbÙh]”hŒdefault_an_inband”…”�”}”(hjdÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K•hj\Ùubj)�”}”(hhh]”jl)�”}”(hŒdif true, defaults to MLO_AN_INBAND rather than MLO_AN_PHY. A fixed-link specification will override.”h]”hŒdif true, defaults to MLO_AN_INBAND rather than MLO_AN_PHY. A fixed-link specification will override.”…”�”}”(hj{Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K”hjxÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jwÙh´K•hj(Øubjä)�”}”(hŒN``eee_rx_clk_stop_enable`` if true, PHY can stop the receive clock during LPI ”h]”(jê)�”}”(hŒ``eee_rx_clk_stop_enable``”h]”jð)�”}”(hjœÙh]”hŒeee_rx_clk_stop_enable”…”�”}”(hjžÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K–hj–Ùubj)�”}”(hhh]”jl)�”}”(hŒ2if true, PHY can stop the receive clock during LPI”h]”hŒ2if true, PHY can stop the receive clock during LPI”…”�”}”(hjµÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±Ùh´K–hj²Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±Ùh´K–hj(Øubjä)�”}”(hŒt``get_fixed_state`` callback to execute to determine the fixed link state, if MAC link is at ``MLO_AN_FIXED`` mode. ”h]”(jê)�”}”(hŒ``get_fixed_state``”h]”jð)�”}”(hjÕÙh]”hŒget_fixed_state”…”�”}”(hj×Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K˜hjÏÙubj)�”}”(hhh]”jl)�”}”(hŒ_callback to execute to determine the fixed link state, if MAC link is at ``MLO_AN_FIXED`` mode.”h]”(hŒIcallback to execute to determine the fixed link state, if MAC link is at ”…”�”}”(hjîÙh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_FIXED``”h]”hŒ MLO_AN_FIXED”…”�”}”(hjöÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjîÙubhŒ mode.”…”�”}”(hjîÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K—hjëÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêÙh´K˜hj(Øubjä)�”}”(hŒf``supported_interfaces`` bitmap describing which PHY_INTERFACE_MODE_xxx are supported by the MAC/PCS. ”h]”(jê)�”}”(hŒ``supported_interfaces``”h]”jð)�”}”(hj!Úh]”hŒsupported_interfaces”…”�”}”(hj#Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KšhjÚubj)�”}”(hhh]”jl)�”}”(hŒLbitmap describing which PHY_INTERFACE_MODE_xxx are supported by the MAC/PCS.”•h]”hŒLbitmap describing which PHY_INTERFACE_MODE_xxx are supported by the MAC/PCS.”…”�”}”(hj:Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K™hj7Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j6Úh´Kšhj(Øubjä)�”}”(hŒ[``lpi_interfaces`` bitmap describing which PHY interface modes can support LPI signalling. ”h]”(jê)�”}”(hŒ``lpi_interfaces``”h]”jð)�”}”(hj[Úh]”hŒlpi_interfaces”…”�”}”(hj]Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KœhjUÚubj)�”}”(hhh]”jl)�”}”(hŒGbitmap describing which PHY interface modes can support LPI signalling.”h]”hŒGbitmap describing which PHY interface modes can support LPI signalling.”…”�”}”(hjtÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K›hjqÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpÚh´Kœhj(Øubjä)�”}”(hŒ:``mac_capabilities`` MAC pause/speed/duplex capabilities. ”h]”(jê)�”}”(hŒ``mac_capabilities``”h]”jð)�”}”(hj•Úh]”hŒmac_capabilities”…”�”}”(hj—Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K�hj�Úubj)�”}”(hhh]”jl)�”}”(hŒ$MAC pause/speed/duplex capabilities.”h]”hŒ$MAC pause/speed/duplex capabilities.”…”�”}”(hj®Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªÚh´K�hj«Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªÚh´K�hj(Øubjä)�”}”(hŒA``lpi_capabilities`` MAC speeds which can support LPI signalling ”h]”(jê)�”}”(hŒ``lpi_capabilities``”h]”jð)�”}”(hjÎÚh]”hŒlpi_capabilities”…”�”}”(hjÐÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KžhjÈÚubj)�”}”(hhh]”jl)�”}”(hŒ+MAC speeds which can support LPI signalling”h]”hŒ+MAC speeds which can support LPI signalling”…”�”}”(hjçÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jãÚh´KžhjäÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãÚh´Kžhj(Øubjä)�”}”(hŒ5``lpi_timer_default`` Default EEE LPI timer setting. ”h]”(jê)�”}”(hŒ``lpi_timer_default``”h]”jð)�”}”(hjÛh]”hŒlpi_timer_default”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KŸhjÛubj)�”}”(hhh]”jl)�”}”(hŒDefault EEE LPI timer setting.”h]”hŒDefault EEE LPI timer setting.”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛh´KŸhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛh´KŸhj(Øubjä)�”}”(hŒP``eee_enabled_default`` If set, EEE will be enabled by phylink at creation time ”h]”(jê)�”}”(hŒ``eee_enabled_default``”h]”jð)�”}”(hj@Ûh]”hŒeee_enabled_default”…”�”}”(hjBÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj>Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K hj:Ûubj)�”}”(hhh]”jl)�”}”(hŒ7If set, EEE will be enabled by phylink at creation time”h]”hŒ7If set, EEE will be enabled by phylink at creation time”…”�”}”(hjYÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jUÛh´K hjVÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jUÛh´K hj(Øubjä)�”}”(hŒN``wol_phy_legacy`` Use Wake-on-Lan with PHY even if phy_can_wakeup() is false ”h]”(jê)�”}”(hŒ``wol_phy_legacy``”h]”jð)�”}”(hjyÛh]”hŒwol_phy_legacy”…”�”}”(hj{Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjwÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K¡hjsÛubj)�”}”(hhh]”jl)�”}”(hŒ:Use Wake-on-Lan with PHY even if phy_can_wakeup() is false”h]”hŒ:Use Wake-on-Lan with PHY even if phy_can_wakeup() is false”…”�”}”(hj’Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽÛh´K¡hj�Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽÛh´K¡hj(Øubjä)�”}”(hŒ?``wol_phy_speed_ctrl`` Use phy speed control on suspend/resume ”h]”(jê)�”}”(hŒ``wol_phy_speed_ctrl``”h]”jð)�”}”(hj²Ûh]”hŒwol_phy_speed_ctrl”…”�”}”(hj´Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K¢hj¬Ûubj)�”}”(hhh]”jl)�”}”(hŒ'Use phy speed control on suspend/resume”h]”hŒ'Use phy speed control on suspend/resume”…”�”}”(hjËÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇÛh´K¢hjÈÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇÛh´K¢hj(Øubjä)�”}”(hŒ?``wol_mac_support`` Bitmask of MAC supported ``WAKE_*`` options”h]”(jê)�”}”(hŒ``wol_mac_support``”h]”jð)�”}”(hjëÛh]”hŒwol_mac_support”…”�”}”(hjíÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjéÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K¢hjåÛubj)�”}”(hhh]”jl)�”}”(hŒ+Bitmask of MAC supported ``WAKE_*`` options”h]”(hŒBitmask of MAC supported ”…”�”}”(hjÜh²hh³Nh´Nubjð)�”}”(hŒ ``WAKE_*``”h]”hŒWAKE_*”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜubhŒ options”…”�”}”(hjÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K£hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜh´K¢hj(Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjà×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_mac_ops (C struct)”Œc.phylink_mac_ops”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphylink_mac_ops”h]”j )�”}”(hŒstruct phylink_mac_ops”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjWÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSÜh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÜh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjSÜh²hh³jdÜh´K©ubj3)�”}”(hŒphylink_mac_ops”h]”j9)�”}”(hjQÜh]”hŒphylink_mac_ops”…”�”}”(hjwÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsÜubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjSÜh²hh³jdÜh´K©ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjOÜh²hh³jdÜh´K©ubah}”(h]”jJÜah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jdÜh´K©hjLÜh²hubjg)�”}”(hhh]”jl)�”}”(hŒMAC operations structure.”h]”hŒMAC operations structure.”…”�”}”(hj™Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K¾hj–Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjLÜh²hh³jdÜh´K©ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j±ÜjŒj±Üj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX‰**Definition**:: struct phylink_mac_ops { unsigned long (*mac_get_caps)(struct phylink_config *config, phy_interface_t interface); struct phylink_pcs *(*mac_select_pcs)(struct phylink_config *config, phy_interface_t interface); int (*mac_prepare)(struct phylink_config *config, unsigned int mode, phy_interface_t iface); void (*mac_config)(struct phylink_config *config, unsigned int mode, const struct phylink_link_state *state); int (*mac_finish)(struct phylink_config *config, unsigned int mode, phy_interface_t iface); void (*mac_link_down)(struct phylink_config *config, unsigned int mode, phy_interface_t interface); void (*mac_link_up)(struct phylink_config *config, struct phy_device *phy, unsigned int mode, phy_interface_t interface, int speed, int duplex, bool tx_pause, bool rx_pause); void (*mac_disable_tx_lpi)(struct phylink_config *config); int (*mac_enable_tx_lpi)(struct phylink_config *config, u32 timer, bool tx_clk_stop); int (*mac_wol_set)(struct phylink_config *config, u32 wolopts, const u8 *sopass); }; **Members** ``mac_get_caps`` Get MAC capabilities for interface mode. ``mac_select_pcs`` Select a PCS for the interface mode. ``mac_prepare`` prepare for a major reconfiguration of the interface. ``mac_config`` configure the MAC for the selected mode and state. ``mac_finish`` finish a major reconfiguration of the interface. ``mac_link_down`` take the link down. ``mac_link_up`` allow the link to come up. ``mac_disable_tx_lpi`` disable LPI. ``mac_enable_tx_lpi`` enable and configure LPI. ``mac_wol_set`` configure Wake-on-Lan settings at the MAC.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj½Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¹ÜubhŒ:”…”�”}”(hj¹Üh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÂhjµÜubj¶)�”}”(hXstruct phylink_mac_ops { unsigned long (*mac_get_caps)(struct phylink_config *config, phy_interface_t interface); struct phylink_pcs *(*mac_select_pcs)(struct phylink_config *config, phy_interface_t interface); int (*mac_prepare)(struct phylink_config *config, unsigned int mode, phy_interface_t iface); void (*mac_config)(struct phylink_config *config, unsigned int mode, const struct phylink_link_state *state); int (*mac_finish)(struct phylink_config *config, unsigned int mode, phy_interface_t iface); void (*mac_link_down)(struct phylink_config *config, unsigned int mode, phy_interface_t interface); void (*mac_link_up)(struct phylink_config *config, struct phy_device *phy, unsigned int mode, phy_interface_t interface, int speed, int duplex, bool tx_pause, bool rx_pause); void (*mac_disable_tx_lpi)(struct phylink_config *config); int (*mac_enable_tx_lpi)(struct phylink_config *config, u32 timer, bool tx_clk_stop); int (*mac_wol_set)(struct phylink_config *config, u32 wolopts, const u8 *sopass); };”h]”hXstruct phylink_mac_ops { unsigned long (*mac_get_caps)(struct phylink_config *config, phy_interface_t interface); struct phylink_pcs *(*mac_select_pcs)(struct phylink_config *config, phy_interface_t interface); int (*mac_prepare)(struct phylink_config *config, unsigned int mode, phy_interface_t iface); void (*mac_config)(struct phylink_config *config, unsigned int mode, const struct phylink_link_state *state); int (*mac_finish)(struct phylink_config *config, unsigned int mode, phy_interface_t iface); void (*mac_link_down)(struct phylink_config *config, unsigned int mode, phy_interface_t interface); void (*mac_link_up)(struct phylink_config *config, struct phy_device *phy, unsigned int mode, phy_interface_t interface, int speed, int duplex, bool tx_pause, bool rx_pause); void (*mac_disable_tx_lpi)(struct phylink_config *config); int (*mac_enable_tx_lpi)(struct phylink_config *config, u32 timer, bool tx_clk_stop); int (*mac_wol_set)(struct phylink_config *config, u32 wolopts, const u8 *sopass); };”…”�”}”hjÖÜsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÄhjµÜubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjçÜh]”hŒMembers”…”�”}”(hjéÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjåÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÑhjµÜubjß)�”}”(hhh]”(jä)�”}”(hŒ:``mac_get_caps`` Get MAC capabilities for interface mode. ”h]”(jê)�”}”(hŒ``mac_get_caps``”h]”jð)�”}”(hjÝh]”hŒ mac_get_caps”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÀhjÝubj)�”}”(hhh]”jl)�”}”(hŒ(Get MAC capabilities for interface mode.”h]”hŒ(Get MAC capabilities for interface mode.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝh´KÀhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝh´KÀhjýÜubjä)�”}”(hŒ8``mac_select_pcs`` Select a PCS for the interface mode. ”h]”(jê)�”}”(hŒ``mac_select_pcs``”h]”jð)�”}”(hj?Ýh]”hŒmac_select_pcs”…”�”}”(hjAÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj=Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÁhj9Ýubj)�”}”(hhh]”jl)�”}”(hŒ$Select a PCS for the interface mode.”h]”hŒ$Select a PCS for the interface mode.”…”�”}”(hjXÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jTÝh´KÁhjUÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jTÝh´KÁhjýÜubjä)�”}”(hŒF``mac_prepare`` prepare for a major reconfiguration of the interface. ”h]”(jê)�”}”(hŒ``mac_prepare``”h]”jð)�”}”(hjxÝh]”hŒ mac_prepare”…”�”}”(hjzÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjvÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÂhjrÝubj)�”}”(hhh]”jl)�”}”(hŒ5prepare for a major reconfiguration of the interface.”h]”hŒ5prepare for a major reconfiguration of the interface.”…”�”}”(hj‘Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�Ýh´KÂhjŽÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�Ýh´KÂhjýÜubjä)�”}”(hŒB``mac_config`` configure the MAC for the selected mode and state. ”h]”(jê)�”}”(hŒ``mac_config``”h]”jð)�”}”(hj±Ýh]”hŒ mac_config”…”�”}”(hj³Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÃhj«Ýubj)�”}”(hhh]”jl)�”}”(hŒ2configure the MAC for the selected mode and state.”h]”hŒ2configure the MAC for the selected mode and state.”…”�”}”(hjÊÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÆÝh´KÃhjÇÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÆÝh´KÃhjýÜubjä)�”}”(hŒ@``mac_finish`` finish a major reconfiguration of the interface. ”h]”(jê)�”}”(hŒ``mac_finish``”h]”jð)�”}”(hjêÝh]”hŒ mac_finish”…”�”}”(hjìÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjèÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÄhjäÝubj)�”}”(hhh]”jl)�”}”(hŒ0finish a major reconfiguration of the interface.”h]”hŒ0finish a major reconfiguration of the interface.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿÝh´KÄhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿÝh´KÄhjýÜubjä)�”}”(hŒ&``mac_link_down`` take the link down. ”h]”(jê)�”}”(hŒ``mac_link_down``”h]”jð)�”}”(hj#Þh]”hŒ mac_link_down”…”�”}”(hj%Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÅhjÞubj)�”}”(hhh]”jl)�”}”(hŒtake the link down.”h]”hŒtake the link down.”…”�”}”(hj<Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8Þh´KÅhj9Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8Þh´KÅhjýÜubjä)�”}”(hŒ+``mac_link_up`` allow the link to come up. ”h]”(jê)�”}”(hŒ``mac_link_up``”h]”jð)�”}”(hj\Þh]”hŒ mac_link_up”…”�”}”(hj^Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÆhjVÞubj)�”}”(hhh]”jl)�”}”(hŒallow the link to come up.”h]”hŒallow the link to come up.”…”�”}”(hjuÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jqÞh´KÆhjrÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jqÞh´KÆhjýÜubjä)�”}”(hŒ$``mac_disable_tx_lpi`` disable LPI. ”h]”(jê)�”}”(hŒ``mac_disable_tx_lpi``”h]”jð)�”}”(hj•Þh]”hŒmac_disable_tx_lpi”…”�”}”(hj—Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÇhj�Þubj)�”}”(hhh]”jl)�”}”(hŒ disable LPI.”h]”hŒ disable LPI.”…”�”}”(hj®Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªÞh´KÇhj«Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªÞh´KÇhjýÜubjä)�”}”(hŒ0``mac_enable_tx_lpi`` enable and configure LPI. ”h]”(jê)�”}”(hŒ``mac_enable_tx_lpi``”h]”jð)�”}”(hjÎÞh]”hŒmac_enable_tx_lpi”…”�”}”(hjÐÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÌÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÈhjÈÞubj)�”}”(hhh]”jl)�”}”(hŒenable and configure LPI.”h]”hŒenable and configure LPI.”…”�”}”(hjçÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jãÞh´KÈhjäÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jãÞh´KÈhjýÜubjä)�”}”(hŒ:``mac_wol_set`` configure Wake-on-Lan settings at the MAC.”h]”(jê)�”}”(hŒ``mac_wol_set``”h]”jð)�”}”(hjßh]”hŒ mac_wol_set”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÈhjßubj)�”}”(hhh]”jl)�”}”(hŒ*configure Wake-on-Lan settings at the MAC.”h]”hŒ*configure Wake-on-Lan settings at the MAC.”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÉhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jßh´KÈhjýÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjµÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjJßh]”hŒ Description”…”�”}”(hjLßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjHßubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÌhjÔh²hubjl)�”}”(hŒ6The individual methods are described more fully below.”h]”hŒ6The individual methods are described more fully below.”…”�”}”(hj`ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KÉhjÔh²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_get_caps (C function)”Œc.mac_get_caps”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒUunsigned long mac_get_caps (struct phylink_config *config, phy_interface_t interface)”h]”j )�”}”(hŒTunsigned long mac_get_caps(struct phylink_config *config, phy_interface_t interface)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjˆßh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„ßh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„ßh²hh³j–ßh´KçubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¥ßh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„ßh²hh³j–ßh´Kçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„ßh²hh³j–ßh´Kçubj3)�”}”(hŒ mac_get_caps”h]”j9)�”}”(hŒ mac_get_caps”h]”hŒ mac_get_caps”…”�”}”(hjÅßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁßubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj„ßh²hh³j–ßh´Kçubj¡ )�”}”(hŒ:(struct phylink_config *config, phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjáßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîßh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝßubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hjÿßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jàŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÇßsbŒc.mac_get_caps”†”asbuh1hhjÝßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÝßubj )�”}”(hj h]”hŒ*”…”�”}”(hj-àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÝßubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hj:àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙßubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjVàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jXàŒmodname”NŒ classname”Njå jè )�”}”jë ]”jàŒc.mac_get_caps”†”asbuh1hhjOàubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjOàubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hj‚àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÙßubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj„ßh²hh³j–ßh´Kçubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj€ßh²hh³j–ßh´Kçubah}”(h]”j{ßah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j–ßh´Kçhj}ßh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Get MAC capabilities for interface mode.”h]”hŒ(Get MAC capabilities for interface mode.”…”�”}”(hj¬àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kçhj©àh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj}ßh²hh³j–ßh´Kçubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÄàjŒjÄàj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXÙ**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``phy_interface_t interface`` PHY interface mode. **Description** Optional method. When not provided, config->mac_capabilities will be used. When implemented, this returns the MAC capabilities for the specified interface mode where there is some special handling required by the MAC driver (e.g. not supporting half-duplex in certain interface modes.)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÎàh]”hŒ Parameters”…”�”}”(hjÐàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌàubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KëhjÈàubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjíàh]”hŒstruct phylink_config *config”…”�”}”(hjïàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëàubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kèhjçàubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjáh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjáh]”hŒstruct phylink_config”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjáubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jáh´KèhjáubhŒ.”…”�”}”(hjáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jáh´Kèhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jáh´Kèhjäàubjä)�”}”(hŒ2``phy_interface_t interface`` PHY interface mode. ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjIáh]”hŒphy_interface_t interface”…”�”}”(hjKáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjGáubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KéhjCáubj)�”}”(hhh]”jl)�”}”(hŒPHY interface mode.”h]”hŒPHY interface mode.”…”�”}”(hjbáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j^áh´Kéhj_áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j^áh´Kéhjäàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÈàubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj„áh]”hŒ Description”…”�”}”(hj†áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‚áubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KëhjÈàubjl)�”}”(hXOptional method. When not provided, config->mac_capabilities will be used. When implemented, this returns the MAC capabilities for the specified interface mode where there is some special handling required by the MAC driver (e.g. not supporting half-duplex in certain interface modes.)”h]”hXOptional method. When not provided, config->mac_capabilities will be used. When implemented, this returns the MAC capabilities for the specified interface mode where there is some special handling required by the MAC driver (e.g. not supporting half-duplex in certain interface modes.)”…”�”}”(hjšáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KêhjÈàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_select_pcs (C function)”Œc.mac_select_pcs”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ^struct phylink_pcs * mac_select_pcs (struct phylink_config *config, phy_interface_t interface)”h]”j )�”}”(hŒ\struct phylink_pcs *mac_select_pcs(struct phylink_config *config, phy_interface_t interface)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÉáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅáh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×áh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅáh²hh³jÖáh´Kóubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjèáh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jêáŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œmac_select_pcs”sbŒc.mac_select_pcs”†”asbuh1hhjÅáh²hh³jÖáh´Kóubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅáh²hh³jÖáh´Kóubj )�”}”(hj h]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÅáh²hh³jÖáh´Kóubj3)�”}”(hŒmac_select_pcs”h]”j9)�”}”(hjâh]”hŒmac_select_pcs”…”�”}”(hj(âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$âubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÅáh²hh³jÖáh´Kóubj¡ )�”}”(hŒ:(struct phylink_config *config, phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjCâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?âubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hjaâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jcâŒmodname”NŒ classname”Njå jè )�”}”jë ]”jâŒc.mac_select_pcs”†”asbuh1hhj?âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj?âubj )�”}”(hj h]”hŒ*”…”�”}”(hj�âh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj?âubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjšâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj;âubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj¶âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸âŒmodname”NŒ classname”Njå jè )�”}”jë ]”jâŒc.mac_select_pcs”†”asbuh1hhj¯âubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¯âubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjââh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj;âubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÅáh²hh³jÖáh´Kóubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÁáh²hh³jÖáh´Kóubah}”(h]”j¼áah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÖáh´Kóhj¾áh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Select a PCS for the interface mode.”h]”hŒ$Select a PCS for the interface mode.”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kóhj ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¾áh²hh³jÖáh´Kóubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j$ãjŒj$ãj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXE**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``phy_interface_t interface`` PHY interface mode for PCS **Description** Return the :c:type:`struct phylink_pcs ` for the specified interface mode, or NULL if none is required, or an error pointer on error. This must not modify any state. It is used to query which PCS should be used. Phylink will use this during validation to ensure that the configuration is valid, and when setting a configuration to internally set the PCS that will be used.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj.ãh]”hŒ Parameters”…”�”}”(hj0ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K÷hj(ãubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjMãh]”hŒstruct phylink_config *config”…”�”}”(hjOãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KôhjGãubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjfãh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjpãh]”hŒstruct phylink_config”…”�”}”(hjrãh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjnãubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jbãh´KôhjfãubhŒ.”…”�”}”(hjfãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbãh´Kôhjcãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbãh´KôhjDãubjä)�”}”(hŒ9``phy_interface_t interface`` PHY interface mode for PCS ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj©ãh]”hŒphy_interface_t interface”…”�”}”(hj«ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj§ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kõhj£ãubj)�”}”(hhh]”jl)�”}”(hŒPHY interface mode for PCS”h]”hŒPHY interface mode for PCS”…”�”}”(hjÂãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾ãh´Kõhj¿ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¾ãh´KõhjDãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj(ãubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjäãh]”hŒ Description”…”�”}”(hjæãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâãubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´K÷hj(ãubjl)�”}”(hŒ’Return the :c:type:`struct phylink_pcs ` for the specified interface mode, or NULL if none is required, or an error pointer on error.”h]”(hŒ Return the ”…”�”}”(hjúãh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjäh]”hŒstruct phylink_pcs”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjäubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´KöhjúãubhŒ] for the specified interface mode, or NULL if none is required, or an error pointer on error.”…”�”}”(hjúãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j!äh´Köhj(ãubjl)�”}”(hŒîThis must not modify any state. It is used to query which PCS should be used. Phylink will use this during validation to ensure that the configuration is valid, and when setting a configuration to internally set the PCS that will be used.”h]”hŒîThis must not modify any state. It is used to query which PCS should be used. Phylink will use this during validation to ensure that the configuration is valid, and when setting a configuration to internally set the PCS that will be used.”…”�”}”(hj,äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Kùhj(ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_prepare (C function)”Œ c.mac_prepare”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYint mac_prepare (struct phylink_config *config, unsigned int mode, phy_interface_t iface)”h]”j )�”}”(hŒXint mac_prepare(struct phylink_config *config, unsigned int mode, phy_interface_t iface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj[äh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjWäh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWäh²hh³jiäh´Mubj3)�”}”(hŒ mac_prepare”h]”j9)�”}”(hŒ mac_prepare”h]”hŒ mac_prepare”…”�”}”(hj|äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxäubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjWäh²hh³jiäh´Mubj¡ )�”}”(hŒI(struct phylink_config *config, unsigned int mode, phy_interface_t iface)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj˜äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥äh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”äubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hj¶äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¸äŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j~äsbŒ c.mac_prepare”†”asbuh1hhj”äubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”äubj )�”}”(hj h]”hŒ*”…”�”}”(hjääh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj”äubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjñäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�äubj§ )�”}”(hŒunsigned int mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjåubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj&åh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjåubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjåubj9)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjBåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�äubj§ )�”}”(hŒphy_interface_t iface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj^åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j`åŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÒäŒ c.mac_prepare”†”asbuh1hhjWåubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|åh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjWåubj9)�”}”(hŒiface”h]”hŒiface”…”�”}”(hjŠåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�äubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjWäh²hh³jiäh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjSäh²hh³jiäh´Mubah}”(h]”jNäah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jiäh´MhjPäh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(prepare to change the PHY interface mode”h]”hŒ(prepare to change the PHY interface mode”…”�”}”(hj´åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj±åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjPäh²hh³jiäh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÌåjŒjÌåj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``unsigned int mode`` one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``. ``phy_interface_t iface`` interface mode to switch to **Description** phylink will call this method at the beginning of a full initialisation of the link, which includes changing the interface mode or at initial startup time. It may be called for the current mode. The MAC driver should perform whatever actions are required, e.g. disabling the Serdes PHY. This will be the first call in the sequence: - mac_prepare() - mac_config() - pcs_config() - possible pcs_an_restart() - mac_finish() Returns zero on success, or negative errno on failure which will be reported to the kernel log.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÖåh]”hŒ Parameters”…”�”}”(hjØåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÔåubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjÐåubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjõåh]”hŒstruct phylink_config *config”…”�”}”(hj÷åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjóåubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjïåubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjæh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjæh]”hŒstruct phylink_config”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjæubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³j æh´MhjæubhŒ.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j æh´Mhj æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjïåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j æh´Mhjìåubjä)�”}”(hŒR``unsigned int mode`` one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``. ”h]”(jê)�”}”(hŒ``unsigned int mode``”h]”jð)�”}”(hjQæh]”hŒunsigned int mode”…”�”}”(hjSæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjOæubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjKæubj)�”}”(hhh]”jl)�”}”(hŒ;one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``.”h]”(hŒone of ”…”�”}”(hjjæh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_FIXED``”h]”hŒ MLO_AN_FIXED”…”�”}”(hjræh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjæubhŒ, ”…”�”}”(hjjæh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_PHY``”h]”hŒ MLO_AN_PHY”…”�”}”(hj„æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjæubhŒ, ”…”�”}”hjjæsbjð)�”}”(hŒ``MLO_AN_INBAND``”h]”hŒ MLO_AN_INBAND”…”�”}”(hj–æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjjæubhŒ.”…”�”}”(hjjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jfæh´Mhjgæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jfæh´Mhjìåubjä)�”}”(hŒ6``phy_interface_t iface`` interface mode to switch to ”h]”(jê)�”}”(hŒ``phy_interface_t iface``”h]”jð)�”}”(hjÀæh]”hŒphy_interface_t iface”…”�”}”(hjÂæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾æubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjºæubj)�”}”(hhh]”jl)�”}”(hŒinterface mode to switch to”h]”hŒinterface mode to switch to”…”�”}”(hjÙæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕæh´MhjÖæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕæh´Mhjìåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÐåubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjûæh]”hŒ Description”…”�”}”(hjýæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjùæubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjÐåubjl)�”}”(hXphylink will call this method at the beginning of a full initialisation of the link, which includes changing the interface mode or at initial startup time. It may be called for the current mode. The MAC driver should perform whatever actions are required, e.g. disabling the Serdes PHY.”h]”hXphylink will call this method at the beginning of a full initialisation of the link, which includes changing the interface mode or at initial startup time. It may be called for the current mode. The MAC driver should perform whatever actions are required, e.g. disabling the Serdes PHY.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjÐåubjl)�”}”(hŒ…This will be the first call in the sequence: - mac_prepare() - mac_config() - pcs_config() - possible pcs_an_restart() - mac_finish()”h]”hŒ…This will be the first call in the sequence: - mac_prepare() - mac_config() - pcs_config() - possible pcs_an_restart() - mac_finish()”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M hjÐåubjl)�”}”(hŒ_Returns zero on success, or negative errno on failure which will be reported to the kernel log.”h]”hŒ_Returns zero on success, or negative errno on failure which will be reported to the kernel log.”…”�”}”(hj/çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjÐåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_config (C function)”Œ c.mac_config”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒjvoid mac_config (struct phylink_config *config, unsigned int mode, const struct phylink_link_state *state)”h]”j )�”}”(hŒivoid mac_config(struct phylink_config *config, unsigned int mode, const struct phylink_link_state *state)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^çh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjZçh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZçh²hh³jlçh´Mubj3)�”}”(hŒ mac_config”h]”j9)�”}”(hŒ mac_config”h]”hŒ mac_config”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{çubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjZçh²hh³jlçh´Mubj¡ )�”}”(hŒZ(struct phylink_config *config, unsigned int mode, const struct phylink_link_state *state)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj›çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨çh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—çubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hj¹çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»çŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�çsbŒ c.mac_config”†”asbuh1hhj—çubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙçh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—çubj )�”}”(hj h]”hŒ*”…”�”}”(hjççh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—çubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjôçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“çubj§ )�”}”(hŒunsigned int mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj èh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj èubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj)èh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj èubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj èubj9)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjEèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“çubj§ )�”}”(hŒ&const struct phylink_link_state *state”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj^èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZèubj)�”}”(hjh]”hŒstruct”…”�”}”(hjyèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†èh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZèubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hj—èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j™èŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÕçŒ c.mac_config”†”asbuh1hhjZèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµèh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZèubj )�”}”(hj h]”hŒ*”…”�”}”(hjÃèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjZèubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÐèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“çubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjZçh²hh³jlçh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjVçh²hh³jlçh´Mubah}”(h]”jQçah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jlçh´MhjSçh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1configure the MAC for the selected mode and state”h]”hŒ1configure the MAC for the selected mode and state”…”�”}”(hjúèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj÷èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjSçh²hh³jlçh´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jéjŒjéj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX] **Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``unsigned int mode`` one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``. ``const struct phylink_link_state *state`` a pointer to a :c:type:`struct phylink_link_state `. **Description** Note - not all members of **state** are valid. In particular, **state->lp_advertising**, **state->link**, **state->an_complete** are never guaranteed to be correct, and so any mac_config() implementation must never reference these fields. This will only be called to reconfigure the MAC for a "major" change in e.g. interface mode. It will not be called for changes in speed, duplex or pause modes or to change the in-band advertisement. In all negotiation modes, as defined by **mode**, **state->pause** indicates the pause settings which should be applied as follows. If ``MLO_PAUSE_AN`` is not set, ``MLO_PAUSE_TX`` and ``MLO_PAUSE_RX`` indicate whether the MAC should send pause frames and/or act on received pause frames respectively. Otherwise, the results of in-band negotiation/status from the MAC PCS should be used to control the MAC pause mode settings. The action performed depends on the currently selected mode: ``MLO_AN_FIXED``, ``MLO_AN_PHY``: Configure for non-inband negotiation mode, where the link settings are completely communicated via mac_link_up(). The physical link protocol from the MAC is specified by **state->interface**. **state->advertising** may be used, but is not required. Older drivers (prior to the mac_link_up() change) may use **state->speed**, **state->duplex** and **state->pause** to configure the MAC, but this is deprecated; such drivers should be converted to use mac_link_up(). Other members of **state** must be ignored. Valid state members: interface, advertising. Deprecated state members: speed, duplex, pause. ``MLO_AN_INBAND``: place the link in an inband negotiation mode (such as 802.3z 1000base-X or Cisco SGMII mode depending on the **state->interface** mode). In both cases, link state management (whether the link is up or not) is performed by the MAC, and reported via the pcs_get_state() callback. Changes in link state must be made by calling phylink_mac_change(). Interface mode specific details are mentioned below. If in 802.3z mode, the link speed is fixed, dependent on the **state->interface**. Duplex and pause modes are negotiated via the in-band configuration word. Advertised pause modes are set according to **state->advertising**. Beware of MACs which only support full duplex at gigabit and higher speeds. If in Cisco SGMII mode, the link speed and duplex mode are passed in the serial bitstream 16-bit configuration word, and the MAC should be configured to read these bits and acknowledge the configuration word. Nothing is advertised by the MAC. The MAC is responsible for reading the configuration word and configuring itself accordingly. Valid state members: interface, pause, advertising. Implementations are expected to update the MAC to reflect the requested settings - i.o.w., if nothing has changed between two calls, no action is expected. If only flow control settings have changed, flow control should be updated *without* taking the link down. This "update" behaviour is critical to avoid bouncing the link up status.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjéh]”hŒ Parameters”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M hjéubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hj;éh]”hŒstruct phylink_config *config”…”�”}”(hj=éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj9éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj5éubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjTéh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hj^éh]”hŒstruct phylink_config”…”�”}”(hj`éh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj\éubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jPéh´MhjTéubhŒ.”…”�”}”(hjTéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jPéh´MhjQéubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jPéh´Mhj2éubjä)�”}”(hŒR``unsigned int mode`` one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``. ”h]”(jê)�”}”(hŒ``unsigned int mode``”h]”jð)�”}”(hj—éh]”hŒunsigned int mode”…”�”}”(hj™éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•éubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj‘éubj)�”}”(hhh]”jl)�”}”(hŒ;one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``.”h]”(hŒone of ”…”�”}”(hj°éh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_FIXED``”h]”hŒ MLO_AN_FIXED”…”�”}”(hj¸éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°éubhŒ, ”…”�”}”(hj°éh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_PHY``”h]”hŒ MLO_AN_PHY”…”�”}”(hjÊéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°éubhŒ, ”…”�”}”hj°ésbjð)�”}”(hŒ``MLO_AN_INBAND``”h]”hŒ MLO_AN_INBAND”…”�”}”(hjÜéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°éubhŒ.”…”�”}”(hj°éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¬éh´Mhj­éubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¬éh´Mhj2éubjä)�”}”(hŒt``const struct phylink_link_state *state`` a pointer to a :c:type:`struct phylink_link_state `. ”h]”(jê)�”}”(hŒ*``const struct phylink_link_state *state``”h]”jð)�”}”(hjêh]”hŒ&const struct phylink_link_state *state”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjêubj)�”}”(hhh]”jl)�”}”(hŒHa pointer to a :c:type:`struct phylink_link_state `.”h]”(hŒa pointer to a ”…”�”}”(hjêh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct phylink_link_state `”h]”jð)�”}”(hj)êh]”hŒstruct phylink_link_state”…”�”}”(hj+êh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj'êubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_link_state”uh1hh³jêh´MhjêubhŒ.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêh´Mhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêh´Mhj2éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjéubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjdêh]”hŒ Description”…”�”}”(hjfêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjbêubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M!hjéubjl)�”}”(hŒïNote - not all members of **state** are valid. In particular, **state->lp_advertising**, **state->link**, **state->an_complete** are never guaranteed to be correct, and so any mac_config() implementation must never reference these fields.”h]”(hŒNote - not all members of ”…”�”}”(hjzêh²hh³Nh´Nubj›)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj‚êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjzêubhŒ are valid. In particular, ”…”�”}”(hjzêh²hh³Nh´Nubj›)�”}”(hŒ**state->lp_advertising**”h]”hŒstate->lp_advertising”…”�”}”(hj”êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjzêubhŒ, ”…”�”}”(hjzêh²hh³Nh´Nubj›)�”}”(hŒ**state->link**”h]”hŒ state->link”…”�”}”(hj¦êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjzêubhŒ, ”…”�”}”hjzêsbj›)�”}”(hŒ**state->an_complete**”h]”hŒstate->an_complete”…”�”}”(hj¸êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjzêubhŒn are never guaranteed to be correct, and so any mac_config() implementation must never reference these fields.”…”�”}”(hjzêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M hjéubjl)�”}”(hŒÆThis will only be called to reconfigure the MAC for a "major" change in e.g. interface mode. It will not be called for changes in speed, duplex or pause modes or to change the in-band advertisement.”h]”hŒÊThis will only be called to reconfigure the MAC for a “majorâ€� change in e.g. interface mode. It will not be called for changes in speed, duplex or pause modes or to change the in-band advertisement.”…”�”}”(hjÑêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M%hjéubjl)�”}”(hXªIn all negotiation modes, as defined by **mode**, **state->pause** indicates the pause settings which should be applied as follows. If ``MLO_PAUSE_AN`` is not set, ``MLO_PAUSE_TX`` and ``MLO_PAUSE_RX`` indicate whether the MAC should send pause frames and/or act on received pause frames respectively. Otherwise, the results of in-band negotiation/status from the MAC PCS should be used to control the MAC pause mode settings.”h]”(hŒ(In all negotiation modes, as defined by ”…”�”}”(hjàêh²hh³Nh´Nubj›)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjèêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàêubhŒ, ”…”�”}”(hjàêh²hh³Nh´Nubj›)�”}”(hŒ**state->pause**”h]”hŒ state->pause”…”�”}”(hjúêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàêubhŒE indicates the pause settings which should be applied as follows. If ”…”�”}”(hjàêh²hh³Nh´Nubjð)�”}”(hŒ``MLO_PAUSE_AN``”h]”hŒ MLO_PAUSE_AN”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjàêubhŒ is not set, ”…”�”}”(hjàêh²hh³Nh´Nubjð)�”}”(hŒ``MLO_PAUSE_TX``”h]”hŒ MLO_PAUSE_TX”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjàêubhŒ and ”…”�”}”(hjàêh²hh³Nh´Nubjð)�”}”(hŒ``MLO_PAUSE_RX``”h]”hŒ MLO_PAUSE_RX”…”�”}”(hj0ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjàêubhŒá indicate whether the MAC should send pause frames and/or act on received pause frames respectively. Otherwise, the results of in-band negotiation/status from the MAC PCS should be used to control the MAC pause mode settings.”…”�”}”(hjàêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M)hjéubjl)�”}”(hŒinterface**. **state->advertising** may be used, but is not required. Older drivers (prior to the mac_link_up() change) may use **state->speed**, **state->duplex** and **state->pause** to configure the MAC, but this is deprecated; such drivers should be converted to use mac_link_up(). Other members of **state** must be ignored. Valid state members: interface, advertising. Deprecated state members: speed, duplex, pause. ”h]”(jê)�”}”(hŒ!``MLO_AN_FIXED``, ``MLO_AN_PHY``:”h]”(jð)�”}”(hŒ``MLO_AN_FIXED``”h]”hŒ MLO_AN_FIXED”…”�”}”(hjcëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_ëubhŒ, ”…”�”}”(hj_ëh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_PHY``”h]”hŒ MLO_AN_PHY”…”�”}”(hjuëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj_ëubhŒ:”…”�”}”(hj_ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M@hj[ëubj)�”}”(hhh]”(jl)�”}”(hŒÀConfigure for non-inband negotiation mode, where the link settings are completely communicated via mac_link_up(). The physical link protocol from the MAC is specified by **state->interface**.”h]”(hŒ«Configure for non-inband negotiation mode, where the link settings are completely communicated via mac_link_up(). The physical link protocol from the MAC is specified by ”…”�”}”(hj‘ëh²hh³Nh´Nubj›)�”}”(hŒ**state->interface**”h]”hŒstate->interface”…”�”}”(hj™ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘ëubhŒ.”…”�”}”(hj‘ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M3hjŽëubjl)�”}”(hŒ8**state->advertising** may be used, but is not required.”h]”(j›)�”}”(hŒ**state->advertising**”h]”hŒstate->advertising”…”�”}”(hj¶ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²ëubhŒ" may be used, but is not required.”…”�”}”(hj²ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M7hjŽëubjl)�”}”(hŒ×Older drivers (prior to the mac_link_up() change) may use **state->speed**, **state->duplex** and **state->pause** to configure the MAC, but this is deprecated; such drivers should be converted to use mac_link_up().”h]”(hŒ:Older drivers (prior to the mac_link_up() change) may use ”…”�”}”(hjÏëh²hh³Nh´Nubj›)�”}”(hŒ**state->speed**”h]”hŒ state->speed”…”�”}”(hj×ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏëubhŒ, ”…”�”}”(hjÏëh²hh³Nh´Nubj›)�”}”(hŒ**state->duplex**”h]”hŒ state->duplex”…”�”}”(hjéëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏëubhŒ and ”…”�”}”(hjÏëh²hh³Nh´Nubj›)�”}”(hŒ**state->pause**”h]”hŒ state->pause”…”�”}”(hjûëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏëubhŒe to configure the MAC, but this is deprecated; such drivers should be converted to use mac_link_up().”…”�”}”(hjÏëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M9hjŽëubjl)�”}”(hŒ+Other members of **state** must be ignored.”h]”(hŒOther members of ”…”�”}”(hjìh²hh³Nh´Nubj›)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjìubhŒ must be ignored.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M=hjŽëubjl)�”}”(hŒ\Valid state members: interface, advertising. Deprecated state members: speed, duplex, pause.”h]”hŒ\Valid state members: interface, advertising. Deprecated state members: speed, duplex, pause.”…”�”}”(hj5ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M?hjŽëube•h}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�ëh´M@hjXëubjä)�”}”(hXX``MLO_AN_INBAND``: place the link in an inband negotiation mode (such as 802.3z 1000base-X or Cisco SGMII mode depending on the **state->interface** mode). In both cases, link state management (whether the link is up or not) is performed by the MAC, and reported via the pcs_get_state() callback. Changes in link state must be made by calling phylink_mac_change(). Interface mode specific details are mentioned below. If in 802.3z mode, the link speed is fixed, dependent on the **state->interface**. Duplex and pause modes are negotiated via the in-band configuration word. Advertised pause modes are set according to **state->advertising**. Beware of MACs which only support full duplex at gigabit and higher speeds. If in Cisco SGMII mode, the link speed and duplex mode are passed in the serial bitstream 16-bit configuration word, and the MAC should be configured to read these bits and acknowledge the configuration word. Nothing is advertised by the MAC. The MAC is responsible for reading the configuration word and configuring itself accordingly. Valid state members: interface, pause, advertising. ”h]”(jê)�”}”(hŒ``MLO_AN_INBAND``:”h]”(jð)�”}”(hŒ``MLO_AN_INBAND``”h]”hŒ MLO_AN_INBAND”…”�”}”(hjXìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjTìubhŒ:”…”�”}”(hjTìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MYhjPìubj)�”}”(hhh]”(jl)�”}”(hXYplace the link in an inband negotiation mode (such as 802.3z 1000base-X or Cisco SGMII mode depending on the **state->interface** mode). In both cases, link state management (whether the link is up or not) is performed by the MAC, and reported via the pcs_get_state() callback. Changes in link state must be made by calling phylink_mac_change().”h]”(hŒmplace the link in an inband negotiation mode (such as 802.3z 1000base-X or Cisco SGMII mode depending on the ”…”�”}”(hjtìh²hh³Nh´Nubj›)�”}”(hŒ**state->interface**”h]”hŒstate->interface”…”�”}”(hj|ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjtìubhŒØ mode). In both cases, link state management (whether the link is up or not) is performed by the MAC, and reported via the pcs_get_state() callback. Changes in link state must be made by calling phylink_mac_change().”…”�”}”(hjtìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MChjqìubjl)�”}”(hŒ4Interface mode specific details are mentioned below.”h]”hŒ4Interface mode specific details are mentioned below.”…”�”}”(hj•ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MJhjqìubjl)�”}”(hX,If in 802.3z mode, the link speed is fixed, dependent on the **state->interface**. Duplex and pause modes are negotiated via the in-band configuration word. Advertised pause modes are set according to **state->advertising**. Beware of MACs which only support full duplex at gigabit and higher speeds.”h]”(hŒ=If in 802.3z mode, the link speed is fixed, dependent on the ”…”�”}”(hj¤ìh²hh³Nh´Nubj›)�”}”(hŒ**state->interface**”h]”hŒstate->interface”…”�”}”(hj¬ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤ìubhŒx. Duplex and pause modes are negotiated via the in-band configuration word. Advertised pause modes are set according to ”…”�”}”(hj¤ìh²hh³Nh´Nubj›)�”}”(hŒ**state->advertising**”h]”hŒstate->advertising”…”�”}”(hj¾ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¤ìubhŒM. Beware of MACs which only support full duplex at gigabit and higher speeds.”…”�”}”(hj¤ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MLhjqìubjl)�”}”(hXPIf in Cisco SGMII mode, the link speed and duplex mode are passed in the serial bitstream 16-bit configuration word, and the MAC should be configured to read these bits and acknowledge the configuration word. Nothing is advertised by the MAC. The MAC is responsible for reading the configuration word and configuring itself accordingly.”h]”hXPIf in Cisco SGMII mode, the link speed and duplex mode are passed in the serial bitstream 16-bit configuration word, and the MAC should be configured to read these bits and acknowledge the configuration word. Nothing is advertised by the MAC. The MAC is responsible for reading the configuration word and configuring itself accordingly.”…”�”}”(hj×ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MRhjqìubjl)�”}”(hŒ3Valid state members: interface, pause, advertising.”h]”hŒ3Valid state members: interface, pause, advertising.”…”�”}”(hjæìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jpìh´MYhjqìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjPìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpìh´MYhjXëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjéubjl)�”}”(hXRImplementations are expected to update the MAC to reflect the requested settings - i.o.w., if nothing has changed between two calls, no action is expected. If only flow control settings have changed, flow control should be updated *without* taking the link down. This "update" behaviour is critical to avoid bouncing the link up status.”h]”(hŒèImplementations are expected to update the MAC to reflect the requested settings - i.o.w., if nothing has changed between two calls, no action is expected. If only flow control settings have changed, flow control should be updated ”…”�”}”(hjíh²hh³Nh´NubjÑ‹)�”}”(hŒ *without*”h]”hŒwithout”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jЋhjíubhŒe taking the link down. This “updateâ€� behaviour is critical to avoid bouncing the link up status.”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M[hjéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_finish (C function)”Œ c.mac_finish”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒXint mac_finish (struct phylink_config *config, unsigned int mode, phy_interface_t iface)”h]”j )�”}”(hŒWint mac_finish(struct phylink_config *config, unsigned int mode, phy_interface_t iface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjGíh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjCíh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjCíh²hh³jUíh´Mgubj3)�”}”(hŒ mac_finish”h]”j9)�”}”(hŒ mac_finish”h]”hŒ mac_finish”…”�”}”(hjhíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdíubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjCíh²hh³jUíh´Mgubj¡ )�”}”(hŒI(struct phylink_config *config, unsigned int mode, phy_interface_t iface)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj„íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘íh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€íubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hj¢íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¤íŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jjísbŒ c.mac_finish”†”asbuh1hhj€íubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂíh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj€íubj )�”}”(hj h]”hŒ*”…”�”}”(hjÐíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj€íubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjÝíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj|íubj§ )�”}”(hŒunsigned int mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjöíh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjòíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjòíubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjòíubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjòíubj9)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj.îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj|íubj§ )�”}”(hŒphy_interface_t iface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjJîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jLîŒmodname”NŒ classname”Njå jè )�”}”jë ]”j¾íŒ c.mac_finish”†”asbuh1hhjCîubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhîh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjCîubj9)�”}”(hŒiface”h]”hŒiface”…”�”}”(hjvîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj|íubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjCíh²hh³jUíh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj?íh²hh³jUíh´Mgubah}”(h]”j:íah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jUíh´Mghj<íh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)finish a to change the PHY interface mode”h]”hŒ)finish a to change the PHY interface mode”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mghj�îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj<íh²hh³jUíh´Mgubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¸îjŒj¸îj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX�**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``unsigned int mode`` one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``. ``phy_interface_t iface`` interface mode to switch to **Description** phylink will call this if it called mac_prepare() to allow the MAC to complete any necessary steps after the MAC and PCS have been configured for the **mode** and **iface**. E.g. a MAC driver may wish to re-enable the Serdes PHY here if it was previously disabled by mac_prepare(). Returns zero on success, or negative errno on failure which will be reported to the kernel log.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÂîh]”hŒ Parameters”…”�”}”(hjÄîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀîubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mkhj¼îubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjáîh]”hŒstruct phylink_config *config”…”�”}”(hjãîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjßîubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhhjÛîubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjúîh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjïh]”hŒstruct phylink_config”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jöîh´MhhjúîubhŒ.”…”�”}”(hjúîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jöîh´Mhhj÷îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jöîh´MhhjØîubjä)�”}”(hŒR``unsigned int mode`` one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``. ”h]”(jê)�”}”(hŒ``unsigned int mode``”h]”jð)�”}”(hj=ïh]”hŒunsigned int mode”…”�”}”(hj?ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mihj7ïubj)�”}”(hhh]”jl)�”}”(hŒ;one of ``MLO_AN_FIXED``, ``MLO_AN_PHY``, ``MLO_AN_INBAND``.”h]”(hŒone of ”…”�”}”(hjVïh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_FIXED``”h]”hŒ MLO_AN_FIXED”…”�”}”(hj^ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVïubhŒ, ”…”�”}”(hjVïh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_PHY``”h]”hŒ MLO_AN_PHY”…”�”}”(hjpïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVïubhŒ, ”…”�”}”hjVïsbjð)�”}”(hŒ``MLO_AN_INBAND``”h]”hŒ MLO_AN_INBAND”…”�”}”(hj‚ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjVïubhŒ.”…”�”}”(hjVïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jRïh´MihjSïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jRïh´MihjØîubjä)�”}”(hŒ6``phy_interface_t iface`` interface mode to switch to ”h]”(jê)�”}”(hŒ``phy_interface_t iface``”h]”jð)�”}”(hj¬ïh]”hŒphy_interface_t iface”…”�”}”(hj®ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjªïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mjhj¦ïubj)�”}”(hhh]”jl)�”}”(hŒinterface mode to switch to”h]”hŒinterface mode to switch to”…”�”}”(hjÅïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÁïh´MjhjÂïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÁïh´MjhjØîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¼îubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjçïh]”hŒ Description”…”�”}”(hjéïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjåïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mlhj¼îubjl)�”}”(hXphylink will call this if it called mac_prepare() to allow the MAC to complete any necessary steps after the MAC and PCS have been configured for the **mode** and **iface**. E.g. a MAC driver may wish to re-enable the Serdes PHY here if it was previously disabled by mac_prepare().”h]”(hŒ–phylink will call this if it called mac_prepare() to allow the MAC to complete any necessary steps after the MAC and PCS have been configured for the ”…”�”}”(hjýïh²hh³Nh´Nubj›)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjýïubhŒ and ”…”�”}”(hjýïh²hh³Nh´Nubj›)�”}”(hŒ **iface**”h]”hŒiface”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjýïubhŒm. E.g. a MAC driver may wish to re-enable the Serdes PHY here if it was previously disabled by mac_prepare().”…”�”}”(hjýïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mkhj¼îubjl)�”}”(hŒ_Returns zero on success, or negative errno on failure which will be reported to the kernel log.”h]”hŒ_Returns zero on success, or negative errno on failure which will be reported to the kernel log.”…”�”}”(hj0ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mphj¼îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_link_down (C function)”Œc.mac_link_down”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ`void mac_link_down (struct phylink_config *config, unsigned int mode, phy_interface_t interface)”h]”j )�”}”(hŒ_void mac_link_down(struct phylink_config *config, unsigned int mode, phy_interface_t interface)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_ðh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[ðh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[ðh²hh³jmðh´Mxubj3)�”}”(hŒ mac_link_down”h]”j9)�”}”(hŒ mac_link_down”h]”hŒ mac_link_down”…”�”}”(hj€ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|ðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj[ðh²hh³jmðh´Mxubj¡ )�”}”(hŒM(struct phylink_config *config, unsigned int mode, phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjœðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©ðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜ðubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hjºðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¼ðŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‚ðsbŒc.mac_link_down”†”asbuh1hhj˜ðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj˜ðubj )�”}”(hj h]”hŒ*”…”�”}”(hjèðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj˜ðubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjõðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj”ðubj§ )�”}”(hŒunsigned int mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ñubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj*ñh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ñubj9)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjFñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj”ðubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjbñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdñŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÖðŒc.mac_link_down”†”asbuh1hhj[ñubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ñh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[ñubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjŽñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj”ðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj[ðh²hh³jmðh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjWðh²hh³jmðh´Mxubah}”(h]”jRðah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jmðh´MxhjTðh²hubjg)�”}”(hhh]”jl)�”}”(hŒ(notification that the link has gone down”h]”hŒ(notification that the link has gone down”…”�”}”(hj¸ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mxhjµñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjTðh²hh³jmðh´Mxubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÐñjŒjÐñj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXÅ**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``unsigned int mode`` link autonegotiation mode ``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode **Description** Notifies the MAC that the link has gone down. This will not be called unless mac_link_up() has been previously called. The MAC should stop processing packets for transmission and reception. phylink will have called netif_carrier_off() to notify the networking stack that the link has gone down, so MAC drivers should not make this call. If **mode** is ``MLO_AN_INBAND``, then this function must not prevent the link coming up.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÚñh]”hŒ Parameters”…”�”}”(hjÜñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØñubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M|hjÔñubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjùñh]”hŒstruct phylink_config *config”…”�”}”(hjûñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Myhjóñubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjòh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjòh]”hŒstruct phylink_config”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjòubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jòh´MyhjòubhŒ.”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jòh´Myhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjóñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jòh´Myhjðñubjä)�”}”(hŒ0``unsigned int mode`` link autonegotiation mode ”h]”(jê)�”}”(hŒ``unsigned int mode``”h]”jð)�”}”(hjUòh]”hŒunsigned int mode”…”�”}”(hjWòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MzhjOòubj)�”}”(hhh]”jl)�”}”(hŒlink autonegotiation mode”h]”hŒlink autonegotiation mode”…”�”}”(hjnòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jjòh´Mzhjkòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jjòh´Mzhjðñubjä)�”}”(hŒ\``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjŽòh]”hŒphy_interface_t interface”…”�”}”(hj�òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒòubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M{hjˆòubj)�”}”(hhh]”jl)�”}”(hŒ=link :c:type:`typedef phy_interface_t ` mode”h]”(hŒlink ”…”�”}”(hj§òh²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hj±òh]”hŒtypedef phy_interface_t”…”�”}”(hj³òh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¯òubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³j£òh´M{hj§òubhŒ mode”…”�”}”(hj§òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£òh´M{hj¤òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£òh´M{hjðñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÔñubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjìòh]”hŒ Description”…”�”}”(hjîòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêòubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M}hjÔñubjl)�”}”(hŒvNotifies the MAC that the link has gone down. This will not be called unless mac_link_up() has been previously called.”h]”hŒvNotifies the MAC that the link has gone down. This will not be called unless mac_link_up() has been previously called.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M|hjÔñubjl)�”}”(hŒÙThe MAC should stop processing packets for transmission and reception. phylink will have called netif_carrier_off() to notify the networking stack that the link has gone down, so MAC drivers should not make this call.”h]”hŒÙThe MAC should stop processing packets for transmission and reception. phylink will have called netif_carrier_off() to notify the networking stack that the link has gone down, so MAC drivers should not make this call.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjÔñubjl)�”}”(hŒYIf **mode** is ``MLO_AN_INBAND``, then this function must not prevent the link coming up.”h]”(hŒIf ”…”�”}”(hj óh²hh³Nh´Nubj›)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hj(óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj óubhŒ is ”…”�”}”(hj óh²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_INBAND``”h]”hŒ MLO_AN_INBAND”…”�”}”(hj:óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj óubhŒ9, then this function must not prevent the link coming up.”…”�”}”(hj óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M„hjÔñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_link_up (C function)”Œ c.mac_link_up”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ«void mac_link_up (struct phylink_config *config, struct phy_device *phy, unsigned int mode, phy_interface_t interface, int speed, int duplex, bool tx_pause, bool rx_pause)”h]”j )�”}”(hŒªvoid mac_link_up(struct phylink_config *config, struct phy_device *phy, unsigned int mode, phy_interface_t interface, int speed, int duplex, bool tx_pause, bool rx_pause)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjsóh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjoóh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjoóh²hh³j�óh´MŒubj3)�”}”(hŒ mac_link_up”h]”j9)�”}”(hŒ mac_link_up”h]”hŒ mac_link_up”…”�”}”(hj”óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�óubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjoóh²hh³j�óh´MŒubj¡ )�”}”(hŒš(struct phylink_config *config, struct phy_device *phy, unsigned int mode, phy_interface_t interface, int speed, int duplex, bool tx_pause, bool rx_pause)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj°óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½óh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬óubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hjÎóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÐóŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j–ósbŒ c.mac_link_up”†”asbuh1hhj¬óubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬óubj )�”}”(hj h]”hŒ*”…”�”}”(hjüóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¬óubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubj§ )�”}”(hŒstruct phy_device *phy”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj"ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hj@ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jBôŒmodname”NŒ classname”Njå jè )�”}”jë ]”jêóŒ c.mac_link_up”†”asbuh1hhjôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôubj )�”}”(hj h]”hŒ*”…”�”}”(hjlôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjôubj9)�”}”(hŒphy”h]”hŒphy”…”�”}”(hjyôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubj§ )�”}”(hŒunsigned int mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj’ôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽôubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj®ôh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ôh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽôubj9)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÊôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjæôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjãôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jèôŒmodname”NŒ classname”Njå jè )�”}”jë ]”jêóŒ c.mac_link_up”†”asbuh1hhjßôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjßôubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubj§ )�”}”(hŒ int speed”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj+õh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj'õubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj'õubj9)�”}”(hŒspeed”h]”hŒspeed”…”�”}”(hjGõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubj§ )�”}”(hŒ int duplex”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj`õh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj\õubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnõh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj\õubj9)�”}”(hŒduplex”h]”hŒduplex”…”�”}”(hj|õh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubj§ )�”}”(hŒ bool tx_pause”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj•õh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‘õubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢õh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‘õubj9)�”}”(hŒtx_pause”h]”hŒtx_pause”…”�”}”(hj°õh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubj§ )�”}”(hŒ bool rx_pause”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÉõh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÅõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖõh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅõubj9)�”}”(hŒrx_pause”h]”hŒrx_pause”…”�”}”(hjäõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¨óubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjoóh²hh³j�óh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjkóh²hh³j�óh´MŒubah}”(h]”jfóah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j�óh´MŒhjhóh²hubjg)�”}”(hhh]”jl)�”}”(hŒ¬ification that the link has come up”h]”hŒ¬ification that the link has come up”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MŒhj öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjhóh²hh³j�óh´MŒubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j&öjŒj&öj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX±**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``struct phy_device *phy`` any attached phy (deprecated - please use LPI interfaces) ``unsigned int mode`` link autonegotiation mode ``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode ``int speed`` link speed ``int duplex`` link duplex ``bool tx_pause`` link transmit pause enablement status ``bool rx_pause`` link receive pause enablement status **Description** Notifies the MAC that the link has come up, and the parameters of the link as seen from the MACs point of view. If mac_link_up() has been called previously, there will be an intervening call to mac_link_down() before this method will be subsequently called. **speed**, **duplex**, **tx_pause** and **rx_pause** indicate the finalised link settings, and should be used to configure the MAC block appropriately where these settings are not automatically conveyed from the PCS block, or if in-band negotiation (as defined by phylink_autoneg_inband(**mode**)) is disabled. Note that when 802.3z in-band negotiation is in use, it is possible that the user wishes to override the pause settings, and this should be allowed when considering the implementation of this method. Once configured, the MAC may begin to process packets for transmission and reception. Interface type selection must be done in mac_config().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj0öh]”hŒ Parameters”…”�”}”(hj2öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.öubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M�hj*öubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjOöh]”hŒstruct phylink_config *config”…”�”}”(hjQöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjMöubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M�hjIöubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjhöh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjröh]”hŒstruct phylink_config”…”�”}”(hjtöh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjpöubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jdöh´M�hjhöubhŒ.”…”�”}”(hjhöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jdöh´M�hjeöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jdöh´M�hjFöubjä)�”}”(hŒU``struct phy_device *phy`` any attached phy (deprecated - please use LPI interfaces) ”h]”(jê)�”}”(hŒ``struct phy_device *phy``”h]”jð)�”}”(hj«öh]”hŒstruct phy_device *phy”…”�”}”(hj­öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj©öubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MŽhj¥öubj)�”}”(hhh]”jl)�”}”(hŒ9any attached phy (deprecated - please use LPI interfaces)”h]”hŒ9any attached phy (deprecated - please use LPI interfaces)”…”�”}”(hjÄöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÀöh´MŽhjÁöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÀöh´MŽhjFöubjä)�”}”(hŒ0``unsigned int mode`` link autonegotiation mode ”h]”(jê)�”}”(hŒ``unsigned int mode``”h]”jð)�”}”(hjäöh]”hŒunsigned int mode”…”�”}”(hjæöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjâöubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M�hjÞöubj)�”}”(hhh]”jl)�”}”(hŒlink autonegotiation mode”h]”hŒlink autonegotiation mode”…”�”}”(hjýöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jùöh´M�hjúöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jùöh´M�hjFöubjä)�”}”(hŒ\``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj÷h]”hŒphy_interface_t interface”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M�hj÷ubj)�”}”(hhh]”jl)�”}”(hŒ=link :c:type:`typedef phy_interface_t ` mode”h]”(hŒlink ”…”�”}”(hj6÷h²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hj@÷h]”hŒtypedef phy_interface_t”…”�”}”(hjB÷h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj>÷ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³j2÷h´M�hj6÷ubhŒ mode”…”�”}”(hj6÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2÷h´M�hj3÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2÷h´M�hjFöubjä)�”}”(hŒ``int speed`` link speed ”h]”(jê)�”}”(hŒ ``int speed``”h]”jð)�”}”(hjy÷h]”hŒ int speed”…”�”}”(hj{÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M‘hjs÷ubj)�”}”(hhh]”jl)�”}”(hŒ link speed”h]”hŒ link speed”…”�”}”(hj’÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽ÷h´M‘hj�÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ÷h´M‘hjFöubjä)�”}”(hŒ``int duplex`` link duplex ”h]”(jê)�”}”(hŒ``int duplex``”h]”jð)�”}”(hj²÷h]”hŒ int duplex”…”�”}”(hj´÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj°÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M’hj¬÷ubj)�”}”(hhh]”jl)�”}”(hŒ link duplex”h]”hŒ link duplex”…”�”}”(hjË÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇ÷h´M’hjÈ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÇ÷h´M’hjFöubjä)�”}”(hŒ8``bool tx_pause`` link transmit pause enablement status ”h]”(jê)�”}”(hŒ``bool tx_pause``”h]”jð)�”}”(hjë÷h]”hŒ bool tx_pause”…”�”}”(hjí÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjé÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M“hjå÷ubj)�”}”(hhh]”jl)�”}”(hŒ%link transmit pause enablement status”h]”hŒ%link transmit pause enablement status”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jøh´M“hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jøh´M“hjFöubjä)�”}”(hŒ7``bool rx_pause`` link receive pause enablement status ”h]”(jê)�”}”(hŒ``bool rx_pause``”h]”jð)�”}”(hj$øh]”hŒ bool rx_pause”…”�”}”(hj&øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"øubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M”hjøubj)�”}”(hhh]”jl)�”}”(hŒ$link receive pause enablement status”h]”hŒ$link receive pause enablement status”…”�”}”(hj=øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9øh´M”hj:øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9øh´M”hjFöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj*öubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj_øh]”hŒ Description”…”�”}”(hjaøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]øubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M–hj*öubjl)�”}”(hXNotifies the MAC that the link has come up, and the parameters of the link as seen from the MACs point of view. If mac_link_up() has been called previously, there will be an intervening call to mac_link_down() before this method will be subsequently called.”h]”hXNotifies the MAC that the link has come up, and the parameters of the link as seen from the MACs point of view. If mac_link_up() has been called previously, there will be an intervening call to mac_link_down() before this method will be subsequently called.”…”�”}”(hjuøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M•hj*öubjl)�”}”(hX6**speed**, **duplex**, **tx_pause** and **rx_pause** indicate the finalised link settings, and should be used to configure the MAC block appropriately where these settings are not automatically conveyed from the PCS block, or if in-band negotiation (as defined by phylink_autoneg_inband(**mode**)) is disabled.”h]”(j›)�”}”(hŒ **speed**”h]”hŒspeed”…”�”}”(hjˆøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„øubhŒ, ”…”�”}”(hj„øh²hh³Nh´Nubj›)�”}”(hŒ **duplex**”h]”hŒduplex”…”�”}”(hjšøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„øubhŒ, ”…”�”}”hj„øsbj›)�”}”(hŒ **tx_pause**”h]”hŒtx_pause”…”�”}”(hj¬øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„øubhŒ and ”…”�”}”(hj„øh²hh³Nh´Nubj›)�”}”(hŒ **rx_pause**”h]”hŒrx_pause”…”�”}”(hj¾øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„øubhŒë indicate the finalised link settings, and should be used to configure the MAC block appropriately where these settings are not automatically conveyed from the PCS block, or if in-band negotiation (as defined by phylink_autoneg_inband(”…”�”}”(hj„øh²hh³Nh´Nubj›)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjÐøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj„øubhŒ)) is disabled.”…”�”}”(hj„øh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mšhj*öubjl)�”}”(hŒÇNote that when 802.3z in-band negotiation is in use, it is possible that the user wishes to override the pause settings, and this should be allowed when considering the implementation of this method.”h]”hŒÇNote that when 802.3z in-band negotiation is in use, it is possible that the user wishes to override the pause settings, and this should be allowed when considering the implementation of this method.”…”�”}”(hjéøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M hj*öubjl)�”}”(hŒUOnce configured, the MAC may begin to process packets for transmission and reception.”h]”hŒUOnce configured, the MAC may begin to process packets for transmission and reception.”…”�”}”(hjøøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¤hj*öubjl)�”}”(hŒ6Interface type selection must be done in mac_config().”h]”hŒ6Interface type selection must be done in mac_config().”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M§hj*öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_disable_tx_lpi (C function)”Œc.mac_disable_tx_lpi”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void mac_disable_tx_lpi (struct phylink_config *config)”h]”j )�”}”(hŒ6void mac_disable_tx_lpi(struct phylink_config *config)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj6ùh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj2ùh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2ùh²hh³jDùh´M¯ubj3)�”}”(hŒmac_disable_tx_lpi”h]”j9)�”}”(hŒmac_disable_tx_lpi”h]”hŒmac_disable_tx_lpi”…”�”}”(hjWùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSùubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj2ùh²hh³jDùh´M¯ubj¡ )�”}”(hŒ(struct phylink_config *config)”h]”j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjsùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjoùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjoùubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hj‘ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j“ùŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jYùsbŒc.mac_disable_tx_lpi”†”asbuh1hhjoùubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±ùh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjoùubj )�”}”(hj h]”hŒ*”…”�”}”(hj¿ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjoùubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjÌùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjkùubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj2ùh²hh³jDùh´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj.ùh²hh³jDùh´M¯ubah}”(h]”j)ùah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jDùh´M¯hj+ùh²hubjg)�”}”(hhh]”jl)�”}”(hŒ!disable LPI generation at the MAC”h]”hŒ!disable LPI generation at the MAC”…”�”}”(hjöùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¯hjóùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj+ùh²hh³jDùh´M¯ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jújŒjúj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒì**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. **Description** Disable generation of LPI at the MAC, effectively preventing the MAC from indicating that it is idle.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjúh]”hŒ Parameters”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M³hjúubjß)�”}”(hhh]”jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hj7úh]”hŒstruct phylink_config *config”…”�”}”(hj9úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj5úubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M°hj1úubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjPúh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjZúh]”hŒstruct phylink_config”…”�”}”(hj\úh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjXúubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jLúh´M°hjPúubhŒ.”…”�”}”(hjPúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jLúh´M°hjMúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jLúh´M°hj.úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjúubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj•úh]”hŒ Description”…”�”}”(hj—úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj“úubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M²hjúubjl)�”}”(hŒeDisable generation of LPI at the MAC, effectively preventing the MAC from indicating that it is idle.”h]”hŒeDisable generation of LPI at the MAC, effectively preventing the MAC from indicating that it is idle.”…”�”}”(hj«úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M±hjúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_enable_tx_lpi (C function)”Œc.mac_enable_tx_lpi”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRint mac_enable_tx_lpi (struct phylink_config *config, u32 timer, bool tx_clk_stop)”h]”j )�”}”(hŒQint mac_enable_tx_lpi(struct phylink_config *config, u32 timer, bool tx_clk_stop)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÚúh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÖúh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéúh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÖúh²hh³jèúh´M¸ubj3)�”}”(hŒmac_enable_tx_lpi”h]”j9)�”}”(hŒmac_enable_tx_lpi”h]”hŒmac_enable_tx_lpi”…”�”}”(hjûúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷úubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÖúh²hh³jèúh´M¸ubj¡ )�”}”(hŒ<(struct phylink_config *config, u32 timer, bool tx_clk_stop)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$ûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hj5ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j7ûŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jýúsbŒc.mac_enable_tx_lpi”†”asbuh1hhjûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûubj )�”}”(hj h]”hŒ*”…”�”}”(hjcûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjûubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjpûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjûubj§ )�”}”(hŒ u32 timer”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjŒûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŽûŒmodname”NŒ classname”Njå jè )�”}”jë ]”jQûŒc.mac_enable_tx_lpi”†”asbuh1hhj…ûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…ûubj9)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj¸ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjûubj§ )�”}”(hŒbool tx_clk_stop”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjÑûh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÍûubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞûh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍûubj9)�”}”(hŒ tx_clk_stop”h]”hŒ tx_clk_stop”…”�”}”(hjìûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjûubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÖúh²hh³jèúh´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÒúh²hh³jèúh´M¸ubah}”(h]”jÍúah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jèúh´M¸hjÏúh²hubjg)�”}”(hhh]”jl)�”}”(hŒ.configure and enable LPI generation at the MAC”h]”hŒ.configure and enable LPI generation at the MAC”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¸hjüh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÏúh²hh³jèúh´M¸ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j.üjŒj.üj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXj**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``u32 timer`` LPI timeout in microseconds. ``bool tx_clk_stop`` allow xMII transmit clock to be stopped during LPI **Description** Configure the LPI timeout accordingly. This will only be called when the link is already up, to cater for situations where the hardware needs to be programmed according to the link speed. Enable LPI generation at the MAC, and configure whether the xMII transmit clock may be stopped. **Return** 0 on success. Please consult with rmk before returning an error.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj8üh]”hŒ Parameters”…”�”}”(hj:üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj6üubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¼hj2üubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjWüh]”hŒstruct phylink_config *config”…”�”}”(hjYüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjUüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¹hjQüubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjpüh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hjzüh]”hŒstruct phylink_config”…”�”}”(hj|üh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjxüubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jlüh´M¹hjpüubhŒ.”…”�”}”(hjpüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jlüh´M¹hjmüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlüh´M¹hjNüubjä)�”}”(hŒ+``u32 timer`` LPI timeout in microseconds. ”h]”(jê)�”}”(hŒ ``u32 timer``”h]”jð)�”}”(hj³üh]”hŒ u32 timer”…”�”}”(hjµüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj±üubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mºhj­üubj)�”}”(hhh]”jl)�”}”(hŒLPI timeout in microseconds.”h]”hŒLPI timeout in microseconds.”…”�”}”(hjÌüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÈüh´MºhjÉüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÈüh´MºhjNüubjä)�”}”(hŒH``bool tx_clk_stop`` allow xMII transmit clock to be stopped during LPI ”h]”(jê)�”}”(hŒ``bool tx_clk_stop``”h]”jð)�”}”(hjìüh]”hŒbool tx_clk_stop”…”�”}”(hjîüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjêüubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M»hjæüubj)�”}”(hhh]”jl)�”}”(hŒ2allow xMII transmit clock to be stopped during LPI”h]”hŒ2allow xMII transmit clock to be stopped during LPI”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jýh´M»hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jýh´M»hjNüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2üubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj'ýh]”hŒ Description”…”�”}”(hj)ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M½hj2üubjl)�”}”(hŒ»Configure the LPI timeout accordingly. This will only be called when the link is already up, to cater for situations where the hardware needs to be programmed according to the link speed.”h]”hŒ»Configure the LPI timeout accordingly. This will only be called when the link is already up, to cater for situations where the hardware needs to be programmed according to the link speed.”…”�”}”(hj=ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¼hj2üubjl)�”}”(hŒ_Enable LPI generation at the MAC, and configure whether the xMII transmit clock may be stopped.”h]”hŒ_Enable LPI generation at the MAC, and configure whether the xMII transmit clock may be stopped.”…”�”}”(hjLýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÀhj2üubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj]ýh]”hŒReturn”…”�”}”(hj_ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÃhj2üubjl)�”}”(hŒ@0 on success. Please consult with rmk before returning an error.”h]”hŒ@0 on success. Please consult with rmk before returning an error.”…”�”}”(hjsýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÄhj2üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒmac_wol_set (C function)”Œ c.mac_wol_set”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint mac_wol_set (struct phylink_config *config, u32 wolopts, const u8 *sopass)”h]”j )�”}”(hŒMint mac_wol_set(struct phylink_config *config, u32 wolopts, const u8 *sopass)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¢ýh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjžýh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÊubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±ýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjžýh²hh³j°ýh´MÊubj3)�”}”(hŒ mac_wol_set”h]”j9)�”}”(hŒ mac_wol_set”h]”hŒ mac_wol_set”…”�”}”(hjÃýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿ýubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjžýh²hh³j°ýh´MÊubj¡ )�”}”(hŒ>(struct phylink_config *config, u32 wolopts, const u8 *sopass)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjßýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìýh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛýubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hjýýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿýŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÅýsbŒ c.mac_wol_set”†”asbuh1hhjÛýubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛýubj )�”}”(hj h]”hŒ*”…”�”}”(hj+þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÛýubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hj8þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj×ýubj§ )�”}”(hŒ u32 wolopts”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjTþh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jVþŒmodname”NŒ classname”Njå jè )�”}”jë ]”jþŒ c.mac_wol_set”†”asbuh1hhjMþubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjMþubj9)�”}”(hŒwolopts”h]”hŒwolopts”…”�”}”(hj€þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjMþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj×ýubj§ )�”}”(hŒconst u8 *sopass”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj™þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•þubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦þh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•þubh)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj·þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¹þŒmodname”NŒ classname”Njå jè )�”}”jë ]”jþŒ c.mac_wol_set”†”asbuh1hhj•þubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕþh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj•þubj )�”}”(hj h]”hŒ*”…”�”}”(hjãþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj•þubj9)�”}”(hŒsopass”h]”hŒsopass”…”�”}”(hjðþh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj×ýubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjžýh²hh³j°ýh´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjšýh²hh³j°ýh´MÊubah}”(h]”j•ýah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j°ýh´MÊhj—ýh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$configure the Wake-on-Lan parameters”h]”hŒ$configure the Wake-on-Lan parameters”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÊhjÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj—ýh²hh³j°ýh´MÊubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j2ÿjŒj2ÿj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ``u32 wolopts`` Bitmask of ``WAKE_*`` flags for enabled Wake-On-Lan modes. ``const u8 *sopass`` SecureOn(tm) password; meaningful only for ``WAKE_MAGICSECURE`` **Description** Enable the specified Wake-on-Lan options at the MAC. Options that the PHY can handle will have been removed from **wolopts**. The presence of this method enables phylink-managed WoL support. **Return** 0 on success.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj<ÿh]”hŒ Parameters”…”�”}”(hj>ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÎhj6ÿubjß)�”}”(hhh]”(jä)�”}”(hŒc``struct phylink_config *config`` a pointer to a :c:type:`struct phylink_config `. ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hj[ÿh]”hŒstruct phylink_config *config”…”�”}”(hj]ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MËhjUÿubj)�”}”(hhh]”jl)�”}”(hŒ@a pointer to a :c:type:`struct phylink_config `.”h]”(hŒa pointer to a ”…”�”}”(hjtÿh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hj~ÿh]”hŒstruct phylink_config”…”�”}”(hj€ÿh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj|ÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jpÿh´MËhjtÿubhŒ.”…”�”}”(hjtÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jpÿh´MËhjqÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jpÿh´MËhjRÿubjä)�”}”(hŒK``u32 wolopts`` Bitmask of ``WAKE_*`` flags for enabled Wake-On-Lan modes. ”h]”(jê)�”}”(hŒ``u32 wolopts``”h]”jð)�”}”(hj·ÿh]”hŒ u32 wolopts”…”�”}”(hj¹ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÌhj±ÿubj)�”}”(hhh]”jl)�”}”(hŒ:Bitmask of ``WAKE_*`` flags for enabled Wake-On-Lan modes.”h]”(hŒ Bitmask of ”…”�”}”(hjÐÿh²hh³Nh´Nubjð)�”}”(hŒ ``WAKE_*``”h]”hŒWAKE_*”…”�”}”(hjØÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐÿubhŒ% flags for enabled Wake-On-Lan modes.”…”�”}”(hjÐÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌÿh´MÌhjÍÿubah}”(h]”h ]”h"]”h$]”h&•]”uh1jhj±ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌÿh´MÌhjRÿubjä)�”}”(hŒU``const u8 *sopass`` SecureOn(tm) password; meaningful only for ``WAKE_MAGICSECURE`` ”h]”(jê)�”}”(hŒ``const u8 *sopass``”h]”jð)�”}”(hjh]”hŒconst u8 *sopass”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÍhjüÿubj)�”}”(hhh]”jl)�”}”(hŒ?SecureOn(tm) password; meaningful only for ``WAKE_MAGICSECURE``”h]”(hŒ+SecureOn(tm) password; meaningful only for ”…”�”}”(hjh²hh³Nh´Nubjð)�”}”(hŒ``WAKE_MAGICSECURE``”h]”hŒWAKE_MAGICSECURE”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MÍhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MÍhjRÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6ÿubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjKh]”hŒ Description”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÏhj6ÿubjl)�”}”(hŒ}Enable the specified Wake-on-Lan options at the MAC. Options that the PHY can handle will have been removed from **wolopts**.”h]”(hŒqEnable the specified Wake-on-Lan options at the MAC. Options that the PHY can handle will have been removed from ”…”�”}”(hjah²hh³Nh´Nubj›)�”}”(hŒ **wolopts**”h]”hŒwolopts”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjaubhŒ.”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÎhj6ÿubjl)�”}”(hŒ@The presence of this method enables phylink-managed WoL support.”h]”hŒ@The presence of this method enables phylink-managed WoL support.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÑhj6ÿubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj“h]”hŒReturn”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÓhj6ÿubjl)�”}”(hŒ 0 on success.”h]”hŒ 0 on success.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÔhj6ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_pcs (C struct)”Œ c.phylink_pcs”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ phylink_pcs”h]”j )�”}”(hŒstruct phylink_pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÙubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÔh²hh³jåh´MÙubj3)�”}”(hŒ phylink_pcs”h]”j9)�”}”(hjÒh]”hŒ phylink_pcs”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÔh²hh³jåh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÐh²hh³jåh´MÙubah}”(h]”jËah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jåh´MÙhjÍh²hubjg)�”}”(hhh]”jl)�”}”(hŒPHYLINK PCS instance”h]”hŒPHYLINK PCS instance”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÝhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÍh²hh³jåh´MÙubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j2jŒj2j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXõ**Definition**:: struct phylink_pcs { unsigned long supported_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; const struct phylink_pcs_ops *ops; struct phylink *phylink; bool poll; bool rxc_always_on; }; **Members** ``supported_interfaces`` describing which PHY_INTERFACE_MODE_xxx are supported by this PCS. ``ops`` a pointer to the :c:type:`struct phylink_pcs_ops ` structure ``phylink`` pointer to :c:type:`struct phylink_config ` ``poll`` poll the PCS for link changes ``rxc_always_on`` The MAC driver requires the reference clock to always be on. Standalone PCS drivers which do not have access to a PHY device can check this instead of PHY_F_RXC_ALWAYS_ON.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:ubhŒ:”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Máhj6ubj¶)�”}”(hŒÒstruct phylink_pcs { unsigned long supported_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; const struct phylink_pcs_ops *ops; struct phylink *phylink; bool poll; bool rxc_always_on; };”h]”hŒÒstruct phylink_pcs { unsigned long supported_interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; const struct phylink_pcs_ops *ops; struct phylink *phylink; bool poll; bool rxc_always_on; };”…”�”}”hjWsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mãhj6ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjhh]”hŒMembers”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mëhj6ubjß)�”}”(hhh]”(jä)�”}”(hŒ\``supported_interfaces`` describing which PHY_INTERFACE_MODE_xxx are supported by this PCS. ”h]”(jê)�”}”(hŒ``supported_interfaces``”h]”jð)�”}”(hj‡h]”hŒsupported_interfaces”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Màhj�ubj)�”}”(hhh]”jl)�”}”(hŒBdescribing which PHY_INTERFACE_MODE_xxx are supported by this PCS.”h]”hŒBdescribing which PHY_INTERFACE_MODE_xxx are supported by this PCS.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mßhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœh´Màhj~ubjä)�”}”(hŒV``ops`` a pointer to the :c:type:`struct phylink_pcs_ops ` structure ”h]”(jê)�”}”(hŒ``ops``”h]”jð)�”}”(hjÁh]”hŒops”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Máhj»ubj)�”}”(hhh]”jl)�”}”(hŒMa pointer to the :c:type:`struct phylink_pcs_ops ` structure”h]”(hŒa pointer to the ”…”�”}”(hjÚh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct phylink_pcs_ops `”h]”jð)�”}”(hjäh]”hŒstruct phylink_pcs_ops”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjâubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_pcs_ops”uh1hh³jÖh´MáhjÚubhŒ structure”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÖh´Máhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÖh´Máhj~ubjä)�”}”(hŒH``phylink`` pointer to :c:type:`struct phylink_config ` ”h]”(jê)�”}”(hŒ ``phylink``”h]”jð)�”}”(hjh]”hŒphylink”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mâhjubj)�”}”(hhh]”jl)�”}”(hŒ;pointer to :c:type:`struct phylink_config `”h]”(hŒ pointer to ”…”�”}”(hj6h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hj@h]”hŒstruct phylink_config”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³j2h´Mâhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j2h´Mâhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j2h´Mâhj~ubjä)�”}”(hŒ'``poll`` poll the PCS for link changes ”h]”(jê)�”}”(hŒ``poll``”h]”jð)�”}”(hjuh]”hŒpoll”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mãhjoubj)�”}”(hhh]”jl)�”}”(hŒpoll the PCS for link changes”h]”hŒpoll the PCS for link changes”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠh´Mãhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠh´Mãhj~ubjä)�”}”(hŒ½``rxc_always_on`` The MAC driver requires the reference clock to always be on. Standalone PCS drivers which do not have access to a PHY device can check this instead of PHY_F_RXC_ALWAYS_ON.”h]”(jê)�”}”(hŒ``rxc_always_on``”h]”jð)�”}”(hj®h]”hŒ rxc_always_on”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mæhj¨ubj)�”}”(hhh]”jl)�”}”(hŒ«The MAC driver requires the reference clock to always be on. Standalone PCS drivers which do not have access to a PHY device can check this instead of PHY_F_RXC_ALWAYS_ON.”h]”hŒ«The MAC driver requires the reference clock to always be on. Standalone PCS drivers which do not have access to a PHY device can check this instead of PHY_F_RXC_ALWAYS_ON.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MähjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃh´Mæhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjñh]”hŒ Description”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MêhjÔh²hubjl)�”}”(hŒvThis structure is designed to be embedded within the PCS private data, and will be passed between phylink and the PCS.”h]”hŒvThis structure is designed to be embedded within the PCS private data, and will be passed between phylink and the PCS.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MçhjÔh²hubjl)�”}”(hŒWThe **phylink** member is private to phylink and must not be touched by the PCS driver.”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubj›)�”}”(hŒ **phylink**”h]”hŒphylink”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubhŒH member is private to phylink and must not be touched by the PCS driver.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MêhjÔh²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_pcs_ops (C struct)”Œc.phylink_pcs_ops”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphylink_pcs_ops”h]”j )�”}”(hŒstruct phylink_pcs_ops”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mðubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLh²hh³j]h´Mðubj3)�”}”(hŒphylink_pcs_ops”h]”j9)�”}”(hjJh]”hŒphylink_pcs_ops”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjLh²hh³j]h´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjHh²hh³j]h´Mðubah}”(h]”jCah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j]h´MðhjEh²hubjg)�”}”(hhh]”jl)�”}”(hŒMAC PCS operations structure.”h]”hŒMAC PCS operations structure.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M÷hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjEh²hh³j]h´Mðubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jªjŒjªj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Definition**:: struct phylink_pcs_ops { int (*pcs_validate)(struct phylink_pcs *pcs, unsigned long *supported, const struct phylink_link_state *state); unsigned int (*pcs_inband_caps)(struct phylink_pcs *pcs, phy_interface_t interface); int (*pcs_enable)(struct phylink_pcs *pcs); void (*pcs_disable)(struct phylink_pcs *pcs); void (*pcs_pre_config)(struct phylink_pcs *pcs, phy_interface_t interface); int (*pcs_post_config)(struct phylink_pcs *pcs, phy_interface_t interface); void (*pcs_get_state)(struct phylink_pcs *pcs, unsigned int neg_mode, struct phylink_link_state *state); int (*pcs_config)(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, const unsigned long *advertising, bool permit_pause_to_mac); void (*pcs_an_restart)(struct phylink_pcs *pcs); void (*pcs_link_up)(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, int speed, int duplex); void (*pcs_disable_eee)(struct phylink_pcs *pcs); void (*pcs_enable_eee)(struct phylink_pcs *pcs); int (*pcs_pre_init)(struct phylink_pcs *pcs); }; **Members** ``pcs_validate`` validate the link configuration. ``pcs_inband_caps`` query inband support for interface mode. ``pcs_enable`` enable the PCS. ``pcs_disable`` disable the PCS. ``pcs_pre_config`` pre-mac_config method (for errata) ``pcs_post_config`` post-mac_config method (for arrata) ``pcs_get_state`` read the current MAC PCS link state from the hardware. ``pcs_config`` configure the MAC PCS for the selected mode and state. ``pcs_an_restart`` restart 802.3z BaseX autonegotiation. ``pcs_link_up`` program the PCS for the resolved link configuration (where necessary). ``pcs_disable_eee`` optional notification to PCS that EEE has been disabled at the MAC. ``pcs_enable_eee`` optional notification to PCS that EEE will be enabled at the MAC. ``pcs_pre_init`` configure PCS components necessary for MAC hardware initialization e.g. RX clock for stmmac.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj²ubhŒ:”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mûhj®ubj¶)�”}”(hXBstruct phylink_pcs_ops { int (*pcs_validate)(struct phylink_pcs *pcs, unsigned long *supported, const struct phylink_link_state *state); unsigned int (*pcs_inband_caps)(struct phylink_pcs *pcs, phy_interface_t interface); int (*pcs_enable)(struct phylink_pcs *pcs); void (*pcs_disable)(struct phylink_pcs *pcs); void (*pcs_pre_config)(struct phylink_pcs *pcs, phy_interface_t interface); int (*pcs_post_config)(struct phylink_pcs *pcs, phy_interface_t interface); void (*pcs_get_state)(struct phylink_pcs *pcs, unsigned int neg_mode, struct phylink_link_state *state); int (*pcs_config)(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, const unsigned long *advertising, bool permit_pause_to_mac); void (*pcs_an_restart)(struct phylink_pcs *pcs); void (*pcs_link_up)(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, int speed, int duplex); void (*pcs_disable_eee)(struct phylink_pcs *pcs); void (*pcs_enable_eee)(struct phylink_pcs *pcs); int (*pcs_pre_init)(struct phylink_pcs *pcs); };”h]”hXBstruct phylink_pcs_ops { int (*pcs_validate)(struct phylink_pcs *pcs, unsigned long *supported, const struct phylink_link_state *state); unsigned int (*pcs_inband_caps)(struct phylink_pcs *pcs, phy_interface_t interface); int (*pcs_enable)(struct phylink_pcs *pcs); void (*pcs_disable)(struct phylink_pcs *pcs); void (*pcs_pre_config)(struct phylink_pcs *pcs, phy_interface_t interface); int (*pcs_post_config)(struct phylink_pcs *pcs, phy_interface_t interface); void (*pcs_get_state)(struct phylink_pcs *pcs, unsigned int neg_mode, struct phylink_link_state *state); int (*pcs_config)(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, const unsigned long *advertising, bool permit_pause_to_mac); void (*pcs_an_restart)(struct phylink_pcs *pcs); void (*pcs_link_up)(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, int speed, int duplex); void (*pcs_disable_eee)(struct phylink_pcs *pcs); void (*pcs_enable_eee)(struct phylink_pcs *pcs); int (*pcs_pre_init)(struct phylink_pcs *pcs); };”…”�”}”hjÏsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mýhj®ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjàh]”hŒMembers”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M hj®ubjß)�”}”(hhh]”(jä)�”}”(hŒ2``pcs_validate`` validate the link configuration. ”h]”(jê)�”}”(hŒ``pcs_validate``”h]”jð)�”}”(hjÿh]”hŒ pcs_validate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mùhjùubj)�”}”(hhh]”jl)�”}”(hŒ validate the link configuration.”h]”hŒ validate the link configuration.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mùhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mùhjöubjä)�”}”(hŒ=``pcs_inband_caps`` query inband support for interface mode. ”h]”(jê)�”}”(hŒ``pcs_inband_caps``”h]”jð)�”}”(hj8h]”hŒpcs_inband_caps”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Múhj2ubj)�”}”(hhh]”jl)�”}”(hŒ(query inband support for interface mode.”h]”hŒ(query inband support for interface mode.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jMh´MúhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jMh´Múhjöubjä)�”}”(hŒ``pcs_enable`` enable the PCS. ”h]”(jê)�”}”(hŒ``pcs_enable``”h]”jð)�”}”(hjqh]”hŒ pcs_enable”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mûhjkubj)�”}”(hhh]”jl)�”}”(hŒenable the PCS.”h]”hŒenable the PCS.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†h´Mûhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†h´Mûhjöubjä)�”}”(hŒ!``pcs_disable`` disable the PCS. ”h]”(jê)�”}”(hŒ``pcs_disable``”h]”jð)�”}”(hjªh]”hŒ pcs_disable”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mühj¤ubj)�”}”(hhh]”jl)�”}”(hŒdisable the PCS.”h]”hŒdisable the PCS.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¿h´MühjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¿h´Mühjöubjä)�”}”(hŒ6``pcs_pre_config`` pre-mac_config method (for errata) ”h]”(jê)�”}”(hŒ``pcs_pre_config``”h]”jð)�”}”(hjãh]”hŒpcs_pre_config”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MýhjÝubj)�”}”(hhh]”jl)�”}”(hŒ"pre-mac_config method (for errata)”h]”hŒ"pre-mac_config method (for errata)”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jøh´Mýhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jøh´Mýhjöubjä)�”}”(hŒ8``pcs_post_config`` post-mac_config method (for arrata) ”h]”(jê)�”}”(hŒ``pcs_post_config``”h]”jð)�”}”(hjh]”hŒpcs_post_config”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mþhjubj)�”}”(hhh]”jl)�”}”(hŒ#post-mac_config method (for arrata)”h]”hŒ#post-mac_config method (for arrata)”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1h´Mþhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1h´Mþhjöubjä)�”}”(hŒI``pcs_get_state`` read the current MAC PCS link state from the hardware. ”h]”(jê)�”}”(hŒ``pcs_get_state``”h]”jð)�”}”(hjUh]”hŒ pcs_get_state”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÿhjOubj)�”}”(hhh]”jl)�”}”(hŒ6read the current MAC PCS link state from the hardware.”h]”hŒ6read the current MAC PCS link state from the hardware.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jjh´Mÿhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jjh´Mÿhjöubjä)�”}”(hŒF``pcs_config`` configure the MAC PCS for the selected mode and state. ”h]”(jê)�”}”(hŒ``pcs_config``”h]”jð)�”}”(hjŽh]”hŒ pcs_config”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjˆubj)�”}”(hhh]”jl)�”}”(hŒ6configure the MAC PCS for the selected mode and state.”h]”hŒ6configure the MAC PCS for the selected mode and state.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j£h´Mhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j£h´Mhjöubjä)�”}”(hŒ9``pcs_an_restart`` restart 802.3z BaseX autonegotiation. ”h]”(jê)�”}”(hŒ``pcs_an_restart``”h]”jð)�”}”(hjÇh]”hŒpcs_an_restart”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjÁubj)�”}”(hhh]”jl)�”}”(hŒ%restart 802.3z BaseX autonegotiation.”h]”hŒ%restart 802.3z BaseX autonegotiation.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜh´MhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜh´Mhjöubjä)�”}”(hŒW``pcs_link_up`` program the PCS for the resolved link configuration (where necessary). ”h]”(jê)�”}”(hŒ``pcs_link_up``”h]”jð)�”}”(hjh]”hŒ pcs_link_up”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjúubj)�”}”(hhh]”jl)�”}”(hŒFprogram the PCS for the resolved link configuration (where necessary).”h]”hŒFprogram the PCS for the resolved link configuration (where necessary).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mhjöubjä)�”}”(hŒX``pcs_disable_eee`` optional notification to PCS that EEE has been disabled at the MAC. ”h]”(jê)�”}”(hŒ``pcs_disable_eee``”h]”jð)�”}”(hj:h]”hŒpcs_disable_eee”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj4ubj)�”}”(hhh]”jl)�”}”(hŒCoptional notification to PCS that EEE has been disabled at the MAC.”h]”hŒCoptional notification to PCS that EEE has been disabled at the MAC.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jOh´Mhjöubjä)�”}”(hŒU``pcs_enable_eee`` optional notification to PCS that EEE will be enabled at the MAC. ”h]”(jê)�”}”(hŒ``pcs_enable_eee``”h]”jð)�”}”(hjth]”hŒpcs_enable_eee”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjnubj)�”}”(hhh]”jl)�”}”(hŒAoptional notification to PCS that EEE will be enabled at the MAC.”h]”hŒAoptional notification to PCS that EEE will be enabled at the MAC.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‰h´Mhjöubjä)�”}”(hŒm``pcs_pre_init`` configure PCS components necessary for MAC hardware initialization e.g. RX clock for stmmac.”h]”(jê)�”}”(hŒ``pcs_pre_init``”h]”jð)�”}”(hj®h]”hŒ pcs_pre_init”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj¨ubj)�”}”(hhh]”jl)�”}”(hŒ\configure PCS components necessary for MAC hardware initialization e.g. RX clock for stmmac.”h]”hŒ\configure PCS components necessary for MAC hardware initialization e.g. RX clock for stmmac.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÃh´MhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÃh´Mhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_validate (C function)”Œc.pcs_validate”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒlint pcs_validate (struct phylink_pcs *pcs, unsigned long *supported, const struct phylink_link_state *state)”h]”j )�”}”(hŒkint pcs_validate(struct phylink_pcs *pcs, unsigned long *supported, const struct phylink_link_state *state)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M%ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³jh´M%ubj3)�”}”(hŒ pcs_validate”h]”j9)�”}”(hŒ pcs_validate”h]”hŒ pcs_validate”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³jh´M%ubj¡ )�”}”(hŒ[(struct phylink_pcs *pcs, unsigned long *supported, const struct phylink_link_state *state)”h]”(j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@ubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jdŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j*sbŒc.pcs_validate”†”asbuh1hhj@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@ubj )�”}”(hj h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<ubj§ )�”}”(hŒunsigned long *supported”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj²ubj )�”}”(hj h]”hŒ*”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj²ubj9)�”}”(hŒ supported”h]”hŒ supported”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<ubj§ )�”}”(hŒ&const struct phylink_link_state *state”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj)�”}”(hjh]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jOŒmodname”NŒ classname”Njå jè )�”}”jë ]”j~Œc.pcs_validate”†”asbuh1hhjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj )�”}”(hj h]”hŒ*”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³jh´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÿh²hh³jh´M%ubah}”(h]”júah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´M%hjüh²hubjg)�”}”(hhh]”jl)�”}”(hŒ validate the link configuration.”h]”hŒ validate the link configuration.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M%hj­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjüh²hh³jh´M%ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÈjŒjÈj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXè**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ``unsigned long *supported`` ethtool bitmask for supported link modes. ``const struct phylink_link_state *state`` a const pointer to a :c:type:`struct phylink_link_state `. **Description** Validate the interface mode, and advertising's autoneg bit, removing any media ethtool link modes that would not be supportable from the supported mask. Phylink will propagate the changes to the advertising mask. See the :c:type:`struct phylink_mac_ops ` validate() method. Returns -EINVAL if the interface mode/autoneg mode is not supported. Returns non-zero positive if the link state can be supported.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÒh]”hŒ Parameters”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M)hjÌubjß)�”}”(hhh]”(jä)�”}”(hŒW``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjñh]”hŒstruct phylink_pcs *pcs”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M&hjëubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hj h]”hŒstruct phylink_pcs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³j h´M&hj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M&hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M&hjèubjä)�”}”(hŒG``unsigned long *supported`` ethtool bitmask for supported link modes. ”h]”(jê)�”}”(hŒ``unsigned long *supported``”h]”jð)�”}”(hjM h]”hŒunsigned long *supported”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M'hjG ubj)�”}”(hhh]”jl)�”}”(hŒ)ethtool bitmask for supported link modes.”h]”hŒ)ethtool bitmask for supported link modes.”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jb h´M'hjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jb h´M'hjèubjä)�”}”(hŒz``const struct phylink_link_state *state`` a const pointer to a :c:type:`struct phylink_link_state `. ”h]”(jê)�”}”(hŒ*``const struct phylink_link_state *state``”h]”jð)�”}”(hj† h]”hŒ&const struct phylink_link_state *state”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj„ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M(hj€ ubj)�”}”(hhh]”jl)�”}”(hŒNa const pointer to a :c:type:`struct phylink_link_state `.”h]”(hŒa const pointer to a ”…”�”}”(hjŸ h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct phylink_link_state `”h]”jð)�”}”(hj© h]”hŒstruct phylink_link_state”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj§ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_link_state”uh1hh³j› h´M(hjŸ ubhŒ.”…”�”}”(hjŸ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j› h´M(hjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j› h´M(hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjä h]”hŒ Description”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M*hjÌubjl)�”}”(hX"Validate the interface mode, and advertising's autoneg bit, removing any media ethtool link modes that would not be supportable from the supported mask. Phylink will propagate the changes to the advertising mask. See the :c:type:`struct phylink_mac_ops ` validate() method.”h]”(hŒßValidate the interface mode, and advertising’s autoneg bit, removing any media ethtool link modes that would not be supportable from the supported mask. Phylink will propagate the changes to the advertising mask. See the ”…”�”}”(hjú h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct phylink_mac_ops `”h]”jð)�”}”(hj h]”hŒstruct phylink_mac_ops”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_mac_ops”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M)hjú ubhŒ validate() method.”…”�”}”(hjú h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j! h´M)hjÌubjl)�”}”(hŒ‚Returns -EINVAL if the interface mode/autoneg mode is not supported. Returns non-zero positive if the link state can be supported.”h]”hŒ‚Returns -EINVAL if the interface mode/autoneg mode is not supported. Returns non-zero positive if the link state can be supported.”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M.hjÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_inband_caps (C function)”Œc.pcs_inband_caps”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQunsigned int pcs_inband_caps (struct phylink_pcs *pcs, phy_interface_t interface)”h]”j )�”}”(hŒPunsigned int pcs_inband_caps(struct phylink_pcs *pcs, phy_interface_t interface)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjW h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW h²hh³ji h´M6ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjW h²hh³ji h´M6ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjW h²hh³ji h´M6ubj3)�”}”(hŒpcs_inband_caps”h]”j9)�”}”(hŒpcs_inband_caps”h]”hŒpcs_inband_caps”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj” ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjW h²hh³ji h´M6ubj¡ )�”}”(hŒ4(struct phylink_pcs *pcs, phy_interface_t interface)”h]”(j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj° ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj° ubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÔ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jš sbŒc.pcs_inband_caps”†”asbuh1hhj° ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj° ubj )�”}”(hj h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj° ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj° ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬ ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj& ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j+ Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî Œc.pcs_inband_caps”†”asbuh1hhj" ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj" ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj" ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjW h²hh³ji h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjS h²hh³ji h´M6ubah}”(h]”jN ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³ji h´M6hjP h²hubjg)�”}”(hhh]”jl)�”}”(hŒ2query PCS in-band capabilities for interface mode.”h]”hŒ2query PCS in-band capabilities for interface mode.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M6hj| h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjP h²hh³ji h´M6ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j— jŒj— j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ``phy_interface_t interface`` interface mode to be queried **Description** Returns zero if it is unknown what in-band signalling is supported by the PHY (e.g. because the PHY driver doesn't implement the method.) Otherwise, returns a bit mask of the LINK_INBAND_* values from :c:type:`enum link_inband_signalling ` to describe which inband modes are supported for this interface mode.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¡ h]”hŒ Parameters”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M:hj› ubjß)�”}”(hhh]”(jä)�”}”(hŒW``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjÀ h]”hŒstruct phylink_pcs *pcs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M7hjº ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hjÙ h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjã h]”hŒstruct phylink_pcs”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjá ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³jÕ h´M7hjÙ ubhŒ.”…”�”}”(hjÙ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÕ h´M7hjÖ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕ h´M7hj· ubjä)�”}”(hŒ;``phy_interface_t interface`` interface mode to be queried ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj h]”hŒphy_interface_t interface”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M8hj ubj)�”}”(hhh]”jl)�”}”(hŒinterface mode to be queried”h]”hŒinterface mode to be queried”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j1 h´M8hj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j1 h´M8hj· ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj› ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjW h]”hŒ Description”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M:hj› ubjl)�”}”(hXMReturns zero if it is unknown what in-band signalling is supported by the PHY (e.g. because the PHY driver doesn't implement the method.) Otherwise, returns a bit mask of the LINK_INBAND_* values from :c:type:`enum link_inband_signalling ` to describe which inband modes are supported for this interface mode.”h]”(hŒËReturns zero if it is unknown what in-band signalling is supported by the PHY (e.g. because the PHY driver doesn’t implement the method.) Otherwise, returns a bit mask of the LINK_INBAND_* values from ”…”�”}”(hjm h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`enum link_inband_signalling `”h]”jð)�”}”(hjw h]”hŒenum link_inband_signalling”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhju ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œlink_inband_signalling”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M9hjm ubhŒF to describe which inband modes are supported for this interface mode.”…”�”}”(hjm h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j” h´M9hj› ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_enable (C function)”Œ c.pcs_enable”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ(int pcs_enable (struct phylink_pcs *pcs)”h]”j )�”}”(hŒ'int pcs_enable(struct phylink_pcs *pcs)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj» h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MDubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj» h²hh³jÍ h´MDubj3)�”}”(hŒ pcs_enable”h]”j9)�”}”(hŒ pcs_enable”h]”hŒ pcs_enable”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜ ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj» h²hh³jÍ h´MDubj¡ )�”}”(hŒ(struct phylink_pcs *pcs)”h]”j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjø ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjø ubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jâ sbŒ c.pcs_enable”†”asbuh1hhjø ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjø ubj )�”}”(hj h]”hŒ*”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjø ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjô ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj» h²hh³jÍ h´MDubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj· h²hh³jÍ h´MDubah}”(h]”j² ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÍ h´MDhj´ h²hubjg)�”}”(hhh]”jl)�”}”(hŒenable the PCS.”h]”hŒenable the PCS.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MDhj| h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj´ h²hh³jÍ h´MDubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j— jŒj— j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒh**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¡ h]”hŒ Parameters”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MHhj› ubjß)�”}”(hhh]”jä)�”}”(hŒV``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `.”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjÀ h]”hŒstruct phylink_pcs *pcs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MJhjº ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hjÙ h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjã h]”hŒstruct phylink_pcs”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjá ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MEhjÙ ubhŒ.”…”�”}”(hjÙ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MEhjÖ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÕ h´MJhj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj› ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_disable (C function)”Œ c.pcs_disable”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*void pcs_disable (struct phylink_pcs *pcs)”h]”j )�”}”(hŒ)void pcs_disable(struct phylink_pcs *pcs)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj9h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9h²hh³jKh´MJubj3)�”}”(hŒ pcs_disable”h]”j9)�”}”(hŒ pcs_disable”h]”hŒ pcs_disable”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj9h²hh³jKh´MJubj¡ )�”}”(hŒ(struct phylink_pcs *pcs)”h]”j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jšŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j`sbŒ c.pcs_disable”†”asbuh1hhjvubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjvubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjvubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjrubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj9h²hh³jKh´MJubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj5h²hh³jKh´MJubah}”(h]”j0ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jKh´MJhj2h²hubjg)�”}”(hhh]”jl)�”}”(hŒdisable the PCS.”h]”hŒdisable the PCS.”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MJhjúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj2h²hh³jKh´MJubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jjŒjj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒh**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MNhjubjß)�”}”(hhh]”jä)�”}”(hŒV``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `.”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hj>h]”hŒstruct phylink_pcs *pcs”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MPhj8ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hjWh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjah]”hŒstruct phylink_pcs”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MKhjWubhŒ.”…”�”}”(hjWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j~h´MKhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jSh´MPhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_get_state (C function)”Œc.pcs_get_state”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒevoid pcs_get_state (struct phylink_pcs *pcs, unsigned int neg_mode, struct phylink_link_state *state)”h]”j )�”}”(hŒdvoid pcs_get_state(struct phylink_pcs *pcs, unsigned int neg_mode, struct phylink_link_state *state)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj·h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·h²hh³jÉh´MPubj3)�”}”(hŒ pcs_get_state”h]”j9)�”}”(hŒ pcs_get_state”h]”hŒ pcs_get_state”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj·h²hh³jÉh´MPubj¡ )�”}”(hŒR(struct phylink_pcs *pcs, unsigned int neg_mode, struct phylink_link_state *state)”h]”(j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÞsbŒc.pcs_get_state”†”asbuh1hhjôubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôubj )�”}”(hj h]”hŒ*”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjôubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjðubj§ )�”}”(hŒunsigned int neg_mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjfubj9)�”}”(hŒneg_mode”h]”hŒneg_mode”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjðubj§ )�”}”(hŒ struct phylink_link_state *state”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·ubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÛŒmodname”NŒ classname”Njå jè )�”}”jë ]”j2Œc.pcs_get_state”†”asbuh1hhj·ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·ubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj·ubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjðubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj·h²hh³jÉh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj³h²hh³jÉh´MPubah}”(h]”j®ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÉh´MPhj°h²hubjg)�”}”(hhh]”jl)�”}”(hŒ4Read the current inband link state from the hardware”h]”hŒ4Read the current inband link state from the hardware”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MPhj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj°h²hh³jÉh´MPubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jTjŒjTj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ``unsigned int neg_mode`` link negotiation mode (PHYLINK_PCS_NEG_xxx) ``struct phylink_link_state *state`` a pointer to a :c:type:`struct phylink_link_state `. **Description** Read the current inband link state from the MAC PCS, reporting the current speed in **state->speed**, duplex mode in **state->duplex**, pause mode in **state->pause** using the ``MLO_PAUSE_RX`` and ``MLO_PAUSE_TX`` bits, negotiation completion state in **state->an_complete**, and link up state in **state->link**. If possible, **state->lp_advertising** should also be populated. Note that the **neg_mode** parameter is always the PHYLINK_PCS_NEG_xxx state, not MLO_AN_xxx.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj^h]”hŒ Parameters”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MThjXubjß)�”}”(hhh]”(jä)�”}”(hŒW``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hj}h]”hŒstruct phylink_pcs *pcs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MQhjwubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hj–h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hj h]”hŒstruct phylink_pcs”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjžubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³j’h´MQhj–ubhŒ.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j’h´MQhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’h´MQhjtubjä)�”}”(hŒF``unsigned int neg_mode`` link negotiation mode (PHYLINK_PCS_NEG_xxx) ”h]”(jê)�”}”(hŒ``unsigned int neg_mode``”h]”jð)�”}”(hjÙh]”hŒunsigned int neg_mode”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MRhjÓubj)�”}”(hhh]”jl)�”}”(hŒ+link negotiation mode (PHYLINK_PCS_NEG_xxx)”h]”hŒ+link negotiation mode (PHYLINK_PCS_NEG_xxx)”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jîh´MRhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jîh´MRhjtubjä)�”}”(hŒn``struct phylink_link_state *state`` a pointer to a :c:type:`struct phylink_link_state `. ”h]”(jê)�”}”(hŒ$``struct phylink_link_state *state``”h]”jð)�”}”(hjh]”hŒ struct phylink_link_state *state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MShj ubj)�”}”(hhh]”jl)�”}”(hŒHa pointer to a :c:type:`struct phylink_link_state `.”h]”(hŒa pointer to a ”…”�”}”(hj+h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct phylink_link_state `”h]”jð)�”}”(hj5h]”hŒstruct phylink_link_state”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_link_state”uh1hh³j'h´MShj+ubhŒ.”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'h´MShj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'h´MShjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjXubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjph]”hŒ Description”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MUhjXubjl)�”}”(hX{Read the current inband link state from the MAC PCS, reporting the current speed in **state->speed**, duplex mode in **state->duplex**, pause mode in **state->pause** using the ``MLO_PAUSE_RX`` and ``MLO_PAUSE_TX`` bits, negotiation completion state in **state->an_complete**, and link up state in **state->link**. If possible, **state->lp_advertising** should also be populated.”h]”(hŒTRead the current inband link state from the MAC PCS, reporting the current speed in ”…”�”}”(hj†h²hh³Nh´Nubj›)�”}”(hŒ**state->speed**”h]”hŒ state->speed”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†ubhŒ, duplex mode in ”…”�”}”(hj†h²hh³Nh´Nubj›)�”}”(hŒ**state->duplex**”h]”hŒ state->duplex”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†ubhŒ, pause mode in ”…”�”}”(hj†h²hh³Nh´Nubj›)�”}”(hŒ**state->pause**”h]”hŒ state->pause”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†ubhŒ using the ”…”�”}”(hj†h²hh³Nh´Nubjð)�”}”(hŒ``MLO_PAUSE_RX``”h]”hŒ MLO_PAUSE_RX”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†ubhŒ and ”…”�”}”(hj†h²hh³Nh´Nubjð)�”}”(hŒ``MLO_PAUSE_TX``”h]”hŒ MLO_PAUSE_TX”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj†ubhŒ' bits, negotiation completion state in ”…”�”}”(hj†h²hh³Nh´Nubj›)�”}”(hŒ**state->an_complete**”h]”hŒstate->an_complete”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†ubhŒ, and link up state in ”…”�”}”(hj†h²hh³Nh´Nubj›)�”}”(hŒ**state->link**”h]”hŒ state->link”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj†ubhŒ. If possible, ”…”�”}”(hj†h²hh³Nh´Nubj›)�”}”(hŒ**state->lp_advertising**”h]”hŒstate->lp_advertising”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1•jšhj†ubhŒ should also be populated.”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MThjXubjl)�”}”(hŒ]Note that the **neg_mode** parameter is always the PHYLINK_PCS_NEG_xxx state, not MLO_AN_xxx.”h]”(hŒNote that the ”…”�”}”(hj%h²hh³Nh´Nubj›)�”}”(hŒ **neg_mode**”h]”hŒneg_mode”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%ubhŒC parameter is always the PHYLINK_PCS_NEG_xxx state, not MLO_AN_xxx.”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M[hjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_config (C function)”Œ c.pcs_config”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ–int pcs_config (struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, const unsigned long *advertising, bool permit_pause_to_mac)”h]”j )�”}”(hŒ•int pcs_config(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, const unsigned long *advertising, bool permit_pause_to_mac)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjbh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mcubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjbh²hh³jth´Mcubj3)�”}”(hŒ pcs_config”h]”j9)�”}”(hŒ pcs_config”h]”hŒ pcs_config”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjbh²hh³jth´Mcubj¡ )�”}”(hŒ‡(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, const unsigned long *advertising, bool permit_pause_to_mac)”h]”(j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÃŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‰sbŒ c.pcs_config”†”asbuh1hhjŸubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸubj )�”}”(hj h]”hŒ*”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŸubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj›ubj§ )�”}”(hŒunsigned int neg_mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒneg_mode”h]”hŒneg_mode”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj›ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jkŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÝŒ c.pcs_config”†”asbuh1hhjbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjbubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj›ubj§ )�”}”(hŒ const unsigned long *advertising”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjªubj )�”}”(hj h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjªubj9)�”}”(hŒ advertising”h]”hŒ advertising”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj›ubj§ )�”}”(hŒbool permit_pause_to_mac”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj#ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj#ubj9)�”}”(hŒpermit_pause_to_mac”h]”hŒpermit_pause_to_mac”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj›ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjbh²hh³jth´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj^h²hh³jth´Mcubah}”(h]”jYah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jth´Mchj[h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Configure the PCS mode and advertisement”h]”hŒ(Configure the PCS mode and advertisement”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mchjih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj[h²hh³jth´Mcubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j„jŒj„j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXÝ**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ``unsigned int neg_mode`` link negotiation mode (see below) ``phy_interface_t interface`` interface mode to be used ``const unsigned long *advertising`` adertisement ethtool link mode mask ``bool permit_pause_to_mac`` permit forwarding pause resolution to MAC **Description** Configure the PCS for the operating mode, the interface mode, and set the advertisement mask. **permit_pause_to_mac** indicates whether the hardware may forward the pause mode resolution to the MAC. When operating in ``MLO_AN_INBAND``, inband should always be enabled, otherwise inband should be disabled. For SGMII, there is no advertisement from the MAC side, the PCS should be programmed to acknowledge the inband word from the PHY. For 1000BASE-X, the advertisement should be programmed into the PCS. For most 10GBASE-R, there is no advertisement. The ``neg_mode`` argument should be tested via the phylink_mode_*() family of functions, or for PCS that set pcs->neg_mode true, should be tested against the PHYLINK_PCS_NEG_* definitions. pcs_config() will be called when configuration of the PCS is required or when the advertisement is possibly updated. It must not unnecessarily disrupt an established link. When an autonegotiation restart is required for 802.3z modes, .pcs_config() should return a positive non-zero integer (e.g. 1) to indicate to phylink to call the pcs_an_restart() method.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjŽh]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mghjˆubjß)�”}”(hhh]”(jä)�”}”(hŒW``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hj­h]”hŒstruct phylink_pcs *pcs”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mdhj§ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hjÆh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjÐh]”hŒstruct phylink_pcs”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÎubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³jÂh´MdhjÆubhŒ.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÂh´MdhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÂh´Mdhj¤ubjä)�”}”(hŒ<``unsigned int neg_mode`` link negotiation mode (see below) ”h]”(jê)�”}”(hŒ``unsigned int neg_mode``”h]”jð)�”}”(hj h]”hŒunsigned int neg_mode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mehjubj)�”}”(hhh]”jl)�”}”(hŒ!link negotiation mode (see below)”h]”hŒ!link negotiation mode (see below)”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´Mehjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´Mehj¤ubjä)�”}”(hŒ8``phy_interface_t interface`` interface mode to be used ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjBh]”hŒphy_interface_t interface”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mfhj<ubj)�”}”(hhh]”jl)�”}”(hŒinterface mode to be used”h]”hŒinterface mode to be used”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jWh´MfhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jWh´Mfhj¤ubjä)�”}”(hŒI``const unsigned long *advertising`` adertisement ethtool link mode mask ”h]”(jê)�”}”(hŒ$``const unsigned long *advertising``”h]”jð)�”}”(hj{h]”hŒ const unsigned long *advertising”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mghjuubj)�”}”(hhh]”jl)�”}”(hŒ#adertisement ethtool link mode mask”h]”hŒ#adertisement ethtool link mode mask”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�h´Mghj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´Mghj¤ubjä)�”}”(hŒG``bool permit_pause_to_mac`` permit forwarding pause resolution to MAC ”h]”(jê)�”}”(hŒ``bool permit_pause_to_mac``”h]”jð)�”}”(hj´h]”hŒbool permit_pause_to_mac”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhhj®ubj)�”}”(hhh]”jl)�”}”(hŒ)permit forwarding pause resolution to MAC”h]”hŒ)permit forwarding pause resolution to MAC”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÉh´MhhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÉh´Mhhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjïh]”hŒ Description”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mjhjˆubjl)�”}”(hŒÆConfigure the PCS for the operating mode, the interface mode, and set the advertisement mask. **permit_pause_to_mac** indicates whether the hardware may forward the pause mode resolution to the MAC.”h]”(hŒ^Configure the PCS for the operating mode, the interface mode, and set the advertisement mask. ”…”�”}”(hjh²hh³Nh´Nubj›)�”}”(hŒ**permit_pause_to_mac**”h]”hŒpermit_pause_to_mac”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubhŒQ indicates whether the hardware may forward the pause mode resolution to the MAC.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mihjˆubjl)�”}”(hŒjWhen operating in ``MLO_AN_INBAND``, inband should always be enabled, otherwise inband should be disabled.”h]”(hŒWhen operating in ”…”�”}”(hj&h²hh³Nh´Nubjð)�”}”(hŒ``MLO_AN_INBAND``”h]”hŒ MLO_AN_INBAND”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj&ubhŒG, inband should always be enabled, otherwise inband should be disabled.”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mmhjˆubjl)�”}”(hŒ�For SGMII, there is no advertisement from the MAC side, the PCS should be programmed to acknowledge the inband word from the PHY.”h]”hŒ�For SGMII, there is no advertisement from the MAC side, the PCS should be programmed to acknowledge the inband word from the PHY.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mphjˆubjl)�”}”(hŒDFor 1000BASE-X, the advertisement should be programmed into the PCS.”h]”hŒDFor 1000BASE-X, the advertisement should be programmed into the PCS.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mshjˆubjl)�”}”(hŒ.For most 10GBASE-R, there is no advertisement.”h]”hŒ.For most 10GBASE-R, there is no advertisement.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Muhjˆubjl)�”}”(hŒ¼The ``neg_mode`` argument should be tested via the phylink_mode_*() family of functions, or for PCS that set pcs->neg_mode true, should be tested against the PHYLINK_PCS_NEG_* definitions.”h]”(hŒThe ”…”�”}”(hjth²hh³Nh´Nubjð)�”}”(hŒ ``neg_mode``”h]”hŒneg_mode”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjtubhŒ¬ argument should be tested via the phylink_mode_*() family of functions, or for PCS that set pcs->neg_mode true, should be tested against the PHYLINK_PCS_NEG_* definitions.”…”�”}”(hjth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mwhjˆubjl)�”}”(hŒ«pcs_config() will be called when configuration of the PCS is required or when the advertisement is possibly updated. It must not unnecessarily disrupt an established link.”h]”hŒ«pcs_config() will be called when configuration of the PCS is required or when the advertisement is possibly updated. It must not unnecessarily disrupt an established link.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M{hjˆubjl)�”}”(hŒºWhen an autonegotiation restart is required for 802.3z modes, .pcs_config() should return a positive non-zero integer (e.g. 1) to indicate to phylink to call the pcs_an_restart() method.”h]”hŒºWhen an autonegotiation restart is required for 802.3z modes, .pcs_config() should return a positive non-zero integer (e.g. 1) to indicate to phylink to call the pcs_an_restart() method.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhjˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_an_restart (C function)”Œc.pcs_an_restart”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-void pcs_an_restart (struct phylink_pcs *pcs)”h]”j )�”}”(hŒ,void pcs_an_restart(struct phylink_pcs *pcs)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÏh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M‰ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÏh²hh³jáh´M‰ubj3)�”}”(hŒpcs_an_restart”h]”j9)�”}”(hŒpcs_an_restart”h]”hŒpcs_an_restart”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÏh²hh³jáh´M‰ubj¡ )�”}”(hŒ(struct phylink_pcs *pcs)”h]”j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j0Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jösbŒc.pcs_an_restart”†”asbuh1hhj ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ubj )�”}”(hj h]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÏh²hh³jáh´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjËh²hh³jáh´M‰ubah}”(h]”jÆah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jáh´M‰hjÈh²hubjg)�”}”(hhh]”jl)�”}”(hŒ$restart 802.3z BaseX autonegotiation”h]”hŒ$restart 802.3z BaseX autonegotiation”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M‰hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈh²hh³jáh´M‰ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j«jŒj«j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒë**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. **Description** When PCS ops are present, this overrides mac_an_restart() in :c:type:`struct phylink_mac_ops `.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjµh]”hŒ Parameters”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M�hj¯ubjß)�”}”(hhh]”jä)�”}”(hŒW``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjÔh]”hŒstruct phylink_pcs *pcs”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MŠhjÎubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hjíh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hj÷h]”hŒstruct phylink_pcs”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjõubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³jéh´MŠhjíubhŒ.”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jéh´MŠhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jéh´MŠhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj2h]”hŒ Description”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MŒhj¯ubjl)�”}”(hŒpWhen PCS ops are present, this overrides mac_an_restart() in :c:type:`struct phylink_mac_ops `.”h]”(hŒ=When PCS ops are present, this overrides mac_an_restart() in ”…”�”}”(hjHh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct phylink_mac_ops `”h]”jð)�”}”(hjRh]”hŒstruct phylink_mac_ops”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_mac_ops”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M‹hjHubhŒ.”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³joh´M‹hj¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_link_up (C function)”Œ c.pcs_link_up”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsvoid pcs_link_up (struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, int speed, int duplex)”h]”j )�”}”(hŒrvoid pcs_link_up(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, int speed, int duplex)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–h²hh³j¨h´M’ubj3)�”}”(hŒ pcs_link_up”h]”j9)�”}”(hŒ pcs_link_up”h]”hŒ pcs_link_up”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj–h²hh³j¨h´M’ubj¡ )�”}”(hŒb(struct phylink_pcs *pcs, unsigned int neg_mode, phy_interface_t interface, int speed, int duplex)”h]”(j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j÷Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j½sbŒ c.pcs_link_up”†”asbuh1hhjÓubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÓubj )�”}”(hj h]”hŒ*”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÓubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏubj§ )�”}”(hŒunsigned int neg_mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjEubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjEubj9)�”}”(hŒneg_mode”h]”hŒneg_mode”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jŸŒmodname”NŒ classname”Njå jè )�”}”jë ]”jŒ c.pcs_link_up”†”asbuh1hhj–ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏubj§ )�”}”(hŒ int speed”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÞubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞubj9)�”}”(hŒspeed”h]”hŒspeed”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏubj§ )�”}”(hŒ int duplex”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjubj9)�”}”(hŒduplex”h]”hŒduplex”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÏubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj–h²hh³j¨h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj’h²hh³j¨h´M’ubah}”(h]”j�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¨h´M’hj�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ3program the PCS for the resolved link configuration”h]”hŒ3program the PCS for the resolved link configuration”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M’hjZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�h²hh³j¨h´M’ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jujŒjuj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ``unsigned int neg_mode`` link negotiation mode (see below) ``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode ``int speed`` link speed ``int duplex`` link duplex **Description** This call will be made just before mac_link_up() to inform the PCS of the resolved link parameters. For example, a PCS operating in SGMII mode without in-band AN needs to be manually configured for the link and duplex setting. Otherwise, this should be a no-op. The ``mode`` argument should be tested via the phylink_mode_*() family of functions, or for PCS that set pcs->neg_mode true, should be tested against the PHYLINK_PCS_NEG_* definitions.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjh]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M–hjyubjß)�”}”(hhh]”(jä)�”}”(hŒW``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjžh]”hŒstruct phylink_pcs *pcs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M“hj˜ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hj·h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjÁh]”hŒstruct phylink_pcs”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³j³h´M“hj·ubhŒ.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j³h´M“hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j³h´M“hj•ubjä)�”}”(hŒ<``unsigned int neg_mode`` link negotiation mode (see below) ”h]”(jê)�”}”(hŒ``unsigned int neg_mode``”h]”jð)�”}”(hjúh]”hŒunsigned int neg_mode”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M”hjôubj)�”}”(hhh]”jl)�”}”(hŒ!link negotiation mode (see below)”h]”hŒ!link negotiation mode (see below)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M”hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M”hj•ubjä)�”}”(hŒ\``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj3h]”hŒphy_interface_t interface”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M•hj-ubj)�”}”(hhh]”jl)�”}”(hŒ=link :c:type:`typedef phy_interface_t ` mode”h]”(hŒlink ”…”�”}”(hjLh²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hjVh]”hŒtypedef phy_interface_t”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³jHh´M•hjLubhŒ mode”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jHh´M•hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jHh´M•hj•ubjä)�”}”(hŒ``int speed`` link speed ”h]”(jê)�”}”(hŒ ``int speed``”h]”jð)�”}”(hj�h]”hŒ int speed”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M–hj‰ubj)�”}”(hhh]”jl)�”}”(hŒ link speed”h]”hŒ link speed”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¤h´M–hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¤h´M–hj•ubjä)�”}”(hŒ``int duplex`` link duplex ”h]”(jê)�”}”(hŒ``int duplex``”h]”jð)�”}”(hjÈh]”hŒ int duplex”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M—hjÂubj)�”}”(hhh]”jl)�”}”(hŒ link duplex”h]”hŒ link duplex”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÝh´M—hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÝh´M—hj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjyubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M™hjyubjl)�”}”(hXThis call will be made just before mac_link_up() to inform the PCS of the resolved link parameters. For example, a PCS operating in SGMII mode without in-band AN needs to be manually configured for the link and duplex setting. Otherwise, this should be a no-op.”h]”hXThis call will be made just before mac_link_up() to inform the PCS of the resolved link parameters. For example, a PCS operating in SGMII mode without in-band AN needs to be manually configured for the link and duplex setting. Otherwise, this should be a no-op.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M˜hjyubjl)�”}”(hŒ¸The ``mode`` argument should be tested via the phylink_mode_*() family of functions, or for PCS that set pcs->neg_mode true, should be tested against the PHYLINK_PCS_NEG_* definitions.”h]”(hŒThe ”…”�”}”(hj(h²hh³Nh´Nubjð)�”}”(hŒ``mode``”h]”hŒmode”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj(ubhŒ¬ argument should be tested via the phylink_mode_*() family of functions, or for PCS that set pcs->neg_mode true, should be tested against the PHYLINK_PCS_NEG_* definitions.”…”�”}”(hj(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M�hjyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_disable_eee (C function)”Œc.pcs_disable_eee”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ.void pcs_disable_eee (struct phylink_pcs *pcs)”h]”j )�”}”(hŒ-void pcs_disable_eee(struct phylink_pcs *pcs)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjeh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeh²hh³jwh´M¦ubj3)�”}”(hŒpcs_disable_eee”h]”j9)�”}”(hŒpcs_disable_eee”h]”hŒpcs_disable_eee”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjeh²hh³jwh´M¦ubj¡ )�”}”(hŒ(struct phylink_pcs *pcs)”h]”j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢ubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÆŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŒsbŒc.pcs_disable_eee”†”asbuh1hhj¢ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢ubj )�”}”(hj h]”hŒ*”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjžubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjeh²hh³jwh´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjah²hh³jwh´M¦ubah}”(h]”j\ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jwh´M¦hj^h²hubjg)�”}”(hhh]”jl)�”}”(hŒDisable EEE at the PCS”h]”hŒDisable EEE at the PCS”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¦hj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^h²hh³jwh´M¦ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jAjŒjAj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒÂ**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs ` **Description** Optional method informing the PCS that EEE has been disabled at the MAC.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjKh]”hŒ Parameters”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MªhjEubjß)�”}”(hhh]”jä)�”}”(hŒV``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs ` ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjjh]”hŒstruct phylink_pcs *pcs”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M§hjdubj)�”}”(hhh]”jl)�”}”(hŒ9a pointer to a :c:type:`struct phylink_pcs `”h]”(hŒa pointer to a ”…”�”}”(hjƒh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hj�h]”hŒstruct phylink_pcs”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³jh´M§hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´M§hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M§hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjEubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÄh]”hŒ Description”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M©hjEubjl)�”}”(hŒHOptional method informing the PCS that EEE has been disabled at the MAC.”h]”hŒHOptional method informing the PCS that EEE has been disabled at the MAC.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¨hjEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_enable_eee (C function)”Œc.pcs_enable_eee”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-void pcs_enable_eee (struct phylink_pcs *pcs)”h]”j )�”}”(hŒ,void pcs_enable_eee(struct phylink_pcs *pcs)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M®ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjh²hh³jh´M®ubj3)�”}”(hŒpcs_enable_eee”h]”j9)�”}”(hŒpcs_enable_eee”h]”hŒpcs_enable_eee”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjh²hh³jh´M®ubj¡ )�”}”(hŒ(struct phylink_pcs *pcs)”h]”j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jfŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j,sbŒc.pcs_enable_eee”†”asbuh1hhjBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjBubj )�”}”(hj h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjBubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj>ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjh²hh³jh´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjh²hh³jh´M®ubah}”(h]”jüah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jh´M®hjþh²hubjg)�”}”(hhh]”jl)�”}”(hŒEnable EEE at the PCS”h]”hŒEnable EEE at the PCS”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M®hjÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjþh²hh³jh´M®ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jájŒjáj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒÇ**Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs ` **Description** Optional method informing the PCS that EEE is about to be enabled at the MAC.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjëh]”hŒ Parameters”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M²hjåubjß)�”}”(hhh]”jä)�”}”(hŒV``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs ` ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hj h]”hŒstruct phylink_pcs *pcs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¯hj ubj)�”}”(hhh]”jl)�”}”(hŒ9a pointer to a :c:type:`struct phylink_pcs `”h]”(hŒa pointer to a ”…”�”}”(hj# h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hj- h]”hŒstruct phylink_pcs”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj+ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³j h´M¯hj# ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j h´M¯hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M¯hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjåubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjd h]”hŒ Description”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M±hjåubjl)�”}”(hŒMOptional method informing the PCS that EEE is about to be enabled at the MAC.”h]”hŒMOptional method informing the PCS that EEE is about to be enabled at the MAC.”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M°hjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒpcs_pre_init (C function)”Œc.pcs_pre_init”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*int pcs_pre_init (struct phylink_pcs *pcs)”h]”j )�”}”(hŒ)int pcs_pre_init(struct phylink_pcs *pcs)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¥ h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥ h²hh³j· h´M¶ubj3)�”}”(hŒ pcs_pre_init”h]”j9)�”}”(hŒ pcs_pre_init”h]”hŒ pcs_pre_init”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆ ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¥ h²hh³j· h´M¶ubj¡ )�”}”(hŒ(struct phylink_pcs *pcs)”h]”j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâ ubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j!Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÌ sbŒc.pcs_pre_init”†”asbuh1hhjâ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$!h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâ ubj )�”}”(hj h]”hŒ*”…”�”}”(hj2!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjâ ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hj?!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÞ ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¥ h²hh³j· h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¡ h²hh³j· h´M¶ubah}”(h]”jœ ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j· h´M¶hjž h²hubjg)�”}”(hhh]”jl)�”}”(hŒ9Configure PCS components necessary for MAC initialization”h]”hŒ9Configure PCS components necessary for MAC initialization”…”�”}”(hji!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¶hjf!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjž h²hh³j· h´M¶ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�!jŒj�!j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX **Parameters** ``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. **Description** This function can be called by MAC drivers through the phylink_pcs_pre_init() wrapper, before their hardware is initialized. It should not be called after the link is brought up, as reconfiguring the PCS at this point could break the link. Some MAC devices require specific hardware initialization to be performed by their associated PCS device before they can properly initialize their own hardware. An example of this is the initialization of stmmac controllers, which requires an active REF_CLK signal to be provided by the PHY/PCS. By calling phylink_pcs_pre_init(), MAC drivers can ensure that the PCS is setup in a way that allows for successful hardware initialization. The specific configuration performed by pcs_pre_init() is dependent on the model of PCS and the requirements of the MAC device attached to it. PCS driver authors should consider whether their target device is to be used in conjunction with a MAC device whose driver calls phylink_pcs_pre_init(). MAC driver authors should document their requirements for the PCS pre-initialization.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‹!h]”hŒ Parameters”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‰!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mºhj…!ubjß)�”}”(hhh]”jä)�”}”(hŒW``struct phylink_pcs *pcs`` a pointer to a :c:type:`struct phylink_pcs `. ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjª!h]”hŒstruct phylink_pcs *pcs”…”�”}”(hj¬!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M·hj¤!ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink_pcs `.”h]”(hŒa pointer to a ”…”�”}”(hjÃ!h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjÍ!h]”hŒstruct phylink_pcs”…”�”}”(hjÏ!h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjË!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³j¿!h´M·hjÃ!ubhŒ.”…”�”}”(hjÃ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¿!h´M·hjÀ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¿!h´M·hj¡!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj…!ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj"h]”hŒ Description”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¹hj…!ubjl)�”}”(hŒïThis function can be called by MAC drivers through the phylink_pcs_pre_init() wrapper, before their hardware is initialized. It should not be called after the link is brought up, as reconfiguring the PCS at this point could break the link.”h]”hŒïThis function can be called by MAC drivers through the phylink_pcs_pre_init() wrapper, before their hardware is initialized. It should not be called after the link is brought up, as reconfiguring the PCS at this point could break the link.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M¸hj…!ubjl)�”}”(hX'Some MAC devices require specific hardware initialization to be performed by their associated PCS device before they can properly initialize their own hardware. An example of this is the initialization of stmmac controllers, which requires an active REF_CLK signal to be provided by the PHY/PCS.”h]”hX'Some MAC devices require specific hardware initialization to be performed by their associated PCS device before they can properly initialize their own hardware. An example of this is the initialization of stmmac controllers, which requires an active REF_CLK signal to be provided by the PHY/PCS.”…”�”}”(hj-"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M½hj…!ubjl)�”}”(hŒŒBy calling phylink_pcs_pre_init(), MAC drivers can ensure that the PCS is setup in a way that allows for successful hardware initialization.”h]”hŒŒBy calling phylink_pcs_pre_init(), MAC drivers can ensure that the PCS is setup in a way that allows for successful hardware initialization.”…”�”}”(hj<"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÂhj…!ubjl)�”}”(hX}The specific configuration performed by pcs_pre_init() is dependent on the model of PCS and the requirements of the MAC device attached to it. PCS driver authors should consider whether their target device is to be used in conjunction with a MAC device whose driver calls phylink_pcs_pre_init(). MAC driver authors should document their requirements for the PCS pre-initialization.”h]”hX}The specific configuration performed by pcs_pre_init() is dependent on the model of PCS and the requirements of the MAC device attached to it. PCS driver authors should consider whether their target device is to be used in conjunction with a MAC device whose driver calls phylink_pcs_pre_init(). MAC driver authors should document their requirements for the PCS pre-initialization.”…”�”}”(hjK"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MÅhj…!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phylink_get_link_timer_ns (C function)”Œc.phylink_get_link_timer_ns”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ9int phylink_get_link_timer_ns (phy_interface_t interface)”h]”j )�”}”(hŒ8int phylink_get_link_timer_ns(phy_interface_t interface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjz"h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjv"h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjv"h²hh³jˆ"h´Mubj3)�”}”(hŒphylink_get_link_timer_ns”h]”j9)�”}”(hŒphylink_get_link_timer_ns”h]”hŒphylink_get_link_timer_ns”…”�”}”(hj›"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—"ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjv"h²hh³jˆ"h´Mubj¡ )�”}”(hŒ(phy_interface_t interface)”h]”j§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjº"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¼"Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�"sbŒc.phylink_get_link_timer_ns”†”asbuh1hhj³"ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ"h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³"ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjè"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¯"ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjv"h²hh³jˆ"h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjr"h²hh³jˆ"h´Mubah}”(h]”jm"ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jˆ"h´Mhjo"h²hubjg)�”}”(hhh]”jl)�”}”(hŒreturn the PCS link timer value”h]”hŒreturn the PCS link timer value”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjo"h²hh³jˆ"h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j*#jŒj*#j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒï**Parameters** ``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode **Description** Return the PCS link timer setting in nanoseconds for the PHY **interface** mode, or -EINVAL if not appropriate.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj4#h]”hŒ Parameters”…”�”}”(hj6#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj2#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj.#ubjß)�”}”(hhh]”jä)�”}”(hŒ\``phy_interface_t interface`` link :c:type:`typedef phy_interface_t ` mode ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjS#h]”hŒphy_interface_t interface”…”�”}”(hjU#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjQ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´MhjM#ubj)�”}”(hhh]”jl)�”}”(hŒ=link :c:type:`typedef phy_interface_t ` mode”h]”(hŒlink ”…”�”}”(hjl#h²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hjv#h]”hŒtypedef phy_interface_t”…”�”}”(hjx#h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjt#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³jh#h´Mhjl#ubhŒ mode”…”�”}”(hjl#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh#h´Mhji#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh#h´MhjJ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj.#ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj±#h]”hŒ Description”…”�”}”(hj³#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj.#ubjl)�”}”(hŒoReturn the PCS link timer setting in nanoseconds for the PHY **interface** mode, or -EINVAL if not appropriate.”h]”(hŒ=Return the PCS link timer setting in nanoseconds for the PHY ”…”�”}”(hjÇ#h²hh³Nh´Nubj›)�”}”(hŒ **interface**”h]”hŒ interface”…”�”}”(hjÏ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇ#ubhŒ% mode, or -EINVAL if not appropriate.”…”�”}”(hjÇ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´Mhj.#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phylink_mac_implements_lpi (C function)”Œc.phylink_mac_implements_lpi”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒCbool phylink_mac_implements_lpi (const struct phylink_mac_ops *ops)”h]”j )�”}”(hŒBbool phylink_mac_implements_lpi(const struct phylink_mac_ops *ops)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj$h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M*ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj$h²hh³j$h´M*ubj3)�”}”(hŒphylink_mac_implements_lpi”h]”j9)�”}”(hŒphylink_mac_implements_lpi”h]”hŒphylink_mac_implements_lpi”…”�”}”(hj($h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$$ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj$h²hh³j$h´M*ubj¡ )�”}”(hŒ#(const struct phylink_mac_ops *ops)”h]”j§ )�”}”(hŒ!const struct phylink_mac_ops *ops”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjD$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@$ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj_$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@$ubh)�”}”(hhh]”j9)�”}”(hŒphylink_mac_ops”h]”hŒphylink_mac_ops”…”�”}”(hj}$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j$Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j*$sbŒc.phylink_mac_implements_lpi”†”asbuh1hhj@$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@$ubj )�”}”(hj h]”hŒ*”…”�”}”(hj«$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj@$ubj9)�”}”(hŒops”h]”hŒops”…”�”}”(hj¸$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj<$ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj$h²hh³j$h´M*ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj$h²hh³j$h´M*ubah}”(h]”jû#ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j$h´M*hjý#h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#determine if MAC implements LPI ops”h]”hŒ#determine if MAC implements LPI ops”…”�”}”(hjâ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M*hjß$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjý#h²hh³j$h´M*ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jú$jŒjú$j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒâ**Parameters** ``const struct phylink_mac_ops *ops`` phylink_mac_ops structure **Description** Returns true if the phylink MAC operations structure indicates that the LPI operations have been implemented, false otherwise.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj%h]”hŒ Parameters”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M.hjþ$ubjß)�”}”(hhh]”jä)�”}”(hŒ@``const struct phylink_mac_ops *ops`` phylink_mac_ops structure ”h]”(jê)�”}”(hŒ%``const struct phylink_mac_ops *ops``”h]”jð)�”}”(hj#%h]”hŒ!const struct phylink_mac_ops *ops”…”�”}”(hj%%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M+hj%ubj)�”}”(hhh]”jl)�”}”(hŒphylink_mac_ops structure”h]”hŒphylink_mac_ops structure”…”�”}”(hj<%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8%h´M+hj9%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8%h´M+hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjþ$ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj^%h]”hŒ Description”…”�”}”(hj`%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj\%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M-hjþ$ubjl)�”}”(hŒ~Returns true if the phylink MAC operations structure indicates that the LPI operations have been implemented, false otherwise.”h]”hŒ~Returns true if the phylink MAC operations structure indicates that the LPI operations have been implemented, false otherwise.”…”�”}”(hjt%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒX/var/lib/git/docbuild/linux/Documentation/networking/kapi:147: ./include/linux/phylink.h”h´M,hjþ$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink (C struct)”Œ c.phylink”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒphylink”h]”j )�”}”(hŒstruct phylink”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj£%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸ%h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±%h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸ%h²hh³j°%h´Kubj3)�”}”(hŒphylink”h]”j9)�”}”(hj�%h]”hŒphylink”…”�”}”(hjÃ%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿%ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŸ%h²hh³j°%h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj›%h²hh³j°%h´Kubah}”(h]”j–%ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j°%h´Khj˜%h²hubjg)�”}”(hhh]”jl)�”}”(hŒinternal data type for phylink”h]”hŒinternal data type for phylink”…”�”}”(hjå%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K)hjâ%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj˜%h²hh³j°%h´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jý%jŒjý%j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒ6**Definition**:: struct phylink { }; **Members**”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj&ubhŒ:”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K-hj&ubj¶)�”}”(hŒstruct phylink { };”h]”hŒstruct phylink { };”…”�”}”hj"&sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K/hj&ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj3&h]”hŒMembers”…”�”}”(hj5&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K2hj&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phylink_set_port_modes (C function)”Œc.phylink_set_port_modes”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void phylink_set_port_modes (unsigned long *mask)”h]”j )�”}”(hŒ0void phylink_set_port_modes(unsigned long *mask)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hji&h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hje&h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje&h²hh³jw&h´K�ubj3)�”}”(hŒphylink_set_port_modes”h]”j9)�”}”(hŒphylink_set_port_modes”h]”hŒphylink_set_port_modes”…”�”}”(hjŠ&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†&ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hje&h²hh³jw&h´K�ubj¡ )�”}”(hŒ(unsigned long *mask)”h]”j§ )�”}”(hŒunsigned long *mask”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¦&h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢&ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÂ&h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢&ubj")�”}”(hŒ ”•h]”hŒ ”…”�”}”(hjÐ&h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢&ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÞ&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢&ubj9)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjë&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjž&ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hje&h²hh³jw&h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhja&h²hh³jw&h´K�ubah}”(h]”j\&ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jw&h´K�hj^&h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+set the port type modes in the ethtool mask”h]”hŒ+set the port type modes in the ethtool mask”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K�hj'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj^&h²hh³jw&h´K�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j-'jŒj-'j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒ„**Parameters** ``unsigned long *mask`` ethtool link mode mask **Description** Sets all the port type modes in the ethtool mask.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj7'h]”hŒ Parameters”…”�”}”(hj9'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj5'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K¡hj1'ubjß)�”}”(hhh]”jä)�”}”(hŒ/``unsigned long *mask`` ethtool link mode mask ”h]”(jê)�”}”(hŒ``unsigned long *mask``”h]”jð)�”}”(hjV'h]”hŒunsigned long *mask”…”�”}”(hjX'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjT'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´KžhjP'ubj)�”}”(hhh]”jl)�”}”(hŒethtool link mode mask”h]”hŒethtool link mode mask”…”�”}”(hjo'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jk'h´Kžhjl'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jk'h´KžhjM'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj1'ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‘'h]”hŒ Description”…”�”}”(hj“'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´K hj1'ubjl)�”}”(hŒ1Sets all the port type modes in the ethtool mask.”h]”hŒ1Sets all the port type modes in the ethtool mask.”…”�”}”(hj§'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´KŸhj1'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(phylink_interface_max_speed (C function)”Œc.phylink_interface_max_speed”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ;int phylink_interface_max_speed (phy_interface_t interface)”h]”j )�”}”(hŒ:int phylink_interface_max_speed(phy_interface_t interface)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ'h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÒ'h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Kèubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå'h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÒ'h²hh³jä'h´Kèubj3)�”}”(hŒphylink_interface_max_speed”h]”j9)�”}”(hŒphylink_interface_max_speed”h]”hŒphylink_interface_max_speed”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó'ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÒ'h²hh³jä'h´Kèubj¡ )�”}”(hŒ(phy_interface_t interface)”h]”j§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j(Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jù'sbŒc.phylink_interface_max_speed”†”asbuh1hhj(ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6(h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjD(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj (ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÒ'h²hh³jä'h´Kèubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÎ'h²hh³jä'h´Kèubah}”(h]”jÉ'ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jä'h´KèhjË'h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(get the maximum speed of a phy interface”h]”hŒ(get the maximum speed of a phy interface”…”�”}”(hjn(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Kèhjk(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjË'h²hh³jä'h´Kèubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j†(jŒj†(j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXe**Parameters** ``phy_interface_t interface`` phy interface mode defined by :c:type:`typedef phy_interface_t ` **Description** Determine the maximum speed of a phy interface. This is intended to help determine the correct speed to pass to the MAC when the phy is performing rate matching. **Return** The maximum speed of **interface**”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�(h]”hŒ Parameters”…”�”}”(hj’(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŽ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´KìhjŠ(ubjß)�”}”(hhh]”jä)�”}”(hŒp``phy_interface_t interface`` phy interface mode defined by :c:type:`typedef phy_interface_t ` ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj¯(h]”hŒphy_interface_t interface”…”�”}”(hj±(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj­(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Kéhj©(ubj)�”}”(hhh]”jl)�”}”(hŒQphy interface mode defined by :c:type:`typedef phy_interface_t `”h]”(hŒphy interface mode defined by ”…”�”}”(hjÈ(h²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hjÒ(h]”hŒtypedef phy_interface_t”…”�”}”(hjÔ(h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÐ(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³jÄ(h´KéhjÈ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÄ(h´KéhjÅ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÄ(h´Kéhj¦(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠ(ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj )h]”hŒ Description”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´KëhjŠ(ubjl)�”}”(hŒ¡Determine the maximum speed of a phy interface. This is intended to help determine the correct speed to pass to the MAC when the phy is performing rate matching.”h]”hŒ¡Determine the maximum speed of a phy interface. This is intended to help determine the correct speed to pass to the MAC when the phy is performing rate matching.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´KêhjŠ(ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj0)h]”hŒReturn”…”�”}”(hj2)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´KîhjŠ(ubjl)�”}”(hŒ"The maximum speed of **interface**”h]”(hŒThe maximum speed of ”…”�”}”(hjF)h²hh³Nh´Nubj›)�”}”(hŒ **interface**”h]”hŒ interface”…”�”}”(hjN)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjF)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´KïhjŠ(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phylink_caps_to_link_caps (C function)”Œc.phylink_caps_to_link_caps”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MQhj;*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjx)h²hh³j‘)h´MQubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jV*jŒjV*j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒ‹**Parameters** ``unsigned long caps`` A set of MAC capabilities **Return** The corresponding set of LINK_CAPA as defined in phy-caps.h”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj`*h]”hŒ Parameters”…”�”}”(hjb*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MUhjZ*ubjß)�”}”(hhh]”jä)�”}”(hŒ1``unsigned long caps`` A set of MAC capabilities ”h]”(jê)�”}”(hŒ``unsigned long caps``”h]”jð)�”}”(hj*h]”hŒunsigned long caps”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MRhjy*ubj)�”}”(hhh]”jl)�”}”(hŒA set of MAC capabilities”h]”hŒA set of MAC capabilities”…”�”}”(hj˜*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”*h´MRhj•*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”*h´MRhjv*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjZ*ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjº*h]”hŒReturn”…”�”}”(hj¼*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¸*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MThjZ*ubjl)�”}”(hŒ;The corresponding set of LINK_CAPA as defined in phy-caps.h”h]”hŒ;The corresponding set of LINK_CAPA as defined in phy-caps.h”…”�”}”(hjÐ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MThjZ*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phylink_caps_to_linkmodes (C function)”Œc.phylink_caps_to_linkmodes”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMvoid phylink_caps_to_linkmodes (unsigned long *linkmodes, unsigned long caps)”h]”j )�”}”(hŒLvoid phylink_caps_to_linkmodes(unsigned long *linkmodes, unsigned long caps)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿ*h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjû*h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Moubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjû*h²hh³j +h´Moubj3)�”}”(hŒphylink_caps_to_linkmodes”h]”j9)�”}”(hŒphylink_caps_to_linkmodes”h]”hŒphylink_caps_to_linkmodes”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjû*h²hh³j +h´Moubj¡ )�”}”(hŒ.(unsigned long *linkmodes, unsigned long caps)”h]”(j§ )�”}”(hŒunsigned long *linkmodes”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj<+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj8+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj8+ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjX+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj8+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj8+ubj )�”}”(hj h]”hŒ*”…”�”}”(hjt+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj8+ubj9)�”}”(hŒ linkmodes”h]”hŒ linkmodes”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj4+ubj§ )�”}”(hŒunsigned long caps”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjš+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–+ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¶+h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj–+ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj–+ubj9)�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hjÒ+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj4+ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjû*h²hh³j +h´Moubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj÷*h²hh³j +h´Moubah}”(h]”jò*ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j +h´Mohjô*h²hubjg)�”}”(hhh]”jl)�”}”(hŒ*Convert capabilities to ethtool link modes”h]”hŒ*Convert capabilities to ethtool link modes”…”�”}”(hjü+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mohjù+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjô*h²hh³j +h´Moubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j,jŒj,j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXG**Parameters** ``unsigned long *linkmodes`` ethtool linkmode mask (must be already initialised) ``unsigned long caps`` bitmask of MAC capabilities **Description** Set all possible pause, speed and duplex linkmodes in **linkmodes** that are supported by the **caps**. **linkmodes** must have been initialised previously.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj,h]”hŒ Parameters”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mshj,ubjß)�”}”(hhh]”(jä)�”}”(hŒQ``unsigned long *linkmodes`` ethtool linkmode mask (must be already initialised) ”h]”(jê)�”}”(hŒ``unsigned long *linkmodes``”h]”jð)�”}”(hj=,h]”hŒunsigned long *linkmodes”…”�”}”(hj?,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mphj7,ubj)�”}”(hhh]”jl)�”}”(hŒ3ethtool linkmode mask (must be already initialised)”h]”hŒ3ethtool linkmode mask (must be already initialised)”…”�”}”(hjV,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jR,h´MphjS,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jR,h´Mphj4,ubjä)�”}”(hŒ3``unsigned long caps`` bitmask of MAC capabilities ”h]”(jê)�”}”(hŒ``unsigned long caps``”h]”jð)�”}”(hjv,h]”hŒunsigned long caps”…”�”}”(hjx,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjt,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mqhjp,ubj)�”}”(hhh]”jl)�”}”(hŒbitmask of MAC capabilities”h]”hŒbitmask of MAC capabilities”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹,h´MqhjŒ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹,h´Mqhj4,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj,ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj±,h]”hŒ Description”…”�”}”(hj³,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mshj,ubjl)�”}”(hŒœSet all possible pause, speed and duplex linkmodes in **linkmodes** that are supported by the **caps**. **linkmodes** must have been initialised previously.”h]”(hŒ6Set all possible pause, speed and duplex linkmodes in ”…”�”}”(hjÇ,h²hh³Nh´Nubj›)�”}”(hŒ **linkmodes**”h]”hŒ linkmodes”…”�”}”(hjÏ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇ,ubhŒ that are supported by the ”…”�”}”(hjÇ,h²hh³Nh´Nubj›)�”}”(hŒ**caps**”h]”hŒcaps”…”�”}”(hjá,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇ,ubhŒ. ”…”�”}”(hjÇ,h²hh³Nh´Nubj›)�”}”(hŒ **linkmodes**”h]”hŒ linkmodes”…”�”}”(hjó,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇ,ubhŒ' must have been initialised previously.”…”�”}”(hjÇ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mrhj,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phylink_limit_mac_speed (C function)”Œc.phylink_limit_mac_speed”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒKvoid phylink_limit_mac_speed (struct phylink_config *config, u32 max_speed)”h]”j )�”}”(hŒJvoid phylink_limit_mac_speed(struct phylink_config *config, u32 max_speed)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,-h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj(-h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj(-h²hh³j:-h´M…ubj3)�”}”(hŒphylink_limit_mac_speed”h]”j9)�”}”(hŒphylink_limit_mac_speed”h]”hŒphylink_limit_mac_speed”…”�”}”(hjM-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI-ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj(-h²hh³j:-h´M…ubj¡ )�”}”(hŒ.(struct phylink_config *config, u32 max_speed)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hji-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje-ubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hj‡-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰-Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jO-sbŒc.phylink_limit_mac_speed”†”asbuh1hhje-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hje-ubj )�”}”(hj h]”hŒ*”…”�”}”(hjµ-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hje-ubj9)�”}”(hŒconfig”h]”hŒconfig”…”�”}”(hjÂ-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hje-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hja-ubj§ )�”}”(hŒ u32 max_speed”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÞ-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛ-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jà-Œmodname”NŒ classname”Njå jè )�”}”jë ]”j£-Œc.phylink_limit_mac_speed”†”asbuh1hhj×-ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü-h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj×-ubj9)�”}”(hŒ max_speed”h]”hŒ max_speed”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hja-ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj(-h²hh³j:-h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj$-h²hh³j:-h´M…ubah}”(h]”j-ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j:-h´M…hj!-h²hubjg)�”}”(hhh]”jl)�”}”(hŒ+limit the phylink_config to a maximum speed”h]”hŒ+limit the phylink_config to a maximum speed”…”�”}”(hj4.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M…hj1.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj!-h²hh³j:-h´M…ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jL.jŒjL.j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX=**Parameters** ``struct phylink_config *config`` pointer to a :c:type:`struct phylink_config ` ``u32 max_speed`` maximum speed **Description** Mask off MAC capabilities for speeds higher than the **max_speed** parameter. Any further motifications of config.mac_capabilities will override this.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjV.h]”hŒ Parameters”…”�”}”(hjX.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjT.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M‰hjP.ubjß)�”}”(hhh]”(jä)�”}”(hŒ```struct phylink_config *config`` pointer to a :c:type:`struct phylink_config ` ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hju.h]”hŒstruct phylink_config *config”…”�”}”(hjw.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjs.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M†hjo.ubj)�”}”(hhh]”jl)�”}”(hŒ=pointer to a :c:type:`struct phylink_config `”h]”(hŒ pointer to a ”…”�”}”(hjŽ.h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hj˜.h]”hŒstruct phylink_config”…”�”}”(hjš.h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj–.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³jŠ.h´M†hjŽ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŠ.h´M†hj‹.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŠ.h´M†hjl.ubjä)�”}”(hŒ ``u32 max_speed`` maximum speed ”h]”(jê)�”}”(hŒ``u32 max_speed``”h]”jð)�”}”(hjÍ.h]”hŒ u32 max_speed”…”�”}”(hjÏ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjË.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M‡hjÇ.ubj)�”}”(hhh]”jl)�”}”(hŒ maximum speed”h]”hŒ maximum speed”…”�”}”(hjæ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâ.h´M‡hjã.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâ.h´M‡hjl.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjP.ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj/h]”hŒ Description”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M‰hjP.ubjl)�”}”(hŒ–Mask off MAC capabilities for speeds higher than the **max_speed** parameter. Any further motifications of config.mac_capabilities will override this.”h]”(hŒ5Mask off MAC capabilities for speeds higher than the ”…”�”}”(hj/h²hh³Nh´Nubj›)�”}”(hŒ **max_speed**”h]”hŒ max_speed”…”�”}”(hj&/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj/ubhŒT parameter. Any further motifications of config.mac_capabilities will override this.”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MˆhjP.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*phylink_cap_from_speed_duplex (C function)”Œc.phylink_cap_from_speed_duplex”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒLunsigned long phylink_cap_from_speed_duplex (int speed, unsigned int duplex)”h]”j )�”}”(hŒKunsigned long phylink_cap_from_speed_duplex(int speed, unsigned int duplex)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj_/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[/h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[/h²hh³jm/h´M—ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj|/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[/h²hh³jm/h´M—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[/h²hh³jm/h´M—ubj3)�”}”(hŒphylink_cap_from_speed_duplex”h]”j9)�”}”(hŒphylink_cap_from_speed_duplex”h]”hŒphylink_cap_from_speed_duplex”…”�”}”(hjœ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜/ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj[/h²hh³jm/h´M—ubj¡ )�”}”(hŒ (int speed, unsigned int duplex)”h]”(j§ )�”}”(hŒ int speed”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¸/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj´/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj´/ubj9)�”}”(hŒspeed”h]”hŒspeed”…”�”}”(hjÔ/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj°/ubj§ )�”}”(hŒunsigned int duplex”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjí/h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjé/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû/h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé/ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjé/ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé/ubj9)�”}”(hŒduplex”h]”hŒduplex”…”�”}”(hj%0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj°/ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj[/h²hh³jm/h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjW/h²hh³jm/h´M—ubah}”(h]”jR/ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jm/h´M—hjT/h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$Get mac capability from speed/duplex”h]”hŒ$Get mac capability from speed/duplex”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M—hjL0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjT/h²hh³jm/h´M—ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jg0jŒjg0j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX!**Parameters** ``int speed`` the speed to search for ``unsigned int duplex`` the duplex to search for **Description** Find the mac capability for a given speed and duplex. **Return** A mask with the mac capability patching **speed** and **duplex**, or 0 if there were no matches.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjq0h]”hŒ Parameters”…”�”}”(hjs0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjo0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M›hjk0ubjß)�”}”(hhh]”(jä)�”}”(hŒ&``int speed`` the speed to search for ”h]”(jê)�”}”(hŒ ``int speed``”h]”jð)�”}”(hj�0h]”hŒ int speed”…”�”}”(hj’0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjŽ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M˜hjŠ0ubj)�”}”(hhh]”jl)�”}”(hŒthe speed to search for”h]”hŒthe speed to search for”…”�”}”(hj©0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¥0h´M˜hj¦0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¥0h´M˜hj‡0ubjä)�”}”(hŒ1``unsigned int duplex`` the duplex to search for ”h]”(jê)�”}”(hŒ``unsigned int duplex``”h]”jð)�”}”(hjÉ0h]”hŒunsigned int duplex”…”�”}”(hjË0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÇ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M™hjÃ0ubj)�”}”(hhh]”jl)�”}”(hŒthe duplex to search for”h]”hŒthe duplex to search for”…”�”}”(hjâ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÞ0h´M™hjß0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÞ0h´M™hj‡0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjk0ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj1h]”hŒ Description”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M›hjk0ubjl)�”}”(hŒ5Find the mac capability for a given speed and duplex.”h]”hŒ5Find the mac capability for a given speed and duplex.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mšhjk0ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj+1h]”hŒReturn”…”�”}”(hj-1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mœhjk0ubjl)�”}”(hŒ`A mask with the mac capability patching **speed** and **duplex**, or 0 if there were no matches.”h]”(hŒ(A mask with the mac capability patching ”…”�”}”(hjA1h²hh³Nh´Nubj›)�”}”(hŒ **speed**”h]”hŒspeed”…”�”}”(hjI1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjA1ubhŒ and ”…”�”}”(hjA1h²hh³Nh´Nubj›)�”}”(hŒ **duplex**”h]”hŒduplex”…”�”}”(hj[1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjA1ubhŒ , or 0 if there were no matches.”…”�”}”(hjA1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M�hjk0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ%phylink_get_capabilities (C function)”Œc.phylink_get_capabilities”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒuunsigned long phylink_get_capabilities (phy_interface_t interface, unsigned long mac_capabilities, int rate_matching)”h]”j )�”}”(hŒtunsigned long phylink_get_capabilities(phy_interface_t interface, unsigned long mac_capabilities, int rate_matching)”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj”1h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�1h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�1h²hh³j¢1h´M¯ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj±1h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj�1h²hh³j¢1h´M¯ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿1h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�1h²hh³j¢1h´M¯ubj3)�”}”(hŒphylink_get_capabilities”h]”j9)�”}”(hŒphylink_get_capabilities”h]”hŒphylink_get_capabilities”…”�”}”(hjÑ1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍ1ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj�1h²hh³j¢1h´M¯ubj¡ )�”}”(hŒN(phy_interface_t interface, unsigned long mac_capabilities, int rate_matching)”h]”(j§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hjð1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjí1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jò1Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÓ1sbŒc.phylink_get_capabilities”†”asbuh1hhjé1ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé1ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjå1ubj§ )�”}”(hŒunsigned long mac_capabilities”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj72h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj32ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj32ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjS2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj32ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hja2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj32ubj9)�”}”(hŒmac_capabilities”h]”hŒmac_capabilities”…”�”}”(hjo2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj32ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjå1ubj§ )�”}”(hŒint rate_matching”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjˆ2h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj„2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–2h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj„2ubj9)�”}”(hŒ rate_matching”h]”hŒ rate_matching”…”�”}”(hj¤2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjå1ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj�1h²hh³j¢1h´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŒ1h²hh³j¢1h´M¯ubah}”(h]”j‡1ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¢1h´M¯hj‰1h²hubjg)�”}”(hhh]”jl)�”}”(hŒ get capabilities for a given MAC”h]”hŒ get capabilities for a given MAC”…”�”}”(hjÎ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¯hjË2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰1h²hh³j¢1h´M¯ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jæ2jŒjæ2j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXt**Parameters** ``phy_interface_t interface`` phy interface mode defined by :c:type:`typedef phy_interface_t ` ``unsigned long mac_capabilities`` bitmask of MAC capabilities ``int rate_matching`` type of rate matching being performed **Description** Get the MAC capabilities that are supported by the **interface** mode and **mac_capabilities**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjð2h]”hŒ Parameters”…”�”}”(hjò2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M³hjê2ubjß)�”}”(hhh]”(jä)�”}”(hŒp``phy_interface_t interface`` phy interface mode defined by :c:type:`typedef phy_interface_t ` ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj3h]”hŒphy_interface_t interface”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj 3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M°hj 3ubj)�”}”(hhh]”jl)�”}”(hŒQphy interface mode defined by :c:type:`typedef phy_interface_t `”h]”(hŒphy interface mode defined by ”…”�”}”(hj(3h²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hj23h]”hŒtypedef phy_interface_t”…”�”}”(hj43h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj03ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³j$3h´M°hj(3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j$3h´M°hj%3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j$3h´M°hj3ubjä)�”}”(hŒ?``unsigned long mac_capabilities`` bitmask of MAC capabilities ”h]”(jê)�”}”(hŒ"``unsigned long mac_capabilities``”h]”jð)�”}”(hjg3h]”hŒunsigned long mac_capabilities”…”�”}”(hji3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhje3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M±hja3ubj)�”}”(hhh]”jl)�”}”(hŒbitmask of MAC capabilities”h]”hŒbitmask of MAC capabilities”…”�”}”(hj€3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|3h´M±hj}3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|3h´M±hj3ubjä)�”}”(hŒ<``int rate_matching`` type of rate matching being performed ”h]”(jê)�”}”(hŒ``int rate_matching``”h]”jð)�”}”(hj 3h]”hŒint rate_matching”…”�”}”(hj¢3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjž3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M²hjš3ubj)�”}”(hhh]”jl)�”}”(hŒ%type of rate matching being performed”h]”hŒ%type of rate matching being performed”…”�”}”(hj¹3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµ3h´M²hj¶3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµ3h´M²hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjê2ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÛ3h]”hŒ Description”…”�”}”(hjÝ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÙ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M´hjê2ubjl)�”}”(hŒ_Get the MAC capabilities that are supported by the **interface** mode and **mac_capabilities**.”h]”(hŒ3Get the MAC capabilities that are supported by the ”…”�”}”(hjñ3h²hh³Nh´Nubj›)�”}”(hŒ **interface**”h]”hŒ interface”…”�”}”(hjù3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ3ubhŒ mode and ”…”�”}”(hjñ3h²hh³Nh´Nubj›)�”}”(hŒ**mac_capabilities**”h]”hŒmac_capabilities”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ3ubhŒ.”…”�”}”(hjñ3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M³hjê2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phylink_validate_mask_caps (C function)”Œc.phylink_validate_mask_caps”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ|void phylink_validate_mask_caps (unsigned long *supported, struct phylink_link_state *state, unsigned long mac_capabilities)”h]”j )�”}”(hŒ{void phylink_validate_mask_caps(unsigned long *supported, struct phylink_link_state *state, unsigned long mac_capabilities)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjD4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj@4h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Míubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj@4h²hh³jR4h´Míubj3)�”}”(hŒphylink_validate_mask_caps”h]”j9)�”}”(hŒphylink_validate_mask_caps”h]”hŒphylink_validate_mask_caps”…”�”}”(hje4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja4ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj@4h²hh³jR4h´Míubj¡ )�”}”(hŒ\(unsigned long *supported, struct phylink_link_state *state, unsigned long mac_capabilities)”h]”(j§ )�”}”(hŒunsigned long *supported”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj}4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}4ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj}4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj}4ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¹4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj}4ubj9)�”}”(hŒ supported”h]”hŒ supported”…”�”}”(hjÆ4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjy4ubj§ )�”}”(hŒ struct phylink_link_state *state”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjß4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì4h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛ4ubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hjý4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjú4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÿ4Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jg4sbŒc.phylink_validate_mask_caps”†”asbuh1hhjÛ4ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÛ4ubj )�”}”(hj h]”hŒ*”…”�”}”(hj+5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÛ4ubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj85h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛ4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjy4ubj§ )�”}”(hŒunsigned long mac_capabilities”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjQ5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjM5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjM5ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjm5h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjM5ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{5h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjM5ubj9)�”}”(hŒmac_capabilities”h]”hŒmac_capabilities”…”�”}”(hj‰5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjy4ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj@4h²hh³jR4h´Míubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj<4h²hh³jR4h´Míubah}”(h]”j74ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jR4h´Míhj94h²hubjg)�”}”(hhh]”jl)�”}”(hŒ!Restrict link modes based on caps”h]”hŒ!Restrict link modes based on caps”…”�”}”(hj³5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Míhj°5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj94h²hh³jR4h´Míubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jË5jŒjË5j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXý**Parameters** ``unsigned long *supported`` ethtool bitmask for supported link modes. ``struct phylink_link_state *state`` pointer to a :c:type:`struct phylink_link_state `. ``unsigned long mac_capabilities`` bitmask of MAC capabilities **Description** Calculate the supported link modes based on **mac_capabilities**, and restrict **supported** and **state** based on that. Use this function if your capabiliies aren't constant, such as if they vary depending on the interface.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÕ5h]”hŒ Parameters”…”�”}”(hj×5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MñhjÏ5ubjß)�”}”(hhh]”(jä)�”}”(hŒG``unsigned long *supported`` ethtool bitmask for supported link modes. ”h]”(jê)�”}”(hŒ``unsigned long *supported``”h]”jð)�”}”(hjô5h]”hŒunsigned long *supported”…”�”}”(hjö5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjò5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mîhjî5ubj)�”}”(hhh]”jl)�”}”(hŒ)ethtool bitmask for supported link modes.”h]”hŒ)ethtool bitmask for supported link modes.”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j 6h´Mîhj 6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j 6h´Mîhjë5ubjä)�”}”(hŒl``struct phylink_link_state *state`` pointer to a :c:type:`struct phylink_link_state `. ”h]”(jê)�”}”(hŒ$``struct phylink_link_state *state``”h]”jð)�”}”(hj-6h]”hŒ struct phylink_link_state *state”…”�”}”(hj/6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj+6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mïhj'6ubj)�”}”(hhh]”jl)�”}”(hŒFpointer to a :c:type:`struct phylink_link_state `.”h]”(hŒ pointer to a ”…”�”}”(hjF6h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct phylink_link_state `”h]”jð)�”}”(hjP6h]”hŒstruct phylink_link_state”…”�”}”(hjR6h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjN6ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_link_state”uh1hh³jB6h´MïhjF6ubhŒ.”…”�”}”(hjF6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jB6h´MïhjC6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jB6h´Mïhjë5ubjä)�”}”(hŒ?``unsigned long mac_capabilities`` bitmask of MAC capabilities ”h]”(jê)�”}”(hŒ"``unsigned long mac_capabilities``”h]”jð)�”}”(hj‰6h]”hŒunsigned long mac_capabilities”…”�”}”(hj‹6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj‡6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mðhjƒ6ubj)�”}”(hhh]”jl)�”}”(hŒbitmask of MAC capabilities”h]”hŒbitmask of MAC capabilities”…”�”}”(hj¢6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jž6h´MðhjŸ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jž6h´Mðhjë5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÏ5ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÄ6h]”hŒ Description”…”�”}”(hjÆ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MòhjÏ5ubjl)�”}”(hŒáCalculate the supported link modes based on **mac_capabilities**, and restrict **supported** and **state** based on that. Use this function if your capabiliies aren't constant, such as if they vary depending on the interface.”h]”(hŒ,Calculate the supported link modes based on ”…”�”}”(hjÚ6h²hh³Nh´Nubj›)�”}”(hŒ**mac_capabilities**”h]”hŒmac_capabilities”…”�”}”(hjâ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚ6ubhŒ, and restrict ”…”�”}”(hjÚ6h²hh³Nh´Nubj›)�”}”(hŒ **supported**”h]”hŒ supported”…”�”}”(hjô6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚ6ubhŒ and ”…”�”}”(hjÚ6h²hh³Nh´Nubj›)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÚ6ubhŒy based on that. Use this function if your capabiliies aren’t constant, such as if they vary depending on the interface.”…”�”}”(hjÚ6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MñhjÏ5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!phylink_pcs_neg_mode (C function)”Œc.phylink_pcs_neg_mode”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ„void phylink_pcs_neg_mode (struct phylink *pl, struct phylink_pcs *pcs, phy_interface_t interface, const unsigned long *advertising)”h]”j )�”}”(hŒƒvoid phylink_pcs_neg_mode(struct phylink *pl, struct phylink_pcs *pcs, phy_interface_t interface, const unsigned long *advertising)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?7h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj;7h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M2ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj;7h²hh³jM7h´M2ubj3)�”}”(hŒphylink_pcs_neg_mode”h]”j9)�”}”(hŒphylink_pcs_neg_mode”h]”hŒphylink_pcs_neg_mode”…”�”}”(hj`7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\7ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj;7h²hh³jM7h´M2ubj¡ )�”}”(hŒj(struct phylink *pl, struct phylink_pcs *pcs, phy_interface_t interface, const unsigned long *advertising)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj|7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjx7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx7ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjš7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jœ7Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jb7sbŒc.phylink_pcs_neg_mode”†”asbuh1hhjx7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjx7ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÈ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjx7ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjÕ7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjt7ubj§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjî7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû7h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjê7ubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj 8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j8Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¶7Œc.phylink_pcs_neg_mode”†”asbuh1hhjê7ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjê7ubj )�”}”(hj h]”hŒ*”…”�”}”(hj88h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjê7ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjE8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjê7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjt7ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hja8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jc8Œmodname”NŒ classname”Njå jè )�”}”jë ]”j¶7Œc.phylink_pcs_neg_mode”†”asbuh1hhjZ8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZ8ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjt7ubj§ )�”}”(hŒ const unsigned long *advertising”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¦8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢8ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÁ8h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢8ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÝ8h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¢8ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë8h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¢8ubj )�”}”(hj h]”hŒ*”…”�”}”(hjù8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¢8ubj9)�”}”(hŒ advertising”h]”hŒ advertising”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjt7ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj;7h²hh³jM7h´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj77h²hh³jM7h´M2ubah}”(h]”j27ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jM7h´M2hj47h²hubjg)�”}”(hhh]”jl)�”}”(hŒ#helper to determine PCS inband mode”h]”hŒ#helper to determine PCS inband mode”…”�”}”(hj09h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M2hj-9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj47h²hh³jM7h´M2ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jH9jŒjH9j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXt**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct phylink_pcs *pcs`` a pointer to :c:type:`struct phylink_pcs ` ``phy_interface_t interface`` interface mode to be used ``const unsigned long *advertising`` adertisement ethtool link mode mask **Description** Determines the negotiation mode to be used by the PCS, and returns one of: - ``PHYLINK_PCS_NEG_NONE``: interface mode does not support inband - ``PHYLINK_PCS_NEG_OUTBAND``: an out of band mode (e.g. reading the PHY) will be used. - ``PHYLINK_PCS_NEG_INBAND_DISABLED``: inband mode selected but autoneg disabled - ``PHYLINK_PCS_NEG_INBAND_ENABLED``: inband mode selected and autoneg enabled **Note** this is for cases where the PCS itself is involved in negotiation (e.g. Clause 37, SGMII and similar) not Clause 73.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjR9h]”hŒ Parameters”…”�”}”(hjT9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjP9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M6hjL9ubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjq9h]”hŒstruct phylink *pl”…”�”}”(hjs9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjo9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M3hjk9ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjŠ9h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj”9h]”hŒstruct phylink”…”�”}”(hj–9h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj’9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j†9h´M3hjŠ9ubhŒ returned from phylink_create()”…”�”}”(hjŠ9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j†9h´M3hj‡9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j†9h´M3hjh9ubjä)�”}”(hŒT``struct phylink_pcs *pcs`` a pointer to :c:type:`struct phylink_pcs ` ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjÍ9h]”hŒstruct phylink_pcs *pcs”…”�”}”(hjÏ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjË9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M4hjÇ9ubj)�”}”(hhh]”jl)�”}”(hŒ7a pointer to :c:type:`struct phylink_pcs `”h]”(hŒ a pointer to ”…”�”}”(hjæ9h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjð9h]”hŒstruct phylink_pcs”…”�”}”(hjò9h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjî9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³jâ9h´M4hjæ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâ9h´M4hjã9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâ9h´M4hjh9ubjä)�”}”(hŒ8``phy_interface_t interface`` interface mode to be used ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj%:h]”hŒphy_interface_t interface”…”�”}”(hj':h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M5hj:ubj)�”}”(hhh]”jl)�”}”(hŒinterface mode to be used”h]”hŒinterface mode to be used”…”�”}”(hj>:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j::h´M5hj;:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j::h´M5hjh9ubjä)�”}”(hŒI``const unsigned long *advertising`` adertisement ethtool link mode mask ”h]”(jê)�”}”(hŒ$``const unsigned long *advertising``”h]”jð)�”}”(hj^:h]”hŒ const unsigned long *advertising”…”�”}”(hj`:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M6hjX:ubj)�”}”(hhh]”jl)�”}”(hŒ#adertisement ethtool link mode mask”h]”hŒ#adertisement ethtool link mode mask”…”�”}”(hjw:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³js:h´M6hjt:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³js:h´M6hjh9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjL9ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj™:h]”hŒ Description”…”�”}”(hj›:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M8hjL9ubjl)�”}”(hŒJDetermines the negotiation mode to be used by the PCS, and returns one of:”h]”hŒJDetermines the negotiation mode to be used by the PCS, and returns one of:”…”�”}”(hj¯:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M7hjL9ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ@``PHYLINK_PCS_NEG_NONE``: interface mode does not support inband”h]”jl)�”}”(hjÃ:h]”(jð)�”}”(hŒ``PHYLINK_PCS_NEG_NONE``”h]”hŒPHYLINK_PCS_NEG_NONE”…”�”}”(hjÈ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅ:ubhŒ(: interface mode does not support inband”…”�”}”(hjÅ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M:hjÁ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj¾:ubjH[)�”}”(hŒU``PHYLINK_PCS_NEG_OUTBAND``: an out of band mode (e.g. reading the PHY) will be used.”h]”jl)�”}”(hŒU``PHYLINK_PCS_NEG_OUTBAND``: an out of band mode (e.g. reading the PHY) will be used.”h]”(jð)�”}”(hŒ``PHYLINK_PCS_NEG_OUTBAND``”h]”hŒPHYLINK_PCS_NEG_OUTBAND”…”�”}”(hjï:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjë:ubhŒ:: an out of band mode (e.g. reading the PHY) will be used.”…”�”}”(hjë:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M;hjç:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj¾:ubjH[)�”}”(hŒN``PHYLINK_PCS_NEG_INBAND_DISABLED``: inband mode selected but autoneg disabled”h]”jl)�”}”(hŒN``PHYLINK_PCS_NEG_INBAND_DISABLED``: inband mode selected but autoneg disabled”h]”(jð)�”}”(hŒ#``PHYLINK_PCS_NEG_INBAND_DISABLED``”h]”hŒPHYLINK_PCS_NEG_INBAND_DISABLED”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj;ubhŒ+: inband mode selected but autoneg disabled”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M=hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj¾:ubjH[)�”}”(hŒM``PHYLINK_PCS_NEG_INBAND_ENABLED``: inband mode selected and autoneg enabled ”h]”jl)�”}”(hŒL``PHYLINK_PCS_NEG_INBAND_ENABLED``: inband mode selected and autoneg enabled”h]”(jð)�”}”(hŒ"``PHYLINK_PCS_NEG_INBAND_ENABLED``”h]”hŒPHYLINK_PCS_NEG_INBAND_ENABLED”…”�”}”(hj=;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj9;ubhŒ*: inband mode selected and autoneg enabled”…”�”}”(hj9;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M?hj5;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj¾:ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jà:h´M:hjL9ubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hjd;h]”hŒNote”…”�”}”(hjf;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjb;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MAhjL9ubjl)�”}”(hŒtthis is for cases where the PCS itself is involved in negotiation (e.g. Clause 37, SGMII and similar) not Clause 73.”h]”hŒtthis is for cases where the PCS itself is involved in negotiation (e.g. Clause 37, SGMII and similar) not Clause 73.”…”�”}”(hjz;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MBhjL9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phylink_set_fixed_link (C function)”Œc.phylink_set_fixed_link”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒWint phylink_set_fixed_link (struct phylink *pl, const struct phylink_link_state *state)”h]”j )�”}”(hŒVint phylink_set_fixed_link(struct phylink *pl, const struct phylink_link_state *state)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj©;h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¥;h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¥;h²hh³j·;h´MBubj3)�”}”(hŒphylink_set_fixed_link”h]”j9)�”}”(hŒphylink_set_fixed_link”h]”hŒphylink_set_fixed_link”…”�”}”(hjÊ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆ;ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¥;h²hh³j·;h´MBubj¡ )�”}”(hŒ<(struct phylink *pl, const struct phylink_link_state *state)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjæ;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó;h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâ;ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”u•h1j8hj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j<Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÌ;sbŒc.phylink_set_fixed_link”†”asbuh1hhjâ;ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjâ;ubj )�”}”(hj h]”hŒ*”…”�”}”(hj2<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjâ;ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj?<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÞ;ubj§ )�”}”(hŒ&const struct phylink_link_state *state”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjX<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hje<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT<ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjs<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT<ubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hj‘<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j“<Œmodname”NŒ classname”Njå jè )�”}”jë ]”j <Œc.phylink_set_fixed_link”†”asbuh1hhjT<ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯<h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjT<ubj )�”}”(hj h]”hŒ*”…”�”}”(hj½<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjT<ubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÊ<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÞ;ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¥;h²hh³j·;h´MBubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¡;h²hh³j·;h´MBubah}”(h]”jœ;ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j·;h´MBhjž;h²hubjg)�”}”(hhh]”jl)�”}”(hŒset the fixed link”h]”hŒset the fixed link”…”�”}”(hjô<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MBhjñ<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjž;h²hh³j·;h´MBubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j =jŒj =j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX¡**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``const struct phylink_link_state *state`` a pointer to a struct phylink_link_state. **Description** This function is used when the link parameters are known and do not change, making it suitable for certain types of network connections. **Return** zero on success or negative error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj=h]”hŒ Parameters”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MFhj=ubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj5=h]”hŒstruct phylink *pl”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj3=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MChj/=ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjN=h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjX=h]”hŒstruct phylink”…”�”}”(hjZ=h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjV=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jJ=h´MChjN=ubhŒ returned from phylink_create()”…”�”}”(hjN=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jJ=h´MChjK=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jJ=h´MChj,=ubjä)�”}”(hŒU``const struct phylink_link_state *state`` a pointer to a struct phylink_link_state. ”h]”(jê)�”}”(hŒ*``const struct phylink_link_state *state``”h]”jð)�”}”(hj‘=h]”hŒ&const struct phylink_link_state *state”…”�”}”(hj“=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MDhj‹=ubj)�”}”(hhh]”jl)�”}”(hŒ)a pointer to a struct phylink_link_state.”h]”hŒ)a pointer to a struct phylink_link_state.”…”�”}”(hjª=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦=h´MDhj§=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦=h´MDhj,=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj=ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÌ=h]”hŒ Description”…”�”}”(hjÎ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÊ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MFhj=ubjl)�”}”(hŒˆThis function is used when the link parameters are known and do not change, making it suitable for certain types of network connections.”h]”hŒˆThis function is used when the link parameters are known and do not change, making it suitable for certain types of network connections.”…”�”}”(hjâ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MEhj=ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjó=h]”hŒReturn”…”�”}”(hjõ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MHhj=ubjl)�”}”(hŒ'zero on success or negative error code.”h]”hŒ'zero on success or negative error code.”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MIhj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phylink_update_pause_state (C function)”Œc.phylink_update_pause_state”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒEvoid phylink_update_pause_state (struct phylink *pl, int pause_state)”h]”j )�”}”(hŒDvoid phylink_update_pause_state(struct phylink *pl, int pause_state)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj8>h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj4>h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mkubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj4>h²hh³jF>h´Mkubj3)�”}”(hŒphylink_update_pause_state”h]”j9)�”}”(hŒphylink_update_pause_state”h]”hŒphylink_update_pause_state”…”�”}”(hjY>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU>ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj4>h²hh³jF>h´Mkubj¡ )�”}”(hŒ%(struct phylink *pl, int pause_state)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hju>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq>ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj“>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j•>Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j[>sbŒc.phylink_update_pause_state”†”asbuh1hhjq>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjq>ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁ>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjq>ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjÎ>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm>ubj§ )�”}”(hŒint pause_state”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjç>h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjã>ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ>h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjã>ubj9)�”}”(hŒ pause_state”h]”hŒ pause_state”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjm>ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj4>h²hh³jF>h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj0>h²hh³jF>h´Mkubah}”(h]”j+>ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jF>h´Mkhj->h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Update the phylink pause frame configuration”h]”hŒ,Update the phylink pause frame configuration”…”�”}”(hj-?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mkhj*?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj->h²hh³jF>h´Mkubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jE?jŒjE?j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒý**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` instance ``int pause_state`` bitmask indicating the new pause state **Description** Update the MAC pause frame (flow control) state for the phylink instance.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjO?h]”hŒ Parameters”…”�”}”(hjQ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjM?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MohjI?ubjß)�”}”(hhh]”(jä)�”}”(hŒR``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` instance ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjn?h]”hŒstruct phylink *pl”…”�”}”(hjp?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjl?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mlhjh?ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct phylink ` instance”h]”(hŒa pointer to a ”…”�”}”(hj‡?h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj‘?h]”hŒstruct phylink”…”�”}”(hj“?h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj�?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jƒ?h´Mlhj‡?ubhŒ instance”…”�”}”(hj‡?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jƒ?h´Mlhj„?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jƒ?h´Mlhje?ubjä)�”}”(hŒ;``int pause_state`` bitmask indicating the new pause state ”h]”(jê)�”}”(hŒ``int pause_state``”h]”jð)�”}”(hjÊ?h]”hŒint pause_state”…”�”}”(hjÌ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÈ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MmhjÄ?ubj)�”}”(hhh]”jl)�”}”(hŒ&bitmask indicating the new pause state”h]”hŒ&bitmask indicating the new pause state”…”�”}”(hjã?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jß?h´Mmhjà?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jß?h´Mmhje?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjI?ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj@h]”hŒ Description”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MohjI?ubjl)�”}”(hŒIUpdate the MAC pause frame (flow control) state for the phylink instance.”h]”hŒIUpdate the MAC pause frame (flow control) state for the phylink instance.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MnhjI?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ2phylink_update_mac_pause_capabilities (C function)”Œ'c.phylink_update_mac_pause_capabilities”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒXvoid phylink_update_mac_pause_capabilities (struct phylink *pl, unsigned long mac_pause)”h]”j )�”}”(hŒWvoid phylink_update_mac_pause_capabilities(struct phylink *pl, unsigned long mac_pause)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJ@h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjF@h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M«ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjF@h²hh³jX@h´M«ubj3)�”}”(hŒ%phylink_update_mac_pause_capabilities”h]”j9)�”}”(hŒ%phylink_update_mac_pause_capabilities”h]”hŒ%phylink_update_mac_pause_capabilities”…”�”}”(hjk@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjg@ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjF@h²hh³jX@h´M«ubj¡ )�”}”(hŒ-(struct phylink *pl, unsigned long mac_pause)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‡@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ@ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj¥@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§@Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jm@sbŒ'c.phylink_update_mac_pause_capabilities”†”asbuh1hhjƒ@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ@h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒ@ubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓ@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒ@ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjà@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@ubj§ )�”}”(hŒunsigned long mac_pause”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjù@h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõ@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ@ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjõ@ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Ah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõ@ubj9)�”}”(hŒ mac_pause”h]”hŒ mac_pause”…”�”}”(hj1Ah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõ@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj@ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjF@h²hh³jX@h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjB@h²hh³jX@h´M«ubah}”(h]”j=@ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jX@h´M«hj?@h²hubjg)�”}”(hhh]”jl)�”}”(hŒDynamically update MAC pause”h]”hŒDynamically update MAC pause”…”�”}”(hj[Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M«hjXAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?@h²hh³jX@h´M«ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jsAjŒjsAj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX **Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``unsigned long mac_pause`` the new MAC pause capabilities mask **Description** This function allows a MAC driver to dynamically change its pause state, such as losing/gaining Pause frame support based on MTU size. It recalculates supported link modes and triggers renegotiation if needed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj}Ah]”hŒ Parameters”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¯hjwAubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjœAh]”hŒstruct phylink *pl”…”�”}”(hjžAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjšAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¬hj–Aubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjµAh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj¿Ah]”hŒstruct phylink”…”�”}”(hjÁAh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj½Aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j±Ah´M¬hjµAubhŒ returned from phylink_create()”…”�”}”(hjµAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±Ah´M¬hj²Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±Ah´M¬hj“Aubjä)�”}”(hŒ@``unsigned long mac_pause`` the new MAC pause capabilities mask ”h]”(jê)�”}”(hŒ``unsigned long mac_pause``”h]”jð)�”}”(hjøAh]”hŒunsigned long mac_pause”…”�”}”(hjúAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjöAubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M­hjòAubj)�”}”(hhh]”jl)�”}”(hŒ#the new MAC pause capabilities mask”h]”hŒ#the new MAC pause capabilities mask”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Bh´M­hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Bh´M­hj“Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjwAubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj3Bh]”hŒ Description”…”�”}”(hj5Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj1Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¯hjwAubjl)�”}”(hŒÑThis function allows a MAC driver to dynamically change its pause state, such as losing/gaining Pause frame support based on MTU size. It recalculates supported link modes and triggers renegotiation if needed.”h]”hŒÑThis function allows a MAC driver to dynamically change its pause state, such as losing/gaining Pause frame support based on MTU size. It recalculates supported link modes and triggers renegotiation if needed.”…”�”}”(hjIBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M®hjwAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_create (C function)”Œc.phylink_create”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ¡struct phylink * phylink_create (struct phylink_config *config, const struct fwnode_handle *fwnode, phy_interface_t iface, const struct phylink_mac_ops *mac_ops)”h]”j )�”}”(hŒŸstruct phylink *phylink_create(struct phylink_config *config, const struct fwnode_handle *fwnode, phy_interface_t iface, const struct phylink_mac_ops *mac_ops)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjxBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtBh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtBh²hh³j…Bh´Mãubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj—Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j™BŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œphylink_create”sbŒc.phylink_create”†”asbuh1hhjtBh²hh³j…Bh´Mãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Bh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjtBh²hh³j…Bh´Mãubj )�”}”(hj h]”hŒ*”…”�”}”(hjÆBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjtBh²hh³j…Bh´Mãubj3)�”}”(hŒphylink_create”h]”j9)�”}”(hjµBh]”hŒphylink_create”…”�”}”(hj×Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓBubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjtBh²hh³j…Bh´Mãubj¡ )�”}”(hŒ�(struct phylink_config *config, const struct fwnode_handle *fwnode, phy_interface_t iface, const struct phylink_mac_ops *mac_ops)”h]”(j§ )�”}”(hŒstruct phylink_config *config”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjòBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿBh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîBubh)�”}”(hhh]”j9)�”}”(hŒphylink_config”h]”hŒphylink_config”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jCŒmodname”NŒ classname”Njå jè )�”}”jë ]”j³BŒc.phylink_create”†”asbuh1hhjîBubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjîBubj )�”}”(hj h]”hŒ*”…”�”}”(hj` ``const struct fwnode_handle *fwnode`` a pointer to a :c:type:`struct fwnode_handle ` describing the network interface ``phy_interface_t iface`` the desired link mode defined by :c:type:`typedef phy_interface_t ` ``const struct phylink_mac_ops *mac_ops`` a pointer to a :c:type:`struct phylink_mac_ops ` for the MAC. **Description** Create a new phylink instance, and parse the link parameters found in **np**. This will parse in-band modes, fixed-link or SFP configuration. **Note** the rtnl lock must not be held when calling this function. Returns a pointer to a :c:type:`struct phylink `, or an error-pointer value. Users must use IS_ERR() to check for errors from this function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjóDh]”hŒ Parameters”…”�”}”(hjõDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñDubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MçhjíDubjß)�”}”(hhh]”(jä)�”}”(hŒk``struct phylink_config *config`` a pointer to the target :c:type:`struct phylink_config ` ”h]”(jê)�”}”(hŒ!``struct phylink_config *config``”h]”jð)�”}”(hjEh]”hŒstruct phylink_config *config”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mähj Eubj)�”}”(hhh]”jl)�”}”(hŒHa pointer to the target :c:type:`struct phylink_config `”h]”(hŒa pointer to the target ”…”�”}”(hj+Eh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct phylink_config `”h]”jð)�”}”(hj5Eh]”hŒstruct phylink_config”…”�”}”(hj7Eh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj3Eubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_config”uh1hh³j'Eh´Mähj+Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j'Eh´Mähj(Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j'Eh´Mähj Eubjä)�”}”(hŒ†``const struct fwnode_handle *fwnode`` a pointer to a :c:type:`struct fwnode_handle ` describing the network interface ”h]”(jê)�”}”(hŒ&``const struct fwnode_handle *fwnode``”h]”jð)�”}”(hjjEh]”hŒ"const struct fwnode_handle *fwnode”…”�”}”(hjlEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MæhjdEubj)�”}”(hhh]”jl)�”}”(hŒ^a pointer to a :c:type:`struct fwnode_handle ` describing the network interface”h]”(hŒa pointer to a ”…”�”}”(hjƒEh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct fwnode_handle `”h]”jð)�”}”(hj�Eh]”hŒstruct fwnode_handle”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj‹Eubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ fwnode_handle”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MåhjƒEubhŒ! describing the network interface”…”�”}”(hjƒEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªEh´Måhj€Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jEh´Mæhj Eubjä)�”}”(hŒo``phy_interface_t iface`` the desired link mode defined by :c:type:`typedef phy_interface_t ` ”h]”(jê)�”}”(hŒ``phy_interface_t iface``”h]”jð)�”}”(hjÇEh]”hŒphy_interface_t iface”…”�”}”(hjÉEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÅEubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MçhjÁEubj)�”}”(hhh]”jl)�”}”(hŒTthe desired link mode defined by :c:type:`typedef phy_interface_t `”h]”(hŒ!the desired link mode defined by ”…”�”}”(hjàEh²hh³Nh´Nubh)�”}”(hŒ3:c:type:`typedef phy_interface_t `”h]”jð)�”}”(hjêEh]”hŒtypedef phy_interface_t”…”�”}”(hjìEh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjèEubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphy_interface_t”uh1hh³jÜEh´MçhjàEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÜEh´MçhjÝEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÜEh´Mçhj Eubjä)�”}”(hŒy``const struct phylink_mac_ops *mac_ops`` a pointer to a :c:type:`struct phylink_mac_ops ` for the MAC. ”h]”(jê)�”}”(hŒ)``const struct phylink_mac_ops *mac_ops``”h]”jð)�”}”(hjFh]”hŒ%const struct phylink_mac_ops *mac_ops”…”�”}”(hj!Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MèhjFubj)�”}”(hhh]”jl)�”}”(hŒNa pointer to a :c:type:`struct phylink_mac_ops ` for the MAC.”h]”(hŒa pointer to a ”…”�”}”(hj8Fh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct phylink_mac_ops `”h]”jð)�”}”(hjBFh]”hŒstruct phylink_mac_ops”…”�”}”(hjDFh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj@Fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_mac_ops”uh1hh³j4Fh´Mèhj8FubhŒ for the MAC.”…”�”}”(hj8Fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j4Fh´Mèhj5Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j4Fh´Mèhj Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjíDubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj}Fh]”hŒ Description”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj{Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MêhjíDubjl)�”}”(hŒ�Create a new phylink instance, and parse the link parameters found in **np**. This will parse in-band modes, fixed-link or SFP configuration.”h]”(hŒFCreate a new phylink instance, and parse the link parameters found in ”…”�”}”(hj“Fh²hh³Nh´Nubj›)�”}”(hŒ**np**”h]”hŒnp”…”�”}”(hj›Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj“FubhŒA. This will parse in-band modes, fixed-link or SFP configuration.”…”�”}”(hj“Fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MéhjíDubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hj¶Fh]”hŒNote”…”�”}”(hj¸Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj´Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MìhjíDubjl)�”}”(hŒ:the rtnl lock must not be held when calling this function.”h]”hŒ:the rtnl lock must not be held when calling this function.”…”�”}”(hjÌFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MíhjíDubjl)�”}”(hŒ•Returns a pointer to a :c:type:`struct phylink `, or an error-pointer value. Users must use IS_ERR() to check for errors from this function.”h]”(hŒReturns a pointer to a ”…”�”}”(hjÛFh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjåFh]”hŒstruct phylink”…”�”}”(hjçFh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjãFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MïhjÛFubhŒ\, or an error-pointer value. Users must use IS_ERR() to check for errors from this function.”…”�”}”(hjÛFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jGh´MïhjíDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_destroy (C function)”Œc.phylink_destroy”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)void phylink_destroy (struct phylink *pl)”h]”j )�”}”(hŒ(void phylink_destroy(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-Gh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj)Gh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MMubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` returned from phylink_create() **Description** Destroy a phylink instance. Any PHY that has been attached must have been cleaned up via phylink_disconnect_phy() prior to calling this function. **Note** the rtnl lock must not be held when calling this function.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjHh]”hŒ Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MQhj Hubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj.Hh]”hŒstruct phylink *pl”…”�”}”(hj0Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj,Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MNhj(Hubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjGHh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjQHh]”hŒstruct phylink”…”�”}”(hjSHh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjOHubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jCHh´MNhjGHubhŒ returned from phylink_create()”…”�”}”(hjGHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jCHh´MNhjDHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jCHh´MNhj%Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Hubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŒHh]”hŒ Description”…”�”}”(hjŽHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŠHubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MPhj Hubjl)�”}”(hŒ‘Destroy a phylink instance. Any PHY that has been attached must have been cleaned up via phylink_disconnect_phy() prior to calling this function.”h]”hŒ‘Destroy a phylink instance. Any PHY that has been attached must have been cleaned up via phylink_disconnect_phy() prior to calling this function.”…”�”}”(hj¢Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MOhj Hubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hj³Hh]”hŒNote”…”�”}”(hjµHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MRhj Hubjl)�”}”(hŒ:the rtnl lock must not be held when calling this function.”h]”hŒ:the rtnl lock must not be held when calling this function.”…”�”}”(hjÉHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MShj Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phylink_expects_phy (C function)”Œc.phylink_expects_phy”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-bool phylink_expects_phy (struct phylink *pl)”h]”j )�”}”(hŒ,bool phylink_expects_phy(struct phylink *pl)”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjøHh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjôHh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mbubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjôHh²hh³jIh´Mbubj3)�”}”(hŒphylink_expects_phy”h]”j9)�”}”(hŒphylink_expects_phy”h]”hŒphylink_expects_phy”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjôHh²hh³jIh´Mbubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj4Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0Iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0Iubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjRIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjOIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jTIŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jIsbŒc.phylink_expects_phy”†”asbuh1hhj0Iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrIh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj0Iubj )�”}”(hj h]”hŒ*”…”�”}”(hj€Ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj0Iubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj0Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj,Iubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjôHh²hh³jIh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjðHh²hh³jIh´Mbubah}”(h]”jëHah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jIh´MbhjíHh²hubjg)�”}”(hhh]”jl)�”}”(hŒ1Determine if phylink expects a phy to be attached”h]”hŒ1Determine if phylink expects a phy to be attached”…”�”}”(hj·Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mbhj´Ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjíHh²hh³jIh´Mbubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÏIjŒjÏIj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** When using fixed-link mode, or in-band mode with 1000base-X or 2500base-X, no PHY is needed. Returns true if phylink will be expecting a PHY.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÙIh]”hŒ Parameters”…”�”}”(hjÛIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj×Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MfhjÓIubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjøIh]”hŒstruct phylink *pl”…”�”}”(hjúIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjöIubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MchjòIubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjJh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjJh]”hŒstruct phylink”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j Jh´MchjJubhŒ returned from phylink_create()”…”�”}”(hjJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j Jh´MchjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j Jh´MchjïIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÓIubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjVJh]”hŒ Description”…”�”}”(hjXJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjTJubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MehjÓIubjl)�”}”(hŒ\When using fixed-link mode, or in-band mode with 1000base-X or 2500base-X, no PHY is needed.”h]”hŒ\When using fixed-link mode, or in-band mode with 1000base-X or 2500base-X, no PHY is needed.”…”�”}”(hjlJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MdhjÓIubjl)�”}”(hŒ0Returns true if phylink will be expecting a PHY.”h]”hŒ0Returns true if phylink will be expecting a PHY.”…”�”}”(hj{Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MghjÓIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phylink_connect_phy (C function)”Œc.phylink_connect_phy”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒDint phylink_connect_phy (struct phylink *pl, struct phy_device *phy)”h]”j )�”}”(hŒCint phylink_connect_phy(struct phylink *pl, struct phy_device *phy)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjªJh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¦Jh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mv ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Jh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦Jh²hh³j¸Jh´Mv ubj3)�”}”(hŒphylink_connect_phy”h]”j9)�”}”(hŒphylink_connect_phy”h]”hŒphylink_connect_phy”…”�”}”(hjËJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇJubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¦Jh²hh³j¸Jh´Mv ubj¡ )�”}”(hŒ,(struct phylink *pl, struct phy_device *phy)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjçJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôJh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãJubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jKŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÍJsbŒc.phylink_connect_phy”†”asbuh1hhjãJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjãJubj )�”}”(hj h]”hŒ*”…”�”}”(hj3Kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjãJubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj@Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjãJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjßJubj§ )�”}”(hŒstruct phy_device *phy”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjYKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfKh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUKubh)�”}”(hhh]”j9)�”}”(hŒ phy_device”h]”hŒ phy_device”…”�”}”(hjwKh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjtKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jyKŒmodname”NŒ classname”Njå jè )�”}”jë ]”j!KŒc.phylink_connect_phy”†”asbuh1hhjUKubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjUKubj )�”}”(hj h]”hŒ*”…”�”}”(hj£Kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjUKubj9)�”}”(hŒphy”h]”hŒphy”…”�”}”(hj°Kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjßJubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¦Jh²hh³j¸Jh´Mv ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¢Jh²hh³j¸Jh´Mv ubah}”(h]”j�Jah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¸Jh´Mv hjŸJh²hubjg)�”}”(hhh]”jl)�”}”(hŒ%connect a PHY to the phylink instance”h]”hŒ%connect a PHY to the phylink instance”…”�”}”(hjÚKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mv hj×Kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŸJh²hh³j¸Jh´Mv ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jòKjŒjòKj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXJ**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct phy_device *phy`` a pointer to a :c:type:`struct phy_device `. **Description** Connect **phy** to the phylink instance specified by **pl** by calling phy_attach_direct(). Configure the **phy** according to the MAC driver's capabilities, start the PHYLIB state machine and enable any interrupts that the PHY supports. This updates the phylink's ethtool supported and advertising link mode masks. Returns 0 on success or a negative errno.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjüKh]”hŒ Parameters”…”�”}”(hjþKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjúKubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mz hjöKubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjLh]”hŒstruct phylink *pl”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mw hjLubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj4Lh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj>Lh]”hŒstruct phylink”…”�”}”(hj@Lh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj`. ”h]”(jê)�”}”(hŒ``struct phy_device *phy``”h]”jð)�”}”(hjwLh]”hŒstruct phy_device *phy”…”�”}”(hjyLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjuLubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mx hjqLubj)�”}”(hhh]”jl)�”}”(hŒ8a pointer to a :c:type:`struct phy_device `.”h]”(hŒa pointer to a ”…”�”}”(hj�Lh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct phy_device `”h]”jð)�”}”(hjšLh]”hŒstruct phy_device”…”�”}”(hjœLh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj˜Lubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phy_device”uh1hh³jŒLh´Mx hj�LubhŒ.”…”�”}”(hj�Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŒLh´Mx hj�Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŒLh´Mx hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjöKubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÕLh]”hŒ Description”…”�”}”(hj×Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓLubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mz hjöKubjl)�”}”(hŒíConnect **phy** to the phylink instance specified by **pl** by calling phy_attach_direct(). Configure the **phy** according to the MAC driver's capabilities, start the PHYLIB state machine and enable any interrupts that the PHY supports.”h]”(hŒConnect ”…”�”}”(hjëLh²hh³Nh´Nubj›)�”}”(hŒ**phy**”h]”hŒphy”…”�”}”(hjóLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëLubhŒ& to the phylink instance specified by ”…”�”}”(hjëLh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëLubhŒ/ by calling phy_attach_direct(). Configure the ”…”�”}”(hjëLh²hh³Nh´Nubj›)�”}”(hŒ**phy**”h]”hŒphy”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëLubhŒ~ according to the MAC driver’s capabilities, start the PHYLIB state machine and enable any interrupts that the PHY supports.”…”�”}”(hjëLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´My hjöKubjl)�”}”(hŒMThis updates the phylink's ethtool supported and advertising link mode masks.”h]”hŒOThis updates the phylink’s ethtool supported and advertising link mode masks.”…”�”}”(hj0Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M~ hjöKubjl)�”}”(hŒ)Returns 0 on success or a negative errno.”h]”hŒ)Returns 0 on success or a negative errno.”…”�”}”(hj?Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hjöKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phylink_of_phy_connect (C function)”Œc.phylink_of_phy_connect”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒRint phylink_of_phy_connect (struct phylink *pl, struct device_node *dn, u32 flags)”h]”j )�”}”(hŒQint phylink_of_phy_connect(struct phylink *pl, struct device_node *dn, u32 flags)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjnMh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjjMh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M› ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjjMh²hh³j|Mh´M› ubj3)�”}”(hŒphylink_of_phy_connect”h]”j9)�”}”(hŒphylink_of_phy_connect”h]”hŒphylink_of_phy_connect”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹Mubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjjMh²hh³j|Mh´M› ubj¡ )�”}”(hŒ7(struct phylink *pl, struct device_node *dn, u32 flags)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj«Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Mh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§Mubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjÉMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jËMŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‘MsbŒc.phylink_of_phy_connect”†”asbuh1hhj§Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéMh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj§Mubj )�”}”(hj h]”hŒ*”…”�”}”(hj÷Mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj§Mubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Mubj§ )�”}”(hŒstruct device_node *dn”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNubh)�”}”(hhh]”j9)�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hj;Nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j=NŒmodname”NŒ classname”Njå jè )�”}”jë ]”jåMŒc.phylink_of_phy_connect”†”asbuh1hhjNubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYNh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNubj )�”}”(hj h]”hŒ*”…”�”}”(hjgNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjNubj9)�”}”(hŒdn”h]”hŒdn”…”�”}”(hjtNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Mubj§ )�”}”(hŒ u32 flags”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’NŒmodname”NŒ classname”Njå jè )�”}”jë ]”jåMŒc.phylink_of_phy_connect”†”asbuh1hhj‰Nubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‰Nubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj¼Nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj£Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjjMh²hh³j|Mh´M› ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjfMh²hh³j|Mh´M› ubah}”(h]”jaMah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j|Mh´M› hjcMh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)connect the PHY specified in the DT mode.”h]”hŒ)connect the PHY specified in the DT mode.”…”�”}”(hjæNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M› hjãNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjcMh²hh³j|Mh´M› ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jþNjŒjþNj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXú**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct device_node *dn`` a pointer to a :c:type:`struct device_node `. ``u32 flags`` PHY-specific flags to communicate to the PHY device driver **Description** Connect the phy specified in the device node **dn** to the phylink instance specified by **pl**. Actions specified in phylink_connect_phy() will be performed. Returns 0 on success or a negative errno.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjOh]”hŒ Parameters”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MŸ hjOubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj'Oh]”hŒstruct phylink *pl”…”�”}”(hj)Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj%Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mœ hj!Oubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj@Oh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjJOh]”hŒstruct phylink”…”�”}”(hjLOh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjHOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j`. ”h]”(jê)�”}”(hŒ``struct device_node *dn``”h]”jð)�”}”(hjƒOh]”hŒstruct device_node *dn”…”�”}”(hj…Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hj}Oubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct device_node `.”h]”(hŒa pointer to a ”…”�”}”(hjœOh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct device_node `”h]”jð)�”}”(hj¦Oh]”hŒstruct device_node”…”�”}”(hj¨Oh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¤Oubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ device_node”uh1hh³j˜Oh´M� hjœOubhŒ.”…”�”}”(hjœOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˜Oh´M� hj™Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˜Oh´M� hjOubjä)�”}”(hŒI``u32 flags`` PHY-specific flags to communicate to the PHY device driver ”h]”(jê)�”}”(hŒ ``u32 flags``”h]”jð)�”}”(hjßOh]”hŒ u32 flags”…”�”}”(hjáOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÝOubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mž hjÙOubj)�”}”(hhh]”jl)�”}”(hŒ:PHY-specific flags to communicate to the PHY device driver”h]”hŒ:PHY-specific flags to communicate to the PHY device driver”…”�”}”(hjøOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jôOh´Mž hjõOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jôOh´Mž hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjOubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjPh]”hŒ Description”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M  hjOubjl)�”}”(hŒžConnect the phy specified in the device node **dn** to the phylink instance specified by **pl**. Actions specified in phylink_connect_phy() will be performed.”h]”(hŒ-Connect the phy specified in the device node ”…”�”}”(hj0Ph²hh³Nh´Nubj›)�”}”(hŒ**dn**”h]”hŒdn”…”�”}”(hj8Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0PubhŒ& to the phylink instance specified by ”…”�”}”(hj0Ph²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hjJPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj0PubhŒ?. Actions specified in phylink_connect_phy() will be performed.”…”�”}”(hj0Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MŸ hjOubjl)�”}”(hŒ)Returns 0 on success or a negative errno.”h]”hŒ)Returns 0 on success or a negative errno.”…”�”}”(hjcPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M£ hjOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phylink_fwnode_phy_connect (C function)”Œc.phylink_fwnode_phy_connect”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒbint phylink_fwnode_phy_connect (struct phylink *pl, const struct fwnode_handle *fwnode, u32 flags)”h]”j )�”}”(hŒaint phylink_fwnode_phy_connect(struct phylink *pl, const struct fwnode_handle *fwnode, u32 flags)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj’Ph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŽPh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M® ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŽPh²hh³j Ph´M® ubj3)�”}”(hŒphylink_fwnode_phy_connect”h]”j9)�”}”(hŒphylink_fwnode_phy_connect”h]”hŒphylink_fwnode_phy_connect”…”�”}”(hj³Ph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯Pubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŽPh²hh³j Ph´M® ubj¡ )�”}”(hŒC(struct phylink *pl, const struct fwnode_handle *fwnode, u32 flags)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÏPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜPh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËPubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjíPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jïPŒmodname”NŒ classname”•Njå jè )�”}”jë ]”jî )�”}”já jµPsbŒc.phylink_fwnode_phy_connect”†”asbuh1hhjËPubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjËPubj )�”}”(hj h]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjËPubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj(Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjËPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÇPubj§ )�”}”(hŒ"const struct fwnode_handle *fwnode”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjAQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=Qubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=Qubj)�”}”(hjh]”hŒstruct”…”�”}”(hj\Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=Qubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=Qubh)�”}”(hhh]”j9)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjzQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j|QŒmodname”NŒ classname”Njå jè )�”}”jë ]”j QŒc.phylink_fwnode_phy_connect”†”asbuh1hhj=Qubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj=Qubj )�”}”(hj h]”hŒ*”…”�”}”(hj¦Qh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj=Qubj9)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hj³Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÇPubj§ )�”}”(hŒ u32 flags”h]”(h)�”}”(hhh]”j9)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÏQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑQŒmodname”NŒ classname”Njå jè )�”}”jë ]”j QŒc.phylink_fwnode_phy_connect”†”asbuh1hhjÈQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíQh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÈQubj9)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjûQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÇPubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŽPh²hh³j Ph´M® ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjŠPh²hh³j Ph´M® ubah}”(h]”j…Pah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j Ph´M® hj‡Ph²hubjg)�”}”(hhh]”jl)�”}”(hŒ(connect the PHY specified in the fwnode.”h]”hŒ(connect the PHY specified in the fwnode.”…”�”}”(hj%Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M® hj"Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡Ph²hh³j Ph´M® ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j=RjŒj=Rj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX½**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``const struct fwnode_handle *fwnode`` a pointer to a :c:type:`struct fwnode_handle `. ``u32 flags`` PHY-specific flags to communicate to the PHY device driver **Description** Connect the phy specified **fwnode** to the phylink instance specified by **pl**. Returns 0 on success or a negative errno.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjGRh]”hŒ Parameters”…”�”}”(hjIRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjERubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M² hjARubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjfRh]”hŒstruct phylink *pl”…”�”}”(hjhRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjdRubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¯ hj`Rubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjRh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj‰Rh]”hŒstruct phylink”…”�”}”(hj‹Rh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj‡Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j{Rh´M¯ hjRubhŒ returned from phylink_create()”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j{Rh´M¯ hj|Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j{Rh´M¯ hj]Rubjä)�”}”(hŒf``const struct fwnode_handle *fwnode`` a pointer to a :c:type:`struct fwnode_handle `. ”h]”(jê)�”}”(hŒ&``const struct fwnode_handle *fwnode``”h]”jð)�”}”(hjÂRh]”hŒ"const struct fwnode_handle *fwnode”…”�”}”(hjÄRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÀRubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M° hj¼Rubj)�”}”(hhh]”jl)�”}”(hŒ>a pointer to a :c:type:`struct fwnode_handle `.”h]”(hŒa pointer to a ”…”�”}”(hjÛRh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct fwnode_handle `”h]”jð)�”}”(hjåRh]”hŒstruct fwnode_handle”…”�”}”(hjçRh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjãRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ fwnode_handle”uh1hh³j×Rh´M° hjÛRubhŒ.”…”�”}”(hjÛRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j×Rh´M° hjØRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j×Rh´M° hj]Rubjä)�”}”(hŒI``u32 flags`` PHY-specific flags to communicate to the PHY device driver ”h]”(jê)�”}”(hŒ ``u32 flags``”h]”jð)�”}”(hjSh]”hŒ u32 flags”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M± hjSubj)�”}”(hhh]”jl)�”}”(hŒ:PHY-specific flags to communicate to the PHY device driver”h]”hŒ:PHY-specific flags to communicate to the PHY device driver”…”�”}”(hj7Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j3Sh´M± hj4Subah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j3Sh´M± hj]Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjARubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjYSh]”hŒ Description”…”�”}”(hj[Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjWSubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M³ hjARubjl)�”}”(hŒQConnect the phy specified **fwnode** to the phylink instance specified by **pl**.”h]”(hŒConnect the phy specified ”…”�”}”(hjoSh²hh³Nh´Nubj›)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hjwSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoSubhŒ& to the phylink instance specified by ”…”�”}”(hjoSh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hj‰Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjoSubhŒ.”…”�”}”(hjoSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M² hjARubjl)�”}”(hŒ)Returns 0 on success or a negative errno.”h]”hŒ)Returns 0 on success or a negative errno.”…”�”}”(hj¢Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mµ hjARubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phylink_disconnect_phy (C function)”Œc.phylink_disconnect_phy”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void phylink_disconnect_phy (struct phylink *pl)”h]”j )�”}”(hŒ/void phylink_disconnect_phy(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÑSh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÍSh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mé ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàSh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÍSh²hh³jßSh´Mé ubj3)�”}”(hŒphylink_disconnect_phy”h]”j9)�”}”(hŒphylink_disconnect_phy”h]”hŒphylink_disconnect_phy”…”�”}”(hjòSh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîSubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÍSh²hh³jßSh´Mé ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Tubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj,Th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j.TŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jôSsbŒc.phylink_disconnect_phy”†”asbuh1hhj Tubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLTh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj Tubj )�”}”(hj h]”hŒ*”…”�”}”(hjZTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj Tubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjgTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjTubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÍSh²hh³jßSh´Mé ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÉSh²hh³jßSh´Mé ubah}”(h]”jÄSah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jßSh´Mé hjÆSh²hubjg)�”}”(hhh]”jl)�”}”(hŒ4disconnect any PHY attached to the phylink instance.”h]”hŒ4disconnect any PHY attached to the phylink instance.”…”�”}”(hj‘Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mé hjŽTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÆSh²hh³jßSh´Mé ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j©TjŒj©Tj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒÕ**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Disconnect any current PHY from the phylink instance described by **pl**.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj³Th]”hŒ Parameters”…”�”}”(hjµTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mí hj­Tubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjÒTh]”hŒstruct phylink *pl”…”�”}”(hjÔTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÐTubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Më hjÌTubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjëTh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjõTh]”hŒstruct phylink”…”�”}”(hj÷Th²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjóTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jçTh´Më hjëTubhŒ returned from phylink_create()”…”�”}”(hjëTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jçTh´Më hjèTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jçTh´Më hjÉTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj­Tubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj0Uh]”hŒ Description”…”�”}”(hj2Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj.Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mí hj­Tubjl)�”}”(hŒIDisconnect any current PHY from the phylink instance described by **pl**.”h]”(hŒBDisconnect any current PHY from the phylink instance described by ”…”�”}”(hjFUh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hjNUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjFUubhŒ.”…”�”}”(hjFUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mì hj­Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_mac_change (C function)”Œc.phylink_mac_change”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5void phylink_mac_change (struct phylink *pl, bool up)”h]”j )�”}”(hŒ4void phylink_mac_change(struct phylink *pl, bool up)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡Uh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjƒUh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒUh²hh³j•Uh´M ubj3)�”}”(hŒphylink_mac_change”h]”j9)�”}”(hŒphylink_mac_change”h]”hŒphylink_mac_change”…”�”}”(hj¨Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤Uubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjƒUh²hh³j•Uh´M ubj¡ )�”}”(hŒ(struct phylink *pl, bool up)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÄUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑUh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀUubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjâUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jäUŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jªUsbŒc.phylink_mac_change”†”asbuh1hhjÀUubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÀUubj )�”}”(hj h]”hŒ*”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÀUubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼Uubj§ )�”}”(hŒbool up”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj6Vh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj2Vubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCVh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj2Vubj9)�”}”(hŒup”h]”hŒup”…”�”}”(hjQVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¼Uubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjƒUh²hh³j•Uh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjUh²hh³j•Uh´M ubah}”(h]”jzUah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j•Uh´M hj|Uh²hubjg)�”}”(hhh]”jl)�”}”(hŒ'notify phylink of a change in MAC state”h]”hŒ'notify phylink of a change in MAC state”…”�”}”(hj{Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjxVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj|Uh²hh³j•Uh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j“VjŒj“Vj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXB**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``bool up`` indicates whether the link is currently up. **Description** The MAC driver should call this driver when the state of its link changes (eg, link failure, new negotiation results, etc.)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj�Vh]”hŒ Parameters”…”�”}”(hjŸVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj›Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj—Vubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj¼Vh]”hŒstruct phylink *pl”…”�”}”(hj¾Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjºVubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj¶Vubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjÕVh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjßVh]”hŒstruct phylink”…”�”}”(hjáVh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÝVubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jÑVh´M hjÕVubhŒ returned from phylink_create()”…”�”}”(hjÕVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÑVh´M hjÒVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÑVh´M hj³Vubjä)�”}”(hŒ8``bool up`` indicates whether the link is currently up. ”h]”(jê)�”}”(hŒ ``bool up``”h]”jð)�”}”(hjWh]”hŒbool up”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjWubj)�”}”(hhh]”jl)�”}”(hŒ+indicates whether the link is currently up.”h]”hŒ+indicates whether the link is currently up.”…”�”}”(hj1Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j-Wh´M hj.Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j-Wh´M hj³Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj—Vubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjSWh]”hŒ Description”…”�”}”(hjUWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjQWubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj—Vubjl)�”}”(hŒ{The MAC driver should call this driver when the state of its link changes (eg, link failure, new negotiation results, etc.)”h]”hŒ{The MAC driver should call this driver when the state of its link changes (eg, link failure, new negotiation results, etc.)”…”�”}”(hjiWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj—Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_pcs_change (C function)”Œc.phylink_pcs_change”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ:void phylink_pcs_change (struct phylink_pcs *pcs, bool up)”h]”j )�”}”(hŒ9void phylink_pcs_change(struct phylink_pcs *pcs, bool up)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj˜Wh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj”Wh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj”Wh²hh³j¦Wh´M ubj3)�”}”(hŒphylink_pcs_change”h]”j9)�”}”(hŒphylink_pcs_change”h]”hŒphylink_pcs_change”…”�”}”(hj¹Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµWubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj”Wh²hh³j¦Wh´M ubj¡ )�”}”(hŒ"(struct phylink_pcs *pcs, bool up)”h]”(j§ )�”}”(hŒstruct phylink_pcs *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÕWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâWh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑWubh)�”}”(hhh]”j9)�”}”(hŒ phylink_pcs”h]”hŒ phylink_pcs”…”�”}”(hjóWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jõWŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j»WsbŒc.phylink_pcs_change”†”asbuh1hhjÑWubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÑWubj )�”}”(hj h]”hŒ*”…”�”}”(hj!Xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÑWubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hj.Xh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÍWubj§ )�”}”(hŒbool up”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjGXh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjCXubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTXh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjCXubj9)�”}”(hŒup”h]”hŒup”…”�”}”(hjbXh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÍWubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj”Wh²hh³j¦Wh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�Wh²hh³j¦Wh´M ubah}”(h]”j‹Wah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¦Wh´M hj�Wh²hubjg)�”}”(hhh]”jl)�”}”(hŒ,notify phylink of a change to PCS link state”h]”hŒ,notify phylink of a change to PCS link state”…”�”}”(hjŒXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj‰Xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj�Wh²hh³j¦Wh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¤XjŒj¤Xj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXï**Parameters** ``struct phylink_pcs *pcs`` pointer to :c:type:`struct phylink_pcs ` ``bool up`` indicates whether the link is currently up. **Description** The PCS driver should call this when the state of its link changes (e.g. link failure, new negotiation results, etc.) Note: it should not determine "up" by reading the BMSR. If in doubt about the link state at interrupt time, then pass true if pcs_get_state() returns the latched link-down state, otherwise pass false.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj®Xh]”hŒ Parameters”…”�”}”(hj°Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¬Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M$ hj¨Xubjß)�”}”(hhh]”(jä)�”}”(hŒR``struct phylink_pcs *pcs`` pointer to :c:type:`struct phylink_pcs ` ”h]”(jê)�”}”(hŒ``struct phylink_pcs *pcs``”h]”jð)�”}”(hjÍXh]”hŒstruct phylink_pcs *pcs”…”�”}”(hjÏXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjËXubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M! hjÇXubj)�”}”(hhh]”jl)�”}”(hŒ5pointer to :c:type:`struct phylink_pcs `”h]”(hŒ pointer to ”…”�”}”(hjæXh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct phylink_pcs `”h]”jð)�”}”(hjðXh]”hŒstruct phylink_pcs”…”�”}”(hjòXh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjîXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ phylink_pcs”uh1hh³jâXh´M! hjæXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jâXh´M! hjãXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jâXh´M! hjÄXubjä)�”}”(hŒ8``bool up`` indicates whether the link is currently up. ”h]”(jê)�”}”(hŒ ``bool up``”h]”jð)�”}”(hj%Yh]”hŒbool up”…”�”}”(hj'Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj#Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M" hjYubj)�”}”(hhh]”jl)�”}”(hŒ+indicates whether the link is currently up.”h]”hŒ+indicates whether the link is currently up.”…”�”}”(hj>Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j:Yh´M" hj;Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j:Yh´M" hjÄXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨Xubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj`Yh]”hŒ Description”…”�”}”(hjbYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M$ hj¨Xubjl)�”}”(hX>The PCS driver should call this when the state of its link changes (e.g. link failure, new negotiation results, etc.) Note: it should not determine "up" by reading the BMSR. If in doubt about the link state at interrupt time, then pass true if pcs_get_state() returns the latched link-down state, otherwise pass false.”h]”hXBThe PCS driver should call this when the state of its link changes (e.g. link failure, new negotiation results, etc.) Note: it should not determine “upâ€� by reading the BMSR. If in doubt about the link state at interrupt time, then pass true if pcs_get_state() returns the latched link-down state, otherwise pass false.”…”�”}”(hjvYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M# hj¨Xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_start (C function)”Œc.phylink_start”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ'void phylink_start (struct phylink *pl)”h]”j )�”}”(hŒ&void phylink_start(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥Yh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¡Yh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M= ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¡Yh²hh³j³Yh´M= ubj3)�”}”(hŒ phylink_start”h]”j9)�”}”(hŒ phylink_start”h]”hŒ phylink_start”…”�”}”(hjÆYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂYubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¡Yh²hh³j³Yh´M= ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞYubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïYh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞYubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jZŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÈYsbŒc.phylink_start”†”asbuh1hhjÞYubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÞYubj )�”}”(hj h]”hŒ*”…”�”}”(hj.Zh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÞYubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj;Zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjÚYubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¡Yh²hh³j³Yh´M= ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj�Yh²hh³j³Yh´M= ubah}”(h]”j˜Yah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j³Yh´M= hjšYh²hubjg)�”}”(hhh]”jl)�”}”(hŒstart a phylink instance”h]”hŒstart a phylink instance”…”�”}”(hjeZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M= hjbZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšYh²hh³j³Yh´M= ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j}ZjŒj}Zj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX~**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Start the phylink instance specified by **pl**, configuring the MAC for the desired link mode(s) and negotiation style. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_open() method.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‡Zh]”hŒ Parameters”…”�”}”(hj‰Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MA hj�Zubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj¦Zh]”hŒstruct phylink *pl”…”�”}”(hj¨Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M> hj Zubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj¿Zh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjÉZh]”hŒstruct phylink”…”�”}”(hjËZh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÇZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j»Zh´M> hj¿ZubhŒ returned from phylink_create()”…”�”}”(hj¿Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»Zh´M> hj¼Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»Zh´M> hj�Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�Zubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj[h]”hŒ Description”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M@ hj�Zubjl)�”}”(hŒòStart the phylink instance specified by **pl**, configuring the MAC for the desired link mode(s) and negotiation style. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_open() method.”h]”(hŒ(Start the phylink instance specified by ”…”�”}”(hj[h²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hj"[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj[ubhŒƒ, configuring the MAC for the desired link mode(s) and negotiation style. This should be called from the network device driver’s ”…”�”}”(hj[h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct net_device_ops `”h]”jð)�”}”(hj6[h]”hŒstruct net_device_ops”…”�”}”(hj8[h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj4[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œnet_device_ops”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M? hj[ubhŒ ndo_open() method.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jS[h´M? hj�Zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_stop (C function)”Œc.phylink_stop”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&void phylink_stop (struct phylink *pl)”h]”j )�”}”(hŒ%void phylink_stop(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj~[h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjz[h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjz[h²hh³jŒ[h´M ubj3)�”}”(hŒ phylink_stop”h]”j9)�”}”(hŒ phylink_stop”h]”hŒ phylink_stop”…”�”}”(hjŸ[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›[ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjz[h²hh³jŒ[h´M ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj»[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·[ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjÙ[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖ[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÛ[Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¡[sbŒc.phylink_stop”†”asbuh1hhj·[ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù[h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj·[ubj )�”}”(hj h]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj·[ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj³[ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjz[h²hh³jŒ[h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjv[h²hh³jŒ[h´M ubah}”(h]”jq[ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jŒ[h´M hjs[h²hubjg)�”}”(hhh]”jl)�”}”(hŒstop a phylink instance”h]”hŒstop a phylink instance”…”�”}”(hj>\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj;\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjs[h²hh³jŒ[h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jV\jŒjV\j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Stop the phylink instance specified by **pl**. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_stop() method. The network device's carrier state should not be changed prior to calling this function. This will synchronously bring down the link if the link is not already down (in other words, it will trigger a mac_link_down() method call.)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj`\h]”hŒ Parameters”…”�”}”(hjb\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj^\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mƒ hjZ\ubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj\h]”hŒstruct phylink *pl”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj}\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M€ hjy\ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj˜\h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj¢\h]”hŒstruct phylink”…”�”}”(hj¤\h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj \ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j”\h´M€ hj˜\ubhŒ returned from phylink_create()”…”�”}”(hj˜\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”\h´M€ hj•\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j”\h´M€ hjv\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjZ\ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÝ\h]”hŒ Description”…”�”}”(hjß\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÛ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M‚ hjZ\ubjl)�”}”(hXStop the phylink instance specified by **pl**. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_stop() method. The network device's carrier state should not be changed prior to calling this function.”h]”(hŒ'Stop the phylink instance specified by ”…”�”}”(hjó\h²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hjû\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjó\ubhŒ;. This should be called from the network device driver’s ”…”�”}”(hjó\h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct net_device_ops `”h]”jð)�”}”(hj]h]”hŒstruct net_device_ops”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj ]ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œnet_device_ops”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hjó\ubhŒo ndo_stop() method. The network device’s carrier state should not be changed prior to calling this function.”…”�”}”(hjó\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j,]h´M� hjZ\ubjl)�”}”(hŒŒThis will synchronously bring down the link if the link is not already down (in other words, it will trigger a mac_link_down() method call.)”h]”hŒŒThis will synchronously bring down the link if the link is not already down (in other words, it will trigger a mac_link_down() method call.)”…”�”}”(hj7]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M† hjZ\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phylink_rx_clk_stop_block (C function)”Œc.phylink_rx_clk_stop_block”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void phylink_rx_clk_stop_block (struct phylink *pl)”h]”j )�”}”(hŒ2void phylink_rx_clk_stop_block(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjf]h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjb]h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¡ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hju]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjb]h²hh³jt]h´M¡ ubj3)�”}”(hŒphylink_rx_clk_stop_block”h]”j9)�”}”(hŒphylink_rx_clk_stop_block”h]”hŒphylink_rx_clk_stop_block”…”�”}”(hj‡]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ]ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjb]h²hh³jt]h´M¡ ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj£]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸ]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸ]ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjÁ]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÃ]Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j‰]sbŒc.phylink_rx_clk_stop_block”†”asbuh1hhjŸ]ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá]h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸ]ubj )�”}”(hj h]”hŒ*”…”�”}”(hjï]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjŸ]ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjü]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸ]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj›]ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjb]h²hh³jt]h´M¡ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj^]h²hh³jt]h´M¡ ubah}”(h]”jY]ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jt]h´M¡ hj[]h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.block PHY ability to stop receive clock in LPI”h]”hŒ.block PHY ability to stop receive clock in LPI”…”�”}”(hj&^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¡ hj#^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj[]h²hh³jt]h´M¡ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j>^jŒj>^j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX\**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Disable the PHY's ability to stop the receive clock while the receive path is in EEE LPI state, until the number of calls to phylink_rx_clk_stop_block() are balanced by calls to phylink_rx_clk_stop_unblock().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjH^h]”hŒ Parameters”…”�”}”(hjJ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjF^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¥ hjB^ubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjg^h]”hŒstruct phylink *pl”…”�”}”(hji^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhje^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¢ hja^ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj€^h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjŠ^h]”hŒstruct phylink”…”�”}”(hjŒ^h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjˆ^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j|^h´M¢ hj€^ubhŒ returned from phylink_create()”…”�”}”(hj€^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j|^h´M¢ hj}^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j|^h´M¢ hj^^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjB^ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÅ^h]”hŒ Description”…”�”}”(hjÇ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÃ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¤ hjB^ubjl)�”}”(hŒÐDisable the PHY's ability to stop the receive clock while the receive path is in EEE LPI state, until the number of calls to phylink_rx_clk_stop_block() are balanced by calls to phylink_rx_clk_stop_unblock().”h]”hŒÒDisable the PHY’s ability to stop the receive clock while the receive path is in EEE LPI state, until the number of calls to phylink_rx_clk_stop_block() are balanced by calls to phylink_rx_clk_stop_unblock().”…”�”}”(hjÛ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M£ hjB^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(phylink_rx_clk_stop_unblock (C function)”Œc.phylink_rx_clk_stop_unblock”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ5void phylink_rx_clk_stop_unblock (struct phylink *pl)”h]”j )�”}”(hŒ4void phylink_rx_clk_stop_unblock(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj_h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¾ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj_h²hh³j_h´M¾ ubj3)�”}”(hŒphylink_rx_clk_stop_unblock”h]”j9)�”}”(hŒphylink_rx_clk_stop_unblock”h]”hŒphylink_rx_clk_stop_unblock”…”�”}”(hj+_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'_ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj_h²hh³j_h´M¾ ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjG_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC_ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hje_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjb_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jg_Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j-_sbŒc.phylink_rx_clk_stop_unblock”†”asbuh1hhjC_ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…_h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjC_ubj )�”}”(hj h]”hŒ*”…”�”}”(hj“_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjC_ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj?_ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj_h²hh³j_h´M¾ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj_h²hh³j_h´M¾ ubah}”(h]”jý^ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j_h´M¾ hjÿ^h²hubjg)�”}”(hhh]”jl)�”}”(hŒ)unblock PHY ability to stop receive clock”h]”hŒ)unblock PHY ability to stop receive clock”…”�”}”(hjÊ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¾ hjÇ_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÿ^h²hh³j_h´M¾ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jâ_jŒjâ_j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX`**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** All calls to phylink_rx_clk_stop_block() must be balanced with a corresponding call to phylink_rx_clk_stop_unblock() to restore the PHYs ability to stop the receive clock when the receive path is in EEE LPI mode.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjì_h]”hŒ Parameters”…”�”}”(hjî_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjê_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjæ_ubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj `h]”hŒstruct phylink *pl”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj `ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¿ hj`ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj$`h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj.`h]”hŒstruct phylink”…”�”}”(hj0`h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj,`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j `h´M¿ hj$`ubhŒ returned from phylink_create()”…”�”}”(hj$`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j `h´M¿ hj!`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j `h´M¿ hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjæ_ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hji`h]”hŒ Description”…”�”}”(hjk`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjg`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MÁ hjæ_ubjl)�”}”(hŒÔAll calls to phylink_rx_clk_stop_block() must be balanced with a corresponding call to phylink_rx_clk_stop_unblock() to restore the PHYs ability to stop the receive clock when the receive path is in EEE LPI mode.”h]”hŒÔAll calls to phylink_rx_clk_stop_block() must be balanced with a corresponding call to phylink_rx_clk_stop_unblock() to restore the PHYs ability to stop the receive clock when the receive path is in EEE LPI mode.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MÀ hjæ_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_suspend (C function)”Œc.phylink_suspend”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ7void phylink_suspend (struct phylink *pl, bool mac_wol)”h]”j )�”}”(hŒ6void phylink_suspend(struct phylink *pl, bool mac_wol)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®`h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjª`h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mì ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjª`h²hh³j¼`h´Mì ubj3)�”}”(hŒphylink_suspend”h]”j9)�”}”(hŒphylink_suspend”h]”hŒphylink_suspend”…”�”}”(hjÏ`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjË`ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjª`h²hh³j¼`h´Mì ubj¡ )�”}”(hŒ"(struct phylink *pl, bool mac_wol)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjë`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjç`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø`h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç`ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j aŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÑ`sbŒc.phylink_suspend”†”asbuh1hhjç`ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)ah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç`ubj )�”}”(hj h]”hŒ*”…”�”}”(hj7ah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjç`ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjDah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã`ubj§ )�”}”(hŒ bool mac_wol”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hj]ah²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjYaubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjah²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYaubj9)�”}”(hŒmac_wol”h]”hŒmac_wol”…”�”}”(hjxah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã`ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjª`h²hh³j¼`h´Mì ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¦`h²hh³j¼`h´Mì ubah}”(h]”j¡`ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¼`h´Mì hj£`h²hubjg)�”}”(hhh]”jl)�”}”(hŒ%handle a network device suspend event”h]”hŒ%handle a network device suspend event”…”�”}”(hj¢ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mì hjŸah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj£`h²hh³j¼`h´Mì ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jºajŒjºaj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX **Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``bool mac_wol`` true if the MAC needs to receive packets for Wake-on-Lan **Description** Handle a network device suspend event. There are several cases: - If Wake-on-Lan is not active, we can bring down the link between the MAC and PHY by calling phylink_stop(). - If Wake-on-Lan is active, and being handled only by the PHY, we can also bring down the link between the MAC and PHY. - If Wake-on-Lan is active, but being handled by the MAC, the MAC still needs to receive packets, so we can not bring the link down. **Note** when phylink managed Wake-on-Lan is in use, **mac_wol** is ignored. (struct phylink_mac_ops.mac_set_wol populated.)”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÄah]”hŒ Parameters”…”�”}”(hjÆah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÂaubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mð hj¾aubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjãah]”hŒstruct phylink *pl”…”�”}”(hjåah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjáaubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mí hjÝaubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjüah²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjbh]”hŒstruct phylink”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjbubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jøah´Mí hjüaubhŒ returned from phylink_create()”…”�”}”(hjüah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jøah´Mí hjùaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jøah´Mí hjÚaubjä)�”}”(hŒJ``bool mac_wol`` true if the MAC needs to receive packets for Wake-on-Lan ”h]”(jê)�”}”(hŒ``bool mac_wol``”h]”jð)�”}”(hj?bh]”hŒ bool mac_wol”…”�”}”(hjAbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj=bubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mî hj9bubj)�”}”(hhh]”jl)�”}”(hŒ8true if the MAC needs to receive packets for Wake-on-Lan”h]”hŒ8true if the MAC needs to receive packets for Wake-on-Lan”…”�”}”(hjXbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jTbh´Mî hjUbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jTbh´Mî hjÚaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¾aubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjzbh]”hŒ Description”…”�”}”(hj|bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjxbubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mð hj¾aubjl)�”}”(hŒ?Handle a network device suspend event. There are several cases:”h]”hŒ?Handle a network device suspend event. There are several cases:”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mï hj¾aubjC[)�”}”(hhh]”(jH[)�”}”(hŒkIf Wake-on-Lan is not active, we can bring down the link between the MAC and PHY by calling phylink_stop().”h]”jl)�”}”(hŒkIf Wake-on-Lan is not active, we can bring down the link between the MAC and PHY by calling phylink_stop().”h]”hŒkIf Wake-on-Lan is not active, we can bring down the link between the MAC and PHY by calling phylink_stop().”…”�”}”(hj¦bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mñ hj¢bubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjŸbubjH[)�”}”(hŒuIf Wake-on-Lan is active, and being handled only by the PHY, we can also bring down the link between the MAC and PHY.”h]”jl)�”}”(hŒuIf Wake-on-Lan is active, and being handled only by the PHY, we can also bring down the link between the MAC and PHY.”h]”hŒuIf Wake-on-Lan is active, and being handled only by the PHY, we can also bring down the link between the MAC and PHY.”…”�”}”(hj¿bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mó hj»bubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjŸbubjH[)�”}”(hŒƒIf Wake-on-Lan is active, but being handled by the MAC, the MAC still needs to receive packets, so we can not bring the link down. ”h]”jl)�”}”(hŒ‚If Wake-on-Lan is active, but being handled by the MAC, the MAC still needs to receive packets, so we can not bring the link down.”h]”hŒ‚If Wake-on-Lan is active, but being handled by the MAC, the MAC still needs to receive packets, so we can not bring the link down.”…”�”}”(hjØbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mõ hjÔbubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjŸbubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³j´bh´Mñ hj¾aubjl)�”}”(hŒ**Note**”h]”j›)�”}”(hjõbh]”hŒNote”…”�”}”(hj÷bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjóbubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mø hj¾aubjl)�”}”(hŒswhen phylink managed Wake-on-Lan is in use, **mac_wol** is ignored. (struct phylink_mac_ops.mac_set_wol populated.)”h]”(hŒ,when phylink managed Wake-on-Lan is in use, ”…”�”}”(hj ch²hh³Nh´Nubj›)�”}”(hŒ **mac_wol**”h]”hŒmac_wol”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj cubhŒ< is ignored. (struct phylink_mac_ops.mac_set_wol populated.)”…”�”}”(hj ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mù hj¾aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ#phylink_prepare_resume (C function)”Œc.phylink_prepare_resume”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ0void phylink_prepare_resume (struct phylink *pl)”h]”j )�”}”(hŒ/void phylink_prepare_resume(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjLch²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjHch²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M# ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjHch²hh³jZch´M# ubj3)�”}”(hŒphylink_prepare_resume”h]”j9)�”}”(hŒphylink_prepare_resume”h]”hŒphylink_prepare_resume”…”�”}”(hjmch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjicubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjHch²hh³jZch´M# ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‰ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…cubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj§ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j©cŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jocsbŒc.phylink_prepare_resume”†”asbuh1hhj…cubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇch²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…cubj )�”}”(hj h]”hŒ*”…”�”}”(hjÕch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj…cubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjâch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�cubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjHch²hh³jZch´M# ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjDch²hh³jZch´M# ubah}”(h]”j?cah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jZch´M# hjAch²hubjg)�”}”(hhh]”jl)�”}”(hŒ"prepare to resume a network device”h]”hŒ"prepare to resume a network device”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M# hj dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjAch²hh³jZch´M# ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j$djŒj$dj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Optional, but if called must be called prior to phylink_resume(). Prepare to resume a network device, preparing the PHY as necessary.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj.dh]”hŒ Parameters”…”�”}”(hj0dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj,dubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M' hj(dubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjMdh]”hŒstruct phylink *pl”…”�”}”(hjOdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKdubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M$ hjGdubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjfdh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjpdh]”hŒstruct phylink”…”�”}”(hjrdh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjndubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jbdh´M$ hjfdubhŒ returned from phylink_create()”…”�”}”(hjfdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jbdh´M$ hjcdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jbdh´M$ hjDdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj(dubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj«dh]”hŒ Description”…”�”}”(hj­dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj©dubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M& hj(dubjl)�”}”(hŒAOptional, but if called must be called prior to phylink_resume().”h]”hŒAOptional, but if called must be called prior to phylink_resume().”…”�”}”(hjÁdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M% hj(dubjl)�”}”(hŒCPrepare to resume a network device, preparing the PHY as necessary.”h]”hŒCPrepare to resume a network device, preparing the PHY as necessary.”…”�”}”(hjÐdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M' hj(dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_resume (C function)”Œc.phylink_resume”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ(void phylink_resume (struct phylink *pl)”h]”j )�”}”(hŒ'void phylink_resume(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿdh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjûdh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M< ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjûdh²hh³j eh´M< ubj3)�”}”(hŒphylink_resume”h]”j9)�”}”(hŒphylink_resume”h]”hŒphylink_resume”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjûdh²hh³j eh´M< ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj` returned from phylink_create() **Description** Undo the effects of phylink_suspend(), returning the link to an operational state.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjáeh]”hŒ Parameters”…”�”}”(hjãeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjßeubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M@ hjÛeubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjfh]”hŒstruct phylink *pl”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþeubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M= hjúeubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjfh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj#fh]”hŒstruct phylink”…”�”}”(hj%fh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj!fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jfh´M= hjfubhŒ returned from phylink_create()”…”�”}”(hjfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jfh´M= hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jfh´M= hj÷eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÛeubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj^fh]”hŒ Description”…”�”}”(hj`fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj\fubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M? hjÛeubjl)�”}”(hŒRUndo the effects of phylink_suspend(), returning the link to an operational state.”h]”hŒRUndo the effects of phylink_suspend(), returning the link to an operational state.”…”�”}”(hjtfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M> hjÛeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phylink_ethtool_get_wol (C function)”Œc.phylink_ethtool_get_wol”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNvoid phylink_ethtool_get_wol (struct phylink *pl, struct ethtool_wolinfo *wol)”h]”j )�”}”(hŒMvoid phylink_ethtool_get_wol(struct phylink *pl, struct ethtool_wolinfo *wol)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£fh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjŸfh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mg ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²fh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjŸfh²hh³j±fh´Mg ubj3)�”}”(hŒphylink_ethtool_get_wol”h]”j9)�”}”(hŒphylink_ethtool_get_wol”h]”hŒphylink_ethtool_get_wol”…”�”}”(hjÄfh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀfubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjŸfh²hh³j±fh´Mg ubj¡ )�”}”(hŒ1(struct phylink *pl, struct ethtool_wolinfo *wol)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjàfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjífh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜfubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjþfh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jgŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÆfsbŒc.phylink_ethtool_get_wol”†”asbuh1hhjÜfubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÜfubj )�”}”(hj h]”hŒ*”…”�”}”(hj,gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÜfubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj9gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjØfubj§ )�”}”(hŒstruct ethtool_wolinfo *wol”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjRgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_gh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNgubh)�”}”(hhh]”j9)�”}”(hŒethtool_wolinfo”h]”hŒethtool_wolinfo”…”�”}”(hjpgh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jrgŒmodname”NŒ classname”Njå jè )�”}”jë ]”jgŒc.phylink_ethtool_get_wol”†”asbuh1hhjNgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽgh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjNgubj )�”}”(hj h]”hŒ*”…”�”}”(hjœgh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjNgubj9)�”}”(hŒwol”h]”hŒwol”…”�”}”(hj©gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjØfubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjŸfh²hh³j±fh´Mg ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj›fh²hh³j±fh´Mg ubah}”(h]”j–fah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j±fh´Mg hj˜fh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*get the wake on lan parameters for the PHY”h]”hŒ*get the wake on lan parameters for the PHY”…”�”}”(hjÓgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mg hjÐgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj˜fh²hh³j±fh´Mg ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jëgjŒjëgj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX±**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct ethtool_wolinfo *wol`` a pointer to :c:type:`struct ethtool_wolinfo ` to hold the read parameters **Description** Read the wake on lan parameters from the PHY attached to the phylink instance specified by **pl**. If no PHY is currently attached, report no support for wake on lan.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjõgh]”hŒ Parameters”…”�”}”(hj÷gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjógubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mk hjïgubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjhh]”hŒstruct phylink *pl”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mh hjhubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj-hh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj7hh]”hŒstruct phylink”…”�”}”(hj9hh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj5hubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j)hh´Mh hj-hubhŒ returned from phylink_create()”…”�”}”(hj-hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j)hh´Mh hj*hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j)hh´Mh hj hubjä)�”}”(hŒ|``struct ethtool_wolinfo *wol`` a pointer to :c:type:`struct ethtool_wolinfo ` to hold the read parameters ”h]”(jê)�”}”(hŒ``struct ethtool_wolinfo *wol``”h]”jð)�”}”(hjphh]”hŒstruct ethtool_wolinfo *wol”…”�”}”(hjrhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjnhubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mi hjjhubj)�”}”(hhh]”jl)�”}”(hŒ[a pointer to :c:type:`struct ethtool_wolinfo ` to hold the read parameters”h]”(hŒ a pointer to ”…”�”}”(hj‰hh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ethtool_wolinfo `”h]”jð)�”}”(hj“hh]”hŒstruct ethtool_wolinfo”…”�”}”(hj•hh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj‘hubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_wolinfo”uh1hh³j…hh´Mi hj‰hubhŒ to hold the read parameters”…”�”}”(hj‰hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…hh´Mi hj†hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j…hh´Mi hj hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjïgubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÎhh]”hŒ Description”…”�”}”(hjÐhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÌhubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mk hjïgubjl)�”}”(hŒ¦Read the wake on lan parameters from the PHY attached to the phylink instance specified by **pl**. If no PHY is currently attached, report no support for wake on lan.”h]”(hŒ[Read the wake on lan parameters from the PHY attached to the phylink instance specified by ”…”�”}”(hjähh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hjìhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjähubhŒE. If no PHY is currently attached, report no support for wake on lan.”…”�”}”(hjähh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mj hjïgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phylink_ethtool_set_wol (C function)”Œc.phylink_ethtool_set_wol”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒMint phylink_ethtool_set_wol (struct phylink *pl, struct ethtool_wolinfo *wol)”h]”j )�”}”(hŒLint phylink_ethtool_set_wol(struct phylink *pl, struct ethtool_wolinfo *wol)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj%ih²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj!ih²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MŒ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj!ih²hh³j3ih´MŒ ubj3)�”}”(hŒphylink_ethtool_set_wol”h]”j9)�”}”(hŒphylink_ethtool_set_wol”h]”hŒphylink_ethtool_set_wol”…”�”}”(hjFih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBiubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj!ih²hh³j3ih´MŒ ubj¡ )�”}”(hŒ1(struct phylink *pl, struct ethtool_wolinfo *wol)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjbih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^iubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj€ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‚iŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jHisbŒc.phylink_ethtool_set_wol”†”asbuh1hhj^iubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj^iubj )�”}”(hj h]”hŒ*”…”�”}”(hj®ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj^iubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj»ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZiubj§ )�”}”(hŒstruct ethtool_wolinfo *wol”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÔih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáih²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐiubh)�”}”(hhh]”j9)�”}”(hŒethtool_wolinfo”h]”hŒethtool_wolinfo”…”�”}”(hjòih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jôiŒmodname”NŒ classname”Njå jè )�”}”jë ]”jœiŒc.phylink_ethtool_set_wol”†”asbuh1hhjÐiubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÐiubj )�”}”(hj h]”hŒ*”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjÐiubj9)�”}”(hŒwol”h]”hŒwol”…”�”}”(hj+jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjZiubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj!ih²hh³j3ih´MŒ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjih²hh³j3ih´MŒ ubah}”(h]”jiah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j3ih´MŒ hjih²hubjg)�”}”(hhh]”jl)�”}”(hŒset wake on lan parameters”h]”hŒset wake on lan parameters”…”�”}”(hjUjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MŒ hjRjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjih²hh³j3ih´MŒ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jmjjŒjmjj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXÐ**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct ethtool_wolinfo *wol`` a pointer to :c:type:`struct ethtool_wolinfo ` for the desired parameters **Description** Set the wake on lan parameters for the PHY attached to the phylink instance specified by **pl**. If no PHY is attached, returns ``EOPNOTSUPP`` error. Returns zero on success or negative errno code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjwjh]”hŒ Parameters”…”�”}”(hjyjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjujubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hjqjubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj–jh]”hŒstruct phylink *pl”…”�”}”(hj˜jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj”jubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hj�jubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj¯jh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj¹jh]”hŒstruct phylink”…”�”}”(hj»jh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj·jubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j«jh´M� hj¯jubhŒ returned from phylink_create()”…”�”}”(hj¯jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j«jh´M� hj¬jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j«jh´M� hj�jubjä)�”}”(hŒ{``struct ethtool_wolinfo *wol`` a pointer to :c:type:`struct ethtool_wolinfo ` for the desired parameters ”h]”(jê)�”}”(hŒ``struct ethtool_wolinfo *wol``”h]”jð)�”}”(hjòjh]”hŒstruct ethtool_wolinfo *wol”…”�”}”(hjôjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjðjubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MŽ hjìjubj)�”}”(hhh]”jl)�”}”(hŒZa pointer to :c:type:`struct ethtool_wolinfo ` for the desired parameters”h]”(hŒ a pointer to ”…”�”}”(hj kh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ethtool_wolinfo `”h]”jð)�”}”(hjkh]”hŒstruct ethtool_wolinfo”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjkubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_wolinfo”uh1hh³jkh´MŽ hj kubhŒ for the desired parameters”…”�”}”(hj kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jkh´MŽ hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jkh´MŽ hj�jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjqjubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjPkh]”hŒ Description”…”�”}”(hjRkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjNkubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hjqjubjl)�”}”(hŒ•Set the wake on lan parameters for the PHY attached to the phylink instance specified by **pl**. If no PHY is attached, returns ``EOPNOTSUPP`` error.”h]”(hŒYSet the wake on lan parameters for the PHY attached to the phylink instance specified by ”…”�”}”(hjfkh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hjnkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjfkubhŒ!. If no PHY is attached, returns ”…”�”}”(hjfkh²hh³Nh´Nubjð)�”}”(hŒ``EOPNOTSUPP``”h]”hŒ EOPNOTSUPP”…”�”}”(hj€kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjfkubhŒ error.”…”�”}”(hjfkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hjqjubjl)�”}”(hŒ/Returns zero on success or negative errno code.”h]”hŒ/Returns zero on success or negative errno code.”…”�”}”(hj™kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M“ hjqjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*phylink_ethtool_ksettings_get (C function)”Œc.phylink_ethtool_ksettings_get”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ[int phylink_ethtool_ksettings_get (struct phylink *pl, struct ethtool_link_ksettings *kset)”h]”j )�”}”(hŒZint phylink_ethtool_ksettings_get(struct phylink *pl, struct ethtool_link_ksettings *kset)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÈkh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÄkh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×kh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÄkh²hh³jÖkh´M ubj3)�”}”(hŒphylink_ethtool_ksettings_get”h]”j9)�”}”(hŒphylink_ethtool_ksettings_get”h]”hŒphylink_ethtool_ksettings_get”…”�”}”(hjékh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåkubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÄkh²hh³jÖkh´M ubj¡ )�”}”(hŒ9(struct phylink *pl, struct ethtool_link_ksettings *kset)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj#lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j%lŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jëksbŒc.phylink_ethtool_ksettings_get”†”asbuh1hhjlubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjClh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjlubj )�”}”(hj h]”hŒ*”…”�”}”(hjQlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjlubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj^lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýkubj§ )�”}”(hŒ#struct ethtool_link_ksettings *kset”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjwlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjslubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjslubh)�”}”(hhh]”j9)�”}”(hŒethtool_link_ksettings”h]”hŒethtool_link_ksettings”…”�”}”(hj•lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j—lŒmodname”NŒ classname”Njå jè )�”}”jë ]”j?lŒc.phylink_ethtool_ksettings_get”†”asbuh1hhjslubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³lh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjslubj )�”}”(hj h]”hŒ*”…”�”}”(hjÁlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjslubj9)�”}”(hŒkset”h]”hŒkset”…”�”}”(hjÎlh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjslubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjýkubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjÄkh²hh³jÖkh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÀkh²hh³jÖkh´M ubah}”(h]”j»kah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÖkh´M hj½kh²hubjg)�”}”(hhh]”jl)�”}”(hŒget the current link settings”h]”hŒget the current link settings”…”�”}”(hjølh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjõlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½kh²hh³jÖkh´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jmjŒjmj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXá**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct ethtool_link_ksettings *kset`` a pointer to a :c:type:`struct ethtool_link_ksettings ` to hold link settings **Description** Read the current link settings for the phylink instance specified by **pl**. This will be the link settings read from the MAC, PHY or fixed link settings depending on the current negotiation mode.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjmh]”hŒ Parameters”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjmubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj9mh]”hŒstruct phylink *pl”…”�”}”(hj;mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj7mubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj3mubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjRmh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj\mh]”hŒstruct phylink”…”�”}”(hj^mh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjZmubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jNmh´M hjRmubhŒ returned from phylink_create()”…”�”}”(hjRmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jNmh´M hjOmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jNmh´M hj0mubjä)�”}”(hŒŽ``struct ethtool_link_ksettings *kset`` a pointer to a :c:type:`struct ethtool_link_ksettings ` to hold link settings ”h]”(jê)�”}”(hŒ'``struct ethtool_link_ksettings *kset``”h]”jð)�”}”(hj•mh]”hŒ#struct ethtool_link_ksettings *kset”…”�”}”(hj—mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“mubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj�mubj)�”}”(hhh]”jl)�”}”(hŒea pointer to a :c:type:`struct ethtool_link_ksettings ` to hold link settings”h]”(hŒa pointer to a ”…”�”}”(hj®mh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`struct ethtool_link_ksettings `”h]”jð)�”}”(hj¸mh]”hŒstruct ethtool_link_ksettings”…”�”}”(hjºmh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¶mubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_link_ksettings”uh1hh³jªmh´M hj®mubhŒ to hold link settings”…”�”}”(hj®mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jªmh´M hj«mubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jªmh´M hj0mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjmubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjómh]”hŒ Description”…”�”}”(hjõmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñmubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjmubjl)�”}”(hŒÄRead the current link settings for the phylink instance specified by **pl**. This will be the link settings read from the MAC, PHY or fixed link settings depending on the current negotiation mode.”h]”(hŒERead the current link settings for the phylink instance specified by ”…”�”}”(hj nh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj nubhŒy. This will be the link settings read from the MAC, PHY or fixed link settings depending on the current negotiation mode.”…”�”}”(hj nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*phylink_ethtool_ksettings_set (C function)”Œc.phylink_ethtool_ksettings_set”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒaint phylink_ethtool_ksettings_set (struct phylink *pl, const struct ethtool_link_ksettings *kset)”h]”j )�”}”(hŒ`int phylink_ethtool_ksettings_set(struct phylink *pl, const struct ethtool_link_ksettings *kset)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjJnh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjFnh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mf ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjFnh²hh³jXnh´Mf ubj3)�”}”(hŒphylink_ethtool_ksettings_set”h]”j9)�”}”(hŒphylink_ethtool_ksettings_set”h]”hŒphylink_ethtool_ksettings_set”…”�”}”(hjknh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgnubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjFnh²hh³jXnh´Mf ubj¡ )�”}”(hŒ?(struct phylink *pl, const struct ethtool_link_ksettings *kset)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj‡nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”nh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒnubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj¥nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§nŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jmnsbŒc.phylink_ethtool_ksettings_set”†”asbuh1hhjƒnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅnh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjƒnubj )�”}”(hj h]”hŒ*”…”�”}”(hjÓnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjƒnubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjành²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnubj§ )�”}”(hŒ)const struct ethtool_link_ksettings *kset”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjùnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõnubj)�”}”(hjh]”hŒstruct”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!oh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõnubh)�”}”(hhh]”j9)�”}”(hŒethtool_link_ksettings”h]”hŒethtool_link_ksettings”…”�”}”(hj2oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j4oŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÁnŒc.phylink_ethtool_ksettings_set”†”asbuh1hhjõnubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPoh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjõnubj )�”}”(hj h]”hŒ*”…”�”}”(hj^oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjõnubj9)�”}”(hŒkset”h]”hŒkset”…”�”}”(hjkoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjnubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjFnh²hh³jXnh´Mf ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjBnh²hh³jXnh´Mf ubah}”(h]”j=nah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jXnh´Mf hj?nh²hubjg)�”}”(hhh]”jl)�”}”(hŒset the link settings”h]”hŒset the link settings”…”�”}”(hj•oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mf hj’oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?nh²hh³jXnh´Mf ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j­ojŒj­oj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``const struct ethtool_link_ksettings *kset`` a pointer to a :c:type:`struct ethtool_link_ksettings ` for the desired modes”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj·oh]”hŒ Parameters”…”�”}”(hj¹oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjµoubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mj hj±oubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjÖoh]”hŒstruct phylink *pl”…”�”}”(hjØoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÔoubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mg hjÐoubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjïoh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjùoh]”hŒstruct phylink”…”�”}”(hjûoh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj÷oubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jëoh´Mg hjïoubhŒ returned from phylink_create()”…”�”}”(hjïoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jëoh´Mg hjìoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jëoh´Mg hjÍoubjä)�”}”(hŒ“``const struct ethtool_link_ksettings *kset`` a pointer to a :c:type:`struct ethtool_link_ksettings ` for the desired modes”h]”(jê)�”}”(hŒ-``const struct ethtool_link_ksettings *kset``”h]”jð)�”}”(hj2ph]”hŒ)const struct ethtool_link_ksettings *kset”…”�”}”(hj4ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0pubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mi hj,pubj)�”}”(hhh]”jl)�”}”(hŒea pointer to a :c:type:`struct ethtool_link_ksettings ` for the desired modes”h]”(hŒa pointer to a ”…”�”}”(hjKph²hh³Nh´Nubh)�”}”(hŒ@:c:type:`struct ethtool_link_ksettings `”h]”jð)�”}”(hjUph]”hŒstruct ethtool_link_ksettings”…”�”}”(hjWph²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjSpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_link_ksettings”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mh hjKpubhŒ for the desired modes”…”�”}”(hjKph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jrph´Mh hjHpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGph´Mi hjÍoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phylink_ethtool_nway_reset (C function)”Œc.phylink_ethtool_nway_reset”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3int phylink_ethtool_nway_reset (struct phylink *pl)”h]”j )�”}”(hŒ2int phylink_ethtool_nway_reset(struct phylink *pl)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¯ph²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj«ph²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj«ph²hh³j½ph´M ubj3)�”}”(hŒphylink_ethtool_nway_reset”h]”j9)�”}”(hŒphylink_ethtool_nway_reset”h]”hŒphylink_ethtool_nway_reset”…”�”}”(hjÐph²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌpubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj«ph²hh³j½ph´M ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjìph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèpubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùph²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèpubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j qŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÒpsbŒc.phylink_ethtool_nway_reset”†”asbuh1hhjèpubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*qh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjèpubj )�”}”(hj h]”hŒ*”…”�”}”(hj8qh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjèpubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjEqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjäpubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj«ph²hh³j½ph´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj§ph²hh³j½ph´M ubah}”(h]”j¢pah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j½ph´M hj¤ph²hubjg)�”}”(hhh]”jl)�”}”(hŒrestart negotiation”h]”hŒrestart negotiation”…”�”}”(hjoqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjlqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¤ph²hh³j½ph´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j‡qjŒj‡qj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX¨**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Restart negotiation for the phylink instance specified by **pl**. This will cause any attached phy to restart negotiation with the link partner, and if the MAC is in a BaseX mode, the MAC will also be requested to restart negotiation. Returns zero on success, or negative error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‘qh]”hŒ Parameters”…”�”}”(hj“qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�qubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj‹qubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj°qh]”hŒstruct phylink *pl”…”�”}”(hj²qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®qubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjªqubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjÉqh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjÓqh]”hŒstruct phylink”…”�”}”(hjÕqh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÑqubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jÅqh´M hjÉqubhŒ returned from phylink_create()”…”�”}”(hjÉqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÅqh´M hjÆqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÅqh´M hj§qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‹qubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjrh]”hŒ Description”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj rubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj‹qubjl)�”}”(hŒêRestart negotiation for the phylink instance specified by **pl**. This will cause any attached phy to restart negotiation with the link partner, and if the MAC is in a BaseX mode, the MAC will also be requested to restart negotiation.”h]”(hŒ:Restart negotiation for the phylink instance specified by ”…”�”}”(hj$rh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hj,rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj$rubhŒª. This will cause any attached phy to restart negotiation with the link partner, and if the MAC is in a BaseX mode, the MAC will also be requested to restart negotiation.”…”�”}”(hj$rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj‹qubjl)�”}”(hŒ0Returns zero on success, or negative error code.”h]”hŒ0Returns zero on success, or negative error code.”…”�”}”(hjErh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj‹qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ+phylink_ethtool_get_pauseparam (C function)”Œ c.phylink_ethtool_get_pauseparam”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒZvoid phylink_ethtool_get_pauseparam (struct phylink *pl, struct ethtool_pauseparam *pause)”h]”j )�”}”(hŒYvoid phylink_ethtool_get_pauseparam(struct phylink *pl, struct ethtool_pauseparam *pause)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjtrh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjprh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M) ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjprh²hh³j‚rh´M) ubj3)�”}”(hŒphylink_ethtool_get_pauseparam”h]”j9)�”}”(hŒphylink_ethtool_get_pauseparam”h]”hŒphylink_ethtool_get_pauseparam”…”�”}”(hj•rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘rubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjprh²hh³j‚rh´M) ubj¡ )�”}”(hŒ6(struct phylink *pl, struct ethtool_pauseparam *pause)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj±rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾rh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­rubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjÏrh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÌrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÑrŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j—rsbŒ c.phylink_ethtool_get_pauseparam”†”asbuh1hhj­rubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïrh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj­rubj )�”}”(hj h]”hŒ*”…”�”}”(hjýrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj­rubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj©rubj§ )�”}”(hŒ struct ethtool_pauseparam *pause”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj#sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsubh)�”}”(hhh]”j9)�”}”(hŒethtool_pauseparam”h]”hŒethtool_pauseparam”…”�”}”(hjAsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jCsŒmodname”NŒ classname”Njå jè )�”}”jë ]”jërŒ c.phylink_ethtool_get_pauseparam”†”asbuh1hhjsubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_sh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjsubj )�”}”(hj h]”hŒ*”…”�”}”(hjmsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjsubj9)�”}”(hŒpause”h]”hŒpause”…”�”}”(hjzsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj©rubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjprh²hh³j‚rh´M) ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjlrh²hh³j‚rh´M) ubah}”(h]”jgrah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j‚rh´M) hjirh²hubjg)�”}”(hhh]”jl)�”}”(hŒ get the current pause parameters”h]”hŒ get the current pause parameters”…”�”}”(hj¤sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M) hj¡sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjirh²hh³j‚rh´M) ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¼sjŒj¼sj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒé**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct ethtool_pauseparam *pause`` a pointer to a :c:type:`struct ethtool_pauseparam `”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÆsh]”hŒ Parameters”…”�”}”(hjÈsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÄsubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M- hjÀsubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjåsh]”hŒstruct phylink *pl”…”�”}”(hjçsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjãsubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M* hjßsubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjþsh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjth]”hŒstruct phylink”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³júsh´M* hjþsubhŒ returned from phylink_create()”…”�”}”(hjþsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³júsh´M* hjûsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³júsh´M* hjÜsubjä)�”}”(hŒl``struct ethtool_pauseparam *pause`` a pointer to a :c:type:`struct ethtool_pauseparam `”h]”(jê)�”}”(hŒ$``struct ethtool_pauseparam *pause``”h]”jð)�”}”(hjAth]”hŒ struct ethtool_pauseparam *pause”…”�”}”(hjCth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj?tubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M, hj;tubj)�”}”(hhh]”jl)�”}”(hŒGa pointer to a :c:type:`struct ethtool_pauseparam `”h]”(hŒa pointer to a ”…”�”}”(hjZth²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct ethtool_pauseparam `”h]”jð)�”}”(hjdth]”hŒstruct ethtool_pauseparam”…”�”}”(hjfth²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjbtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_pauseparam”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M+ hjZtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j�th´M+ hjWtubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jVth´M, hjÜsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÀsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ+phylink_ethtool_set_pauseparam (C function)”Œ c.phylink_ethtool_set_pauseparam”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒYint phylink_ethtool_set_pauseparam (struct phylink *pl, struct ethtool_pauseparam *pause)”h]”j )�”}”(hŒXint phylink_ethtool_set_pauseparam(struct phylink *pl, struct ethtool_pauseparam *pause)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjºth²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¶th²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M9 ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉth²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶th²hh³jÈth´M9 ubj3)�”}”(hŒphylink_ethtool_set_pauseparam”h]”j9)�”}”(hŒphylink_ethtool_set_pauseparam”h]”hŒphylink_ethtool_set_pauseparam”…”�”}”(hjÛth²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×tubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶th²hh³jÈth´M9 ubj¡ )�”}”(hŒ6(struct phylink *pl, struct ethtool_pauseparam *pause)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj÷th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjótubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjótubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”juŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÝtsbŒ c.phylink_ethtool_set_pauseparam”†”asbuh1hhjótubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjótubj )�”}”(hj h]”hŒ*”…”�”}”(hjCuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjótubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjPuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjótubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïtubj§ )�”}”(hŒ struct ethtool_pauseparam *pause”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjiuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvuh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeuubh)�”}”(hhh]”j9)�”}”(hŒethtool_pauseparam”h]”hŒethtool_pauseparam”…”�”}”(hj‡uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‰uŒmodname”NŒ classname”Njå jè )�”}”jë ]”j1uŒ c.phylink_ethtool_set_pauseparam”†”asbuh1hhjeuubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥uh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjeuubj )�”}”(hj h]”hŒ*”…”�”}”(hj³uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjeuubj9)�”}”(hŒpause”h]”hŒpause”…”�”}”(hjÀuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjïtubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶th²hh³jÈth´M9 ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj²th²hh³jÈth´M9 ubah}”(h]”j­tah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÈth´M9 hj¯th²hubjg)�”}”(hhh]”jl)�”}”(hŒ set the current pause parameters”h]”hŒ set the current pause parameters”…”�”}”(hjêuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M9 hjçuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯th²hh³jÈth´M9 ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jvjŒjvj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒé**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct ethtool_pauseparam *pause`` a pointer to a :c:type:`struct ethtool_pauseparam `”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj vh]”hŒ Parameters”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj vubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M= hjvubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj+vh]”hŒstruct phylink *pl”…”�”}”(hj-vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M: hj%vubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjDvh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjNvh]”hŒstruct phylink”…”�”}”(hjPvh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjLvubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j@vh´M: hjDvubhŒ returned from phylink_create()”…”�”}”(hjDvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j@vh´M: hjAvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@vh´M: hj"vubjä)�”}”(hŒl``struct ethtool_pauseparam *pause`` a pointer to a :c:type:`struct ethtool_pauseparam `”h]”(jê)�”}”(hŒ$``struct ethtool_pauseparam *pause``”h]”jð)�”}”(hj‡vh]”hŒ struct ethtool_pauseparam *pause”…”�”}”(hj‰vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj…vubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M< hj�vubj)�”}”(hhh]”jl)�”}”(hŒGa pointer to a :c:type:`struct ethtool_pauseparam `”h]”(hŒa pointer to a ”…”�”}”(hj vh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct ethtool_pauseparam `”h]”jð)�”}”(hjªvh]”hŒstruct ethtool_pauseparam”…”�”}”(hj¬vh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¨vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_pauseparam”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M; hj vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÇvh´M; hj�vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jœvh´M< hj"vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ phylink_get_eee_err (C function)”Œc.phylink_get_eee_err”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,int phylink_get_eee_err (struct phylink *pl)”h]”j )�”}”(hŒ+int phylink_get_eee_err(struct phylink *pl)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjüvh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M^ ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjüvh²hh³jwh´M^ ubj3)�”}”(hŒphylink_get_eee_err”h]”j9)�”}”(hŒphylink_get_eee_err”h]”hŒphylink_get_eee_err”…”�”}”(hj!wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjüvh²hh³jwh´M^ ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj=wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJwh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9wubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj[wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjXwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j]wŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j#wsbŒc.phylink_get_eee_err”†”asbuh1hhj9wubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{wh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj9wubj )�”}”(hj h]”hŒ*”…”�”}”(hj‰wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj9wubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj–wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj5wubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjüvh²hh³jwh´M^ ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjøvh²hh³jwh´M^ ubah}”(h]”jóvah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jwh´M^ hjõvh²hubjg)�”}”(hhh]”jl)�”}”(hŒ0read the energy efficient ethernet error counter”h]”hŒ0read the energy efficient ethernet error counter”…”�”}”(hjÀwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M^ hj½wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjõvh²hh³jwh´M^ ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jØwjŒjØwj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXC**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create(). **Description** Read the Energy Efficient Ethernet error counter from the PHY associated with the phylink instance specified by **pl**. Returns positive error counter value, or negative error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjâwh]”hŒ Parameters”…”�”}”(hjäwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjàwubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mb hjÜwubjß)�”}”(hhh]”jä)�”}”(hŒi``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create(). ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjxh]”hŒstruct phylink *pl”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÿwubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M` hjûwubj)�”}”(hhh]”jl)�”}”(hŒQa pointer to a :c:type:`struct phylink ` returned from phylink_create().”h]”(hŒa pointer to a ”…”�”}”(hjxh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj$xh]”hŒstruct phylink”…”�”}”(hj&xh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj"xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jxh´M` hjxubhŒ returned from phylink_create().”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jxh´M` hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jxh´M` hjøwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÜwubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj_xh]”hŒ Description”…”�”}”(hjaxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj]xubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mb hjÜwubjl)�”}”(hŒwRead the Energy Efficient Ethernet error counter from the PHY associated with the phylink instance specified by **pl**.”h]”(hŒpRead the Energy Efficient Ethernet error counter from the PHY associated with the phylink instance specified by ”…”�”}”(hjuxh²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hj}xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjuxubhŒ.”…”�”}”(hjuxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Ma hjÜwubjl)�”}”(hŒ=Returns positive error counter value, or negative error code.”h]”hŒ=Returns positive error counter value, or negative error code.”…”�”}”(hj–xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Md hjÜwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phylink_ethtool_get_eee (C function)”Œc.phylink_ethtool_get_eee”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒJint phylink_ethtool_get_eee (struct phylink *pl, struct ethtool_keee *eee)”h]”j )�”}”(hŒIint phylink_ethtool_get_eee(struct phylink *pl, struct ethtool_keee *eee)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjÅxh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÁxh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mu ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔxh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÁxh²hh³jÓxh´Mu ubj3)�”}”(hŒphylink_ethtool_get_eee”h]”j9)�”}”(hŒphylink_ethtool_get_eee”h]”hŒphylink_ethtool_get_eee”…”�”}”(hjæxh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâxubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjÁxh²hh³jÓxh´Mu ubj¡ )�”}”(hŒ.(struct phylink *pl, struct ethtool_keee *eee)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþxubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j"yŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jèxsbŒc.phylink_ethtool_get_eee”†”asbuh1hhjþxubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjþxubj )�”}”(hj h]”hŒ*”…”�”}”(hjNyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjþxubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj[yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjúxubj§ )�”}”(hŒstruct ethtool_keee *eee”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjtyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpyubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�yh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjpyubh)�”}”(hhh]”j9)�”}”(hŒ ethtool_keee”h]”hŒ ethtool_keee”…”�”}”(hj’yh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j”yŒmodname”NŒ classname”Njå jè )�”}”jë ]”j` returned from phylink_create() ``struct ethtool_keee *eee`` a pointer to a :c:type:`struct ethtool_keee ` for the read parameters”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjzh]”hŒ Parameters”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´My hjzubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj6zh]”hŒstruct phylink *pl”…”�”}”(hj8zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4zubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mv hj0zubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjOzh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjYzh]”hŒstruct phylink”…”�”}”(hj[zh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjWzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jKzh´Mv hjOzubhŒ returned from phylink_create()”…”�”}”(hjOzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jKzh´Mv hjLzuba•h}”(h]”h ]”h"]”h$]”h&]”uh1jhj0zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jKzh´Mv hj-zubjä)�”}”(hŒp``struct ethtool_keee *eee`` a pointer to a :c:type:`struct ethtool_keee ` for the read parameters”h]”(jê)�”}”(hŒ``struct ethtool_keee *eee``”h]”jð)�”}”(hj’zh]”hŒstruct ethtool_keee *eee”…”�”}”(hj”zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�zubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mx hjŒzubj)�”}”(hhh]”jl)�”}”(hŒSa pointer to a :c:type:`struct ethtool_keee ` for the read parameters”h]”(hŒa pointer to a ”…”�”}”(hj«zh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct ethtool_keee `”h]”jð)�”}”(hjµzh]”hŒstruct ethtool_keee”…”�”}”(hj·zh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj³zubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ ethtool_keee”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mw hj«zubhŒ for the read parameters”…”�”}”(hj«zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÒzh´Mw hj¨zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j§zh´Mx hj-zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phylink_ethtool_set_eee (C function)”Œc.phylink_ethtool_set_eee”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒJint phylink_ethtool_set_eee (struct phylink *pl, struct ethtool_keee *eee)”h]”j )�”}”(hŒIint phylink_ethtool_set_eee(struct phylink *pl, struct ethtool_keee *eee)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj {h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj {h²hh³j{h´M� ubj3)�”}”(hŒphylink_ethtool_set_eee”h]”j9)�”}”(hŒphylink_ethtool_set_eee”h]”hŒphylink_ethtool_set_eee”…”�”}”(hj0{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,{ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj {h²hh³j{h´M� ubj¡ )�”}”(hŒ.(struct phylink *pl, struct ethtool_keee *eee)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjL{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjH{ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjj{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjg{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jl{Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j2{sbŒc.phylink_ethtool_set_eee”†”asbuh1hhjH{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjH{ubj )�”}”(hj h]”hŒ*”…”�”}”(hj˜{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjH{ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hj¥{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjH{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjD{ubj§ )�”}”(hŒstruct ethtool_keee *eee”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¾{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjº{ubh)�”}”(hhh]”j9)�”}”(hŒ ethtool_keee”h]”hŒ ethtool_keee”…”�”}”(hjÜ{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÞ{Œmodname”NŒ classname”Njå jè )�”}”jë ]”j†{Œc.phylink_ethtool_set_eee”†”asbuh1hhjº{ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú{h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjº{ubj )�”}”(hj h]”hŒ*”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjº{ubj9)�”}”(hŒeee”h]”hŒeee”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjº{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjD{ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj {h²hh³j{h´M� ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj{h²hh³j{h´M� ubah}”(h]”j{ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j{h´M� hj{h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,set the energy efficient ethernet parameters”h]”hŒ,set the energy efficient ethernet parameters”…”�”}”(hj?|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hj<|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj{h²hh³j{h´M� ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jW|jŒjW|j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hŒð**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct ethtool_keee *eee`` a pointer to a :c:type:`struct ethtool_keee ` for the desired parameters”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hja|h]”hŒ Parameters”…”�”}”(hjc|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj_|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M“ hj[|ubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj€|h]”hŒstruct phylink *pl”…”�”}”(hj‚|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M� hjz|ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj™|h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj£|h]”hŒstruct phylink”…”�”}”(hj¥|h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¡|ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j•|h´M� hj™|ubhŒ returned from phylink_create()”…”�”}”(hj™|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•|h´M� hj–|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•|h´M� hjw|ubjä)�”}”(hŒs``struct ethtool_keee *eee`` a pointer to a :c:type:`struct ethtool_keee ` for the desired parameters”h]”(jê)�”}”(hŒ``struct ethtool_keee *eee``”h]”jð)�”}”(hjÜ|h]”hŒstruct ethtool_keee *eee”…”�”}”(hjÞ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M’ hjÖ|ubj)�”}”(hhh]”jl)�”}”(hŒVa pointer to a :c:type:`struct ethtool_keee ` for the desired parameters”h]”(hŒa pointer to a ”…”�”}”(hjõ|h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct ethtool_keee `”h]”jð)�”}”(hjÿ|h]”hŒstruct ethtool_keee”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjý|ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ ethtool_keee”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M‘ hjõ|ubhŒ for the desired parameters”…”�”}”(hjõ|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j}h´M‘ hjò|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñ|h´M’ hjw|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj[|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_mii_ioctl (C function)”Œc.phylink_mii_ioctl”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒFint phylink_mii_ioctl (struct phylink *pl, struct ifreq *ifr, int cmd)”h]”j )�”}”(hŒEint phylink_mii_ioctl(struct phylink *pl, struct ifreq *ifr, int cmd)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjY}h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjU}h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MLubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU}h²hh³jg}h´MLubj3)�”}”(hŒphylink_mii_ioctl”h]”j9)�”}”(hŒphylink_mii_ioctl”h]”hŒphylink_mii_ioctl”…”�”}”(hjz}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv}ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjU}h²hh³jg}h´MLubj¡ )�”}”(hŒ0(struct phylink *pl, struct ifreq *ifr, int cmd)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj–}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’}ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj´}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j¶}Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j|}sbŒc.phylink_mii_ioctl”†”asbuh1hhj’}ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ}h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj’}ubj )�”}”(hj h]”hŒ*”…”�”}”(hjâ}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj’}ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjï}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ}ubj§ )�”}”(hŒstruct ifreq *ifr”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~ubh)�”}”(hhh]”j9)�”}”(hŒifreq”h]”hŒifreq”…”�”}”(hj&~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j(~Œmodname”NŒ classname”Njå jè )�”}”jë ]”jÐ}Œc.phylink_mii_ioctl”†”asbuh1hhj~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj~ubj )�”}”(hj h]”hŒ*”…”�”}”(hjR~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj~ubj9)�”}”(hŒifr”h]”hŒifr”…”�”}”(hj_~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ}ubj§ )�”}”(hŒint cmd”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjx~h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjt~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†~h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjt~ubj9)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj”~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŽ}ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjU}h²hh³jg}h´MLubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjQ}h²hh³jg}h´MLubah}”(h]”jL}ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jg}h´MLhjN}h²hubjg)�”}”(hhh]”jl)�”}”(hŒgeneric mii ioctl interface”h]”hŒgeneric mii ioctl interface”…”�”}”(hj¾~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MLhj»~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjN}h²hh³jg}h´MLubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÖ~jŒjÖ~j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX}**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``struct ifreq *ifr`` a pointer to a :c:type:`struct ifreq ` for socket ioctls ``int cmd`` ioctl cmd to execute **Description** Perform the specified MII ioctl on the PHY attached to the phylink instance specified by **pl**. If no PHY is attached, emulate the presence of the PHY. ``SIOCGMIIPHY``: read register from the current PHY. ``SIOCGMIIREG``: read register from the specified PHY. ``SIOCSMIIREG``: set a register on the specified PHY. **Return** zero on success or negative error code.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjà~h]”hŒ Parameters”…”�”}”(hjâ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÞ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MPhjÚ~ubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjÿ~h]”hŒstruct phylink *pl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjý~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MMhjù~ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj"h]”hŒstruct phylink”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³jh´MMhjubhŒ returned from phylink_create()”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jh´MMhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´MMhjö~ubjä)�”}”(hŒV``struct ifreq *ifr`` a pointer to a :c:type:`struct ifreq ` for socket ioctls ”h]”(jê)�”}”(hŒ``struct ifreq *ifr``”h]”jð)�”}”(hj[h]”hŒstruct ifreq *ifr”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MNhjUubj)�”}”(hhh]”jl)�”}”(hŒ?a pointer to a :c:type:`struct ifreq ` for socket ioctls”h]”(hŒa pointer to a ”…”�”}”(hjth²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct ifreq `”h]”jð)�”}”(hj~h]”hŒ struct ifreq”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj|ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œifreq”uh1hh³jph´MNhjtubhŒ for socket ioctls”…”�”}”(hjth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jph´MNhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jph´MNhjö~ubjä)�”}”(hŒ!``int cmd`` ioctl cmd to execute ”h]”(jê)�”}”(hŒ ``int cmd``”h]”jð)�”}”(hj·h]”hŒint cmd”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MOhj±ubj)�”}”(hhh]”jl)�”}”(hŒioctl cmd to execute”h]”hŒioctl cmd to execute”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÌh´MOhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÌh´MOhjö~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚ~ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjòh]”hŒ Description”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MQhjÚ~ubjl)�”}”(hŒ˜Perform the specified MII ioctl on the PHY attached to the phylink instance specified by **pl**. If no PHY is attached, emulate the presence of the PHY.”h]”(hŒYPerform the specified MII ioctl on the PHY attached to the phylink instance specified by ”…”�”}”(hj€h²hh³Nh´Nubj›)�”}”(hŒ**pl**”h]”hŒpl”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj€ubhŒ9. If no PHY is attached, emulate the presence of the PHY.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MPhjÚ~ubjß)�”}”(hhh]”(jä)�”}”(hŒ4``SIOCGMIIPHY``: read register from the current PHY.”h]”(jê)�”}”(hŒ``SIOCGMIIPHY``:”h]”(jð)�”}”(hŒ``SIOCGMIIPHY``”h]”hŒ SIOCGMIIPHY”…”�”}”(hj4€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0€ubhŒ:”…”�”}”(hj0€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MThj,€ubj)�”}”(hhh]”jl)�”}”(hŒ#read register from the current PHY.”h]”hŒ#read register from the current PHY.”…”�”}”(hjP€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MUhjM€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jL€h´MThj)€ubjä)�”}”(hŒ6``SIOCGMIIREG``: read register from the specified PHY.”h]”(jê)�”}”(hŒ``SIOCGMIIREG``:”h]”(jð)�”}”(hŒ``SIOCGMIIREG``”h]”hŒ SIOCGMIIREG”…”�”}”(hjs€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjo€ubhŒ:”…”�”}”(hjo€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MVhjk€ubj)�”}”(hhh]”jl)�”}”(hŒ%read register from the specified PHY.”h]”hŒ%read register from the specified PHY.”…”�”}”(hj�€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MWhjŒ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹€h´MVhj)€ubjä)�”}”(hŒ6``SIOCSMIIREG``: set a register on the specified PHY. ”h]”(jê)�”}”(hŒ``SIOCSMIIREG``:”h]”(jð)�”}”(hŒ``SIOCSMIIREG``”h]”hŒ SIOCSMIIREG”…”�”}”(hj²€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®€ubhŒ:”…”�”}”(hj®€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MYhjª€ubj)�”}”(hhh]”jl)�”}”(hŒ$set a register on the specified PHY.”h]”hŒ$set a register on the specified PHY.”…”�”}”(hj΀h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÊ€h´MYhjË€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjª€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÊ€h´MYhj)€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚ~ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hjð€h]”hŒReturn”…”�”}”(hjò€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjî€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M[hjÚ~ubjl)�”}”(hŒ'zero on success or negative error code.”h]”hŒ'zero on success or negative error code.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MThjÚ~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_speed_down (C function)”Œc.phylink_speed_down”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ6int phylink_speed_down (struct phylink *pl, bool sync)”h]”j )�”}”(hŒ5int phylink_speed_down(struct phylink *pl, bool sync)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj1�h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mšubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj1�h²hh³jC�h´Mšubj3)�”}”(hŒphylink_speed_down”h]”j9)�”}”(hŒphylink_speed_down”h]”hŒphylink_speed_down”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjR�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj1�h²hh³jC�h´Mšubj¡ )�”}”(hŒ(struct phylink *pl, bool sync)”h]”(j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjn�ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj��ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j’�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jX�sbŒc.phylink_speed_down”†”asbuh1hhjn�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjn�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjn�ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjË�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjn�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjj�ubj§ )�”}”(hŒ bool sync”h]”(jM )�”}”(hjh]”hŒbool”…”�”}”(hjä�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjà�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjà�ubj9)�”}”(hŒsync”h]”hŒsync”…”�”}”(hjÿ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjj�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj1�h²hh³jC�h´Mšubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj-�h²hh³jC�h´Mšubah}”(h]”j(�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jC�h´Mšhj*�h²hubjg)�”}”(hhh]”jl)�”}”(hŒCset the non-SFP PHY to lowest speed supported by both link partners”h]”hŒCset the non-SFP PHY to lowest speed supported by both link partners”…”�”}”(hj)‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mšhj&‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj*�h²hh³jC�h´Mšubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jA‚jŒjA‚j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX¹**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ``bool sync`` perform action synchronously **Description** If we have a PHY that is not part of a SFP module, then set the speed as described in the phy_speed_down() function. Please see this function for a description of the **sync** parameter. Returns zero if there is no PHY, otherwise as per phy_speed_down().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjK‚h]”hŒ Parameters”…”�”}”(hjM‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjI‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MžhjE‚ubjß)�”}”(hhh]”(jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjj‚h]”hŒstruct phylink *pl”…”�”}”(hjl‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjh‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mœhjd‚ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjƒ‚h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj�‚h]”hŒstruct phylink”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj‹‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j‚h´Mœhjƒ‚ubhŒ returned from phylink_create()”…”�”}”(hjƒ‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚h´Mœhj€‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚h´Mœhja‚ubjä)�”}”(hŒ+``bool sync`` perform action synchronously ”h]”(jê)�”}”(hŒ ``bool sync``”h]”jð)�”}”(hjÆ‚h]”hŒ bool sync”…”�”}”(hjÈ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÄ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M�hjÀ‚ubj)�”}”(hhh]”jl)�”}”(hŒperform action synchronously”h]”hŒperform action synchronously”…”�”}”(hjß‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÛ‚h´M�hjÜ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÛ‚h´M�hja‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjE‚ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjƒh]”hŒ Description”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÿ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MŸhjE‚ubjl)�”}”(hŒºIf we have a PHY that is not part of a SFP module, then set the speed as described in the phy_speed_down() function. Please see this function for a description of the **sync** parameter.”h]”(hŒ§If we have a PHY that is not part of a SFP module, then set the speed as described in the phy_speed_down() function. Please see this function for a description of the ”…”�”}”(hjƒh²hh³Nh´Nubj›)�”}”(hŒ**sync**”h]”hŒsync”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjƒubhŒ parameter.”…”�”}”(hjƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MžhjE‚ubjl)�”}”(hŒCReturns zero if there is no PHY, otherwise as per phy_speed_down().”h]”hŒCReturns zero if there is no PHY, otherwise as per phy_speed_down().”…”�”}”(hj8ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¢hjE‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒphylink_speed_up (C function)”Œc.phylink_speed_up”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ)int phylink_speed_up (struct phylink *pl)”h]”j )�”}”(hŒ(int phylink_speed_up(struct phylink *pl)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjgƒh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjcƒh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjcƒh²hh³juƒh´M³ubj3)�”}”(hŒphylink_speed_up”h]”j9)�”}”(hŒphylink_speed_up”h]”hŒphylink_speed_up”…”�”}”(hjˆƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„ƒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjcƒh²hh³juƒh´M³ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¤ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±ƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ƒubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jăŒmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jŠƒsbŒc.phylink_speed_up”†”asbuh1hhj ƒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâƒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ƒubj )�”}”(hj h]”hŒ*”…”�”}”(hjðƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ƒubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjýƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjœƒubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjcƒh²hh³juƒh´M³ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj_ƒh²hh³juƒh´M³ubah}”(h]”jZƒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³juƒh´M³hj\ƒh²hubjg)�”}”(hhh]”jl)�”}”(hŒGrestore the advertised speeds prior to the call to phylink_speed_down()”h]”hŒGrestore the advertised speeds prior to the call to phylink_speed_down()”…”�”}”(hj'„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M³hj$„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj\ƒh²hh³juƒh´M³ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j?„jŒj?„j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX4**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** If we have a PHY that is not part of a SFP module, then restore the PHY speeds as per phy_speed_up(). Returns zero if there is no PHY, otherwise as per phy_speed_up().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjI„h]”hŒ Parameters”…”�”}”(hjK„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjG„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M·hjC„ubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjh„h]”hŒstruct phylink *pl”…”�”}”(hjj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjf„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mµhjb„ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj�„h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hj‹„h]”hŒstruct phylink”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj‰„ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j}„h´Mµhj�„ubhŒ returned from phylink_create()”…”�”}”(hj�„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j}„h´Mµhj~„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j}„h´Mµhj_„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjC„ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÆ„h]”hŒ Description”…”�”}”(hjÈ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÄ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M·hjC„ubjl)�”}”(hŒeIf we have a PHY that is not part of a SFP module, then restore the PHY speeds as per phy_speed_up().”h]”hŒeIf we have a PHY that is not part of a SFP module, then restore the PHY speeds as per phy_speed_up().”…”�”}”(hjÜ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¶hjC„ubjl)�”}”(hŒAReturns zero if there is no PHY, otherwise as per phy_speed_up().”h]”hŒAReturns zero if there is no PHY, otherwise as per phy_speed_up().”…”�”}”(hjë„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¹hjC„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ(phylink_decode_usxgmii_word (C function)”Œc.phylink_decode_usxgmii_word”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒQvoid phylink_decode_usxgmii_word (struct phylink_link_state *state, uint16_t lpa)”h]”j )�”}”(hŒPvoid phylink_decode_usxgmii_word(struct phylink_link_state *state, uint16_t lpa)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj…h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¸ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj…h²hh³j(…h´M¸ubj3)�”}”(hŒphylink_decode_usxgmii_word”h]”j9)�”}”(hŒphylink_decode_usxgmii_word”h]”hŒphylink_decode_usxgmii_word”…”�”}”(hj;…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7…ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj…h²hh³j(…h´M¸ubj¡ )�”}”(hŒ0(struct phylink_link_state *state, uint16_t lpa)”h]”(j§ )�”}”(hŒ struct phylink_link_state *state”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjW…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjS…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjS…ubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hju…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jw…Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j=…sbŒc.phylink_decode_usxgmii_word”†”asbuh1hhjS…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjS…ubj )�”}”(hj h]”hŒ*”…”�”}”(hj£…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjS…ubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj°…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjS…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjO…ubj§ )�”}”(hŒ uint16_t lpa”h]”(h)�”}”(hhh]”j9)�”}”(hŒuint16_t”h]”hŒuint16_t”…”�”}”(hjÌ…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉ…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÎ…Œmodname”NŒ classname”Njå jè )�”}”jë ]”j‘…Œc.phylink_decode_usxgmii_word”†”asbuh1hhjÅ…ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê…h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÅ…ubj9)�”}”(hŒlpa”h]”hŒlpa”…”�”}”(hjø…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjO…ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj…h²hh³j(…h´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj…h²hh³j(…h´M¸ubah}”(h]”j …ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j(…h´M¸hj…h²hubjg)�”}”(hhh]”jl)�”}”(hŒ&decode the USXGMII word from a MAC PCS”h]”hŒ&decode the USXGMII word from a MAC PCS”…”�”}”(hj"†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¸hj†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj…h²hh³j(…h´M¸ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j:†jŒj:†j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX–**Parameters** ``struct phylink_link_state *state`` a pointer to a struct phylink_link_state. ``uint16_t lpa`` a 16 bit value which stores the USXGMII auto-negotiation word **Description** Helper for MAC PCS supporting the USXGMII protocol and the auto-negotiation code word. Decode the USXGMII code word and populate the corresponding fields (speed, duplex) into the phylink_link_state structure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjD†h]”hŒ Parameters”…”�”}”(hjF†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjB†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¼hj>†ubjß)�”}”(hhh]”(jä)�”}”(hŒO``struct phylink_link_state *state`` a pointer to a struct phylink_link_state. ”h]”(jê)�”}”(hŒ$``struct phylink_link_state *state``”h]”jð)�”}”(hjc†h]”hŒ struct phylink_link_state *state”…”�”}”(hje†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhja†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¹hj]†ubj)�”}”(hhh]”jl)�”}”(hŒ)a pointer to a struct phylink_link_state.”h]”hŒ)a pointer to a struct phylink_link_state.”…”�”}”(hj|†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jx†h´M¹hjy†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jx†h´M¹hjZ†ubjä)�”}”(hŒO``uint16_t lpa`` a 16 bit value which stores the USXGMII auto-negotiation word ”h]”(jê)�”}”(hŒ``uint16_t lpa``”h]”jð)�”}”(hjœ†h]”hŒ uint16_t lpa”…”�”}”(hjž†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjš†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mºhj–†ubj)�”}”(hhh]”jl)�”}”(hŒ=a 16 bit value which stores the USXGMII auto-negotiation word”h]”hŒ=a 16 bit value which stores the USXGMII auto-negotiation word”…”�”}”(hjµ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j±†h´Mºhj²†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j±†h´MºhjZ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj>†ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj׆h]”hŒ Description”…”�”}”(hjÙ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÕ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¼hj>†ubjl)�”}”(hŒÑHelper for MAC PCS supporting the USXGMII protocol and the auto-negotiation code word. Decode the USXGMII code word and populate the corresponding fields (speed, duplex) into the phylink_link_state structure.”h]”hŒÑHelper for MAC PCS supporting the USXGMII protocol and the auto-negotiation code word. Decode the USXGMII code word and populate the corresponding fields (speed, duplex) into the phylink_link_state structure.”…”�”}”(hjí†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M»hj>†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phylink_decode_usgmii_word (C function)”Œc.phylink_decode_usgmii_word”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒPvoid phylink_decode_usgmii_word (struct phylink_link_state *state, uint16_t lpa)”h]”j )�”}”(hŒOvoid phylink_decode_usgmii_word(struct phylink_link_state *state, uint16_t lpa)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj‡h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mãubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj‡h²hh³j*‡h´Mãubj3)�”}”(hŒphylink_decode_usgmii_word”h]”j9)�”}”(hŒphylink_decode_usgmii_word”h]”hŒphylink_decode_usgmii_word”…”�”}”(hj=‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9‡ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj‡h²hh³j*‡h´Mãubj¡ )�”}”(hŒ0(struct phylink_link_state *state, uint16_t lpa)”h]”(j§ )�”}”(hŒ struct phylink_link_state *state”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjY‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjU‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU‡ubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hjw‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jy‡Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j?‡sbŒc.phylink_decode_usgmii_word”†”asbuh1hhjU‡ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjU‡ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¥‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjU‡ubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj²‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjQ‡ubj§ )�”}”(hŒ uint16_t lpa”h]”(h)�”}”(hhh]”j9)�”}”(hŒuint16_t”h]”hŒuint16_t”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jЇŒmodname”NŒ classname”Njå jè )�”}”jë ]”j“‡Œc.phylink_decode_usgmii_word”†”asbuh1hhjLJubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì‡h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjLJubj9)�”}”(hŒlpa”h]”hŒlpa”…”�”}”(hjú‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjQ‡ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj‡h²hh³j*‡h´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj‡h²hh³j*‡h´Mãubah}”(h]”j‡ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j*‡h´Mãhj‡h²hubjg)�”}”(hhh]”jl)�”}”(hŒ%decode the USGMII word from a MAC PCS”h]”hŒ%decode the USGMII word from a MAC PCS”…”�”}”(hj$ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mãhj!ˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‡h²hh³j*‡h´Mãubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j<ˆjŒj<ˆj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXü**Parameters** ``struct phylink_link_state *state`` a pointer to a struct phylink_link_state. ``uint16_t lpa`` a 16 bit value which stores the USGMII auto-negotiation word **Description** Helper for MAC PCS supporting the USGMII protocol and the auto-negotiation code word. Decode the USGMII code word and populate the corresponding fields (speed, duplex) into the phylink_link_state structure. The structure for this word is the same as the USXGMII word, except it only supports speeds up to 1Gbps.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjFˆh]”hŒ Parameters”…”�”}”(hjHˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjDˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mçhj@ˆubjß)�”}”(hhh]”(jä)�”}”(hŒO``struct phylink_link_state *state`` a pointer to a struct phylink_link_state. ”h]”(jê)�”}”(hŒ$``struct phylink_link_state *state``”h]”jð)�”}”(hjeˆh]”hŒ struct phylink_link_state *state”…”�”}”(hjgˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjcˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mähj_ˆubj)�”}”(hhh]”jl)�”}”(hŒ)a pointer to a struct phylink_link_state.”h]”hŒ)a pointer to a struct phylink_link_state.”…”�”}”(hj~ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jzˆh´Mähj{ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jzˆh´Mähj\ˆubjä)�”}”(hŒN``uint16_t lpa`` a 16 bit value which stores the USGMII auto-negotiation word ”h]”(jê)�”}”(hŒ``uint16_t lpa``”h]”jð)�”}”(hjžˆh]”hŒ uint16_t lpa”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjœˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Måhj˜ˆubj)�”}”(hhh]”jl)�”}”(hŒ`. ``unsigned int neg_mode`` link negotiation mode (PHYLINK_PCS_NEG_xxx) ``u16 bmsr`` The value of the ``MII_BMSR`` register ``u16 lpa`` The value of the ``MII_LPA`` register **Description** Helper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control. Parse the Clause 37 or Cisco SGMII link partner negotiation word into the phylink **state** structure. This is suitable to be used for implementing the pcs_get_state() member of the struct phylink_pcs_ops structure if accessing **bmsr** and **lpa** cannot be done with MDIO directly.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjáŠh]”hŒ Parameters”…”�”}”(hjãŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjߊubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjÛŠubjß)�”}”(hhh]”(jä)�”}”(hŒn``struct phylink_link_state *state`` a pointer to a :c:type:`struct phylink_link_state `. ”h]”(jê)�”}”(hŒ$``struct phylink_link_state *state``”h]”jð)�”}”(hj‹h]”hŒ struct phylink_link_state *state”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjþŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MhjúŠubj)�”}”(hhh]”jl)�”}”(hŒHa pointer to a :c:type:`struct phylink_link_state `.”h]”(hŒa pointer to a ”…”�”}”(hj‹h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct phylink_link_state `”h]”jð)�”}”(hj#‹h]”hŒstruct phylink_link_state”…”�”}”(hj%‹h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj!‹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_link_state”uh1hh³j‹h´Mhj‹ubhŒ.”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‹h´Mhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‹h´Mhj÷Šubjä)�”}”(hŒF``unsigned int neg_mode`` link negotiation mode (PHYLINK_PCS_NEG_xxx) ”h]”(jê)�”}”(hŒ``unsigned int neg_mode``”h]”jð)�”}”(hj\‹h]”hŒunsigned int neg_mode”…”�”}”(hj^‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjZ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MhjV‹ubj)�”}”(hhh]”jl)�”}”(hŒ+link negotiation mode (PHYLINK_PCS_NEG_xxx)”h]”hŒ+link negotiation mode (PHYLINK_PCS_NEG_xxx)”…”�”}”(hju‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jq‹h´Mhjr‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjV‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jq‹h´Mhj÷Šubjä)�”}”(hŒ4``u16 bmsr`` The value of the ``MII_BMSR`` register ”h]”(jê)�”}”(hŒ ``u16 bmsr``”h]”jð)�”}”(hj•‹h]”hŒu16 bmsr”…”�”}”(hj—‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj“‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj�‹ubj)�”}”(hhh]”jl)�”}”(hŒ&The value of the ``MII_BMSR`` register”h]”(hŒThe value of the ”…”�”}”(hj®‹h²hh³Nh´Nubjð)�”}”(hŒ ``MII_BMSR``”h]”hŒMII_BMSR”…”�”}”(hj¶‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj®‹ubhŒ register”…”�”}”(hj®‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jª‹h´M hj«‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jª‹h´M hj÷Šubjä)�”}”(hŒ2``u16 lpa`` The value of the ``MII_LPA`` register ”h]”(jê)�”}”(hŒ ``u16 lpa``”h]”jð)�”}”(hjà‹h]”hŒu16 lpa”…”�”}”(hjâ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjÚ‹ubj)�”}”(hhh]”jl)�”}”(hŒ%The value of the ``MII_LPA`` register”h]”(hŒThe value of the ”…”�”}”(hjù‹h²hh³Nh´Nubjð)�”}”(hŒ ``MII_LPA``”h]”hŒMII_LPA”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjù‹ubhŒ register”…”�”}”(hjù‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõ‹h´M hjö‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõ‹h´M hj÷Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÛŠubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj-Œh]”hŒ Description”…”�”}”(hj/Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj+Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjÛŠubjl)�”}”(hŒnHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control.”h]”hŒnHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control.”…”�”}”(hjCŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjÛŠubjl)�”}”(hXParse the Clause 37 or Cisco SGMII link partner negotiation word into the phylink **state** structure. This is suitable to be used for implementing the pcs_get_state() member of the struct phylink_pcs_ops structure if accessing **bmsr** and **lpa** cannot be done with MDIO directly.”h]”(hŒRParse the Clause 37 or Cisco SGMII link partner negotiation word into the phylink ”…”�”}”(hjRŒh²hh³Nh´Nubj›)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjZŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjRŒubhŒ‰ structure. This is suitable to be used for implementing the pcs_get_state() member of the struct phylink_pcs_ops structure if accessing ”…”�”}”(hjRŒh²hh³Nh´Nubj›)�”}”(hŒ**bmsr**”h]”hŒbmsr”…”�”}”(hjlŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjRŒubhŒ and ”…”�”}”(hjRŒh²hh³Nh´Nubj›)�”}”(hŒ**lpa**”h]”hŒlpa”…”�”}”(hj~Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjRŒubhŒ# cannot be done with MDIO directly.”…”�”}”(hjRŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MhjÛŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*phylink_mii_c22_pcs_get_state (C function)”Œc.phylink_mii_c22_pcs_get_state”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒuvoid phylink_mii_c22_pcs_get_state (struct mdio_device *pcs, unsigned int neg_mode, struct phylink_link_state *state)”h]”j )�”}”(hŒtvoid phylink_mii_c22_pcs_get_state(struct mdio_device *pcs, unsigned int neg_mode, struct phylink_link_state *state)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj·Œh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj³Œh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MGubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆŒh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³Œh²hh³jÅŒh´MGubj3)�”}”(hŒphylink_mii_c22_pcs_get_state”h]”j9)�”}”(hŒphylink_mii_c22_pcs_get_state”h]”hŒphylink_mii_c22_pcs_get_state”…”�”}”(hjØŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔŒubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj³Œh²hh³jÅŒh´MGubj¡ )�”}”(hŒR(struct mdio_device *pcs, unsigned int neg_mode, struct phylink_link_state *state)”h]”(j§ )�”}”(hŒstruct mdio_device *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjôŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðŒubh)�”}”(hhh]”j9)�”}”(hŒ mdio_device”h]”hŒ mdio_device”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÚŒsbŒc.phylink_mii_c22_pcs_get_state”†”asbuh1hhjðŒubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjðŒubj )�”}”(hj h]”hŒ*”…”�”}”(hj@�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjðŒubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hjM�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjìŒubj§ )�”}”(hŒunsigned int neg_mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjb�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjb�ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjb�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjb�ubj9)�”}”(hŒneg_mode”h]”hŒneg_mode”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjb�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjìŒubj§ )�”}”(hŒ struct phylink_link_state *state”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj·�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³�ubh)�”}”(hhh]”j9)�”}”(hŒphylink_link_state”h]”hŒphylink_link_state”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j×�Œmodname”NŒ classname”Njå jè )�”}”jë ]”j.�Œc.phylink_mii_c22_pcs_get_state”†”asbuh1hhj³�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³�ubj )�”}”(hj h]”hŒ*”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj³�ubj9)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjìŒubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj³Œh²hh³jÅŒh´MGubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¯Œh²hh³jÅŒh´MGubah}”(h]”jªŒah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÅŒh´MGhj¬Œh²hubjg)�”}”(hhh]”jl)�”}”(hŒread the MAC PCS state”h]”hŒread the MAC PCS state”…”�”}”(hj8Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MGhj5Žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¬Œh²hh³jÅŒh´MGubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jPŽjŒjPŽj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXÄ**Parameters** ``struct mdio_device *pcs`` a pointer to a :c:type:`struct mdio_device `. ``unsigned int neg_mode`` link negotiation mode (PHYLINK_PCS_NEG_xxx) ``struct phylink_link_state *state`` a pointer to a :c:type:`struct phylink_link_state `. **Description** Helper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control. Read the MAC PCS state from the MII device configured in **config** and parse the Clause 37 or Cisco SGMII link partner negotiation word into the phylink **state** structure. This is suitable to be directly plugged into the pcs_get_state() member of the struct phylink_pcs_ops structure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjZŽh]”hŒ Parameters”…”�”}”(hj\Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjXŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MKhjTŽubjß)�”}”(hhh]”(jä)�”}”(hŒW``struct mdio_device *pcs`` a pointer to a :c:type:`struct mdio_device `. ”h]”(jê)�”}”(hŒ``struct mdio_device *pcs``”h]”jð)�”}”(hjyŽh]”hŒstruct mdio_device *pcs”…”�”}”(hj{Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjwŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MHhjsŽubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct mdio_device `.”h]”(hŒa pointer to a ”…”�”}”(hj’Žh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct mdio_device `”h]”jð)�”}”(hjœŽh]”hŒstruct mdio_device”…”�”}”(hjžŽh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjšŽubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ mdio_device”uh1hh³jŽŽh´MHhj’ŽubhŒ.”…”�”}”(hj’Žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jŽŽh´MHhj�Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽŽh´MHhjpŽubjä)�”}”(hŒF``unsigned int neg_mode`` link negotiation mode (PHYLINK_PCS_NEG_xxx) ”h]”(jê)�”}”(hŒ``unsigned int neg_mode``”h]”jð)�”}”(hjÕŽh]”hŒunsigned int neg_mode”…”�”}”(hj׎h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÓŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MIhjÏŽubj)�”}”(hhh]”jl)�”}”(hŒ+link negotiation mode (PHYLINK_PCS_NEG_xxx)”h]”hŒ+link negotiation mode (PHYLINK_PCS_NEG_xxx)”…”�”}”(hjîŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jêŽh´MIhjëŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jêŽh´MIhjpŽubjä)�”}”(hŒn``struct phylink_link_state *state`` a pointer to a :c:type:`struct phylink_link_state `. ”h]”(jê)�”}”(hŒ$``struct phylink_link_state *state``”h]”jð)�”}”(hj�h]”hŒ struct phylink_link_state *state”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MJhj�ubj)�”}”(hhh]”jl)�”}”(hŒHa pointer to a :c:type:`struct phylink_link_state `.”h]”(hŒa pointer to a ”…”�”}”(hj'�h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct phylink_link_state `”h]”jð)�”}”(hj1�h]”hŒstruct phylink_link_state”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj/�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink_link_state”uh1hh³j#�h´MJhj'�ubhŒ.”…”�”}”(hj'�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j#�h´MJhj$�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j#�h´MJhjpŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjTŽubjl)�”}”(hŒ**Description**”•h]”j›)�”}”(hjl�h]”hŒ Description”…”�”}”(hjn�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MLhjTŽubjl)�”}”(hŒnHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control.”h]”hŒnHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control.”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MKhjTŽubjl)�”}”(hXRead the MAC PCS state from the MII device configured in **config** and parse the Clause 37 or Cisco SGMII link partner negotiation word into the phylink **state** structure. This is suitable to be directly plugged into the pcs_get_state() member of the struct phylink_pcs_ops structure.”h]”(hŒ9Read the MAC PCS state from the MII device configured in ”…”�”}”(hj‘�h²hh³Nh´Nubj›)�”}”(hŒ **config**”h]”hŒconfig”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘�ubhŒW and parse the Clause 37 or Cisco SGMII link partner negotiation word into the phylink ”…”�”}”(hj‘�h²hh³Nh´Nubj›)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘�ubhŒ| structure. This is suitable to be directly plugged into the pcs_get_state() member of the struct phylink_pcs_ops structure.”…”�”}”(hj‘�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MNhjTŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ5phylink_mii_c22_pcs_encode_advertisement (C function)”Œ*c.phylink_mii_c22_pcs_encode_advertisement”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒjint phylink_mii_c22_pcs_encode_advertisement (phy_interface_t interface, const unsigned long *advertising)”h]”j )�”}”(hŒiint phylink_mii_c22_pcs_encode_advertisement(phy_interface_t interface, const unsigned long *advertising)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjä�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjà�h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mgubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjà�h²hh³jò�h´Mgubj3)�”}”(hŒ(phylink_mii_c22_pcs_encode_advertisement”h]”j9)�”}”(hŒ(phylink_mii_c22_pcs_encode_advertisement”h]”hŒ(phylink_mii_c22_pcs_encode_advertisement”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjà�h²hh³jò�h´Mgubj¡ )�”}”(hŒ=(phy_interface_t interface, const unsigned long *advertising)”h]”(j§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j&�Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�sbŒ*c.phylink_mii_c22_pcs_encode_advertisement”†”asbuh1hhj�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj�ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�ubj§ )�”}”(hŒ const unsigned long *advertising”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg�ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjg�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg�ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjg�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg�ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjg�ubj9)�”}”(hŒ advertising”h]”hŒ advertising”…”�”}”(hjË�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjg�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjà�h²hh³jò�h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjÜ�h²hh³jò�h´Mgubah}”(h]”j×�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jò�h´MghjÙ�h²hubjg)�”}”(hhh]”jl)�”}”(hŒ)configure the clause 37 PCS advertisement”h]”hŒ)configure the clause 37 PCS advertisement”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mghjò�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÙ�h²hh³jò�h´Mgubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j ‘jŒj ‘j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXÎ**Parameters** ``phy_interface_t interface`` the PHY interface mode being configured ``const unsigned long *advertising`` the ethtool advertisement mask **Description** Helper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control. Encode the clause 37 PCS advertisement as specified by **interface** and **advertising**. **Return** The new value for **adv**, or ``-EINVAL`` if it should not be changed.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‘h]”hŒ Parameters”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mkhj‘ubjß)�”}”(hhh]”(jä)�”}”(hŒF``phy_interface_t interface`` the PHY interface mode being configured ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hj6‘h]”hŒphy_interface_t interface”…”�”}”(hj8‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj4‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mihj0‘ubj)�”}”(hhh]”jl)�”}”(hŒ'the PHY interface mode being configured”h]”hŒ'the PHY interface mode being configured”…”�”}”(hjO‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jK‘h´MihjL‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jK‘h´Mihj-‘ubjä)�”}”(hŒD``const unsigned long *advertising`` the ethtool advertisement mask ”h]”(jê)�”}”(hŒ$``const unsigned long *advertising``”h]”jð)�”}”(hjo‘h]”hŒ const unsigned long *advertising”…”�”}”(hjq‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjm‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mjhji‘ubj)�”}”(hhh]”jl)�”}”(hŒthe ethtool advertisement mask”h]”hŒthe ethtool advertisement mask”…”�”}”(hjˆ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„‘h´Mjhj…‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„‘h´Mjhj-‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjª‘h]”hŒ Description”…”�”}”(hj¬‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¨‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mlhj‘ubjl)�”}”(hŒnHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control.”h]”hŒnHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation and/or SGMII control.”…”�”}”(hjÀ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mkhj‘ubjl)�”}”(hŒYEncode the clause 37 PCS advertisement as specified by **interface** and **advertising**.”h]”(hŒ7Encode the clause 37 PCS advertisement as specified by ”…”�”}”(hjÏ‘h²hh³Nh´Nubj›)�”}”(hŒ **interface**”h]”hŒ interface”…”�”}”(hjבh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏ‘ubhŒ and ”…”�”}”(hjÏ‘h²hh³Nh´Nubj›)�”}”(hŒ**advertising**”h]”hŒ advertising”…”�”}”(hjé‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÏ‘ubhŒ.”…”�”}”(hjÏ‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mnhj‘ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj’h]”hŒReturn”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mqhj‘ubjl)�”}”(hŒFThe new value for **adv**, or ``-EINVAL`` if it should not be changed.”h]”(hŒThe new value for ”…”�”}”(hj’h²hh³Nh´Nubj›)�”}”(hŒ**adv**”h]”hŒadv”…”�”}”(hj"’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’ubhŒ, or ”…”�”}”(hj’h²hh³Nh´Nubjð)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hj4’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’ubhŒ if it should not be changed.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mrhj‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ'phylink_mii_c22_pcs_config (C function)”Œc.phylink_mii_c22_pcs_config”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒŒint phylink_mii_c22_pcs_config (struct mdio_device *pcs, phy_interface_t interface, const unsigned long *advertising, unsigned int neg_mode)”h]”j )�”}”(hŒ‹int phylink_mii_c22_pcs_config(struct mdio_device *pcs, phy_interface_t interface, const unsigned long *advertising, unsigned int neg_mode)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjm’h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hji’h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M�ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hji’h²hh³j{’h´M�ubj3)�”}”(hŒphylink_mii_c22_pcs_config”h]”j9)�”}”(hŒphylink_mii_c22_pcs_config”h]”hŒphylink_mii_c22_pcs_config”…”�”}”(hjŽ’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠ’ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hji’h²hh³j{’h´M�ubj¡ )�”}”(hŒm(struct mdio_device *pcs, phy_interface_t interface, const unsigned long *advertising, unsigned int neg_mode)”h]”(j§ )�”}”(hŒstruct mdio_device *pcs”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjª’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦’ubh)�”}”(hhh]”j9)�”}”(hŒ mdio_device”h]”hŒ mdio_device”…”�”}”(hjÈ’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÊ’Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�’sbŒc.phylink_mii_c22_pcs_config”†”asbuh1hhj¦’ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè’h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¦’ubj )�”}”(hj h]”hŒ*”…”�”}”(hjö’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¦’ubj9)�”}”(hŒpcs”h]”hŒpcs”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢’ubj§ )�”}”(hŒphy_interface_t interface”h]”(h)�”}”(hhh]”j9)�”}”(hŒphy_interface_t”h]”hŒphy_interface_t”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j!“Œmodname”NŒ classname”Njå jè )�”}”jë ]”jä’Œc.phylink_mii_c22_pcs_config”†”asbuh1hhj“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj“ubj9)�”}”(hŒ interface”h]”hŒ interface”…”�”}”(hjK“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢’ubj§ )�”}”(hŒ const unsigned long *advertising”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjd“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`“ubjM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj`“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`“ubjM )�”}”(hŒlong”h]”hŒlong”…”�”}”(hj›“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj`“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj`“ubj )�”}”(hj h]”hŒ*”…”�”}”(hj·“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj`“ubj9)�”}”(hŒ advertising”h]”hŒ advertising”…”�”}”(hjÄ“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢’ubj§ )�”}”(hŒunsigned int neg_mode”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÝ“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÙ“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë“h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ“ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hjù“h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjÙ“ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjÙ“ubj9)�”}”(hŒneg_mode”h]”hŒneg_mode”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¢’ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hji’h²hh³j{’h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhje’h²hh³j{’h´M�ubah}”(h]”j`’ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j{’h´M�hjb’h²hubjg)�”}”(hhh]”jl)�”}”(hŒconfigure clause 22 PCS”h]”hŒconfigure clause 22 PCS”…”�”}”(hj?”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M�hj<”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjb’h²hh³j{’h´M�ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jW”jŒjW”j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hX=**Parameters** ``struct mdio_device *pcs`` a pointer to a :c:type:`struct mdio_device `. ``phy_interface_t interface`` the PHY interface mode being configured ``const unsigned long *advertising`` the ethtool advertisement mask ``unsigned int neg_mode`` PCS negotiation mode **Description** Configure a Clause 22 PCS PHY with the appropriate negotiation parameters for the **mode**, **interface** and **advertising** parameters. Returns negative error number on failure, zero if the advertisement has not changed, or positive if there is a change.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hja”h]”hŒ Parameters”…”�”}”(hjc”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj_”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M”hj[”ubjß)�”}”(hhh]”(jä)�”}”(hŒW``struct mdio_device *pcs`` a pointer to a :c:type:`struct mdio_device `. ”h]”(jê)�”}”(hŒ``struct mdio_device *pcs``”h]”jð)�”}”(hj€”h]”hŒstruct mdio_device *pcs”…”�”}”(hj‚”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M‘hjz”ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct mdio_device `.”h]”(hŒa pointer to a ”…”�”}”(hj™”h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct mdio_device `”h]”jð)�”}”(hj£”h]”hŒstruct mdio_device”…”�”}”(hj¥”h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¡”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ mdio_device”uh1hh³j•”h´M‘hj™”ubhŒ.”…”�”}”(hj™”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•”h´M‘hj–”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•”h´M‘hjw”ubjä)�”}”(hŒF``phy_interface_t interface`` the PHY interface mode being configured ”h]”(jê)�”}”(hŒ``phy_interface_t interface``”h]”jð)�”}”(hjÜ”h]”hŒphy_interface_t interface”…”�”}”(hjÞ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÚ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M’hjÖ”ubj)�”}”(hhh]”jl)�”}”(hŒ'the PHY interface mode being configured”h]”hŒ'the PHY interface mode being configured”…”�”}”(hjõ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jñ”h´M’hjò”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jñ”h´M’hjw”ubjä)�”}”(hŒD``const unsigned long *advertising`` the ethtool advertisement mask ”h]”(jê)�”}”(hŒ$``const unsigned long *advertising``”h]”jð)�”}”(hj•h]”hŒ const unsigned long *advertising”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M“hj•ubj)�”}”(hhh]”jl)�”}”(hŒthe ethtool advertisement mask”h]”hŒthe ethtool advertisement mask”…”�”}”(hj.•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j*•h´M“hj+•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j*•h´M“hjw”ubjä)�”}”(hŒ/``unsigned int neg_mode`` PCS negotiation mode ”h]”(jê)�”}”(hŒ``unsigned int neg_mode``”h]”jð)�”}”(hjN•h]”hŒunsigned int neg_mode”…”�”}”(hjP•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjL•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M”hjH•ubj)�”}”(hhh]”jl)�”}”(hŒPCS negotiation mode”h]”hŒPCS negotiation mode”…”�”}”(hjg•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jc•h´M”hjd•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jc•h´M”hjw”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj[”ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj‰•h]”hŒ Description”…”�”}”(hj‹•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M–hj[”ubjl)�”}”(hXConfigure a Clause 22 PCS PHY with the appropriate negotiation parameters for the **mode**, **interface** and **advertising** parameters. Returns negative error number on failure, zero if the advertisement has not changed, or positive if there is a change.”h]”(hŒRConfigure a Clause 22 PCS PHY with the appropriate negotiation parameters for the ”…”�”}”(hjŸ•h²hh³Nh´Nubj›)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hj§•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸ•ubhŒ, ”…”�”}”(hjŸ•h²hh³Nh´Nubj›)�”}”(hŒ **interface**”h]”hŒ interface”…”�”}”(hj¹•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸ•ubhŒ and ”…”�”}”(hjŸ•h²hh³Nh´Nubj›)�”}”(hŒ**advertising**”h]”hŒ advertising”…”�”}”(hjË•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŸ•ubhŒƒ parameters. Returns negative error number on failure, zero if the advertisement has not changed, or positive if there is a change.”…”�”}”(hjŸ•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M•hj[”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ+phylink_mii_c22_pcs_an_restart (C function)”Œ c.phylink_mii_c22_pcs_an_restart”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ=void phylink_mii_c22_pcs_an_restart (struct mdio_device *pcs)”h]”j )�”}”(hŒ`. **Description** Helper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation. Restart the clause 37 negotiation with the link partner. This is suitable to be directly plugged into the pcs_get_state() member of the struct phylink_pcs_ops structure.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjæ–h]”hŒ Parameters”…”�”}”(hjè–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjä–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MÀhjà–ubjß)�”}”(hhh]”jä)�”}”(hŒW``struct mdio_device *pcs`` a pointer to a :c:type:`struct mdio_device `. ”h]”(jê)�”}”(hŒ``struct mdio_device *pcs``”h]”jð)�”}”(hj—h]”hŒstruct mdio_device *pcs”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M½hjÿ–ubj)�”}”(hhh]”jl)�”}”(hŒ:a pointer to a :c:type:`struct mdio_device `.”h]”(hŒa pointer to a ”…”�”}”(hj—h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct mdio_device `”h]”jð)�”}”(hj(—h]”hŒstruct mdio_device”…”�”}”(hj*—h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj&—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œ mdio_device”uh1hh³j—h´M½hj—ubhŒ.”…”�”}”(hj—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j—h´M½hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j—h´M½hjü–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjà–ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjc—h]”hŒ Description”…”�”}”(hje—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhja—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¿hjà–ubjl)�”}”(hŒYHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation.”h]”hŒYHelper for MAC PCS supporting the 802.3 clause 22 register set for clause 37 negotiation.”…”�”}”(hjy—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M¾hjà–ubjl)�”}”(hŒ©Restart the clause 37 negotiation with the link partner. This is suitable to be directly plugged into the pcs_get_state() member of the struct phylink_pcs_ops structure.”h]”hŒ©Restart the clause 37 negotiation with the link partner. This is suitable to be directly plugged into the pcs_get_state() member of the struct phylink_pcs_ops structure.”…”�”}”(hjˆ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MÁhjà–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ&phylink_replay_link_begin (C function)”Œc.phylink_replay_link_begin”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ3void phylink_replay_link_begin (struct phylink *pl)”h]”j )�”}”(hŒ2void phylink_replay_link_begin(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj·—h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj³—h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mõubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ—h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj³—h²hh³jÅ—h´Mõubj3)�”}”(hŒphylink_replay_link_begin”h]”j9)�”}”(hŒphylink_replay_link_begin”h]”hŒphylink_replay_link_begin”…”�”}”(hjØ—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔ—ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj³—h²hh³jÅ—h´Mõubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjô—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjð—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjð—ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j˜Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÚ—sbŒc.phylink_replay_link_begin”†”asbuh1hhjð—ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2˜h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjð—ubj )�”}”(hj h]”hŒ*”…”�”}”(hj@˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjð—ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjM˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjì—ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj³—h²hh³jÅ—h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¯—h²hh³jÅ—h´Mõubah}”(h]”jª—ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jÅ—h´Mõhj¬—h²hubjg)�”}”(hhh]”jl)�”}”(hŒ;begin replay of link callbacks for driver which loses state”h]”hŒ;begin replay of link callbacks for driver which loses state”…”�”}”(hjw˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mõhjt˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¬—h²hh³jÅ—h´Mõubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�˜jŒj�˜j�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXì**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Helper for MAC drivers which may perform a destructive reset at runtime. Both the own driver's mac_link_down() method is called, as well as the pcs_link_down() method of the split PCS (if any). This is similar to phylink_stop(), except it does not alter the state of the phylib PHY (it is assumed that it is not affected by the MAC destructive reset).”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj™˜h]”hŒ Parameters”…”�”}”(hj›˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mùhj“˜ubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hj¸˜h]”hŒstruct phylink *pl”…”�”}”(hjº˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¶˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M÷hj²˜ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hjјh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjÛ˜h]”hŒstruct phylink”…”�”}”(hjݘh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÙ˜ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j͘h´M÷hjјubhŒ returned from phylink_create()”…”�”}”(hjјh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j͘h´M÷hjΘubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j͘h´M÷hj¯˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“˜ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj™h]”hŒ Description”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mùhj“˜ubjl)�”}”(hŒÁHelper for MAC drivers which may perform a destructive reset at runtime. Both the own driver's mac_link_down() method is called, as well as the pcs_link_down() method of the split PCS (if any).”h]”hŒÃHelper for MAC drivers which may perform a destructive reset at runtime. Both the own driver’s mac_link_down() method is called, as well as the pcs_link_down() method of the split PCS (if any).”…”�”}”(hj,™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Møhj“˜ubjl)�”}”(hŒ�This is similar to phylink_stop(), except it does not alter the state of the phylib PHY (it is assumed that it is not affected by the MAC destructive reset).”h]”hŒ�This is similar to phylink_stop(), except it does not alter the state of the phylib PHY (it is assumed that it is not affected by the MAC destructive reset).”…”�”}”(hj;™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´Mühj“˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ$phylink_replay_link_end (C function)”Œc.phylink_replay_link_end”hNt”auh1híhjÔh²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ1void phylink_replay_link_end (struct phylink *pl)”h]”j )�”}”(hŒ0void phylink_replay_link_end(struct phylink *pl)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjj™h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjf™h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjf™h²hh³jx™h´M ubj3)�”}”(hŒphylink_replay_link_end”h]”j9)�”}”(hŒphylink_replay_link_end”h]”hŒphylink_replay_link_end”…”�”}”(hj‹™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡™ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjf™h²hh³jx™h´M ubj¡ )�”}”(hŒ(struct phylink *pl)”h]”j§ )�”}”(hŒstruct phylink *pl”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj§™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£™ubh)�”}”(hhh]”j9)�”}”(hŒphylink”h]”hŒphylink”…”�”}”(hjÅ™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jÇ™Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�™sbŒc.phylink_replay_link_end”†”asbuh1hhj£™ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå™h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj£™ubj )�”}”(hj h]”hŒ*”…”�”}”(hjó™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj£™ubj9)�”}”(hŒpl”h]”hŒpl”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjŸ™ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjf™h²hh³jx™h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjb™h²hh³jx™h´M ubah}”(h]”j]™ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jx™h´M hj_™h²hubjg)�”}”(hhh]”jl)�”}”(hŒ8end replay of link callbacks for driver which lost state”h]”hŒ8end replay of link callbacks for driver which lost state”…”�”}”(hj*šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hj'šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj_™h²hh³jx™h´M ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jBšjŒjBšj�‰jމj�‰uh1hþh²hhjÔh³Nh´Nubj‘)�”}”(hXA**Parameters** ``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() **Description** Helper for MAC drivers which may perform a destructive reset at runtime. Both the own driver's mac_config() and mac_link_up() methods, as well as the pcs_config() and pcs_link_up() method of the split PCS (if any), are called. This is similar to phylink_start(), except it does not alter the state of the phylib PHY. One must call this method only within the same rtnl_lock() critical section as a previous phylink_replay_link_start().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjLšh]”hŒ Parameters”…”�”}”(hjNšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjJšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MhjFšubjß)�”}”(hhh]”jä)�”}”(hŒh``struct phylink *pl`` a pointer to a :c:type:`struct phylink ` returned from phylink_create() ”h]”(jê)�”}”(hŒ``struct phylink *pl``”h]”jð)�”}”(hjkšh]”hŒstruct phylink *pl”…”�”}”(hjmšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjišubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hješubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to a :c:type:`struct phylink ` returned from phylink_create()”h]”(hŒa pointer to a ”…”�”}”(hj„šh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct phylink `”h]”jð)�”}”(hjŽšh]”hŒstruct phylink”…”�”}”(hj�šh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjŒšubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œphylink”uh1hh³j€šh´M hj„šubhŒ returned from phylink_create()”…”�”}”(hj„šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j€šh´M hj�šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhješubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€šh´M hjbšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjFšubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjÉšh]”hŒ Description”…”�”}”(hjËšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÇšubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MhjFšubjl)�”}”(hŒâHelper for MAC drivers which may perform a destructive reset at runtime. Both the own driver's mac_config() and mac_link_up() methods, as well as the pcs_config() and pcs_link_up() method of the split PCS (if any), are called.”h]”hŒäHelper for MAC drivers which may perform a destructive reset at runtime. Both the own driver’s mac_config() and mac_link_up() methods, as well as the pcs_config() and pcs_link_up() method of the split PCS (if any), are called.”…”�”}”(hjßšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´M hjFšubjl)�”}”(hŒYThis is similar to phylink_start(), except it does not alter the state of the phylib PHY.”h]”hŒYThis is similar to phylink_start(), except it does not alter the state of the phylib PHY.”…”�”}”(hjîšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MhjFšubjl)�”}”(hŒvOne must call this method only within the same rtnl_lock() critical section as a previous phylink_replay_link_start().”h]”hŒvOne must call this method only within the same rtnl_lock() critical section as a previous phylink_replay_link_start().”…”�”}”(hjýšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:150: ./drivers/net/phy/phylink.c”h´MhjFšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hjÔh²hh³Nh´Nubeh}”(h]”Œphylink”ah ]”h"]”Œphylink”ah$]”h&]”uh1hµhj~Âh²hh³hÊh´K�ubh¶)�”}”(hhh]”(h»)�”}”(hŒ SFP support”h]”hŒ SFP support”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj›h²hh³hÊh´K™ubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_bus (C struct)”Œ c.sfp_bus”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsfp_bus”h]”j )�”}”(hŒstruct sfp_bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjE›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA›h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:155: ./drivers/net/phy/sfp-bus.c”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS›h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjA›h²hh³jR›h´Kubj3)�”}”(hŒsfp_bus”h]”j9)�”}”(hj?›h]”hŒsfp_bus”…”�”}”(hje›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hja›ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjA›h²hh³jR›h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj=›h²hh³jR›h´Kubah}”(h]”j8›ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jR›h´Khj:›h²hubjg)�”}”(hhh]”jl)�”}”(hŒ$internal representation of a sfp bus”h]”hŒ$internal representation of a sfp bus”…”�”}”(hj‡›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:155: ./drivers/net/phy/sfp-bus.c”h´Khj„›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj:›h²hh³jR›h´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jŸ›jŒjŸ›j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hŒ6**Definition**:: struct sfp_bus { }; **Members**”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj«›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj§›ubhŒ:”…”�”}”(hj§›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:155: ./drivers/net/phy/sfp-bus.c”h´Khj£›ubj¶)�”}”(hŒstruct sfp_bus { };”h]”hŒstruct sfp_bus { };”…”�”}”hjÄ›sbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:155: ./drivers/net/phy/sfp-bus.c”h´Khj£›ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjÕ›h]”hŒMembers”…”�”}”(hj×›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÓ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:155: ./drivers/net/phy/sfp-bus.c”h´Khj£›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_eeprom_id (C struct)”Œc.sfp_eeprom_id”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ sfp_eeprom_id”h]”j )�”}”(hŒstruct sfp_eeprom_id”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjœh²hh³jœh´Kubj3)�”}”(hŒ sfp_eeprom_id”h]”j9)�”}”(hjœh]”hŒ sfp_eeprom_id”…”�”}”(hj+œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'œubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjœh²hh³jœh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjœh²hh³jœh´Kubah}”(h]”jþ›ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jœh´Khjœh²hubjg)�”}”(hhh]”jl)�”}”(hŒ)raw SFP module identification information”h]”hŒ)raw SFP module identification information”…”�”}”(hjMœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´KÝhjJœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjœh²hh³jœh´Kubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jeœjŒjeœj�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hŒí**Definition**:: struct sfp_eeprom_id { struct sfp_eeprom_base base; struct sfp_eeprom_ext ext; }; **Members** ``base`` base SFP module identification structure ``ext`` extended SFP module identification structure”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjqœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjmœubhŒ:”…”�”}”(hjmœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Káhjiœubj¶)�”}”(hŒYstruct sfp_eeprom_id { struct sfp_eeprom_base base; struct sfp_eeprom_ext ext; };”h]”hŒYstruct sfp_eeprom_id { struct sfp_eeprom_base base; struct sfp_eeprom_ext ext; };”…”�”}”hjŠœsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kãhjiœubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hj›œh]”hŒMembers”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj™œubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kèhjiœubjß)�”}”(hhh]”(jä)�”}”(hŒ2``base`` base SFP module identification structure ”h]”(jê)�”}”(hŒ``base``”h]”jð)�”}”(hjºœh]”hŒbase”…”�”}”(hj¼œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸œubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kßhj´œubj)�”}”(hhh]”jl)�”}”(hŒ(base SFP module identification structure”h]”hŒ(base SFP module identification structure”…”�”}”(hjÓœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏœh´KßhjМubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏœh´Kßhj±œubjä)�”}”(hŒ4``ext`` extended SFP module identification structure”h]”(jê)�”}”(hŒ``ext``”h]”jð)�”}”(hjóœh]”hŒext”…”�”}”(hjõœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñœubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kßhjíœubj)�”}”(hhh]”jl)�”}”(hŒ,extended SFP module identification structure”h]”hŒ,extended SFP module identification structure”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kàhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j�h´Kßhj±œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjiœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj6�h]”hŒ Description”…”�”}”(hj8�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj4�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kãhj›h²hubjl)�”}”(hŒ¼See the SFF-8472 specification and related documents for the definition of these structure members. This can be obtained from https://www.snia.org/technology-communities/sff/specifications”h]”(hŒ~See the SFF-8472 specification and related documents for the definition of these structure members. This can be obtained from ”…”�”}”(hjL�h²hh³Nh´NubhŒ reference”“”)�”}”(hŒ>https://www.snia.org/technology-communities/sff/specifications”h]”hŒ>https://www.snia.org/technology-communities/sff/specifications”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jX�uh1jT�hjL�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kàhj›h²hubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_module_caps (C struct)”Œc.sfp_module_caps”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsfp_module_caps”h]”j )�”}”(hŒstruct sfp_module_caps”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj��h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Kçubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj��h²hh³j’�h´Kçubj3)�”}”(hŒsfp_module_caps”h]”j9)�”}”(hj�h]”hŒsfp_module_caps”…”�”}”(hj¥�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡�ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj��h²hh³j’�h´Kçubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj}�h²hh³j’�h´Kçubah}”(h]”jx�ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j’�h´Kçhjz�h²hubjg)�”}”(hhh]”jl)�”}”(hŒsfp module capabilities”h]”hŒsfp module capabilities”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M hjÄ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjz�h²hh³j’�h´Kçubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹jß�jŒjß�j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX**Definition**:: struct sfp_module_caps { unsigned long interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long link_modes[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; bool may_have_phy; u8 port; }; **Members** ``interfaces`` bitmap of interfaces that the module may support ``link_modes`` bitmap of ethtool link modes that the module may support ``may_have_phy`` indicate whether the module may have an ethernet PHY There is no way to be sure that a module has a PHY as the EEPROM doesn't contain this information. When set, this does not mean that the module definitely has a PHY. ``port`` one of ethtool ``PORT_*`` definitions, parsed from the module EEPROM, or ``PORT_OTHER`` if the port type is not known.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjç�ubhŒ:”…”�”}”(hjç�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Mhjã�ubj¶)�”}”(hŒÓstruct sfp_module_caps { unsigned long interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long link_modes[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; bool may_have_phy; u8 port; };”h]”hŒÓstruct sfp_module_caps { unsigned long interfaces[BITS_TO_LONGS( PHY_INTERFACE_MODE_MAX)]; unsigned long link_modes[BITS_TO_LONGS( __ETHTOOL_LINK_MODE_MASK_NBITS)]; bool may_have_phy; u8 port; };”…”�”}”hjžsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Mhjã�ubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjžh]”hŒMembers”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Mhjã�ubjß)�”}”(hhh]”(jä)�”}”(hŒ@``interfaces`` bitmap of interfaces that the module may support ”h]”(jê)�”}”(hŒ``interfaces``”h]”jð)�”}”(hj4žh]”hŒ interfaces”…”�”}”(hj6žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Mhj.žubj)�”}”(hhh]”jl)�”}”(hŒ0bitmap of interfaces that the module may support”h]”hŒ0bitmap of interfaces that the module may support”…”�”}”(hjMžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jIžh´MhjJžubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jIžh´Mhj+žubjä)�”}”(hŒH``link_modes`` bitmap of ethtool link modes that the module may support ”h]”(jê)�”}”(hŒ``link_modes``”h]”jð)�”}”(hjmžh]”hŒ link_modes”…”�”}”(hjožh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjkžubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Mhjgžubj)�”}”(hhh]”jl)�”}”(hŒ8bitmap of ethtool link modes that the module may support”h]”hŒ8bitmap of ethtool link modes that the module may support”…”�”}”(hj†žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j‚žh´Mhjƒžubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j‚žh´Mhj+žubjä)�”}”(hŒì``may_have_phy`` indicate whether the module may have an ethernet PHY There is no way to be sure that a module has a PHY as the EEPROM doesn't contain this information. When set, this does not mean that the module definitely has a PHY. ”h]”(jê)�”}”(hŒ``may_have_phy``”h]”jð)�”}”(hj¦žh]”hŒ may_have_phy”…”�”}”(hj¨žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¤žubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Mhj žubj)�”}”(hhh]”jl)�”}”(hŒÚindicate whether the module may have an ethernet PHY There is no way to be sure that a module has a PHY as the EEPROM doesn't contain this information. When set, this does not mean that the module definitely has a PHY.”h]”hŒÜindicate whether the module may have an ethernet PHY There is no way to be sure that a module has a PHY as the EEPROM doesn’t contain this information. When set, this does not mean that the module definitely has a PHY.”…”�”}”(hj¿žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´Mhj¼žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»žh´Mhj+žubjä)�”}”(hŒ``port`` one of ethtool ``PORT_*`` definitions, parsed from the module EEPROM, or ``PORT_OTHER`` if the port type is not known.”h]”(jê)�”}”(hŒ``port``”h]”jð)�”}”(hjàžh]”hŒport”…”�”}”(hjâžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞžubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´MhjÚžubj)�”}”(hhh]”jl)�”}”(hŒvone of ethtool ``PORT_*`` definitions, parsed from the module EEPROM, or ``PORT_OTHER`` if the port type is not known.”h]”(hŒone of ethtool ”…”�”}”(hjùžh²hh³Nh´Nubjð)�”}”(hŒ ``PORT_*``”h]”hŒPORT_*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùžubhŒ0 definitions, parsed from the module EEPROM, or ”…”�”}”(hjùžh²hh³Nh´Nubjð)�”}”(hŒ``PORT_OTHER``”h]”hŒ PORT_OTHER”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùžubhŒ if the port type is not known.”…”�”}”(hjùžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jõžh´Mhjöžubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jõžh´Mhj+žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjã�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_upstream_ops (C struct)”Œc.sfp_upstream_ops”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒsfp_upstream_ops”h]”j )�”}”(hŒstruct sfp_upstream_ops”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj]Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYŸh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M$ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkŸh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjYŸh²hh³jjŸh´M$ubj3)�”}”(hŒsfp_upstream_ops”h]”j9)�”}”(hjWŸh]”hŒsfp_upstream_ops”…”�”}”(hj}Ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyŸubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjYŸh²hh³jjŸh´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjUŸh²hh³jjŸh´M$ubah}”(h]”jPŸah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jjŸh´M$hjRŸh²hubjg)�”}”(hhh]”jl)�”}”(hŒupstream operations structure”h]”hŒupstream operations structure”…”�”}”(hjŸŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M#hjœŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjRŸh²hh³jjŸh´M$ubeh}”(h]”h ]”(j…Œstruct”eh"]”h$]”h&]”jŠj…j‹j·ŸjŒj·Ÿj�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hXD**Definition**:: struct sfp_upstream_ops { void (*attach)(void *priv, struct sfp_bus *bus); void (*detach)(void *priv, struct sfp_bus *bus); int (*module_insert)(void *priv, const struct sfp_eeprom_id *id); void (*module_remove)(void *priv); int (*module_start)(void *priv); void (*module_stop)(void *priv); void (*link_down)(void *priv); void (*link_up)(void *priv); int (*connect_phy)(void *priv, struct phy_device *); void (*disconnect_phy)(void *priv, struct phy_device *); }; **Members** ``attach`` called when the sfp socket driver is bound to the upstream (mandatory). ``detach`` called when the sfp socket driver is unbound from the upstream (mandatory). ``module_insert`` called after a module has been detected to determine whether the module is supported for the upstream device. ``module_remove`` called after the module has been removed. ``module_start`` called after the PHY probe step ``module_stop`` called before the PHY is removed ``link_down`` called when the link is non-operational for whatever reason. ``link_up`` called when the link is operational. ``connect_phy`` called when an I2C accessible PHY has been detected on the module. ``disconnect_phy`` called when a module with an I2C accessible PHY has been removed.”h]”(jl)�”}”(hŒ**Definition**::”h]”(j›)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¿ŸubhŒ:”…”�”}”(hj¿Ÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M'hj»Ÿubj¶)�”}”(hX÷struct sfp_upstream_ops { void (*attach)(void *priv, struct sfp_bus *bus); void (*detach)(void *priv, struct sfp_bus *bus); int (*module_insert)(void *priv, const struct sfp_eeprom_id *id); void (*module_remove)(void *priv); int (*module_start)(void *priv); void (*module_stop)(void *priv); void (*link_down)(void *priv); void (*link_up)(void *priv); int (*connect_phy)(void *priv, struct phy_device *); void (*disconnect_phy)(void *priv, struct phy_device *); };”h]”hX÷struct sfp_upstream_ops { void (*attach)(void *priv, struct sfp_bus *bus); void (*detach)(void *priv, struct sfp_bus *bus); int (*module_insert)(void *priv, const struct sfp_eeprom_id *id); void (*module_remove)(void *priv); int (*module_start)(void *priv); void (*module_stop)(void *priv); void (*link_down)(void *priv); void (*link_up)(void *priv); int (*connect_phy)(void *priv, struct phy_device *); void (*disconnect_phy)(void *priv, struct phy_device *); };”…”�”}”hjÜŸsbah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1jµh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M)hj»Ÿubjl)�”}”(hŒ **Members**”h]”j›)�”}”(hjíŸh]”hŒMembers”…”�”}”(hjïŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjëŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M6hj»Ÿubjß)�”}”(hhh]”(jä)�”}”(hŒS``attach`` called when the sfp socket driver is bound to the upstream (mandatory). ”h]”(jê)�”}”(hŒ ``attach``”h]”jð)�”}”(hj  h]”hŒattach”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M&hj ubj)�”}”(hhh]”jl)�”}”(hŒGcalled when the sfp socket driver is bound to the upstream (mandatory).”h]”hŒGcalled when the sfp socket driver is bound to the upstream (mandatory).”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M%hj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j! h´M&hj ubjä)�”}”(hŒW``detach`` called when the sfp socket driver is unbound from the upstream (mandatory). ”h]”(jê)�”}”(hŒ ``detach``”h]”jð)�”}”(hjF h]”hŒdetach”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjD ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M(hj@ ubj)�”}”(hhh]”jl)�”}”(hŒKcalled when the sfp socket driver is unbound from the upstream (mandatory).”h]”hŒKcalled when the sfp socket driver is unbound from the upstream (mandatory).”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M'hj\ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j[ h´M(hj ubjä)�”}”(hŒ€``module_insert`` called after a module has been detected to determine whether the module is supported for the upstream device. ”h]”(jê)�”}”(hŒ``module_insert``”h]”jð)�”}”(hj€ h]”hŒ module_insert”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M*hjz ubj)�”}”(hhh]”jl)�”}”(hŒmcalled after a module has been detected to determine whether the module is supported for the upstream device.”h]”hŒmcalled after a module has been detected to determine whether the module is supported for the upstream device.”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M)hj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j• h´M*hj ubjä)�”}”(hŒ<``module_remove`` called after the module has been removed. ”h]”(jê)�”}”(hŒ``module_remove``”h]”jð)�”}”(hjº h]”hŒ module_remove”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M+hj´ ubj)�”}”(hhh]”jl)�”}”(hŒ)called after the module has been removed.”h]”hŒ)called after the module has been removed.”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÏ h´M+hjРubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÏ h´M+hj ubjä)�”}”(hŒ1``module_start`` called after the PHY probe step ”h]”(jê)�”}”(hŒ``module_start``”h]”jð)�”}”(hjó h]”hŒ module_start”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M,hjí ubj)�”}”(hhh]”jl)�”}”(hŒcalled after the PHY probe step”h]”hŒcalled after the PHY probe step”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¡h´M,hj ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjí ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¡h´M,hj ubjä)�”}”(hŒ1``module_stop`` called before the PHY is removed ”h]”(jê)�”}”(hŒ``module_stop``”h]”jð)�”}”(hj,¡h]”hŒ module_stop”…”�”}”(hj.¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj*¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M-hj&¡ubj)�”}”(hhh]”jl)�”}”(hŒ called before the PHY is removed”h]”hŒ called before the PHY is removed”…”�”}”(hjE¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jA¡h´M-hjB¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jA¡h´M-hj ubjä)�”}”(hŒK``link_down`` called when the link is non-operational for whatever reason. ”h]”(jê)�”}”(hŒ ``link_down``”h]”jð)�”}”(hje¡h]”hŒ link_down”…”�”}”(hjg¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjc¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒT/var/lib/git/docbuild/linux/Documentation/networking/kapi:158: ./include/linux/sfp.h”h´M/hj_¡ubj)�”}”(hhh]”jl)�”}”(hŒ` structure for the sfp module ``const unsigned long *link_modes`` ethtool link modes mask **Description** Derive the phy_interface_t mode for the SFP module from the link modes mask.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÙ£h]”hŒ Parameters”…”�”}”(hjÛ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj×£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MQhjÓ£ubjß)�”}”(hhh]”(jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hjø£h]”hŒstruct sfp_bus *bus”…”�”}”(hjú£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjö£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MNhjò£ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hj¤h]”hŒstruct sfp_bus”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j ¤h´MNhj¤ubhŒ structure for the sfp module”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j ¤h´MNhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j ¤h´MNhjï£ubjä)�”}”(hŒ<``const unsigned long *link_modes`` ethtool link modes mask ”h]”(jê)�”}”(hŒ#``const unsigned long *link_modes``”h]”jð)�”}”(hjT¤h]”hŒconst unsigned long *link_modes”…”�”}”(hjV¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjR¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MOhjN¤ubj)�”}”(hhh]”jl)�”}”(hŒethtool link modes mask”h]”hŒethtool link modes mask”…”�”}”(hjm¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ji¤h´MOhjj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³ji¤h´MOhjï£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÓ£ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�¤h]”hŒ Description”…”�”}”(hj‘¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj�¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MQhjÓ£ubjl)�”}”(hŒLDerive the phy_interface_t mode for the SFP module from the link modes mask.”h]”hŒLDerive the phy_interface_t mode for the SFP module from the link modes mask.”…”�”}”(hj¥¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MPhjÓ£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_bus_put (C function)”Œ c.sfp_bus_put”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ&void sfp_bus_put (struct sfp_bus *bus)”h]”j )�”}”(hŒ%void sfp_bus_put(struct sfp_bus *bus)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÔ¤h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjФh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã¤h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjФh²hh³jâ¤h´M¬ubj3)�”}”(hŒ sfp_bus_put”h]”j9)�”}”(hŒ sfp_bus_put”h]”hŒ sfp_bus_put”…”�”}”(hjõ¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ¤ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjФh²hh³jâ¤h´M¬ubj¡ )�”}”(hŒ(struct sfp_bus *bus)”h]”j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¥ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj/¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j1¥Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j÷¤sbŒ c.sfp_bus_put”†”asbuh1hhj ¥ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO¥h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¥ubj )�”}”(hj h]”hŒ*”…”�”}”(hj]¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ¥ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjj¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj ¥ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjФh²hh³jâ¤h´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj̤h²hh³jâ¤h´M¬ubah}”(h]”jǤah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jâ¤h´M¬hjɤh²hubjg)�”}”(hhh]”jl)�”}”(hŒ9put a reference on the :c:type:`struct sfp_bus `”h]”(hŒput a reference on the ”…”�”}”(hj”¥h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjž¥h]”hŒstruct sfp_bus”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjœ¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå jè )�”}”jë ]”jK¥Œ c.sfp_bus_put”†”asbj¶Œsfp_bus”uh1hh³j�¢h´MMhj”¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M¬hj‘¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjɤh²hh³jâ¤h´M¬ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÐ¥jŒjÐ¥j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hŒþ**Parameters** ``struct sfp_bus *bus`` the :c:type:`struct sfp_bus ` found via sfp_bus_find_fwnode() **Description** Put a reference on the :c:type:`struct sfp_bus ` and free the underlying structure if this was the last reference.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjÚ¥h]”hŒ Parameters”…”�”}”(hjÜ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjØ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M°hjÔ¥ubjß)�”}”(hhh]”jä)�”}”(hŒ_``struct sfp_bus *bus`` the :c:type:`struct sfp_bus ` found via sfp_bus_find_fwnode() ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hjù¥h]”hŒstruct sfp_bus *bus”…”�”}”(hjû¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj÷¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M­hjó¥ubj)�”}”(hhh]”jl)�”}”(hŒFthe :c:type:`struct sfp_bus ` found via sfp_bus_find_fwnode()”h]”(hŒthe ”…”�”}”(hj¦h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hj¦h]”hŒstruct sfp_bus”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¦ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j¦h´M­hj¦ubhŒ found via sfp_bus_find_fwnode()”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¦h´M­hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¦h´M­hjð¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÔ¥ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjW¦h]”hŒ Description”…”�”}”(hjY¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjU¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M¯hjÔ¥ubjl)�”}”(hŒ{Put a reference on the :c:type:`struct sfp_bus ` and free the underlying structure if this was the last reference.”h]”(hŒPut a reference on the ”…”�”}”(hjm¦h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjw¦h]”hŒstruct sfp_bus”…”�”}”(hjy¦h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhju¦ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M®hjm¦ubhŒB and free the underlying structure if this was the last reference.”…”�”}”(hjm¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j”¦h´M®hjÔ¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ sfp_get_module_info (C function)”Œc.sfp_get_module_info”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNint sfp_get_module_info (struct sfp_bus *bus, struct ethtool_modinfo *modinfo)”h]”j )�”}”(hŒMint sfp_get_module_info(struct sfp_bus *bus, struct ethtool_modinfo *modinfo)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj¿¦h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj»¦h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mßubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΦh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj»¦h²hh³jͦh´Mßubj3)�”}”(hŒsfp_get_module_info”h]”j9)�”}”(hŒsfp_get_module_info”h]”hŒsfp_get_module_info”…”�”}”(hjà¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjܦubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj»¦h²hh³jͦh´Mßubj¡ )�”}”(hŒ6(struct sfp_bus *bus, struct ethtool_modinfo *modinfo)”h]”(j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjü¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjø¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj §h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjø¦ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j§Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jâ¦sbŒc.sfp_get_module_info”†”asbuh1hhjø¦ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjø¦ubj )�”}”(hj h]”hŒ*”…”�”}”(hjH§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjø¦ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjU§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjô¦ubj§ )�”}”(hŒstruct ethtool_modinfo *modinfo”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjn§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj§ubh)�”}”(hhh]”j9)�”}”(hŒethtool_modinfo”h]”hŒethtool_modinfo”…”�”}”(hjŒ§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jާŒmodname”NŒ classname”Njå jè )�”}”jë ]”j6§Œc.sfp_get_module_info”†”asbuh1hhjj§ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª§h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjj§ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¸§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjj§ubj9)�”}”(hŒmodinfo”h]”hŒmodinfo”…”�”}”(hjŧh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjô¦ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj»¦h²hh³jͦh´Mßubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj·¦h²hh³jͦh´Mßubah}”(h]”j²¦ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jͦh´Mßhj´¦h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(Get the ethtool_modinfo for a SFP module”h]”hŒ(Get the ethtool_modinfo for a SFP module”…”�”}”(hjï§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mßhjì§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj´¦h²hh³jͦh´Mßubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j¨jŒj¨j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX†**Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ``struct ethtool_modinfo *modinfo`` a :c:type:`struct ethtool_modinfo ` **Description** Fill in the type and eeprom_len parameters in **modinfo** for a module on the sfp bus specified by **bus**. Returns 0 on success or a negative errno number.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj¨h]”hŒ Parameters”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mãhj ¨ubjß)�”}”(hhh]”(jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hj0¨h]”hŒstruct sfp_bus *bus”…”�”}”(hj2¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj.¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Màhj*¨ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hjI¨h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjS¨h]”hŒstruct sfp_bus”…”�”}”(hjU¨h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjQ¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³jE¨h´MàhjI¨ubhŒ structure for the sfp module”…”�”}”(hjI¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jE¨h´MàhjF¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jE¨h´Màhj'¨ubjä)�”}”(hŒY``struct ethtool_modinfo *modinfo`` a :c:type:`struct ethtool_modinfo ` ”h]”(jê)�”}”(hŒ#``struct ethtool_modinfo *modinfo``”h]”jð)�”}”(hjŒ¨h]”hŒstruct ethtool_modinfo *modinfo”…”�”}”(hjލh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjЍubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Máhj†¨ubj)�”}”(hhh]”jl)�”}”(hŒ4a :c:type:`struct ethtool_modinfo `”h]”(hŒa ”…”�”}”(hj¥¨h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ethtool_modinfo `”h]”jð)�”}”(hj¯¨h]”hŒstruct ethtool_modinfo”…”�”}”(hj±¨h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj­¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_modinfo”uh1hh³j¡¨h´Máhj¥¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¡¨h´Máhj¢¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¡¨h´Máhj'¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ¨ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjæ¨h]”hŒ Description”…”�”}”(hjè¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjä¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mãhj ¨ubjl)�”}”(hŒkFill in the type and eeprom_len parameters in **modinfo** for a module on the sfp bus specified by **bus**.”h]”(hŒ.Fill in the type and eeprom_len parameters in ”…”�”}”(hjü¨h²hh³Nh´Nubj›)�”}”(hŒ **modinfo**”h]”hŒmodinfo”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü¨ubhŒ* for a module on the sfp bus specified by ”…”�”}”(hjü¨h²hh³Nh´Nubj›)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjü¨ubhŒ.”…”�”}”(hjü¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mâhj ¨ubjl)�”}”(hŒ0Returns 0 on success or a negative errno number.”h]”hŒ0Returns 0 on success or a negative errno number.”…”�”}”(hj/©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Måhj ¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ"sfp_get_module_eeprom (C function)”Œc.sfp_get_module_eeprom”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒTint sfp_get_module_eeprom (struct sfp_bus *bus, struct ethtool_eeprom *ee, u8 *data)”h]”j )�”}”(hŒSint sfp_get_module_eeprom(struct sfp_bus *bus, struct ethtool_eeprom *ee, u8 *data)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj^©h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjZ©h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mïubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjZ©h²hh³jl©h´Mïubj3)�”}”(hŒsfp_get_module_eeprom”h]”j9)�”}”(hŒsfp_get_module_eeprom”h]”hŒsfp_get_module_eeprom”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{©ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjZ©h²hh³jl©h´Mïubj¡ )�”}”(hŒ:(struct sfp_bus *bus, struct ethtool_eeprom *ee, u8 *data)”h]”(j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj›©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—©ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj¹©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j»©Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j�©sbŒc.sfp_get_module_eeprom”†”asbuh1hhj—©ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ©h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj—©ubj )�”}”(hj h]”hŒ*”…”�”}”(hjç©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj—©ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjô©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“©ubj§ )�”}”(hŒstruct ethtool_eeprom *ee”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ªubh)�”}”(hhh]”j9)�”}”(hŒethtool_eeprom”h]”hŒethtool_eeprom”…”�”}”(hj+ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j-ªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÕ©Œc.sfp_get_module_eeprom”†”asbuh1hhj ªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ªubj )�”}”(hj h]”hŒ*”…”�”}”(hjWªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ªubj9)�”}”(hŒee”h]”hŒee”…”�”}”(hjdªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“©ubj§ )�”}”(hŒu8 *data”h]”(h)�”}”(hhh]”j9)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj€ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j‚ªŒmodname”NŒ classname”Njå jè )�”}”jë ]”jÕ©Œc.sfp_get_module_eeprom”†”asbuh1hhjyªubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžªh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjyªubj )�”}”(hj h]”hŒ*”…”�”}”(hj¬ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjyªubj9)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¹ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj“©ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjZ©h²hh³jl©h´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjV©h²hh³jl©h´Mïubah}”(h]”jQ©ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jl©h´MïhjS©h²hubjg)�”}”(hhh]”jl)�”}”(hŒRead the SFP module EEPROM”h]”hŒRead the SFP module EEPROM”…”�”}”(hjãªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mïhjàªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjS©h²hh³jl©h´Mïubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jûªjŒjûªj�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX**Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ``struct ethtool_eeprom *ee`` a :c:type:`struct ethtool_eeprom ` ``u8 *data`` buffer to contain the EEPROM data (must be at least **ee->len** bytes) **Description** Read the EEPROM as specified by the supplied **ee**. See the documentation for :c:type:`struct ethtool_eeprom ` for the region to be read. Returns 0 on success or a negative errno number.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj«h]”hŒ Parameters”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Móhjÿªubjß)�”}”(hhh]”(jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hj$«h]”hŒstruct sfp_bus *bus”…”�”}”(hj&«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj"«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mðhj«ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hj=«h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjG«h]”hŒstruct sfp_bus”…”�”}”(hjI«h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjE«ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j9«h´Mðhj=«ubhŒ structure for the sfp module”…”�”}”(hj=«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j9«h´Mðhj:«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j9«h´Mðhj«ubjä)�”}”(hŒQ``struct ethtool_eeprom *ee`` a :c:type:`struct ethtool_eeprom ` ”h]”(jê)�”}”(hŒ``struct ethtool_eeprom *ee``”h]”jð)�”}”(hj€«h]”hŒstruct ethtool_eeprom *ee”…”�”}”(hj‚«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj~«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mñhjz«ubj)�”}”(hhh]”jl)�”}”(hŒ2a :c:type:`struct ethtool_eeprom `”h]”(hŒa ”…”�”}”(hj™«h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ethtool_eeprom `”h]”jð)�”}”(hj£«h]”hŒstruct ethtool_eeprom”…”�”}”(hj¥«h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj¡«ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_eeprom”uh1hh³j•«h´Mñhj™«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j•«h´Mñhj–«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j•«h´Mñhj«ubjä)�”}”(hŒT``u8 *data`` buffer to contain the EEPROM data (must be at least **ee->len** bytes) ”h]”(jê)�”}”(hŒ ``u8 *data``”h]”jð)�”}”(hjØ«h]”hŒu8 *data”…”�”}”(hjÚ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÖ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MòhjÒ«ubj)�”}”(hhh]”jl)�”}”(hŒFbuffer to contain the EEPROM data (must be at least **ee->len** bytes)”h]”(hŒ4buffer to contain the EEPROM data (must be at least ”…”�”}”(hjñ«h²hh³Nh´Nubj›)�”}”(hŒ **ee->len**”h]”hŒee->len”…”�”}”(hjù«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjñ«ubhŒ bytes)”…”�”}”(hjñ«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jí«h´Mòhjî«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jí«h´Mòhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÿªubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj%¬h]”hŒ Description”…”�”}”(hj'¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj#¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Môhjÿªubjl)�”}”(hŒšRead the EEPROM as specified by the supplied **ee**. See the documentation for :c:type:`struct ethtool_eeprom ` for the region to be read.”h]”(hŒ-Read the EEPROM as specified by the supplied ”…”�”}”(hj;¬h²hh³Nh´Nubj›)�”}”(hŒ**ee**”h]”hŒee”…”�”}”(hjC¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj;¬ubhŒ. See the documentation for ”…”�”}”(hj;¬h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ethtool_eeprom `”h]”jð)�”}”(hjW¬h]”hŒstruct ethtool_eeprom”…”�”}”(hjY¬h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjU¬ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_eeprom”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Móhj;¬ubhŒ for the region to be read.”…”�”}”(hj;¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jt¬h´Móhjÿªubjl)�”}”(hŒ0Returns 0 on success or a negative errno number.”h]”hŒ0Returns 0 on success or a negative errno number.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Möhjÿªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ*sfp_get_module_eeprom_by_page (C function)”Œc.sfp_get_module_eeprom_by_page”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ�int sfp_get_module_eeprom_by_page (struct sfp_bus *bus, const struct ethtool_module_eeprom *page, struct netlink_ext_ack *extack)”h]”j )�”}”(hŒ€int sfp_get_module_eeprom_by_page(struct sfp_bus *bus, const struct ethtool_module_eeprom *page, struct netlink_ext_ack *extack)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hj®¬h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjª¬h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjª¬h²hh³j¼¬h´Mubj3)�”}”(hŒsfp_get_module_eeprom_by_page”h]”j9)�”}”(hŒsfp_get_module_eeprom_by_page”h]”hŒsfp_get_module_eeprom_by_page”…”�”}”(hjϬh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˬubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjª¬h²hh³j¼¬h´Mubj¡ )�”}”(hŒ_(struct sfp_bus *bus, const struct ethtool_module_eeprom *page, struct netlink_ext_ack *extack)”h]”(j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjë¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjç¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø¬h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç¬ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ­Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jѬsbŒc.sfp_get_module_eeprom_by_page”†”asbuh1hhjç¬ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjç¬ubj )�”}”(hj h]”hŒ*”…”�”}”(hj7­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjç¬ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjD­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã¬ubj§ )�”}”(hŒ(const struct ethtool_module_eeprom *page”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj]­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY­ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjx­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY­ubh)�”}”(hhh]”j9)�”}”(hŒethtool_module_eeprom”h]”hŒethtool_module_eeprom”…”�”}”(hj–­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j˜­Œmodname”NŒ classname”Njå jè )�”}”jë ]”j%­Œc.sfp_get_module_eeprom_by_page”†”asbuh1hhjY­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjY­ubj )�”}”(hj h]”hŒ*”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjY­ubj9)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjÏ­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjY­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã¬ubj§ )�”}”(hŒstruct netlink_ext_ack *extack”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjè­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ­h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä­ubh)�”}”(hhh]”j9)�”}”(hŒnetlink_ext_ack”h]”hŒnetlink_ext_ack”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j®Œmodname”NŒ classname”Njå jè )�”}”jë ]”j%­Œc.sfp_get_module_eeprom_by_page”†”asbuh1hhjä­ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$®h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjä­ubj )�”}”(hj h]”hŒ*”…”�”}”(hj2®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjä­ubj9)�”}”(hŒextack”h]”hŒextack”…”�”}”(hj?®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjä­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjã¬ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjª¬h²hh³j¼¬h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¦¬h²hh³j¼¬h´Mubah}”(h]”j¡¬ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¼¬h´Mhj£¬h²hubjg)�”}”(hhh]”jl)�”}”(hŒ&Read a page from the SFP module EEPROM”h]”hŒ&Read a page from the SFP module EEPROM”…”�”}”(hji®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhjf®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj£¬h²hh³j¼¬h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�®jŒj�®j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hXT**Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ``const struct ethtool_module_eeprom *page`` a :c:type:`struct ethtool_module_eeprom ` ``struct netlink_ext_ack *extack`` extack for reporting problems **Description** Read an EEPROM page as specified by the supplied **page**. See the documentation for :c:type:`struct ethtool_module_eeprom ` for the page to be read. Returns 0 on success or a negative errno number. More error information might be provided via extack”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj‹®h]”hŒ Parameters”…”�”}”(hj�®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‰®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj…®ubjß)�”}”(hhh]”(jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hjª®h]”hŒstruct sfp_bus *bus”…”�”}”(hj¬®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¨®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj¤®ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hjîh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjÍ®h]”hŒstruct sfp_bus”…”�”}”(hjÏ®h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjË®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j¿®h´MhjîubhŒ structure for the sfp module”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¿®h´MhjÀ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¿®h´Mhj¡®ubjä)�”}”(hŒn``const struct ethtool_module_eeprom *page`` a :c:type:`struct ethtool_module_eeprom ` ”h]”(jê)�”}”(hŒ,``const struct ethtool_module_eeprom *page``”h]”jð)�”}”(hj¯h]”hŒ(const struct ethtool_module_eeprom *page”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj¯ubj)�”}”(hhh]”jl)�”}”(hŒ@a :c:type:`struct ethtool_module_eeprom `”h]”(hŒa ”…”�”}”(hj¯h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct ethtool_module_eeprom `”h]”jð)�”}”(hj)¯h]”hŒstruct ethtool_module_eeprom”…”�”}”(hj+¯h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj'¯ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_module_eeprom”uh1hh³j¯h´Mhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¯h´Mhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¯h´Mhj¡®ubjä)�”}”(hŒA``struct netlink_ext_ack *extack`` extack for reporting problems ”h]”(jê)�”}”(hŒ"``struct netlink_ext_ack *extack``”h]”jð)�”}”(hj^¯h]”hŒstruct netlink_ext_ack *extack”…”�”}”(hj`¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MhjX¯ubj)�”}”(hhh]”jl)�”}”(hŒextack for reporting problems”h]”hŒextack for reporting problems”…”�”}”(hjw¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³js¯h´Mhjt¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³js¯h´Mhj¡®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj…®ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj™¯h]”hŒ Description”…”�”}”(hj›¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj…®ubjl)�”}”(hŒ¬Read an EEPROM page as specified by the supplied **page**. See the documentation for :c:type:`struct ethtool_module_eeprom ` for the page to be read.”h]”(hŒ1Read an EEPROM page as specified by the supplied ”…”�”}”(hj¯¯h²hh³Nh´Nubj›)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hj·¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¯¯ubhŒ. See the documentation for ”…”�”}”(hj¯¯h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct ethtool_module_eeprom `”h]”jð)�”}”(hj˯h]”hŒstruct ethtool_module_eeprom”…”�”}”(hjͯh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjɯubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œethtool_module_eeprom”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj¯¯ubhŒ for the page to be read.”…”�”}”(hj¯¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jè¯h´Mhj…®ubjl)�”}”(hŒdReturns 0 on success or a negative errno number. More error information might be provided via extack”h]”hŒdReturns 0 on success or a negative errno number. More error information might be provided via extack”…”�”}”(hjó¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj…®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_upstream_start (C function)”Œc.sfp_upstream_start”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ-void sfp_upstream_start (struct sfp_bus *bus)”h]”j )�”}”(hŒ,void sfp_upstream_start(struct sfp_bus *bus)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"°h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj°h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj°h²hh³j0°h´Mubj3)�”}”(hŒsfp_upstream_start”h]”j9)�”}”(hŒsfp_upstream_start”h]”hŒsfp_upstream_start”…”�”}”(hjC°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?°ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj°h²hh³j0°h´Mubj¡ )�”}”(hŒ(struct sfp_bus *bus)”h]”j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj_°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[°ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj}°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j°Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jE°sbŒc.sfp_upstream_start”†”asbuh1hhj[°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�°h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[°ubj )�”}”(hj h]”hŒ*”…”�”}”(hj«°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj[°ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj¸°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjW°ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj°h²hh³j0°h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj°h²hh³j0°h´Mubah}”(h]”j°ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j0°h´Mhj°h²hubjg)�”}”(hhh]”jl)�”}”(hŒ,Inform the SFP that the network device is up”h]”hŒ,Inform the SFP that the network device is up”…”�”}”(hjâ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhjß°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj°h²hh³j0°h´Mubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jú°jŒjú°j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX‹**Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module **Description** Inform the SFP socket that the network device is now up, so that the module can be enabled by allowing TX_DISABLE to be deasserted. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_open() method.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj±h]”hŒ Parameters”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhjþ°ubjß)�”}”(hhh]”jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hj#±h]”hŒstruct sfp_bus *bus”…”�”}”(hj%±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj!±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj±ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hj<±h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjF±h]”hŒstruct sfp_bus”…”�”}”(hjH±h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjD±ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j8±h´Mhj<±ubhŒ structure for the sfp module”…”�”}”(hj<±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j8±h´Mhj9±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j8±h´Mhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjþ°ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj�±h]”hŒ Description”…”�”}”(hjƒ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhjþ°ubjl)�”}”(hŒþInform the SFP socket that the network device is now up, so that the module can be enabled by allowing TX_DISABLE to be deasserted. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_open() method.”h]”(hŒ½Inform the SFP socket that the network device is now up, so that the module can be enabled by allowing TX_DISABLE to be deasserted. This should be called from the network device driver’s ”…”�”}”(hj—±h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct net_device_ops `”h]”jð)�”}”(hj¡±h]”hŒstruct net_device_ops”…”�”}”(hj£±h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjŸ±ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œnet_device_ops”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj—±ubhŒ ndo_open() method.”…”�”}”(hj—±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j¾±h´Mhjþ°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_upstream_stop (C function)”Œc.sfp_upstream_stop”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ,void sfp_upstream_stop (struct sfp_bus *bus)”h]”j )�”}”(hŒ+void sfp_upstream_stop(struct sfp_bus *bus)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjé±h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjå±h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M&ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø±h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjå±h²hh³j÷±h´M&ubj3)�”}”(hŒsfp_upstream_stop”h]”j9)�”}”(hŒsfp_upstream_stop”h]”hŒsfp_upstream_stop”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjå±h²hh³j÷±h´M&ubj¡ )�”}”(hŒ(struct sfp_bus *bus)”h]”j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj&²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"²ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hjD²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jF²Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j ²sbŒc.sfp_upstream_stop”†”asbuh1hhj"²ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd²h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj"²ubj )�”}”(hj h]”hŒ*”…”�”}”(hjr²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj"²ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj²ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjå±h²hh³j÷±h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjá±h²hh³j÷±h´M&ubah}”(h]”jܱah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j÷±h´M&hjÞ±h²hubjg)�”}”(hhh]”jl)�”}”(hŒ.Inform the SFP that the network device is down”h]”hŒ.Inform the SFP that the network device is down”…”�”}”(hj©²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M&hj¦²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÞ±h²hh³j÷±h´M&ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÁ²jŒjÁ²j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX¤**Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module **Description** Inform the SFP socket that the network device is now up, so that the module can be disabled by asserting TX_DISABLE, disabling the laser in optical modules. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_stop() method.”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj˲h]”hŒ Parameters”…”�”}”(hjͲh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjɲubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M*hjŲubjß)�”}”(hhh]”jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hjê²h]”hŒstruct sfp_bus *bus”…”�”}”(hjì²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjè²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M'hjä²ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hj³h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hj ³h]”hŒstruct sfp_bus”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj ³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³jÿ²h´M'hj³ubhŒ structure for the sfp module”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jÿ²h´M'hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÿ²h´M'hjá²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŲubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjH³h]”hŒ Description”…”�”}”(hjJ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjF³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M)hjŲubjl)�”}”(hXInform the SFP socket that the network device is now up, so that the module can be disabled by asserting TX_DISABLE, disabling the laser in optical modules. This should be called from the network device driver's :c:type:`struct net_device_ops ` ndo_stop() method.”h]”(hŒÖInform the SFP socket that the network device is now up, so that the module can be disabled by asserting TX_DISABLE, disabling the laser in optical modules. This should be called from the network device driver’s ”…”�”}”(hj^³h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct net_device_ops `”h]”jð)�”}”(hjh³h]”hŒstruct net_device_ops”…”�”}”(hjj³h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjf³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œnet_device_ops”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M(hj^³ubhŒ ndo_stop() method.”…”�”}”(hj^³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j…³h´M(hjŲubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ)sfp_upstream_set_signal_rate (C function)”Œc.sfp_upstream_set_signal_rate”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒNvoid sfp_upstream_set_signal_rate (struct sfp_bus *bus, unsigned int rate_kbd)”h]”j )�”}”(hŒMvoid sfp_upstream_set_signal_rate(struct sfp_bus *bus, unsigned int rate_kbd)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°³h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj¬³h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M=ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¬³h²hh³j¾³h´M=ubj3)�”}”(hŒsfp_upstream_set_signal_rate”h]”j9)�”}”(hŒsfp_upstream_set_signal_rate”h]”hŒsfp_upstream_set_signal_rate”…”�”}”(hjѳh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjͳubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¬³h²hh³j¾³h´M=ubj¡ )�”}”(hŒ,(struct sfp_bus *bus, unsigned int rate_kbd)”h]”(j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjí³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú³h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé³ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j ´Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jÓ³sbŒc.sfp_upstream_set_signal_rate”†”asbuh1hhjé³ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjé³ubj )�”}”(hj h]”hŒ*”…”�”}”(hj9´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjé³ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjF´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjå³ubj§ )�”}”(hŒunsigned int rate_kbd”h]”(jM )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj_´h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[´ubjM )�”}”(hŒint”h]”hŒint”…”�”}”(hj{´h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj[´ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰´h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj[´ubj9)�”}”(hŒrate_kbd”h]”hŒrate_kbd”…”�”}”(hj—´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjå³ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¬³h²hh³j¾³h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¨³h²hh³j¾³h´M=ubah}”(h]”j£³ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j¾³h´M=hj¥³h²hubjg)�”}”(hhh]”jl)�”}”(hŒset data signalling rate”h]”hŒset data signalling rate”…”�”}”(hjÁ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M=hj¾´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥³h²hh³j¾³h´M=ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jÙ´jŒjÙ´j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hXˆ**Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ``unsigned int rate_kbd`` signalling rate in units of 1000 baud **Description** Configure the rate select settings on the SFP module for the signalling rate (not the same as the data rate). Locks that may be held: Phylink's state_mutex rtnl lock SFP's sm_mutex”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjã´h]”hŒ Parameters”…”�”}”(hjå´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjá´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MAhjÝ´ubjß)�”}”(hhh]”(jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hjµh]”hŒstruct sfp_bus *bus”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M>hjü´ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hjµh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hj%µh]”hŒstruct sfp_bus”…”�”}”(hj'µh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj#µubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³jµh´M>hjµubhŒ structure for the sfp module”…”�”}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jµh´M>hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jµh´M>hjù´ubjä)�”}”(hŒ@``unsigned int rate_kbd`` signalling rate in units of 1000 baud ”h]”(jê)�”}”(hŒ``unsigned int rate_kbd``”h]”jð)�”}”(hj^µh]”hŒunsigned int rate_kbd”…”�”}”(hj`µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj\µubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M?hjXµubj)�”}”(hhh]”jl)�”}”(hŒ%signalling rate in units of 1000 baud”h]”hŒ%signalling rate in units of 1000 baud”…”�”}”(hjwµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jsµh´M?hjtµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jsµh´M?hjù´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÝ´ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj™µh]”hŒ Description”…”�”}”(hj›µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj—µubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MAhjÝ´ubjl)�”}”(hŒmConfigure the rate select settings on the SFP module for the signalling rate (not the same as the data rate).”h]”hŒmConfigure the rate select settings on the SFP module for the signalling rate (not the same as the data rate).”…”�”}”(hj¯µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M@hjÝ´ubjß)�”}”(hhh]”jä)�”}”(hŒFLocks that may be held: Phylink's state_mutex rtnl lock SFP's sm_mutex”h]”(jê)�”}”(hŒLocks that may be held:”h]”hŒLocks that may be held:”…”�”}”(hjŵh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MEhjÁµubj)�”}”(hhh]”jl)�”}”(hŒ.Phylink's state_mutex rtnl lock SFP's sm_mutex”h]”hŒ2Phylink’s state_mutex rtnl lock SFP’s sm_mutex”…”�”}”(hj×µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MDhjÔµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jÓµh´MEhj¾µubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÝ´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ sfp_bus_find_fwnode (C function)”Œc.sfp_bus_find_fwnode”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒIstruct sfp_bus * sfp_bus_find_fwnode (const struct fwnode_handle *fwnode)”h]”j )�”}”(hŒGstruct sfp_bus *sfp_bus_find_fwnode(const struct fwnode_handle *fwnode)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶h²hh³j%¶h´MQubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj7¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j9¶Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já Œsfp_bus_find_fwnode”sbŒc.sfp_bus_find_fwnode”†”asbuh1hhj¶h²hh³j%¶h´MQubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¶h²hh³j%¶h´MQubj )�”}”(hj h]”hŒ*”…”�”}”(hjf¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¶h²hh³j%¶h´MQubj3)�”}”(hŒsfp_bus_find_fwnode”h]”j9)�”}”(hjU¶h]”hŒsfp_bus_find_fwnode”…”�”}”(hjw¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs¶ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj¶h²hh³j%¶h´MQubj¡ )�”}”(hŒ$(const struct fwnode_handle *fwnode)”h]”j§ )�”}”(hŒ"const struct fwnode_handle *fwnode”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj’¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj޶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj޶ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj­¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj޶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj޶ubh)�”}”(hhh]”j9)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj˶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjȶubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jͶŒmodname”NŒ classname”Njå jè )�”}”jë ]”jS¶Œc.sfp_bus_find_fwnode”†”asbuh1hhj޶ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé¶h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj޶ubj )�”}”(hj h]”hŒ*”…”�”}”(hj÷¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj޶ubj9)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj޶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjжubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj¶h²hh³j%¶h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj¶h²hh³j%¶h´MQubah}”(h]”j ¶ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j%¶h´MQhj ¶h²hubjg)�”}”(hhh]”jl)�”}”(hŒ(parse and locate the SFP bus from fwnode”h]”hŒ(parse and locate the SFP bus from fwnode”…”�”}”(hj.·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MQhj+·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ¶h²hh³j%¶h´MQubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jF·jŒjF·j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX{**Parameters** ``const struct fwnode_handle *fwnode`` firmware node for the parent device (MAC or PHY) **Description** Parse the parent device's firmware node for a SFP bus, and locate the sfp_bus structure, incrementing its reference count. This must be put via sfp_bus_put() when done. - corresponding to the errors detailed for fwnode_property_get_reference_args(). - ``-ENOMEM`` if we failed to allocate the bus. - an error from the upstream's connect_phy() method. **Return** - on success, a pointer to the sfp_bus structure, - ``NULL`` if no SFP is specified, - on failure, an error pointer value:”•«¥h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hjP·h]”hŒ Parameters”…”�”}”(hjR·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjN·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MUhjJ·ubjß)�”}”(hhh]”jä)�”}”(hŒX``const struct fwnode_handle *fwnode`` firmware node for the parent device (MAC or PHY) ”h]”(jê)�”}”(hŒ&``const struct fwnode_handle *fwnode``”h]”jð)�”}”(hjo·h]”hŒ"const struct fwnode_handle *fwnode”…”�”}”(hjq·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjm·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MRhji·ubj)�”}”(hhh]”jl)�”}”(hŒ0firmware node for the parent device (MAC or PHY)”h]”hŒ0firmware node for the parent device (MAC or PHY)”…”�”}”(hjˆ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j„·h´MRhj…·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j„·h´MRhjf·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJ·ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjª·h]”hŒ Description”…”�”}”(hj¬·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¨·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MThjJ·ubjl)�”}”(hŒ©Parse the parent device's firmware node for a SFP bus, and locate the sfp_bus structure, incrementing its reference count. This must be put via sfp_bus_put() when done.”h]”hŒ«Parse the parent device’s firmware node for a SFP bus, and locate the sfp_bus structure, incrementing its reference count. This must be put via sfp_bus_put() when done.”…”�”}”(hjÀ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MShjJ·ubjÒ)�”}”(hŒ¸- corresponding to the errors detailed for fwnode_property_get_reference_args(). - ``-ENOMEM`` if we failed to allocate the bus. - an error from the upstream's connect_phy() method. ”h]”jC[)�”}”(hhh]”(jH[)�”}”(hŒNcorresponding to the errors detailed for fwnode_property_get_reference_args().”h]”jl)�”}”(hŒNcorresponding to the errors detailed for fwnode_property_get_reference_args().”h]”hŒNcorresponding to the errors detailed for fwnode_property_get_reference_args().”…”�”}”(hjÚ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MXhjÖ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjÓ·ubjH[)�”}”(hŒ-``-ENOMEM`` if we failed to allocate the bus.”h]”jl)�”}”(hjñ·h]”(jð)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjö·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjó·ubhŒ" if we failed to allocate the bus.”…”�”}”(hjó·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MZhjï·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjÓ·ubjH[)�”}”(hŒ3an error from the upstream's connect_phy() method. ”h]”jl)�”}”(hŒ2an error from the upstream's connect_phy() method.”h]”hŒ4an error from the upstream’s connect_phy() method.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M[hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjÓ·ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jè·h´MXhjÏ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jè·h´MXhjJ·ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj<¸h]”hŒReturn”…”�”}”(hj>¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj:¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M]hjJ·ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ/on success, a pointer to the sfp_bus structure,”h]”jl)�”}”(hjW¸h]”hŒ/on success, a pointer to the sfp_bus structure,”…”�”}”(hjY¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MXhjU¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjR¸ubjH[)�”}”(hŒ ``NULL`` if no SFP is specified,”h]”jl)�”}”(hjo¸h]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjt¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjq¸ubhŒ if no SFP is specified,”…”�”}”(hjq¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MYhjm¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjR¸ubjH[)�”}”(hŒ#on failure, an error pointer value:”h]”jl)�”}”(hj•¸h]”hŒ#on failure, an error pointer value:”…”�”}”(hj—¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MZhj“¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjR¸ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jf¸h´MXhjJ·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!sfp_bus_add_upstream (C function)”Œc.sfp_bus_add_upstream”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒbint sfp_bus_add_upstream (struct sfp_bus *bus, void *upstream, const struct sfp_upstream_ops *ops)”h]”j )�”}”(hŒaint sfp_bus_add_upstream(struct sfp_bus *bus, void *upstream, const struct sfp_upstream_ops *ops)”h]”(jM )�”}”(hŒint”h]”hŒint”…”�”}”(hjѸh²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj͸h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M~ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¸h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj͸h²hh³j߸h´M~ubj3)�”}”(hŒsfp_bus_add_upstream”h]”j9)�”}”(hŒsfp_bus_add_upstream”h]”hŒsfp_bus_add_upstream”…”�”}”(hjò¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî¸ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj͸h²hh³j߸h´M~ubj¡ )�”}”(hŒI(struct sfp_bus *bus, void *upstream, const struct sfp_upstream_ops *ops)”h]”(j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¹ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj,¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j.¹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jô¸sbŒc.sfp_bus_add_upstream”†”asbuh1hhj ¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj ¹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjZ¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj ¹ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjg¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¹ubj§ )�”}”(hŒvoid *upstream”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€¹h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj|¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj޹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj|¹ubj )�”}”(hj h]”hŒ*”…”�”}”(hjœ¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj|¹ubj9)�”}”(hŒupstream”h]”hŒupstream”…”�”}”(hj©¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¹ubj§ )�”}”(hŒ"const struct sfp_upstream_ops *ops”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjϹh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾¹ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjݹh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê¹h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾¹ubh)�”}”(hhh]”j9)�”}”(hŒsfp_upstream_ops”h]”hŒsfp_upstream_ops”…”�”}”(hjû¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jý¹Œmodname”NŒ classname”Njå jè )�”}”jë ]”jH¹Œc.sfp_bus_add_upstream”†”asbuh1hhj¾¹ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj¾¹ubj )�”}”(hj h]”hŒ*”…”�”}”(hj'ºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj¾¹ubj9)�”}”(hŒops”h]”hŒops”…”�”}”(hj4ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj͸h²hh³j߸h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjɸh²hh³j߸h´M~ubah}”(h]”jĸah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³j߸h´M~hjƸh²hubjg)�”}”(hhh]”jl)�”}”(hŒ*parse and register the neighbouring device”h]”hŒ*parse and register the neighbouring device”…”�”}”(hj^ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M~hj[ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjƸh²hh³j߸h´M~ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jvºjŒjvºj�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX=**Parameters** ``struct sfp_bus *bus`` the :c:type:`struct sfp_bus ` found via sfp_bus_find_fwnode() ``void *upstream`` the upstream private data ``const struct sfp_upstream_ops *ops`` the upstream's :c:type:`struct sfp_upstream_ops ` **Description** Add upstream driver for the SFP bus, and if the bus is complete, register the SFP bus using sfp_register_upstream(). This takes a reference on the bus, so it is safe to put the bus after this call. - corresponding to the errors detailed for fwnode_property_get_reference_args(). - ``-ENOMEM`` if we failed to allocate the bus. - an error from the upstream's connect_phy() method. **Return** - on success, a pointer to the sfp_bus structure, - ``NULL`` if no SFP is specified, - on failure, an error pointer value:”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj€ºh]”hŒ Parameters”…”�”}”(hj‚ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj~ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M‚hjzºubjß)�”}”(hhh]”(jä)�”}”(hŒ_``struct sfp_bus *bus`` the :c:type:`struct sfp_bus ` found via sfp_bus_find_fwnode() ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hjŸºh]”hŒstruct sfp_bus *bus”…”�”}”(hj¡ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj�ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mhj™ºubj)�”}”(hhh]”jl)�”}”(hŒFthe :c:type:`struct sfp_bus ` found via sfp_bus_find_fwnode()”h]”(hŒthe ”…”�”}”(hj¸ºh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjºh]”hŒstruct sfp_bus”…”�”}”(hjĺh²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjÀºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j´ºh´Mhj¸ºubhŒ found via sfp_bus_find_fwnode()”…”�”}”(hj¸ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j´ºh´Mhjµºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j´ºh´Mhj–ºubjä)�”}”(hŒ-``void *upstream`` the upstream private data ”h]”(jê)�”}”(hŒ``void *upstream``”h]”jð)�”}”(hjûºh]”hŒvoid *upstream”…”�”}”(hjýºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjùºubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M€hjõºubj)�”}”(hhh]”jl)�”}”(hŒthe upstream private data”h]”hŒthe upstream private data”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j»h´M€hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j»h´M€hj–ºubjä)�”}”(hŒk``const struct sfp_upstream_ops *ops`` the upstream's :c:type:`struct sfp_upstream_ops ` ”h]”(jê)�”}”(hŒ&``const struct sfp_upstream_ops *ops``”h]”jð)�”}”(hj4»h]”hŒ"const struct sfp_upstream_ops *ops”…”�”}”(hj6»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj2»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M�hj.»ubj)�”}”(hhh]”jl)�”}”(hŒCthe upstream's :c:type:`struct sfp_upstream_ops `”h]”(hŒthe upstream’s ”…”�”}”(hjM»h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct sfp_upstream_ops `”h]”jð)�”}”(hjW»h]”hŒstruct sfp_upstream_ops”…”�”}”(hjY»h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjU»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_upstream_ops”uh1hh³jI»h´M�hjM»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³jI»h´M�hjJ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jI»h´M�hj–ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjzºubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjŽ»h]”hŒ Description”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjŒ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´Mƒhjzºubjl)�”}”(hŒÆAdd upstream driver for the SFP bus, and if the bus is complete, register the SFP bus using sfp_register_upstream(). This takes a reference on the bus, so it is safe to put the bus after this call.”h]”hŒÆAdd upstream driver for the SFP bus, and if the bus is complete, register the SFP bus using sfp_register_upstream(). This takes a reference on the bus, so it is safe to put the bus after this call.”…”�”}”(hj¤»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M‚hjzºubjÒ)�”}”(hŒ¸- corresponding to the errors detailed for fwnode_property_get_reference_args(). - ``-ENOMEM`` if we failed to allocate the bus. - an error from the upstream's connect_phy() method. ”h]”jC[)�”}”(hhh]”(jH[)�”}”(hŒNcorresponding to the errors detailed for fwnode_property_get_reference_args().”h]”jl)�”}”(hŒNcorresponding to the errors detailed for fwnode_property_get_reference_args().”h]”hŒNcorresponding to the errors detailed for fwnode_property_get_reference_args().”…”�”}”(hj¾»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M‡hjº»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj·»ubjH[)�”}”(hŒ-``-ENOMEM`` if we failed to allocate the bus.”h]”jl)�”}”(hjÕ»h]”(jð)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjÚ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj×»ubhŒ" if we failed to allocate the bus.”…”�”}”(hj×»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M‰hjÓ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj·»ubjH[)�”}”(hŒ3an error from the upstream's connect_phy() method. ”h]”jl)�”}”(hŒ2an error from the upstream's connect_phy() method.”h]”hŒ4an error from the upstream’s connect_phy() method.”…”�”}”(hjý»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MŠhjù»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj·»ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jÌ»h´M‡hj³»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑh³jÌ»h´M‡hjzºubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj ¼h]”hŒReturn”…”�”}”(hj"¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MŒhjzºubjC[)�”}”(hhh]”(jH[)�”}”(hŒ/on success, a pointer to the sfp_bus structure,”h]”jl)�”}”(hj;¼h]”hŒ/on success, a pointer to the sfp_bus structure,”…”�”}”(hj=¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M‡hj9¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj6¼ubjH[)�”}”(hŒ ``NULL`` if no SFP is specified,”h]”jl)�”}”(hjS¼h]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjX¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjU¼ubhŒ if no SFP is specified,”…”�”}”(hjU¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MˆhjQ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj6¼ubjH[)�”}”(hŒ#on failure, an error pointer value:”h]”jl)�”}”(hjy¼h]”hŒ#on failure, an error pointer value:”…”�”}”(hj{¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M‰hjw¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hj6¼ubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jJ¼h´M‡hjzºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒ!sfp_bus_del_upstream (C function)”Œc.sfp_bus_del_upstream”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/void sfp_bus_del_upstream (struct sfp_bus *bus)”h]”j )�”}”(hŒ.void sfp_bus_del_upstream(struct sfp_bus *bus)”h]”(jM )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjµ¼h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hj±¼h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M°ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjļh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj±¼h²hh³jüh´M°ubj3)�”}”(hŒsfp_bus_del_upstream”h]”j9)�”}”(hŒsfp_bus_del_upstream”h]”hŒsfp_bus_del_upstream”…”�”}”(hjÖ¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒ¼ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hj±¼h²hh³jüh´M°ubj¡ )�”}”(hŒ(struct sfp_bus *bus)”h]”j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjò¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ¼h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî¼ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”j½Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já jؼsbŒc.sfp_bus_del_upstream”†”asbuh1hhjî¼ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0½h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjî¼ubj )�”}”(hj h]”hŒ*”…”�”}”(hj>½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjî¼ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hjK½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjê¼ubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hj±¼h²hh³jüh´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhj­¼h²hh³jüh´M°ubah}”(h]”j¨¼ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jüh´M°hjª¼h²hubjg)�”}”(hhh]”jl)�”}”(hŒDelete a sfp bus”h]”hŒDelete a sfp bus”…”�”}”(hju½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M°hjr½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjª¼h²hh³jüh´M°ubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹j�½jŒj�½j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX **Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module **Description** Delete a previously registered upstream connection for the SFP module. **bus** should have been added by sfp_bus_add_upstream().”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hj—½h]”hŒ Parameters”…”�”}”(hj™½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj•½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M´hj‘½ubjß)�”}”(hhh]”jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hj¶½h]”hŒstruct sfp_bus *bus”…”�”}”(hj¸½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj´½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M±hj°½ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hjϽh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hjÙ½h]”hŒstruct sfp_bus”…”�”}”(hjÛ½h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhj×½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j˽h´M±hjϽubhŒ structure for the sfp module”…”�”}”(hjϽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j˽h´M±hj̽ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j˽h´M±hj­½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘½ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hj¾h]”hŒ Description”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M³hj‘½ubjl)�”}”(hŒ€Delete a previously registered upstream connection for the SFP module. **bus** should have been added by sfp_bus_add_upstream().”h]”(hŒGDelete a previously registered upstream connection for the SFP module. ”…”�”}”(hj*¾h²hh³Nh´Nubj›)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hj2¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj*¾ubhŒ2 should have been added by sfp_bus_add_upstream().”…”�”}”(hj*¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´M²hj‘½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubhî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(húŒsfp_get_name (C function)”Œc.sfp_get_name”hNt”auh1híhj›h²hh³Nh´Nubhÿ)�”}”(hhh]”(j)�”}”(hŒ/const char * sfp_get_name (struct sfp_bus *bus)”h]”j )�”}”(hŒ-const char *sfp_get_name(struct sfp_bus *bus)”h]”(j)�”}”(hj® h]”hŒconst”…”�”}”(hjk¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg¾h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg¾h²hh³jx¾h´MÅubjM )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj‡¾h²hh³Nh´Nubah}”(h]”h ]”jY ah"]”h$]”h&]”uh1jL hjg¾h²hh³jx¾h´MÅubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•¾h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hjg¾h²hh³jx¾h´MÅubj )�”}”(hj h]”hŒ*”…”�”}”(hj£¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hjg¾h²hh³jx¾h´MÅubj3)�”}”(hŒ sfp_get_name”h]”j9)�”}”(hŒ sfp_get_name”h]”hŒ sfp_get_name”…”�”}”(hj´¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°¾ubah}”(h]”h ]”(jKjLeh"]”h$]”h&]”jPjQuh1j2hjg¾h²hh³jx¾h´MÅubj¡ )�”}”(hŒ(struct sfp_bus *bus)”h]”j§ )�”}”(hŒstruct sfp_bus *bus”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjоh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj̾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hjݾh²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj̾ubh)�”}”(hhh]”j9)�”}”(hŒsfp_bus”h]”hŒsfp_bus”…”�”}”(hjî¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjë¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j…Œreftype”já Œ reftarget”jð¾Œmodname”NŒ classname”Njå jè )�”}”jë ]”jî )�”}”já j¶¾sbŒc.sfp_get_name”†”asbuh1hhj̾ubj")�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j.ah"]”h$]”h&]”uh1j!hj̾ubj )�”}”(hj h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j hj̾ubj9)�”}”(hŒbus”h]”hŒbus”…”�”}”(hj)¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj̾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjPjQuh1j¦ hjȾubah}”(h]”h ]”h"]”h$]”h&]”jPjQuh1j  hjg¾h²hh³jx¾h´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jPjQjXˆuh1j jYjZhjc¾h²hh³jx¾h´MÅubah}”(h]”j^¾ah ]”(j^j_eh"]”h$]”h&]”jcˆjd)jehuh1jh³jx¾h´MÅhj`¾h²hubjg)�”}”(hhh]”jl)�”}”(hŒGet the SFP device name”h]”hŒGet the SFP device name”…”�”}”(hjS¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÅhjP¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj`¾h²hh³jx¾h´MÅubeh}”(h]”h ]”(j…Œfunction”eh"]”h$]”h&]”jŠj…j‹jk¿jŒjk¿j�‰jމj�‰uh1hþh²hhj›h³Nh´Nubj‘)�”}”(hX¢**Parameters** ``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module **Description** Gets the SFP device's name, if **bus** has a registered socket. Callers must hold RTNL, and the returned name is only valid until RTNL is released. **Return** - The name of the SFP device registered with sfp_register_socket() - ``NULL`` if no device was registered on **bus**”h]”(jl)�”}”(hŒ**Parameters**”h]”j›)�”}”(hju¿h]”hŒ Parameters”…”�”}”(hjw¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjs¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÉhjo¿ubjß)�”}”(hhh]”jä)�”}”(hŒi``struct sfp_bus *bus`` a pointer to the :c:type:`struct sfp_bus ` structure for the sfp module ”h]”(jê)�”}”(hŒ``struct sfp_bus *bus``”h]”jð)�”}”(hj”¿h]”hŒstruct sfp_bus *bus”…”�”}”(hj–¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj’¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÆhjŽ¿ubj)�”}”(hhh]”jl)�”}”(hŒPa pointer to the :c:type:`struct sfp_bus ` structure for the sfp module”h]”(hŒa pointer to the ”…”�”}”(hj­¿h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct sfp_bus `”h]”jð)�”}”(hj·¿h]”hŒstruct sfp_bus”…”�”}”(hj¹¿h²hh³Nh´Nubah}”(h]”h ]”(j¡j…Œc-type”eh"]”h$]”h&]”uh1jïhjµ¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j­Œ refdomain”j…Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jå j³j¶Œsfp_bus”uh1hh³j©¿h´MÆhj­¿ubhŒ structure for the sfp module”…”�”}”(hj­¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³j©¿h´MÆhjª¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j©¿h´MÆhj‹¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjo¿ubjl)�”}”(hŒ**Description**”h]”j›)�”}”(hjò¿h]”hŒ Description”…”�”}”(hjô¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjð¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÈhjo¿ubjl)�”}”(hŒ“Gets the SFP device's name, if **bus** has a registered socket. Callers must hold RTNL, and the returned name is only valid until RTNL is released.”h]”(hŒ!Gets the SFP device’s name, if ”…”�”}”(hjÀh²hh³Nh´Nubj›)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀubhŒm has a registered socket. Callers must hold RTNL, and the returned name is only valid until RTNL is released.”…”�”}”(hjÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÇhjo¿ubjl)�”}”(hŒ **Return**”h]”j›)�”}”(hj+Àh]”hŒReturn”…”�”}”(hj-Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj)Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÊhjo¿ubjC[)�”}”(hhh]”(jH[)�”}”(hŒ@The name of the SFP device registered with sfp_register_socket()”h]”jl)�”}”(hjFÀh]”hŒ@The name of the SFP device registered with sfp_register_socket()”…”�”}”(hjHÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MËhjDÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjAÀubjH[)�”}”(hŒ/``NULL`` if no device was registered on **bus**”h]”jl)�”}”(hj^Àh]”(jð)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjcÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj`ÀubhŒ if no device was registered on ”…”�”}”(hj`Àh²hh³Nh´Nubj›)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hjuÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj`Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkh³ŒZ/var/lib/git/docbuild/linux/Documentation/networking/kapi:161: ./drivers/net/phy/sfp-bus.c”h´MÌhj\Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jG[hjAÀubeh}”(h]”h ]”h"]”h$]”h&]”j\jÁJuh1jB[h³jUÀh´MËhjo¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j�hj›h²hh³Nh´Nubeh}”(h]”Œ sfp-support”ah ]”h"]”Œ sfp support”ah$]”h&]”uh1hµhj~Âh²hh³hÊh´K™ubeh}”(h]”Œnetwork-device-support”ah ]”h"]”Œnetwork device support”ah$]”h&]”uh1hµhh·h²hh³hÊh´KWubeh}”(h]”Œ)linux-networking-and-network-devices-apis”ah ]”h"]”Œ)linux networking and network devices apis”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”Œentry”Œ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{ÂjxÂj j j»xj¸xj[ƒjXƒj/²j,²jsÂjpÂjªÀj§Àj‘–jŽ–jø•jõ•j‰–j†–jÔjÔj›j›j¢ÀjŸÀuŒ nametypes”}”(j²À‰j{‰j ‰j»x‰j[ƒ‰j/²‰js‰jªÀ‰j‘–‰jø•‰j‰–‰jÔ‰j›‰j¢À‰uh}”(j¯Àh·jxÂhËj hÜhüjjèjíjBjGj‘j–j¸xj" j? jD jÊ jÏ j” j™ jPjUj jjxj}jæjëjÏjÔj{/j€/jð0jõ0jÇ2jÌ2jš4jŸ4j6j„6j©8j®8jÓ:jØ:jH<jM<jÚ=jß=jZ?j_?jµ@jº@jÓBjØBj2Ej7EjPGjUGjXIj]IjýJjKj¢Lj§LjOj!Oj–Qj›Qj_TjdTj(Wj-WjîXjóXj”Zj™Zj:\j?\j»]jÀ]ja_jf_j·aj¼ajJdjOdj“fj˜fj—hjœhj3kj8kj|mj�mjWoj\oj3qj8qj¾rjÃrjÝtjâtj"wj'wjAyjFyj‡{jŒ{js~jx~j¶€j»€jù‚jþ‚jÑ„jÖ„j©†j®†jrˆjwˆjFŒjKŒjT�jY�jÕ“jÚ“j¹•j¾•j^—jc—j™j ™j ›j%›j¿�jÄ�jfŸjkŸj–¡j›¡j«£j°£jH¥jM¥jT§jY§jž©j£©j «j«j›­j ­jÖ¯jÛ¯j‡±jŒ±jI³jN³jhµjmµjß¶jä¶j›¸j ¸jeºjjºjN¼jS¼j?¾jD¾j0Àj5ÀjùÁjþÁj™ÃjžÃjKÅjPÅjñÆjöÆjÚÈjßÈjìÌjñÌjÏj!ÏjRÑjWÑjgÓjlÓj|Õj�ÕjØjØj%Új*Új°ÛjµÛjKÝjPÝjÖÞjÛÞj�áj†áj,äj1äjNæjSæjcèjhèjnêjsêj½ìjÂìjüïjðjój ój öjöj6øj;øj`újeújðûjõûj¸ýj½ýjeÿjjÿj}j‚jjj´j¹jnjsjM-jR-jÂ.jÇ.jì0jñ0jð2jõ2j¢4j§4j?5jD5jÿ6j7jí8jò8j‰:jŽ:j%<j*<jÀ=jÅ=j”?j™?jKBjPBjODjTDjÂGjÇGjìIjñIjtMjyMj…OjŠOjšQjŸQj SjSj”Tj™TjúVjÿVj[j[jã]jè]j?bjDbjWej\ej˜ij�ijzljljpj pj«qj°qjsj sj©uj®uj¡wj¦wj‚zj‡zj¶}j»}jüj€jB‚jG‚jh„jm„j†j †jˆjˆj‹‰j�‰j6Œj;ŒjÑŽjÖŽj-‘j2‘jš”jŸ”j«—j°—jšjšj�j�j£žj¨žjF jK jÑ¡jÖ¡jà¤jå¤jz¦j¦j¨j ¨j9ªj>ªjÏ«jÔ«jM®jR®j‰°jްj&³j+³j¶j¶j�¹j’¹j»½jÀ½j>ÀjCÀjáÃjæÃjhÆjmÆjMÉjRÉjoËjtËj‘Íj–Íj³Ïj¸ÏjÌÑjÑÑjáÓjæÓj‹Öj�ÖjÂÙjÇÙj¿ÜjÄÜj[àj`àj3âj8âj äjäjUæjZæj»èjÀèj!ëj&ëjdíjiíjAðjFðjáòjæòjöj$öj«ùj°ùj,ûj1ûj—þjœþjñjöjjjZj_jj jo j j„ jJjOjÛjàj£j¨j0j5j(j-j(j-jÙjÞjîjój\#ja#jH&jM&jY(j^(jé)jî)jz-j-j,/j1/j2j2jV4j[4j#7j(7jÈ8jÍ8jm:jr:jC=jH=j^?jc?jyAj~AjCjCjÚFjßFjðIjõIj{Kj€KjMj Mj£Oj¨OjcRjhRjÊTjÏTj“Vj˜Vj;\j@\j&_j+_jÕbjÚbjÐejÕejßhjähj"kj'kjëmjðmj�qj•qjðtjõtjìvjñvjXƒj¾xjÛxjàxjÜ{já{j~j~j8�j=�j,²j^ƒj{ƒj€ƒj½„j„jÿ…j†jA‡jF‡j.‰j3‰jpŠjuŠjþŽj�j ’j¥’j”–j™–j‡šjŒšjÞœjãœjˆ j� j£j£j�¤j”¤j ªjªj©«j®«j—°jœ°jpÂj2²jO²jT²j*µj/µjÏ·jÔ·já¹jæ¹jô¼jù¼j(Áj-Áj߯jäÆjŽÊj“Êj‰ÍjŽÍjÏj Ïj­Ðj²Ðj8Ôj=Ôj<ÖjAÖjÌ×jÑ×j!Új&ÚjŠÜj�Üj¼ÞjÁÞj˜àj�àj‡âjŒâjæj æj>éjCéj‚ìj‡ìjÝíjâíjÿïjðjGòjLòjsôjxôj~öjƒöj]újbújþjþjŠj�jjj j%jà jÈ jS jX jÎjÓjOjTjªj¯j+j0jÓjØj’j—jÒ j× j6#j;#j‘$j–$j³&j¸&j4(j9(jk*jp*jÆ+jË+jz.j.j92j>2j„6j‰6j*9j/9jÒ:j×:jS<jX<j¿=jÄ=jé?jî?jBjBj=DjBDjfFjkFjçGjìGjÛJjàJj¤Lj©Lj%Nj*Nj¥OjªOjQjQj[Rj`RjíSjòSjÒUj×UjXjXj�Yj•Yj[j[j’\j—\j�^j†^j`j`jƒajˆaj­cj²cjCejHejžfj£fjhj$hjjjjj¤kj©kjÿljmj,oj1ojqj„qjßsjäsj�wj’wjyjyjizjnzj}j}j°jµj]‚jb‚j<‡jA‡j½ˆjˆjˆŠj�ŠjDŒjIŒj�Žj†Žj~‘jƒ‘j•j •jC™jH™jÄšjÉšjÅ�jÊ�jvŸj{Ÿj¢j¢jÏ¥jÔ¥j~©jƒ©j<¬jA¬j�®j†®jJ±jO±jà²jå²jt´jy´jâµjçµj=·jB·jeºjjºjß½jä½j§Àj~ÂjŽ–j�Âj¬Âj±ÂjiÄjnÄj&Æj+ÆjãÇjèÇj‰ÉjŽÉj½ËjÂËj+Îj0Îj�Ðj”Ðj ÔjÔjRÖjWÖj˜Øj�ØjÛÛjàÛjÁÞjÆÞjëájðáj`ãjeãj�åj†åj çjçj°èjµèjQêjVêjáëjæëjqíjvíjªïj¯ïjãñjèñjøójýójköjpöjøj øjúj újºüj¿üj×þjÜþjôjùjjj;j@j¼jÁj=jBjø jý j© j® j¾jÃjIjNjãjèj|j�j.j3jÈjÍjƒjˆj,j1jÆjËjFjKjÅ jÊ jT"jY"jö#jû#jF'jK'jÆ(jË(jF*jK*jo,jt,j˜.j�.j0j0jÔ1jÙ1jF4jK4jŠ6j�6jÎ8jÓ8j;j;j <j¥<j\>ja>j/Aj4AjøDjýDj"Gj'GjLIjQIj0Lj5Lj£Nj¨NjŸPj¤PjWRj\RjUjUjÕWjÚWj×YjÜYjb[jg[jí\jò\j<_jA_jÏ`jÔ`j{bj€bjüdjejngjsgj³ij¸ij4kj9kjáojæojbqjgqjãrjèrjtjtjXvj]vjxj xjžyj£yjL|jQ|jC~jH~j­‚j²‚js…jx…j°‡jµ‡jvŠj{Šjm�jr�jöŽjûŽjË�jÐ�j ’j¥’jª”j¯”j+–j0–jИjÕ˜júšjÿšj�j�jêžjïžj¡j¡j•¢jš¢j¤j¤j—¥jœ¥j7¨j<¨jÞ©jã©j…«jŠ«j­j ­j…®jŠ®j,°j1°j¬±j±±jb³jg³já´jæ´jG¶jL¶j­·j²·j¹j¹j”ºj™ºj(¼j-¼j7¾j<¾jaÀjfÀj‹Âj�ÂjÃÄjÈÄj ÇjÇjBÉjGÉjÌjÌj¨Íj­ÍjiÏjnÏj©Ðj®ÐjéÑjîÑj—ÓjœÓjEÖjJÖjaØjfØjÛjÛjlÝjqÝjíÞjòÞjáj ájÌâjÑâjräjwäjòåj÷åjèj èj¡éj¦éj ëj%ëj.ój3ój(j (j­)j²)jh+jm+jÅ.jÊ.jX2j]2j£5j¨5j67j;7jÀ8jÅ8jJ:jO:jÕ;jÚ;j`=je=j?j ?j!Aj&Aj¢Bj§Bj#Dj(Dj\FjaFj•HjšHj4Kj9Kj÷MjüMjîOjóOjyQj~Qj˜Sj�SjWjCWj@YjEYj\[ja[j ]j¥]j¢_j§_j=bjBbj×djÜdjrgjwgj£jj¨jj>ljClj¿mjÄmj@ojEojÁpjÆpj\rjarjìsjñsjmujrujwj wj˜xj�xjzjzj´{j¹{jO}jT}jê~jï~jk€jp€jÀ„jÅ„j¯‡j´‡jŒj ŒjóŽjøŽj‹‘j�‘jõ•j|•j†–jû•jÔj”–j±–j¶–j ˜j˜j³šj¸šjFœjKœjÙ�jÞ�j! j& jØ¢jÝ¢ji¥jn¥j ¨j%¨j{©j€©jd«ji«j¿¬jĬjQ¯jV¯jU±jZ±j´j"´j}¶j‚¶jÙ¸jÞ¸j…ºjŠºj1¼j6¼j.¾j3¾j¯¿j´¿j[Áj`ÁjÜÂjáÂj‡ÄjŒÄj3Æj8ÆjŽÇj“Çj:Éj?Éj»ÊjÀÊj>ÍjCÍj¿ÎjÄÎjÔÐjÙÐjÂÒjÇÒjCÔjHÔjÖj„Öj©Øj®Øj­Új²Új±Üj¶Üj ÞjÞjàj àjÆâjËâjqäjväj›æj æjHéjMéj-ëj2ëjîjîj*ðj/ðjTòjYòjBõjGõj0øj5øjZúj_újÛûjàûj†ýj‹ýjÿj ÿjbjgj6j;j‘j–j9j>jýjjXj]j� j¢ jã jè jE jJ j‹j�jÑjÖjj jj j‡jŒjj jxj}jèjíjçjìjæ!jë!j%j %j(j(j++j0+jº.j¿.jI2jN2jÉ5jÎ5jI9jN9jé:jî:j÷<jü<jÞ?jã?jmBjrBj}Ej‚EjIjIjŸLj¤LjúMjÿMjUOjZOj°PjµPj RjRj›Sj Sj+Uj0Uj»VjÀVj¸Xj½Xj9Zj>ZjÉ[jÎ[jJ]jO]jÝ^jâ^j8`j=`j“aj˜ajîbjóbjIdjNdj¤ej©ej%gj*gj¦hj«hj'jj,jj¨kj­kjSmjXmjlojqojÀqjÅqj0tj5tj„vj‰vjœxj¡xjÆzjËzjð|jõ|j!j&j�j�jì‚jñ‚j¾„jÄj8Žj=ŽjÜ�já�jG‘jL‘jT“jY“jšj šji›jn›jtžjyžjïŸjôŸj’¡j—¡jk¶jp¶jF¸jK¸j¼¹jÁ¹jH¼jM¼jw½j|½j+¿j0¿jóÁjøÁj¦Ãj«ÃjâÖjçÖjìÙjñÙj ÜjÜj.Þj3Þjwàj|àjÑájÖájQãjVãj-åj2åj­æj²æj-èj2èj/êj4êj1ìj6ìjÂîjÇîjSñjXñj…ôjŠôjg÷jl÷jêùjïùjmüjrüjÊþjÏþj'j,jjj jjÔ jÙ jŸ j¤ jj$jyj~jÓjØj-j2j‡jŒjájæjˆj�jâjçj7j<j®j³jj jbjgj¥jªj!j!j˜$j�$jó%jø%jt'jy'j)j)j~+jƒ+jû.j/jñ2jö2jL4jQ4jÍ5jÒ5j$9j)9jÐ:jÕ:j‰<jŽ<jä=jé=jÒ?j×?jêAjïAj–Cj›CjAEjFEjúFjÿFj{Hj€Hj'Jj,JjnLjsLjNjNj¾OjÃOjÀQjÅQjASjFSjÂTjÇTjaVjfVjâWjçWjcYjhYjäZjéZj¬]j±]j`j `j0bj5bj§dj¬dj¬gj±gjkjkjÔmjÙmj�oj•oj”qj™qjPsjUsj ujujãvjèvj¨xj­xj…{jŠ{j\~ja~j�j�jÜ‚já‚jÿ„j…jû†j‡j÷ˆjüˆjóŠjøŠjNŒjSŒjÏ�jÔ�j½�jÂ�j’j ’jÇ“jÌ“jH•jM•jL—jQ—j šjšjW�j\�j¡j¡jC¤jH¤jþ§j¨j¼ªjÁªjS­jX­jX°j]°j„³j‰³jѶjÖ¶j÷¹jü¹j‹½j�½jFÁjKÁj¸Äj½Äj˜Èj�Èj ÌjÌjêÏjïÏj›jÔjIÔjNÔju×jz×jJÜjOÜj{ßj€ßj¼ájÁájNäjSäjQçjVçj:íj?íjRðjWðjfójkój)ùj.ùjÍújÒúj•ýjšýjËjÐjCjHjújÿjN jS j² j· j0j5j®j³jYj^jÆjËj�j’j\jajüjjœ j¡ jm"jr"jû#j$j–%j›%j\&ja&jÉ'jÎ'jv)j{)jò*j÷*j-j$-jR/jW/j‡1jŒ1j74j<4j27j77jœ;j¡;j+>j0>j=@jB@jkBjpBj Gj%GjëHjðHj�Jj¢JjaMjfMj…PjŠPjÄSjÉSjzUjUj‹Wj�Wj˜Yj�Yjq[jv[jY]j^]jý^j_j¡`j¦`j?cjDcjòdj÷dj–fj›fjijij»kjÀkj=njBnj¢pj§pjgrjlrj­tj²tjóvjøvj¸xj½xj{j{jL}jQ}j(�j-�jZƒj_ƒj …j…j‡j‡j‰j‰jªŒj¯Œj×�jÜ�j`’je’j÷•jü•jª—j¯—j]™jb™jŸÀj›j8›j=›jþ›jœjx�j}�jPŸjUŸj^¢jc¢jǤj̤j²¦j·¦jQ©jV©j¡¬j¦¬j°j°jܱjá±j£³j¨³j ¶j¶jĸjɸj¨¼j­¼j^¾jc¾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”]”hŒsystem_message”“”)�”}”(hhh]”jl)�”}”(hŒ:Enumerated list start value not ordinal-1: "8" (ordinal 8)”h]”hŒ>Enumerated list start value not ordinal-1: “8â€� (ordinal 8)”…”�”}”(hj?Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhj<Áubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”ŒS/var/lib/git/docbuild/linux/Documentation/networking/kapi:32: ./net/core/datagram.c”Œline”Mëuh1j:ÁhjÁ[ubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.