€•Œ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/driver-api/infiniband”Œ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/driver-api/infiniband”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/it_IT/driver-api/infiniband”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/ja_JP/driver-api/infiniband”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/ko_KR/driver-api/infiniband”Œ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/driver-api/infiniband”Œ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/driver-api/infiniband”Œ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Œ+InfiniBand and Remote DMA (RDMA) Interfaces”h]”hŒ+InfiniBand and Remote DMA (RDMA) Interfaces”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒC/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒIntroduction and Overview”h]”hŒIntroduction and Overview”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hŒTBD”h]”hŒTBD”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubeh}”(h]”Œintroduction-and-overview”ah ]”h"]”Œintroduction and overview”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒInfiniBand core interfaces”h]”hŒInfiniBand core interfaces”…”�”}”(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”Œ#iwpm_get_nlmsg_request (C function)”Œc.iwpm_get_nlmsg_request”hNt”auh1jhhôh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ]struct iwpm_nlmsg_request * iwpm_get_nlmsg_request (__u32 nlmsg_seq, u8 nl_client, gfp_t gfp)”h]”hŒdesc_signature_line”“”)�”}”(hŒ[struct iwpm_nlmsg_request *iwpm_get_nlmsg_request(__u32 nlmsg_seq, u8 nl_client, gfp_t gfp)”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j'hj#h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KaubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j9hj#h²hh³j8h´Kaubh)�”}”(hhh]”hŒ desc_sig_name”“”)�”}”(hŒiwpm_nlmsg_request”h]”hŒiwpm_nlmsg_request”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jMhjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”jQŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jlŒ ASTIdentifier”“”)�”}”jgŒiwpm_get_nlmsg_request”sbŒc.iwpm_get_nlmsg_request”†”asbuh1hhj#h²hh³j8h´Kaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#h²hh³j8h´KaubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jˆhj#h²hh³j8h´KaubhŒ desc_name”“”)�”}”(hŒiwpm_get_nlmsg_request”h]”jN)�”}”(hjwh]”hŒiwpm_get_nlmsg_request”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj›ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j™hj#h²hh³j8h´KaubhŒdesc_parameterlist”“”)�”}”(hŒ*(__u32 nlmsg_seq, u8 nl_client, gfp_t gfp)”h]”(hŒdesc_parameter”“”)�”}”(hŒ__u32 nlmsg_seq”h]”(h)�”}”(hhh]”jN)�”}”(hŒ__u32”h]”hŒ__u32”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÇŒmodname”NŒ classname”Njkjn)�”}”jq]”juŒc.iwpm_get_nlmsg_request”†”asbuh1hhj¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾ubjN)�”}”(hŒ nlmsg_seq”h]”hŒ nlmsg_seq”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸ubj½)�”}”(hŒ u8 nl_client”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”juŒc.iwpm_get_nlmsg_request”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒ nl_client”h]”hŒ nl_client”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸ubj½)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jN)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jWŒmodname”NŒ classname”Njkjn)�”}”jq]”juŒc.iwpm_get_nlmsg_request”†”asbuh1hhjNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjNubjN)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj#h²hh³j8h´Kaubeh}”(h]”h ]”h"]”h$]”h&]”j´jµŒ add_permalink”ˆuh1j!Œsphinx_line_type”Œ declarator”hjh²hh³j8h´Kaubah}”(h]”jah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j8h´Kahjh²hubhŒ desc_content”“”)�”}”(hhh]”hÝ)�”}”(hŒ/Allocate and initialize netlink message request”h]”hŒ/Allocate and initialize netlink message request”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kahj²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjh²hh³j8h´Kaubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”Œdomain”jeŒobjtype”jÍŒdesctype”jÍŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhhôh³Nh´NubhŒ container”“”)�”}”(hX9**Parameters** ``__u32 nlmsg_seq`` Sequence number of the netlink message ``u8 nl_client`` The index of the netlink client ``gfp_t gfp`` Indicates how the memory for the request should be allocated **Description** Returns the newly allocated netlink request object if successful, otherwise returns NULL”h]”(hÝ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjßh]”hŒ Parameters”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KehjÙubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ;``__u32 nlmsg_seq`` Sequence number of the netlink message ”h]”(hŒterm”“”)�”}”(hŒ``__u32 nlmsg_seq``”h]”hŒliteral”“”)�”}”(hjh]”hŒ__u32 nlmsg_seq”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KbhjþubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hŒ&Sequence number of the netlink message”h]”hŒ&Sequence number of the netlink message”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Kbhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´Kbhjùubjý)�”}”(hŒ1``u8 nl_client`` The index of the netlink client ”h]”(j)�”}”(hŒ``u8 nl_client``”h]”j )�”}”(hjCh]”hŒ u8 nl_client”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kchj=ubj)�”}”(hhh]”hÝ)�”}”(hŒThe index of the netlink client”h]”hŒThe index of the netlink client”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jXh´KchjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jXh´Kchjùubjý)�”}”(hŒK``gfp_t gfp`` Indicates how the memory for the request should be allocated ”h]”(j)�”}”(hŒ ``gfp_t gfp``”h]”j )�”}”(hj|h]”hŒ gfp_t gfp”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kdhjvubj)�”}”(hhh]”hÝ)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K§hj;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjˆh²hh³j·h´K§ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjVjÓjVjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒy**Parameters** ``u8 nl_client`` The index of the netlink client **Description** Returns the client registration type”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj`h]”hŒ Parameters”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K«hjZubjø)�”}”(hhh]”jý)�”}”(hŒ1``u8 nl_client`` The index of the netlink client ”h]”(j)�”}”(hŒ``u8 nl_client``”h]”j )�”}”(hjh]”hŒ u8 nl_client”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K¨hjyubj)�”}”(hhh]”hÝ)�”}”(hŒThe index of the netlink client”h]”hŒThe index of the netlink client”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”h´K¨hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”h´K¨hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjZubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjºh]”hŒ Description”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KªhjZubhÝ)�”}”(hŒ$Returns the client registration type”h]”hŒ$Returns the client registration type”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K©hjZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiwpm_send_mapinfo (C function)”Œc.iwpm_send_mapinfo”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2int iwpm_send_mapinfo (u8 nl_client, int iwpm_pid)”h]”j")�”}”(hŒ1int iwpm_send_mapinfo(u8 nl_client, int iwpm_pid)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjûh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûh²hh³j h´K¯ubjš)�”}”(hŒiwpm_send_mapinfo”h]”jN)�”}”(hŒiwpm_send_mapinfo”h]”hŒiwpm_send_mapinfo”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjûh²hh³j h´K¯ubj·)�”}”(hŒ(u8 nl_client, int iwpm_pid)”h]”(j½)�”}”(hŒ u8 nl_client”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jAŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj"sbŒc.iwpm_send_mapinfo”†”asbuh1hhj8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj8ubjN)�”}”(hŒ nl_client”h]”hŒ nl_client”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4ubj½)�”}”(hŒ int iwpm_pid”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‚ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚ubjN)�”}”(hŒiwpm_pid”h]”hŒiwpm_pid”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjûh²hh³j h´K¯ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj÷h²hh³j h´K¯ubah}”(h]”jòah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j h´K¯hjôh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒVSend local and mapped IPv4/IPv6 address info of a client to the user space port mapper”h]”hŒVSend local and mapped IPv4/IPv6 address info of a client to the user space port mapper”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K¯hjÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjôh²hh³j h´K¯ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjäjÓjäjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒÍ**Parameters** ``u8 nl_client`` The index of the netlink client ``int iwpm_pid`` The pid of the user space port mapper **Description** If successful, returns the number of sent mapping info records”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjîh]”hŒ Parameters”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K³hjèubjø)�”}”(hhh]”(jý)�”}”(hŒ1``u8 nl_client`` The index of the netlink client ”h]”(j)�”}”(hŒ``u8 nl_client``”h]”j )�”}”(hj h]”hŒ u8 nl_client”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K±hjubj)�”}”(hhh]”hÝ)�”}”(hŒThe index of the netlink client”h]”hŒThe index of the netlink client”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j"h´K±hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j"h´K±hjubjý)�”}”(hŒ7``int iwpm_pid`` The pid of the user space port mapper ”h]”(j)�”}”(hŒ``int iwpm_pid``”h]”j )�”}”(hjFh]”hŒ int iwpm_pid”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K²hj@ubj)�”}”(hhh]”hÝ)�”}”(hŒ%The pid of the user space port mapper”h]”hŒ%The pid of the user space port mapper”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j[h´K²hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j[h´K²hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjèubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj�h]”hŒ Description”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K´hjèubhÝ)�”}”(hŒ>If successful, returns the number of sent mapping info records”h]”hŒ>If successful, returns the number of sent mapping info records”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K³hjèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#iwpm_mapinfo_available (C function)”Œc.iwpm_mapinfo_available”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ!int iwpm_mapinfo_available (void)”h]”j")�”}”(hŒ int iwpm_mapinfo_available(void)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÂh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÂh²hh³jÔh´K¹ubjš)�”}”(hŒiwpm_mapinfo_available”h]”jN)�”}”(hŒiwpm_mapinfo_available”h]”hŒiwpm_mapinfo_available”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjãubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÂh²hh³jÔh´K¹ubj·)�”}”(hŒ(void)”h]”j½)�”}”(hŒvoid”h]”jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÿubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjûubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÂh²hh³jÔh´K¹ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¾h²hh³jÔh´K¹ubah}”(h]”j¹ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÔh´K¹hj»h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ@Check if any mapping info records is available in the hash table”h]”hŒ@Check if any mapping info records is available in the hash table”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K¹hj*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj»h²hh³jÔh´K¹ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjEjÓjEjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ|**Parameters** ``void`` no arguments **Description** Returns 1 if mapping information is available, otherwise returns 0”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjOh]”hŒ Parameters”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´K½hjIubjø)�”}”(hhh]”jý)�”}”(hŒ``void`` no arguments ”h]”(j)�”}”(hŒ``void``”h]”j )�”}”(hjnh]”hŒvoid”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Khjhubj)�”}”(hhh]”hÝ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jƒh´Khj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jƒh´Khjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjIubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj©h]”hŒ Description”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KhjIubhÝ)�”}”(hŒBReturns 1 if mapping information is available, otherwise returns 0”h]”hŒBReturns 1 if mapping information is available, otherwise returns 0”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KºhjIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iwpm_compare_sockaddr (C function)”Œc.iwpm_compare_sockaddr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdint iwpm_compare_sockaddr (struct sockaddr_storage *a_sockaddr, struct sockaddr_storage *b_sockaddr)”h]”j")�”}”(hŒcint iwpm_compare_sockaddr(struct sockaddr_storage *a_sockaddr, struct sockaddr_storage *b_sockaddr)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjêh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjêh²hh³jüh´KÁubjš)�”}”(hŒiwpm_compare_sockaddr”h]”jN)�”}”(hŒiwpm_compare_sockaddr”h]”hŒiwpm_compare_sockaddr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjêh²hh³jüh´KÁubj·)�”}”(hŒJ(struct sockaddr_storage *a_sockaddr, struct sockaddr_storage *b_sockaddr)”h]”(j½)�”}”(hŒ#struct sockaddr_storage *a_sockaddr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'ubh)�”}”(hhh]”jN)�”}”(hŒsockaddr_storage”h]”hŒsockaddr_storage”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jKŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjsbŒc.iwpm_compare_sockaddr”†”asbuh1hhj'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj'ubjN)�”}”(hŒ a_sockaddr”h]”hŒ a_sockaddr”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubj½)�”}”(hŒ#struct sockaddr_storage *b_sockaddr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubh)�”}”(hhh]”jN)�”}”(hŒsockaddr_storage”h]”hŒsockaddr_storage”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j½Œmodname”NŒ classname”Njkjn)�”}”jq]”jeŒc.iwpm_compare_sockaddr”†”asbuh1hhj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj™ubjN)�”}”(hŒ b_sockaddr”h]”hŒ b_sockaddr”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjêh²hh³jüh´KÁubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjæh²hh³jüh´KÁubah}”(h]”jáah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jüh´KÁhjãh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$Compare two sockaddr storage structs”h]”hŒ$Compare two sockaddr storage structs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÁhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjãh²hh³jüh´KÁubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj6jÓj6jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒî**Parameters** ``struct sockaddr_storage *a_sockaddr`` first sockaddr to compare ``struct sockaddr_storage *b_sockaddr`` second sockaddr to compare **Return** 0 if they are holding the same ip/tcp address info, otherwise returns 1”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj@h]”hŒ Parameters”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÅhj:ubjø)�”}”(hhh]”(jý)�”}”(hŒB``struct sockaddr_storage *a_sockaddr`` first sockaddr to compare ”h]”(j)�”}”(hŒ'``struct sockaddr_storage *a_sockaddr``”h]”j )�”}”(hj_h]”hŒ#struct sockaddr_storage *a_sockaddr”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÂhjYubj)�”}”(hhh]”hÝ)�”}”(hŒfirst sockaddr to compare”h]”hŒfirst sockaddr to compare”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jth´KÂhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jth´KÂhjVubjý)�”}”(hŒC``struct sockaddr_storage *b_sockaddr`` second sockaddr to compare ”h]”(j)�”}”(hŒ'``struct sockaddr_storage *b_sockaddr``”h]”j )�”}”(hj˜h]”hŒ#struct sockaddr_storage *b_sockaddr”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÃhj’ubj)�”}”(hhh]”hÝ)�”}”(hŒsecond sockaddr to compare”h]”hŒsecond sockaddr to compare”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j­h´KÃhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j­h´KÃhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj:ubhÝ)�”}”(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&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÅhj:ubhÝ)�”}”(hŒG0 if they are holding the same ip/tcp address info, otherwise returns 1”h]”hŒG0 if they are holding the same ip/tcp address info, otherwise returns 1”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÅhj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%iwpm_validate_nlmsg_attr (C function)”Œc.iwpm_validate_nlmsg_attr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCint iwpm_validate_nlmsg_attr (struct nlattr *nltb[], int nla_count)”h]”j")�”}”(hŒBint iwpm_validate_nlmsg_attr(struct nlattr *nltb[], int nla_count)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÌubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³j&h´KÌubjš)�”}”(hŒiwpm_validate_nlmsg_attr”h]”jN)�”}”(hŒiwpm_validate_nlmsg_attr”h]”hŒiwpm_validate_nlmsg_attr”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj5ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh²hh³j&h´KÌubj·)�”}”(hŒ&(struct nlattr *nltb[], int nla_count)”h]”(j½)�”}”(hŒstruct nlattr *nltb[]”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubh)�”}”(hhh]”jN)�”}”(hŒnlattr”h]”hŒnlattr”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”juŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj;sbŒc.iwpm_validate_nlmsg_attr”†”asbuh1hhjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjQubjN)�”}”(hŒnltb”h]”hŒnltb”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjQubj‰)�”}”(hŒ[”h]”hŒ[”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjQubj‰)�”}”(hŒ]”h]”hŒ]”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjMubj½)�”}”(hŒ int nla_count”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßubjN)�”}”(hŒ nla_count”h]”hŒ nla_count”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjMubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjh²hh³j&h´KÌubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh²hh³j&h´KÌubah}”(h]”j ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j&h´KÌhj h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!Check for NULL netlink attributes”h]”hŒ!Check for NULL netlink attributes”…”�”•}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÌhj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj h²hh³j&h´KÌubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjAjÓjAjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒá**Parameters** ``struct nlattr *nltb[]`` Holds address of each netlink message attributes ``int nla_count`` Number of netlink message attributes **Description** Returns error if any of the nla_count attributes is NULL”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjKh]”hŒ Parameters”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÐhjEubjø)�”}”(hhh]”(jý)�”}”(hŒK``struct nlattr *nltb[]`` Holds address of each netlink message attributes ”h]”(j)�”}”(hŒ``struct nlattr *nltb[]``”h]”j )�”}”(hjjh]”hŒstruct nlattr *nltb[]”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÍhjdubj)�”}”(hhh]”hÝ)�”}”(hŒ0Holds address of each netlink message attributes”h]”hŒ0Holds address of each netlink message attributes”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´KÍhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´KÍhjaubjý)�”}”(hŒ7``int nla_count`` Number of netlink message attributes ”h]”(j)�”}”(hŒ``int nla_count``”h]”j )�”}”(hj£h]”hŒ int nla_count”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÎhj�ubj)�”}”(hhh]”hÝ)�”}”(hŒ$Number of netlink message attributes”h]”hŒ$Number of netlink message attributes”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¸h´KÎhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¸h´KÎhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjEubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjÞh]”hŒ Description”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÐhjEubhÝ)�”}”(hŒ8Returns error if any of the nla_count attributes is NULL”h]”hŒ8Returns error if any of the nla_count attributes is NULL”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÏhjEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiwpm_create_nlmsg (C function)”Œc.iwpm_create_nlmsg”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒTstruct sk_buff * iwpm_create_nlmsg (u32 nl_op, struct nlmsghdr **nlh, int nl_client)”h]”j")�”}”(hŒRstruct sk_buff *iwpm_create_nlmsg(u32 nl_op, struct nlmsghdr **nlh, int nl_client)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³j0h´KÞubh)�”}”(hhh]”jN)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jDŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒiwpm_create_nlmsg”sbŒc.iwpm_create_nlmsg”†”asbuh1hhjh²hh³j0h´KÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³j0h´KÞubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjh²hh³j0h´KÞubjš)�”}”(hŒiwpm_create_nlmsg”h]”jN)�”}”(hj`h]”hŒiwpm_create_nlmsg”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj~ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh²hh³j0h´KÞubj·)�”}”(hŒ1(u32 nl_op, struct nlmsghdr **nlh, int nl_client)”h]”(j½)�”}”(hŒ u32 nl_op”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¢Œmodname”NŒ classname”Njkjn)�”}”jq]”j^Œc.iwpm_create_nlmsg”†”asbuh1hhj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubjN)�”}”(hŒnl_op”h]”hŒnl_op”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj•ubj½)�”}”(hŒstruct nlmsghdr **nlh”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjáubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjáubh)�”}”(hhh]”jN)�”}”(hŒnlmsghdr”h]”hŒnlmsghdr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”j^Œc.iwpm_create_nlmsg”†”asbuh1hhjáubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjá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áubjN)�”}”(hŒnlh”h]”hŒnlh”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj•ubj½)�”}”(hŒ int nl_client”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^ubjN)�”}”(hŒ nl_client”h]”hŒ nl_client”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj•ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjh²hh³j0h´KÞubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh²hh³j0h´KÞubah}”(h]”jah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j0h´KÞhjh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ'Allocate skb and form a netlink message”h]”hŒ'Allocate skb and form a netlink message”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÞhj¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjh²hh³j0h´KÞubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÀjÓjÀjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXH**Parameters** ``u32 nl_op`` Netlink message opcode ``struct nlmsghdr **nlh`` Holds address of the netlink message header in skb ``int nl_client`` The index of the netlink client **Description** Returns the newly allcated skb, or NULL if the tailroom of the skb is insufficient to store the message header and payload”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÊh]”hŒ Parameters”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KâhjÄubjø)�”}”(hhh]”(jý)�”}”(hŒ%``u32 nl_op`` Netlink message opcode ”h]”(j)�”}”(hŒ ``u32 nl_op``”h]”j )�”}”(hjéh]”hŒ u32 nl_op”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kßhjãubj)�”}”(hhh]”hÝ)�”}”(hŒNetlink message opcode”h]”hŒNetlink message opcode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒM``struct nlmsghdr **nlh`` Holds address of the netlink message header in skb ”h]”(j)�”}”(hŒ``struct nlmsghdr **nlh``”h]”j )�”}”(hj"h]”hŒstruct nlmsghdr **nlh”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kàhjubj)�”}”(hhh]”hÝ)�”}”(hŒ2Holds address of the netlink message header in skb”h]”hŒ2Holds address of the netlink message header in skb”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7h´Kàhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j7h´Kàhjàubjý)�”}”(hŒ2``int nl_client`` The index of the netlink client ”h]”(j)�”}”(hŒ``int nl_client``”h]”j )�”}”(hj[h]”hŒ int nl_client”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KáhjUubj)�”}”(hhh]”hÝ)�”}”(hŒThe index of the netlink client”h]”hŒThe index of the netlink client”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jph´Káhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jph´Káhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÄubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj–h]”hŒ Description”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KãhjÄubhÝ)�”}”(hŒzReturns the newly allcated skb, or NULL if the tailroom of the skb is insufficient to store the message header and payload”h]”hŒzReturns the newly allcated skb, or NULL if the tailroom of the skb is insufficient to store the message header and payload”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KâhjÄubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiwpm_parse_nlmsg (C function)”Œc.iwpm_parse_nlmsg”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ–int iwpm_parse_nlmsg (struct netlink_callback *cb, int policy_max, const struct nla_policy *nlmsg_policy, struct nlattr *nltb[], const char *msg_type)”h]”j")�”}”(hŒ•int iwpm_parse_nlmsg(struct netlink_callback *cb, int policy_max, const struct nla_policy *nlmsg_policy, struct nlattr *nltb[], const char *msg_type)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj×h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kêubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj×h²hh³jéh´Kêubjš)�”}”(hŒiwpm_parse_nlmsg”h]”jN)�”}”(hŒiwpm_parse_nlmsg”h]”hŒiwpm_parse_nlmsg”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjøubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj×h²hh³jéh´Kêubj·)�”}”(hŒ�(struct netlink_callback *cb, int policy_max, const struct nla_policy *nlmsg_policy, struct nlattr *nltb[], const char *msg_type)”h]”(j½)�”}”(hŒstruct netlink_callback *cb”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubh)�”}”(hhh]”jN)�”}”(hŒnetlink_callback”h]”hŒnetlink_callback”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j8Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjþsbŒc.iwpm_parse_nlmsg”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubjN)�”}”(hŒcb”h]”hŒcb”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒint policy_max”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj†ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ubjN)�”}”(hŒ policy_max”h]”hŒ policy_max”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ%const struct nla_policy *nlmsg_policy”h]”(j()�”}”(hŒconst”h]”hŒconst”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»ubh)�”}”(hhh]”jN)�”}”(hŒ nla_policy”h]”hŒ nla_policy”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jûŒmodname”NŒ classname”Njkjn)�”}”jq]”jRŒc.iwpm_parse_nlmsg”†”asbuh1hhj»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj»ubjN)�”}”(hŒ nlmsg_policy”h]”hŒ nlmsg_policy”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒstruct nlattr *nltb[]”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGubh)�”}”(hhh]”jN)�”}”(hŒnlattr”h]”hŒnlattr”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jkŒmodname”NŒ classname”Njkjn)�”}”jq]”jRŒc.iwpm_parse_nlmsg”†”asbuh1hhjGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjGubjN)�”}”(hŒnltb”h]”hŒnltb”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjGubj‰)�”}”(hj¾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ˆhjGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒconst char *msg_type”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÑubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÑubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÑubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÑubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÑubjN)�”}”(hŒmsg_type”h]”hŒmsg_type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj×h²hh³jéh´Kêubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÓh²hh³jéh´Kêubah}”(h]”jÎah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jéh´KêhjÐh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ/Validate and parse the received netlink message”h]”hŒ/Validate and parse the received netlink message”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kêhj@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÐh²hh³jéh´Kêubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj[jÓj[jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX‚**Parameters** ``struct netlink_callback *cb`` Netlink callback structure ``int policy_max`` Maximum attribute type to be expected ``const struct nla_policy *nlmsg_policy`` Validation policy ``struct nlattr *nltb[]`` Array to store policy_max parsed elements ``const char *msg_type`` Type of netlink message **Description** Returns 0 on success or a negative error code”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjeh]”hŒ Parameters”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kîhj_ubjø)�”}”(hhh]”(jý)�”}”(hŒ;``struct netlink_callback *cb`` Netlink callback structure ”h]”(j)�”}”(hŒ``struct netlink_callback *cb``”h]”j )�”}”(hj„h]”hŒstruct netlink_callback *cb”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Këhj~ubj)�”}”(hhh]”hÝ)�”}”(hŒNetlink callback structure”h]”hŒNetlink callback structure”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``int policy_max`` Maximum attribute type to be expected ”h]”(j)�”}”(hŒ``int policy_max``”h]”j )�”}”(hj½h]”hŒint policy_max”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kìhj·ubj)�”}”(hhh]”hÝ)�”}”(hŒ%Maximum attribute type to be expected”h]”hŒ%Maximum attribute type to be expected”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ<``const struct nla_policy *nlmsg_policy`` Validation policy ”h]”(j)�”}”(hŒ)``const struct nla_policy *nlmsg_policy``”h]”j )�”}”(hjöh]”hŒ%const struct nla_policy *nlmsg_policy”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kíhjðubj)�”}”(hhh]”hÝ)�”}”(hŒValidation policy”h]”hŒValidation policy”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒD``struct nlattr *nltb[]`` Array to store policy_max parsed elements ”h]”(j)�”}”(hŒ``struct nlattr *nltb[]``”h]”j )�”}”(hj/h]”hŒstruct nlattr *nltb[]”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kîhj)ubj)�”}”(hhh]”hÝ)�”}”(hŒ)Array to store policy_max parsed elements”h]”hŒ)Array to store policy_max parsed elements”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jDh´KîhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jDh´Kîhj{ubjý)�”}”(hŒ1``const char *msg_type`` Type of netlink message ”h]”(j)�”}”(hŒ``const char *msg_type``”h]”j )�”}”(hjhh]”hŒconst char *msg_type”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kïhjbubj)�”}”(hhh]”hÝ)�”}”(hŒType of netlink message”h]”hŒType of netlink message”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j}h´Kïhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j}h´Kïhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj_ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj£h]”hŒ Description”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kñhj_ubhÝ)�”}”(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&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kðhj_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ iwpm_print_sockaddr (C function)”Œc.iwpm_print_sockaddr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGvoid iwpm_print_sockaddr (struct sockaddr_storage *sockaddr, char *msg)”h]”j")�”}”(hŒFvoid iwpm_print_sockaddr(struct sockaddr_storage *sockaddr, char *msg)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjäh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Køubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäh²hh³jöh´Køubjš)�”}”(hŒiwpm_print_sockaddr”h]”jN)�”}”(hŒiwpm_print_sockaddr”h]”hŒiwpm_print_sockaddr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjäh²hh³jöh´Køubj·)�”}”(hŒ.(struct sockaddr_storage *sockaddr, char *msg)”h]”(j½)�”}”(hŒ!struct sockaddr_storage *sockaddr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubh)�”}”(hhh]”jN)�”}”(hŒsockaddr_storage”h]”hŒsockaddr_storage”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jEŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj sbŒc.iwpm_print_sockaddr”†”asbuh1hhj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj!ubjN)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ char *msg”h]”(jý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj“ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj“ubjN)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjäh²hh³jöh´Køubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjàh²hh³jöh´Køubah}”(h]”jÛah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jöh´KøhjÝh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$Print IPv4/IPv6 address and TCP port”h]”hŒ$Print IPv4/IPv6 address and TCP port”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Køhjçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÝh²hh³jöh´Køubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjjÓjjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒq**Parameters** ``struct sockaddr_storage *sockaddr`` Socket address to print ``char *msg`` Message to print”h]”(hÝ)�”}”(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&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kühjubjø)�”}”(hhh]”(jý)�”}”(hŒ>``struct sockaddr_storage *sockaddr`` Socket address to print ”h]”(j)�”}”(hŒ%``struct sockaddr_storage *sockaddr``”h]”j )�”}”(hj+h]”hŒ!struct sockaddr_storage *sockaddr”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kùhj%ubj)�”}”(hhh]”hÝ)�”}”(hŒSocket address to print”h]”hŒSocket address to print”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j@h´KùhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j@h´Kùhj"ubjý)�”}”(hŒ``char *msg`` Message to print”h]”(j)�”}”(hŒ ``char *msg``”h]”j )�”}”(hjdh]”hŒ char *msg”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kûhj^ubj)�”}”(hhh]”hÝ)�”}”(hŒMessage to print”h]”hŒMessage to print”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.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÷hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiwpm_send_hello (C function)”Œc.iwpm_send_hello”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAint iwpm_send_hello (u8 nl_client, int iwpm_pid, u16 abi_version)”h]”j")�”}”(hŒ@int iwpm_send_hello(u8 nl_client, int iwpm_pid, u16 abi_version)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjºh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Kÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºh²hh³jÌh´Kÿubjš)�”}”(hŒiwpm_send_hello”h]”jN)�”}”(hŒiwpm_send_hello”h]”hŒiwpm_send_hello”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjºh²hh³jÌh´Kÿubj·)�”}”(hŒ-(u8 nl_client, int iwpm_pid, u16 abi_version)”h]”(j½)�”}”(hŒ u8 nl_client”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjásbŒc.iwpm_send_hello”†”asbuh1hhj÷ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj÷ubjN)�”}”(hŒ nl_client”h]”hŒ nl_client”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjóubj½)�”}”(hŒ int iwpm_pid”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjA ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjA ubjN)�”}”(hŒiwpm_pid”h]”hŒiwpm_pid”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjA ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjóubj½)�”}”(hŒu16 abi_version”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjz ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j Œmodname”NŒ classname”Njkjn)�”}”jq]”j Œc.iwpm_send_hello”†”asbuh1hhjv ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjv ubjN)�”}”(hŒ abi_version”h]”hŒ abi_version”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjv ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjóubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjºh²hh³jÌh´Kÿubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¶h²hh³jÌh´Kÿubah}”(h]”j±ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÌh´Kÿhj³h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSend hello response to iwpmd”h]”hŒSend hello response to iwpmd”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´KÿhjÐ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj³h²hh³jÌh´Kÿubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjë jÓjë jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒì**Parameters** ``u8 nl_client`` The index of the netlink client ``int iwpm_pid`` The pid of the user space port mapper ``u16 abi_version`` The kernel's abi_version **Description** Returns 0 on success or a negative error code”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjõ h]”hŒ Parameters”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjó ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Mhjï ubjø)�”}”(hhh]”(jý)�”}”(hŒ1``u8 nl_client`` The index of the netlink client ”h]”(j)�”}”(hŒ``u8 nl_client``”h]”j )�”}”(hj!h]”hŒ u8 nl_client”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Mhj!ubj)�”}”(hhh]”hÝ)�”}”(hŒThe index of the netlink client”h]”hŒThe index of the netlink client”…”�”}”(hj-!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j)!h´Mhj*!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j)!h´Mhj !ubjý)�”}”(hŒ7``int iwpm_pid`` The pid of the user space port mapper ”h]”(j)�”}”(hŒ``int iwpm_pid``”h]”j )�”}”(hjM!h]”hŒ int iwpm_pid”…”�”}”(hjO!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´MhjG!ubj)�”}”(hhh]”hÝ)�”}”(hŒ%The pid of the user space port mapper”h]”hŒ%The pid of the user space port mapper”…”�”}”(hjf!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jb!h´Mhjc!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jb!h´Mhj !ubjý)�”}”(hŒ-``u16 abi_version`` The kernel's abi_version ”h]”(j)�”}”(hŒ``u16 abi_version``”h]”j )�”}”(hj†!h]”hŒu16 abi_version”…”�”}”(hjˆ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Mhj€!ubj)�”}”(hhh]”hÝ)�”}”(hŒThe kernel's abi_version”h]”hŒThe kernel’s abi_version”…”�”}”(hjŸ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ï ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjÁ!h]”hŒ Description”…”�”}”(hjÃ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¿!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Mhjï ubhÝ)�”}”(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&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:13: ./drivers/infiniband/core/iwpm_util.h”h´Mhjï ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ib_process_cq_direct (C function)”Œc.ib_process_cq_direct”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ7int ib_process_cq_direct (struct ib_cq *cq, int budget)”h]”j")�”}”(hŒ6int ib_process_cq_direct(struct ib_cq *cq, int budget)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj"h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K}ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"h²hh³j"h´K}ubjš)�”}”(hŒib_process_cq_direct”h]”jN)�”}”(hŒib_process_cq_direct”h]”hŒib_process_cq_direct”…”�”}”(hj'"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#"ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj"h²hh³j"h´K}ubj·)�”}”(hŒ(struct ib_cq *cq, int budget)”h]”(j½)�”}”(hŒstruct ib_cq *cq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjC"h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj?"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj?"ubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hja"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jc"Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj)"sbŒc.ib_process_cq_direct”†”asbuh1hhj?"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj?"ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj?"ubjN)�”}”(hŒcq”h]”hŒcq”…”�”}”(hjœ"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj;"ubj½)�”}”(hŒ int budget”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjµ"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj±"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj±"ubjN)�”}”(hŒbudget”h]”hŒbudget”…”�”}”(hjÑ"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj±"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj;"ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj"h²hh³j"h´K}ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjþ!h²hh³j"h´K}ubah}”(h]”jù!ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j"h´K}hjû!h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒprocess a CQ in caller context”h]”hŒprocess a CQ in caller context”…”�”}”(hjû"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K}hjø"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjû!h²hh³j"h´K}ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj#jÓj#jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_cq *cq`` CQ to process ``int budget`` number of CQEs to poll for **Description** This function is used to process all outstanding CQ entries. It does not offload CQ processing to a different context and does not ask for completion interrupts from the HCA. Using direct processing on CQ with non IB_POLL_DIRECT type may trigger concurrent processing. **Note** do not pass -1 as ``budget`` unless it is guaranteed that the number of completions that will be processed is small.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj#h]”hŒ Parameters”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K�hj#ubjø)�”}”(hhh]”(jý)�”}”(hŒ#``struct ib_cq *cq`` CQ to process ”h]”(j)�”}”(hŒ``struct ib_cq *cq``”h]”j )�”}”(hj<#h]”hŒstruct ib_cq *cq”…”�”}”(hj>#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K~hj6#ubj)�”}”(hhh]”hÝ)�”}”(hŒ CQ to process”h]”hŒ CQ to process”…”�”}”(hjU#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 budget`` number of CQEs to poll for ”h]”(j)�”}”(hŒ``int budget``”h]”j )�”}”(hju#h]”hŒ int budget”…”�”}”(hjw#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´Khjo#ubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of CQEs to poll for”h]”hŒnumber of CQEs to poll for”…”�”}”(hjŽ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŠ#h´Khj‹#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŠ#h´Khj3#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj#ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj°#h]”hŒ Description”…”�”}”(hj²#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj®#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K�hj#ubhÝ)�”}”(hX This function is used to process all outstanding CQ entries. It does not offload CQ processing to a different context and does not ask for completion interrupts from the HCA. Using direct processing on CQ with non IB_POLL_DIRECT type may trigger concurrent processing.”h]”hX This function is used to process all outstanding CQ entries. It does not offload CQ processing to a different context and does not ask for completion interrupts from the HCA. Using direct processing on CQ with non IB_POLL_DIRECT type may trigger concurrent processing.”…”�”}”(hjÆ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K€hj#ubhÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K†hj#ubhÝ)�”}”(hŒtdo not pass -1 as ``budget`` unless it is guaranteed that the number of completions that will be processed is small.”h]”(hŒdo not pass -1 as ”…”�”}”(hjí#h²hh³Nh´Nubj )�”}”(hŒ ``budget``”h]”hŒbudget”…”�”}”(hjõ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjí#ubhŒX unless it is guaranteed that the number of completions that will be processed is small.”…”�”}”(hjí#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´K‡hj#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ__ib_alloc_cq (C function)”Œc.__ib_alloc_cq”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ“struct ib_cq * __ib_alloc_cq (struct ib_device *dev, void *private, int nr_cqe, int comp_vector, enum ib_poll_context poll_ctx, const char *caller)”h]”j")�”}”(hŒ‘struct ib_cq *__ib_alloc_cq(struct ib_device *dev, void *private, int nr_cqe, int comp_vector, enum ib_poll_context poll_ctx, const char *caller)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj.$h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj*$h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÇubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*$h²hh³j;$h´KÇubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hjM$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjJ$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jO$Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒ __ib_alloc_cq”sbŒc.__ib_alloc_cq”†”asbuh1hhj*$h²hh³j;$h´KÇubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*$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Çubjš)�”}”(hŒ __ib_alloc_cq”h]”jN)�”}”(hjk$h]”hŒ __ib_alloc_cq”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‰$ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj*$h²hh³j;$h´KÇubj·)�”}”(hŒv(struct ib_device *dev, void *private, int nr_cqe, int comp_vector, enum ib_poll_context poll_ctx, const char *caller)”h]”(j½)�”}”(hŒstruct ib_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¨$h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¤$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤$ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjÆ$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÃ$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÈ$Œmodname”NŒ classname”Njkjn)�”}”jq]”ji$Œc.__ib_alloc_cq”†”asbuh1hhj¤$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤$ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjò$h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¤$ubjN)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÿ$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¤$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj $ubj½)�”}”(hŒ void *private”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj%ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj4%h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj%ubjN)�”}”(hŒprivate”h]”hŒprivate”…”�”}”(hjA%h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj $ubj½)�”}”(hŒ int nr_cqe”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjZ%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjV%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV%ubjN)�”}”(hŒnr_cqe”h]”hŒnr_cqe”…”�”}”(hjv%h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjV%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj $ubj½)�”}”(hŒint comp_vector”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‹%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‹%ubjN)�”}”(hŒ comp_vector”h]”hŒ comp_vector”…”�”}”(hj«%h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‹%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj $ubj½)�”}”(hŒenum ib_poll_context poll_ctx”h]”(j()�”}”(hŒenum”h]”hŒenum”…”�”}”(hjÄ%h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÀ%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀ%ubh)�”}”(hhh]”jN)�”}”(hŒib_poll_context”h]”hŒib_poll_context”…”�”}”(hjã%h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjà%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jå%Œmodname”NŒ classname”Njkjn)�”}”jq]”ji$Œc.__ib_alloc_cq”†”asbuh1hhjÀ%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀ%ubjN)�”}”(hŒpoll_ctx”h]”hŒpoll_ctx”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÀ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj $ubj½)�”}”(hŒconst char *caller”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj(&h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj$&ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$&ubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjC&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj$&ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$&ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj_&h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj$&ubjN)�”}”(hŒcaller”h]”hŒcaller”…”�”}”(hjl&h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj $ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj*$h²hh³j;$h´KÇubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj&$h²hh³j;$h´KÇubah}”(h]”j!$ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j;$h´KÇhj#$h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒallocate a completion queue”h]”hŒallocate a completion queue”…”�”}”(hj–&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÇhj“&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj#$h²hh³j;$h´KÇubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj®&jÓj®&jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXf**Parameters** ``struct ib_device *dev`` device to allocate the CQ for ``void *private`` driver private data, accessible from cq->cq_context ``int nr_cqe`` number of CQEs to allocate ``int comp_vector`` HCA completion vectors for this CQ ``enum ib_poll_context poll_ctx`` context to poll the CQ from. ``const char *caller`` module owner name. **Description** This is the proper interface to allocate a CQ for in-kernel users. A CQ allocated with this interface will automatically be polled from the specified context. The ULP must use wr->wr_cqe instead of wr->wr_id to use this CQ abstraction.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¸&h]”hŒ Parameters”…”�”}”(hjº&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¶&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KËhj²&ubjø)�”}”(hhh]”(jý)�”}”(hŒ8``struct ib_device *dev`` device to allocate the CQ for ”h]”(j)�”}”(hŒ``struct ib_device *dev``”h]”j )�”}”(hj×&h]”hŒstruct ib_device *dev”…”�”}”(hjÙ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÈhjÑ&ubj)�”}”(hhh]”hÝ)�”}”(hŒdevice to allocate the CQ for”h]”hŒdevice to allocate the CQ for”…”�”}”(hjð&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒF``void *private`` driver private data, accessible from cq->cq_context ”h]”(j)�”}”(hŒ``void *private``”h]”j )�”}”(hj'h]”hŒ void *private”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÉhj 'ubj)�”}”(hhh]”hÝ)�”}”(hŒ3driver private data, accessible from cq->cq_context”h]”hŒ3driver private data, accessible from cq->cq_context”…”�”}”(hj)'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 nr_cqe`` number of CQEs to allocate ”h]”(j)�”}”(hŒ``int nr_cqe``”h]”j )�”}”(hjI'h]”hŒ int nr_cqe”…”�”}”(hjK'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÊhjC'ubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of CQEs to allocate”h]”hŒnumber of CQEs to allocate”…”�”}”(hjb'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ7``int comp_vector`` HCA completion vectors for this CQ ”h]”(j)�”}”(hŒ``int comp_vector``”h]”j )�”}”(hj‚'h]”hŒint comp_vector”…”�”}”(hj„'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KËhj|'ubj)�”}”(hhh]”hÝ)�”}”(hŒ"HCA completion vectors for this CQ”h]”hŒ"HCA completion vectors for this CQ”…”�”}”(hj›'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ?``enum ib_poll_context poll_ctx`` context to poll the CQ from. ”h]”(j)�”}”(hŒ!``enum ib_poll_context poll_ctx``”h]”j )�”}”(hj»'h]”hŒenum ib_poll_context poll_ctx”…”�”}”(hj½'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÌhjµ'ubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to poll the CQ from.”h]”hŒcontext to poll the CQ from.”…”�”}”(hjÔ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ*``const char *caller`` module owner name. ”h]”(j)�”}”(hŒ``const char *caller``”h]”j )�”}”(hjô'h]”hŒconst char *caller”…”�”}”(hjö'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÍhjî'ubj)�”}”(hhh]”hÝ)�”}”(hŒmodule owner name.”h]”hŒmodule owner name.”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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²&ubhÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÏhj²&ubhÝ)�”}”(hŒëThis is the proper interface to allocate a CQ for in-kernel users. A CQ allocated with this interface will automatically be polled from the specified context. The ULP must use wr->wr_cqe instead of wr->wr_id to use this CQ abstraction.”h]”hŒëThis is the proper interface to allocate a CQ for in-kernel users. A CQ allocated with this interface will automatically be polled from the specified context. The ULP must use wr->wr_cqe instead of wr->wr_id to use this CQ abstraction.”…”�”}”(hjE(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´KÎhj²&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ__ib_alloc_cq_any (C function)”Œc.__ib_alloc_cq_any”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ†struct ib_cq * __ib_alloc_cq_any (struct ib_device *dev, void *private, int nr_cqe, enum ib_poll_context poll_ctx, const char *caller)”h]”j")�”}”(hŒ„struct ib_cq *__ib_alloc_cq_any(struct ib_device *dev, void *private, int nr_cqe, enum ib_poll_context poll_ctx, const char *caller)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjt(h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjp(h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjp(h²hh³j�(h´M"ubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hj“(h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j•(Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒ__ib_alloc_cq_any”sbŒc.__ib_alloc_cq_any”†”asbuh1hhjp(h²hh³j�(h´M"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjp(h²hh³j�(h´M"ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjp(h²hh³j�(h´M"ubjš)�”}”(hŒ__ib_alloc_cq_any”h]”jN)�”}”(hj±(h]”hŒ__ib_alloc_cq_any”…”�”}”(hjÓ(h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÏ(ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjp(h²hh³j�(h´M"ubj·)�”}”(hŒe(struct ib_device *dev, void *private, int nr_cqe, enum ib_poll_context poll_ctx, const char *caller)”h]”(j½)�”}”(hŒstruct ib_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjî(h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjê(ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjê(ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj )ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j)Œmodname”NŒ classname”Njkjn)�”}”jq]”j¯(Œc.__ib_alloc_cq_any”†”asbuh1hhjê(ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjê(ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj8)h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjê(ubjN)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjE)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjê(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjæ(ubj½)�”}”(hŒ void *private”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjZ)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZ)ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjz)h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjZ)ubjN)�”}”(hŒprivate”h]”hŒprivate”…”�”}”(hj‡)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjæ(ubj½)�”}”(hŒ int nr_cqe”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjœ)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjœ)ubjN)�”}”(hŒnr_cqe”h]”hŒnr_cqe”…”�”}”(hj¼)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjœ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjæ(ubj½)�”}”(hŒenum ib_poll_context poll_ctx”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjÕ)h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÑ)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÑ)ubh)�”}”(hhh]”jN)�”}”(hŒib_poll_context”h]”hŒib_poll_context”…”�”}”(hjó)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjð)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jõ)Œmodname”NŒ classname”Njkjn)�”}”jq]”j¯(Œc.__ib_alloc_cq_any”†”asbuh1hhjÑ)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÑ)ubjN)�”}”(hŒpoll_ctx”h]”hŒpoll_ctx”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÑ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjæ(ubj½)�”}”(hŒconst char *caller”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj8*h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj4*ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4*ubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjS*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj4*ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4*ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjo*h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj4*ubjN)�”}”(hŒcaller”h]”hŒcaller”…”�”}”(hj|*h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj4*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjæ(ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjp(h²hh³j�(h´M"ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjl(h²hh³j�(h´M"ubah}”(h]”jg(ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j�(h´M"hji(h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒallocate a completion queue”h]”hŒallocate a completion queue”…”�”}”(hj¦*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M"hj£*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hji(h²hh³j�(h´M"ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¾*jÓj¾*jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX´**Parameters** ``struct ib_device *dev`` device to allocate the CQ for ``void *private`` driver private data, accessible from cq->cq_context ``int nr_cqe`` number of CQEs to allocate ``enum ib_poll_context poll_ctx`` context to poll the CQ from ``const char *caller`` module owner name **Description** Attempt to spread ULP Completion Queues over each device's interrupt vectors. A simple best-effort mechanism is used.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÈ*h]”hŒ Parameters”…”�”}”(hjÊ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÆ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M&hjÂ*ubjø)�”}”(hhh]”(jý)�”}”(hŒ8``struct ib_device *dev`` device to allocate the CQ for ”h]”(j)�”}”(hŒ``struct ib_device *dev``”h]”j )�”}”(hjç*h]”hŒstruct ib_device *dev”…”�”}”(hjé*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M#hjá*ubj)�”}”(hhh]”hÝ)�”}”(hŒdevice to allocate the CQ for”h]”hŒdevice to allocate the CQ for”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``void *private`` driver private data, accessible from cq->cq_context ”h]”(j)�”}”(hŒ``void *private``”h]”j )�”}”(hj +h]”hŒ void *private”…”�”}”(hj"+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M$hj+ubj)�”}”(hhh]”hÝ)�”}”(hŒ3driver private data, accessible from cq->cq_context”h]”hŒ3driver private data, accessible from cq->cq_context”…”�”}”(hj9+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j5+h´M$hj6+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j5+h´M$hjÞ*ubjý)�”}”(hŒ*``int nr_cqe`` number of CQEs to allocate ”h]”(j)�”}”(hŒ``int nr_cqe``”h]”j )�”}”(hjY+h]”hŒ int nr_cqe”…”�”}”(hj[+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M%hjS+ubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of CQEs to allocate”h]”hŒnumber of CQEs to allocate”…”�”}”(hjr+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jn+h´M%hjo+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjS+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jn+h´M%hjÞ*ubjý)�”}”(hŒ>``enum ib_poll_context poll_ctx`` context to poll the CQ from ”h]”(j)�”}”(hŒ!``enum ib_poll_context poll_ctx``”h]”j )�”}”(hj’+h]”hŒenum ib_poll_context poll_ctx”…”�”}”(hj”+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M&hjŒ+ubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to poll the CQ from”h]”hŒcontext to poll the CQ from”…”�”}”(hj«+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 *caller`` module owner name ”h]”(j)�”}”(hŒ``const char *caller``”h]”j )�”}”(hjË+h]”hŒconst char *caller”…”�”}”(hjÍ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M'hjÅ+ubj)�”}”(hhh]”hÝ)�”}”(hŒmodule owner name”h]”hŒmodule owner name”…”�”}”(hjä+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Â*ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj,h]”hŒ Description”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M)hjÂ*ubhÝ)�”}”(hŒuAttempt to spread ULP Completion Queues over each device's interrupt vectors. A simple best-effort mechanism is used.”h]”hŒwAttempt to spread ULP Completion Queues over each device’s interrupt vectors. A simple best-effort mechanism is used.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M(hjÂ*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_free_cq (C function)”Œ c.ib_free_cq”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ"void ib_free_cq (struct ib_cq *cq)”h]”j")�”}”(hŒ!void ib_free_cq(struct ib_cq *cq)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjK,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjG,h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjG,h²hh³jY,h´M>ubjš)�”}”(hŒ ib_free_cq”h]”jN)�”}”(hŒ ib_free_cq”h]”hŒ ib_free_cq”…”�”}”(hjl,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjh,ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjG,h²hh³jY,h´M>ubj·)�”}”(hŒ(struct ib_cq *cq)”h]”j½)�”}”(hŒstruct ib_cq *cq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjˆ,h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj„,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„,ubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hj¦,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj£,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¨,Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjn,sbŒ c.ib_free_cq”†”asbuh1hhj„,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„,ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÔ,h²hh³Nh´Nubah}”(h]”h ]”j•a•h"]”h$]”h&]”uh1jˆhj„,ubjN)�”}”(hŒcq”h]”hŒcq”…”�”}”(hjá,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj„,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj€,ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjG,h²hh³jY,h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjC,h²hh³jY,h´M>ubah}”(h]”j>,ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jY,h´M>hj@,h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒfree a completion queue”h]”hŒfree a completion queue”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M>hj-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj@,h²hh³jY,h´M>ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj#-jÓj#-jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ@**Parameters** ``struct ib_cq *cq`` completion queue to free.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj--h]”hŒ Parameters”…”�”}”(hj/-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj+-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´MBhj'-ubjø)�”}”(hhh]”jý)�”}”(hŒ.``struct ib_cq *cq`` completion queue to free.”h]”(j)�”}”(hŒ``struct ib_cq *cq``”h]”j )�”}”(hjL-h]”hŒstruct ib_cq *cq”…”�”}”(hjN-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´MDhjF-ubj)�”}”(hhh]”hÝ)�”}”(hŒcompletion queue to free.”h]”hŒcompletion queue to free.”…”�”}”(hje-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M?hjb-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³ja-h´MDhjC-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj'-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_cq_pool_get (C function)”Œc.ib_cq_pool_get”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒstruct ib_cq * ib_cq_pool_get (struct ib_device *dev, unsigned int nr_cqe, int comp_vector_hint, enum ib_poll_context poll_ctx)”h]”j")�”}”(hŒ}struct ib_cq *ib_cq_pool_get(struct ib_device *dev, unsigned int nr_cqe, int comp_vector_hint, enum ib_poll_context poll_ctx)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¦-h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¢-h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´-h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢-h²hh³j³-h´M§ubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hjÅ-h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÂ-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÇ-Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_cq_pool_get”sbŒc.ib_cq_pool_get”†”asbuh1hhj¢-h²hh³j³-h´M§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ-h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢-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§ubjš)�”}”(hŒib_cq_pool_get”h]”jN)�”}”(hjã-h]”hŒib_cq_pool_get”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj.ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¢-h²hh³j³-h´M§ubj·)�”}”(hŒa(struct ib_device *dev, unsigned int nr_cqe, int comp_vector_hint, enum ib_poll_context poll_ctx)”h]”(j½)�”}”(hŒstruct ib_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj>.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj;.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j@.Œmodname”NŒ classname”Njkjn)�”}”jq]”já-Œc.ib_cq_pool_get”†”asbuh1hhj.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjj.h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj.ubjN)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjw.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj.ubj½)�”}”(hŒunsigned int nr_cqe”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjŒ.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ.ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjŒ.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ.ubjN)�”}”(hŒnr_cqe”h]”hŒnr_cqe”…”�”}”(hjÈ.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŒ.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj.ubj½)�”}”(hŒint comp_vector_hint”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjá.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÝ.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÝ.ubjN)�”}”(hŒcomp_vector_hint”h]”hŒcomp_vector_hint”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÝ.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj.ubj½)�”}”(hŒenum ib_poll_context poll_ctx”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj/ubh)�”}”(hhh]”jN)�”}”(hŒib_poll_context”h]”hŒib_poll_context”…”�”}”(hj4/h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj1/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j6/Œmodname”NŒ classname”Njkjn)�”}”jq]”já-Œc.ib_cq_pool_get”†”asbuh1hhj/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj/ubjN)�”}”(hŒpoll_ctx”h]”hŒpoll_ctx”…”�”}”(hj`/h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj.ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¢-h²hh³j³-h´M§ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjž-h²hh³j³-h´M§ubah}”(h]”j™-ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j³-h´M§hj›-h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒzFind the least used completion queue that matches a given cpu hint (or least used for wild card affinity) and fits nr_cqe.”h]”hŒzFind the least used completion queue that matches a given cpu hint (or least used for wild card affinity) and fits nr_cqe.”…”�”}”(hjŠ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M§hj‡/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj›-h²hh³j³-h´M§ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¢/jÓj¢/jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXc**Parameters** ``struct ib_device *dev`` rdma device ``unsigned int nr_cqe`` number of needed cqe entries ``int comp_vector_hint`` completion vector hint (-1) for the driver to assign a comp vector based on internal counter ``enum ib_poll_context poll_ctx`` cq polling context **Description** Finds a cq that satisfies **comp_vector_hint** and **nr_cqe** requirements and claim entries in it for us. In case there is no available cq, allocate a new cq with the requirements and add it to the device pool. IB_POLL_DIRECT cannot be used for shared cqs so it is not a valid value for **poll_ctx**.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¬/h]”hŒ Parameters”…”�”}”(hj®/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjª/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M«hj¦/ubjø)�”}”(hhh]”(jý)�”}”(hŒ&``struct ib_device *dev`` rdma device ”h]”(j)�”}”(hŒ``struct ib_device *dev``”h]”j )�”}”(hjË/h]”hŒstruct ib_device *dev”…”�”}”(hjÍ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´MªhjÅ/ubj)�”}”(hhh]”hÝ)�”}”(hŒ rdma device”h]”hŒ rdma device”…”�”}”(hjä/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``unsigned int nr_cqe`` number of needed cqe entries ”h]”(j)�”}”(hŒ``unsigned int nr_cqe``”h]”j )�”}”(hj0h]”hŒunsigned int nr_cqe”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M«hjþ/ubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of needed cqe entries”h]”hŒnumber of needed cqe entries”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j0h´M«hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j0h´M«hjÂ/ubjý)�”}”(hŒv``int comp_vector_hint`` completion vector hint (-1) for the driver to assign a comp vector based on internal counter ”h]”(j)�”}”(hŒ``int comp_vector_hint``”h]”j )�”}”(hj=0h]”hŒint comp_vector_hint”…”�”}”(hj?0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M­hj70ubj)�”}”(hhh]”hÝ)�”}”(hŒ\completion vector hint (-1) for the driver to assign a comp vector based on internal counter”h]”hŒ\completion vector hint (-1) for the driver to assign a comp vector based on internal counter”…”�”}”(hjV0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M¬hjS0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj70ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jR0h´M­hjÂ/ubjý)�”}”(hŒ5``enum ib_poll_context poll_ctx`` cq polling context ”h]”(j)�”}”(hŒ!``enum ib_poll_context poll_ctx``”h]”j )�”}”(hjw0h]”hŒenum ib_poll_context poll_ctx”…”�”}”(hjy0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhju0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M®hjq0ubj)�”}”(hhh]”hÝ)�”}”(hŒcq polling context”h]”hŒcq polling context”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŒ0h´M®hj�0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŒ0h´M®hjÂ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¦/ubhÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M°hj¦/ubhÝ)�”}”(hX.Finds a cq that satisfies **comp_vector_hint** and **nr_cqe** requirements and claim entries in it for us. In case there is no available cq, allocate a new cq with the requirements and add it to the device pool. IB_POLL_DIRECT cannot be used for shared cqs so it is not a valid value for **poll_ctx**.”h]”(hŒFinds a cq that satisfies ”…”�”}”(hjÈ0h²hh³Nh´Nubjâ)�”}”(hŒ**comp_vector_hint**”h]”hŒcomp_vector_hint”…”�”}”(hjÐ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÈ0ubhŒ and ”…”�”}”(hjÈ0h²hh³Nh´Nubjâ)�”}”(hŒ **nr_cqe**”h]”hŒnr_cqe”…”�”}”(hjâ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÈ0ubhŒä requirements and claim entries in it for us. In case there is no available cq, allocate a new cq with the requirements and add it to the device pool. IB_POLL_DIRECT cannot be used for shared cqs so it is not a valid value for ”…”�”}”(hjÈ0h²hh³Nh´Nubjâ)�”}”(hŒ **poll_ctx**”h]”hŒpoll_ctx”…”�”}”(hjô0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÈ0ubhŒ.”…”�”}”(hjÈ0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´M¯hj¦/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_cq_pool_put (C function)”Œc.ib_cq_pool_put”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;void ib_cq_pool_put (struct ib_cq *cq, unsigned int nr_cqe)”h]”j")�”}”(hŒ:void ib_cq_pool_put(struct ib_cq *cq, unsigned int nr_cqe)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj)1h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´Møubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)1h²hh³j;1h´Møubjš)�”}”(hŒib_cq_pool_put”h]”jN)�”}”(hŒib_cq_pool_put”h]”hŒib_cq_pool_put”…”�”}”(hjN1h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjJ1ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj)1h²hh³j;1h´Møubj·)�”}”(hŒ'(struct ib_cq *cq, unsigned int nr_cqe)”h]”(j½)�”}”(hŒstruct ib_cq *cq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjj1h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjf1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjf1ubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hjˆ1h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj…1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŠ1Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjP1sbŒc.ib_cq_pool_put”†”asbuh1hhjf1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjf1ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¶1h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjf1ubjN)�”}”(hŒcq”h]”hŒcq”…”�”}”(hjÃ1h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjf1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjb1ubj½)�”}”(hŒunsigned int nr_cqe”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÜ1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjØ1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ1ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjø1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjØ1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ1ubjN)�”}”(hŒnr_cqe”h]”hŒnr_cqe”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjb1ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj)1h²hh³j;1h´Møubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj%1h²hh³j;1h´Møubah}”(h]”j 1ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j;1h´Møhj"1h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ%Return a CQ taken from a shared pool.”h]”hŒ%Return a CQ taken from a shared pool.”…”�”}”(hj>2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´Møhj;2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj"1h²hh³j;1h´Møubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjV2jÓjV2jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ‡**Parameters** ``struct ib_cq *cq`` The CQ to return. ``unsigned int nr_cqe`` The max number of cqes that the user had requested.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj`2h]”hŒ Parameters”…”�”}”(hjb2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj^2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´MühjZ2ubjø)�”}”(hhh]”(jý)�”}”(hŒ'``struct ib_cq *cq`` The CQ to return. ”h]”(j)�”}”(hŒ``struct ib_cq *cq``”h]”j )�”}”(hj2h]”hŒstruct ib_cq *cq”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´Mùhjy2ubj)�”}”(hhh]”hÝ)�”}”(hŒThe CQ to return.”h]”hŒThe CQ to return.”…”�”}”(hj˜2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”2h´Mùhj•2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”2h´Mùhjv2ubjý)�”}”(hŒK``unsigned int nr_cqe`` The max number of cqes that the user had requested.”h]”(j)�”}”(hŒ``unsigned int nr_cqe``”h]”j )�”}”(hj¸2h]”hŒunsigned int nr_cqe”…”�”}”(hjº2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´Mûhj²2ubj)�”}”(hhh]”hÝ)�”}”(hŒ3The max number of cqes that the user had requested.”h]”hŒ3The max number of cqes that the user had requested.”…”�”}”(hjÑ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:16: ./drivers/infiniband/core/cq.c”h´MúhjÎ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÍ2h´Mûhjv2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjZ2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_cm_listen (C function)”Œc.ib_cm_listen”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj:4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´M¼hj64ubjø)�”}”(hhh]”(jý)�”}”(hŒU``struct ib_cm_id *cm_id`` Connection identifier associated with the listen request. ”h]”(j)�”}”(hŒ``struct ib_cm_id *cm_id``”h]”j )�”}”(hj[4h]”hŒstruct ib_cm_id *cm_id”…”�”}”(hj]4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´MºhjU4ubj)�”}”(hhh]”hÝ)�”}”(hŒ9Connection identifier associated with the listen request.”h]”hŒ9Connection identifier associated with the listen request.”…”�”}”(hjt4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jp4h´Mºhjq4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jp4h´MºhjR4ubjý)�”}”(hŒû``__be64 service_id`` Service identifier matched against incoming connection and service ID resolution requests. The service ID should be specified network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will assign a service ID to the caller.”h]”(j)�”}”(hŒ``__be64 service_id``”h]”j )�”}”(hj”4h]”hŒ__be64 service_id”…”�”}”(hj–4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´M½hjŽ4ubj)�”}”(hhh]”hÝ)�”}”(hŒåService identifier matched against incoming connection and service ID resolution requests. The service ID should be specified network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will assign a service ID to the caller.”h]”hŒåService identifier matched against incoming connection and service ID resolution requests. The service ID should be specified network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will assign a service ID to the caller.”…”�”}”(hj­4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´M»hjª4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j©4h´M½hjR4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj64ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ib_cm_insert_listen (C function)”Œc.ib_cm_insert_listen”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒmstruct ib_cm_id * ib_cm_insert_listen (struct ib_device *device, ib_cm_handler cm_handler, __be64 service_id)”h]”j")�”}”(hŒkstruct ib_cm_id *ib_cm_insert_listen(struct ib_device *device, ib_cm_handler cm_handler, __be64 service_id)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjî4h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjê4h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Màubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjê4h²hh³jû4h´Màubh)�”}”(hhh]”jN)�”}”(hŒib_cm_id”h]”hŒib_cm_id”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj 5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j5Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_cm_insert_listen”sbŒc.ib_cm_insert_listen”†”asbuh1hhjê4h²hh³jû4h´Màubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjê4h²hh³jû4h´Màubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj<5h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjê4h²hh³jû4h´Màubjš)�”}”(hŒib_cm_insert_listen”h]”jN)�”}”(hj+5h]”hŒib_cm_insert_listen”…”�”}”(hjM5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjI5ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjê4h²hh³jû4h´Màubj·)�”}”(hŒG(struct ib_device *device, ib_cm_handler cm_handler, __be64 service_id)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh5h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjd5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjd5ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj†5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjƒ5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jˆ5Œmodname”NŒ classname”Njkjn)�”}”jq]”j)5Œc.ib_cm_insert_listen”†”asbuh1hhjd5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjd5ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj²5h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjd5ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¿5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjd5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj`5ubj½)�”}”(hŒib_cm_handler cm_handler”h]”(h)�”}”(hhh]”jN)�”}”(hŒ ib_cm_handler”h]”hŒ ib_cm_handler”…”�”}”(hjÛ5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÝ5Œmodname”NŒ classname”Njkjn)�”}”jq]”j)5Œc.ib_cm_insert_listen”†”asbuh1hhjÔ5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔ5ubjN)�”}”(hŒ cm_handler”h]”hŒ cm_handler”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÔ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj`5ubj½)�”}”(hŒ__be64 service_id”h]”(h)�”}”(hhh]”jN)�”}”(hŒ__be64”h]”hŒ__be64”…”�”}”(hj#6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj 6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j%6Œmodname”NŒ classname”Njkjn)�”}”jq]”j)5Œc.ib_cm_insert_listen”†”asbuh1hhj6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6ubjN)�”}”(hŒ service_id”h]”hŒ service_id”…”�”}”(hjO6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj`5ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjê4h²hh³jû4h´Màubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjæ4h²hh³jû4h´Màubah}”(h]”já4ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jû4h´Màhjã4h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒCCreate a new listening ib_cm_id and listen on the given service ID.”h]”hŒCCreate a new listening ib_cm_id and listen on the given service ID.”…”�”}”(hjy6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Màhjv6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjã4h²hh³jû4h´Màubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‘6jÓj‘6jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXž**Parameters** ``struct ib_device *device`` Device associated with the cm_id. All related communication will be associated with the specified device. ``ib_cm_handler cm_handler`` Callback invoked to notify the user of CM events. ``__be64 service_id`` Service identifier matched against incoming connection and service ID resolution requests. The service ID should be specified network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will assign a service ID to the caller. **Description** If there's an existing ID listening on that same device and service ID, return it. Callers should call ib_destroy_cm_id when done with the listener ID.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Mähj•6ubjø)�”}”(hhh]”(jý)�”}”(hŒˆ``struct ib_device *device`` Device associated with the cm_id. All related communication will be associated with the specified device. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjº6h]”hŒstruct ib_device *device”…”�”}”(hj¼6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Mçhj´6ubj)�”}”(hhh]”hÝ)�”}”(hŒjDevice associated with the cm_id. All related communication will be associated with the specified device.”h]”hŒjDevice associated with the cm_id. All related communication will be associated with the specified device.”…”�”}”(hjÓ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´MæhjÐ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÏ6h´Mçhj±6ubjý)�”}”(hŒO``ib_cm_handler cm_handler`` Callback invoked to notify the user of CM events. ”h]”(j)�”}”(hŒ``ib_cm_handler cm_handler``”h]”j )�”}”(hjô6h]”hŒib_cm_handler cm_handler”…”�”}”(hjö6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Mèhjî6ubj)�”}”(hhh]”hÝ)�”}”(hŒ1Callback invoked to notify the user of CM events.”h]”hŒ1Callback invoked to notify the user of CM events.”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j 7h´Mèhj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j 7h´Mèhj±6ubjý)�”}”(hŒü``__be64 service_id`` Service identifier matched against incoming connection and service ID resolution requests. The service ID should be specified network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will assign a service ID to the caller. ”h]”(j)�”}”(hŒ``__be64 service_id``”h]”j )�”}”(hj-7h]”hŒ__be64 service_id”…”�”}”(hj/7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Mìhj'7ubj)�”}”(hhh]”hÝ)�”}”(hŒåService identifier matched against incoming connection and service ID resolution requests. The service ID should be specified network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will assign a service ID to the caller.”h]”hŒåService identifier matched against incoming connection and service ID resolution requests. The service ID should be specified network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will assign a service ID to the caller.”…”�”}”(hjF7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´MéhjC7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jB7h´Mìhj±6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj•6ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hji7h]”hŒ Description”…”�”}”(hjk7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjg7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Mîhj•6ubhÝ)�”}”(hŒRIf there's an existing ID listening on that same device and service ID, return it.”h]”hŒTIf there’s an existing ID listening on that same device and service ID, return it.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Máhj•6ubhÝ)�”}”(hŒDCallers should call ib_destroy_cm_id when done with the listener ID.”h]”hŒDCallers should call ib_destroy_cm_id when done with the listener ID.”…”�”}”(hjŽ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:19: ./drivers/infiniband/core/cm.c”h´Måhj•6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_rw_ctx_init (C function)”Œc.rdma_rw_ctx_init”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ¹int rdma_rw_ctx_init (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, u32 sg_offset, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”j")�”}”(hŒ¸int rdma_rw_ctx_init(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, u32 sg_offset, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj½7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¹7h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¹7h²hh³jË7h´M0ubjš)�”}”(hŒrdma_rw_ctx_init”h]”jN)�”}”(hŒrdma_rw_ctx_init”h]”hŒrdma_rw_ctx_init”…”�”}”(hjÞ7h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÚ7ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¹7h²hh³jË7h´M0ubj·)�”}”(hŒ¤(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, u32 sg_offset, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjú7h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjö7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjö7ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j8Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjà7sbŒc.rdma_rw_ctx_init”†”asbuh1hhjö7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj88h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjö7ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjF8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjö7ubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjS8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjö7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjl8h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjh8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh8ubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjŠ8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒ8Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhjh8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh8ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¶8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjh8ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjÃ8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjh8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjß8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÜ8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”já8Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhjØ8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ8ubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒstruct scatterlist *sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj$9h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj 9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj19h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj 9ubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjB9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jD9Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhj 9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj 9ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjn9h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj 9ubjN)�”}”(hŒsg”h]”hŒsg”…”�”}”(hj{9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj 9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒ u32 sg_cnt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj—9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj”9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j™9Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhj�9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�9ubjN)�”}”(hŒsg_cnt”h]”hŒsg_cnt”…”�”}”(hjÃ9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒ u32 sg_offset”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjß9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÜ9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”já9Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhjØ9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ9ubjN)�”}”(hŒ sg_offset”h]”hŒ sg_offset”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒu64 remote_addr”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj':h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j):Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhj :ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj :ubjN)�”}”(hŒ remote_addr”h]”hŒ remote_addr”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj :ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒu32 rkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjo:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjl:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jq:Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhjh:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh:ubjN)�”}”(hŒrkey”h]”hŒrkey”…”�”}”(hj›:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjh:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj´:h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj°:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj°:ubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjÒ:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÏ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÔ:Œmodname”NŒ classname”Njkjn)�”}”jq]”j48Œc.rdma_rw_ctx_init”†”asbuh1hhj°:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj°:ubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjþ:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj°:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjò7ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¹7h²hh³jË7h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjµ7h²hh³jË7h´M0ubah}”(h]”j°7ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jË7h´M0hj²7h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$initialize a RDMA READ/WRITE context”h]”hŒ$initialize a RDMA READ/WRITE context”…”�”}”(hj(;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M0hj%;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj²7h²hh³jË7h´M0ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj@;jÓj@;jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX«**Parameters** ``struct rdma_rw_ctx *ctx`` context to initialize ``struct ib_qp *qp`` queue pair to operate on ``u32 port_num`` port num to which the connection is bound ``struct scatterlist *sg`` scatterlist to READ/WRITE from/to ``u32 sg_cnt`` number of entries in **sg** ``u32 sg_offset`` current byte offset into **sg** ``u64 remote_addr`` remote address to read/write (relative to **rkey**) ``u32 rkey`` remote key to operate on ``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ **Description** Returns the number of WQEs that will be needed on the workqueue if successful, or a negative error code.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M4hjD;ubjø)�”}”(hhh]”(jý)�”}”(hŒ2``struct rdma_rw_ctx *ctx`` context to initialize ”h]”(j)�”}”(hŒ``struct rdma_rw_ctx *ctx``”h]”j )�”}”(hji;h]”hŒstruct rdma_rw_ctx *ctx”…”�”}”(hjk;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M1hjc;ubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to initialize”h]”hŒcontext to initialize”…”�”}”(hj‚;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j~;h´M1hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j~;h´M1hj`;ubjý)�”}”(hŒ.``struct ib_qp *qp`` queue pair to operate on ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hj¢;h]”hŒstruct ib_qp *qp”…”�”}”(hj¤;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M2hjœ;ubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to operate on”h]”hŒqueue pair to operate on”…”�”}”(hj»;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j·;h´M2hj¸;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j·;h´M2hj`;ubjý)�”}”(hŒ;``u32 port_num`` port num to which the connection is bound ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjÛ;h]”hŒ u32 port_num”…”�”}”(hjÝ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M3hjÕ;ubj)�”}”(hhh]”hÝ)�”}”(hŒ)port num to which the connection is bound”h]”hŒ)port num to which the connection is bound”…”�”}”(hjô;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jð;h´M3hjñ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jð;h´M3hj`;ubjý)�”}”(hŒ=``struct scatterlist *sg`` scatterlist to READ/WRITE from/to ”h]”(j)�”}”(hŒ``struct scatterlist *sg``”h]”j )�”}”(hj<h]”hŒstruct scatterlist *sg”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M4hj<ubj)�”}”(hhh]”hÝ)�”}”(hŒ!scatterlist to READ/WRITE from/to”h]”hŒ!scatterlist to READ/WRITE from/to”…”�”}”(hj-<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j)<h´M4hj*<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j)<h´M4hj`;ubjý)�”}”(hŒ+``u32 sg_cnt`` number of entries in **sg** ”h]”(j)�”}”(hŒ``u32 sg_cnt``”h]”j )�”}”(hjM<h]”hŒ u32 sg_cnt”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M5hjG<ubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in **sg**”h]”(hŒnumber of entries in ”…”�”}”(hjf<h²hh³Nh´Nubjâ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hjn<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjf<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jb<h´M5hjc<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jb<h´M5hj`;ubjý)�”}”(hŒ2``u32 sg_offset`` current byte offset into **sg** ”h]”(j)�”}”(hŒ``u32 sg_offset``”h]”j )�”}”(hj”<h]”hŒ u32 sg_offset”…”�”}”(hj–<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M6hjŽ<ubj)�”}”(hhh]”hÝ)�”}”(hŒcurrent byte offset into **sg**”h]”(hŒcurrent byte offset into ”…”�”}”(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&]”uh1hÜh³j©<h´M6hjª<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j©<h´M6hj`;ubjý)�”}”(hŒH``u64 remote_addr`` remote address to read/write (relative to **rkey**) ”h]”(j)�”}”(hŒ``u64 remote_addr``”h]”j )�”}”(hjÛ<h]”hŒu64 remote_addr”…”�”}”(hjÝ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M7hjÕ<ubj)�”}”(hhh]”hÝ)�”}”(hŒ3remote address to read/write (relative to **rkey**)”h]”(hŒ*remote address to read/write (relative to ”…”�”}”(hjô<h²hh³Nh´Nubjâ)�”}”(hŒ**rkey**”h]”hŒrkey”…”�”}”(hjü<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjô<ubhŒ)”…”�”}”(hjô<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jð<h´M7hjñ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jð<h´M7hj`;ubjý)�”}”(hŒ&``u32 rkey`` remote key to operate on ”h]”(j)�”}”(hŒ ``u32 rkey``”h]”j )�”}”(hj&=h]”hŒu32 rkey”…”�”}”(hj(=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M8hj =ubj)�”}”(hhh]”hÝ)�”}”(hŒremote key to operate on”h]”hŒremote key to operate on”…”�”}”(hj?=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j;=h´M8hj<=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj =ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j;=h´M8hj`;ubjý)�”}”(hŒd``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ ”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hj_=h]”hŒenum dma_data_direction dir”…”�”}”(hja=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M9hjY=ubj)�”}”(hhh]”hÝ)�”}”(hŒC``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j )�”}”(hŒ``DMA_TO_DEVICE``”h]”hŒ DMA_TO_DEVICE”…”�”}”(hj|=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx=ubhŒ for RDMA WRITE, ”…”�”}”(hjx=h²hh³Nh´Nubj )�”}”(hŒ``DMA_FROM_DEVICE``”h]”hŒDMA_FROM_DEVICE”…”�”}”(hjŽ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx=ubhŒ for RDMA READ”…”�”}”(hjx=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jt=h´M9hju=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jt=h´M9hj`;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjD;ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjº=h]”hŒ Description”…”�”}”(hj¼=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¸=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M;hjD;ubhÝ)�”}”(hŒhReturns the number of WQEs that will be needed on the workqueue if successful, or a negative error code.”h]”hŒhReturns the number of WQEs that will be needed on the workqueue if successful, or a negative error code.”…”�”}”(hjÐ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M:hjD;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"rdma_rw_ctx_init_bvec (C function)”Œc.rdma_rw_ctx_init_bvec”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒÌint rdma_rw_ctx_init_bvec (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, const struct bio_vec *bvecs, u32 nr_bvec, struct bvec_iter iter, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”j")�”}”(hŒËint rdma_rw_ctx_init_bvec(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, const struct bio_vec *bvecs, u32 nr_bvec, struct bvec_iter iter, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjû=h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M…ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjû=h²hh³j >h´M…ubjš)�”}”(hŒrdma_rw_ctx_init_bvec”h]”jN)�”}”(hŒrdma_rw_ctx_init_bvec”h]”hŒrdma_rw_ctx_init_bvec”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjû=h²hh³j >h´M…ubj·)�”}”(hŒ²(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, const struct bio_vec *bvecs, u32 nr_bvec, struct bvec_iter iter, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj<>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj8>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj8>ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hjZ>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjW>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j\>Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj">sbŒc.rdma_rw_ctx_init_bvec”†”asbuh1hhj8>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj8>ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjˆ>h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj8>ubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj•>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj8>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj®>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjª>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjª>ubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjÌ>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÉ>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÎ>Œmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhjª>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjª>ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjø>h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjª>ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjª>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj!?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j#?Œmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhj?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj?ubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjM?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒconst struct bio_vec *bvecs”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjf?h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjb?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb?ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjb?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb?ubh)�”}”(hhh]”jN)�”}”(hŒbio_vec”h]”hŒbio_vec”…”�”}”(hjŸ?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjœ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¡?Œmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhjb?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb?ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjË?h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjb?ubjN)�”}”(hŒbvecs”h]”hŒbvecs”…”�”}”(hjØ?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjb?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒ u32 nr_bvec”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjô?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjñ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jö?Œmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhjí?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjí?ubjN)�”}”(hŒnr_bvec”h]”hŒnr_bvec”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjí?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒstruct bvec_iter iter”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj9@h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj5@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5@ubh)�”}”(hhh]”jN)�”}”(hŒ bvec_iter”h]”hŒ bvec_iter”…”�”}”(hjW@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjT@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jY@Œmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhj5@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5@ubjN)�”}”(hŒiter”h]”hŒiter”…”�”}”(hjƒ@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj5@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒu64 remote_addr”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjŸ@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjœ@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¡@Œmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhj˜@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜@ubjN)�”}”(hŒ remote_addr”h]”hŒ remote_addr”…”�”}”(hjË@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒu32 rkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjç@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjä@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jé@Œmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhjà@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjà@ubjN)�”}”(hŒrkey”h]”hŒrkey”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjà@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj,Ah²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj(Aubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Ah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj(Aubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjJAh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjGAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jLAŒmodname”NŒ classname”Njkjn)�”}”jq]”jv>Œc.rdma_rw_ctx_init_bvec”†”asbuh1hhj(Aubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhAh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj(AubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjvAh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj(Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4>ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjû=h²hh³j >h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj÷=h²hh³j >h´M…ubah}”(h]”jò=ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j >h´M…hjô=h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ1initialize a RDMA READ/WRITE context from bio_vec”h]”hŒ1initialize a RDMA READ/WRITE context from bio_vec”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M…hj�Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjô=h²hh³j >h´M…ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¸AjÓj¸AjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXÍ**Parameters** ``struct rdma_rw_ctx *ctx`` context to initialize ``struct ib_qp *qp`` queue pair to operate on ``u32 port_num`` port num to which the connection is bound ``const struct bio_vec *bvecs`` bio_vec array to READ/WRITE from/to ``u32 nr_bvec`` number of entries in **bvecs** ``struct bvec_iter iter`` bvec iterator describing offset and length ``u64 remote_addr`` remote address to read/write (relative to **rkey**) ``u32 rkey`` remote key to operate on ``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ **Description** Maps the bio_vec array directly, avoiding intermediate scatterlist conversion. Supports MR registration for iWARP devices and force_mr mode. Returns the number of WQEs that will be needed on the workqueue if successful, or a negative error code: * -EINVAL - **nr_bvec** is zero or **iter.bi_size** is zero * -ENOMEM - DMA mapping or memory allocation failed”h]”(hÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M‰hj¼Aubjø)�”}”(hhh]”(jý)�”}”(hŒ2``struct rdma_rw_ctx *ctx`` context to initialize ”h]”(j)�”}”(hŒ``struct rdma_rw_ctx *ctx``”h]”j )�”}”(hjáAh]”hŒstruct rdma_rw_ctx *ctx”…”�”}”(hjãAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M†hjÛAubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to initialize”h]”hŒcontext to initialize”…”�”}”(hjúAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ib_qp *qp`` queue pair to operate on ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjBh]”hŒstruct ib_qp *qp”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M‡hjBubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to operate on”h]”hŒqueue pair to operate on”…”�”}”(hj3Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j/Bh´M‡hj0Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j/Bh´M‡hjØAubjý)�”}”(hŒ;``u32 port_num`` port num to which the connection is bound ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjSBh]”hŒ u32 port_num”…”�”}”(hjUBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MˆhjMBubj)�”}”(hhh]”hÝ)�”}”(hŒ)port num to which the connection is bound”h]”hŒ)port num to which the connection is bound”…”�”}”(hjlBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jhBh´MˆhjiBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jhBh´MˆhjØAubjý)�”}”(hŒD``const struct bio_vec *bvecs`` bio_vec array to READ/WRITE from/to ”h]”(j)�”}”(hŒ``const struct bio_vec *bvecs``”h]”j )�”}”(hjŒBh]”hŒconst struct bio_vec *bvecs”…”�”}”(hjŽBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M‰hj†Bubj)�”}”(hhh]”hÝ)�”}”(hŒ#bio_vec array to READ/WRITE from/to”h]”hŒ#bio_vec array to READ/WRITE from/to”…”�”}”(hj¥Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¡Bh´M‰hj¢Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¡Bh´M‰hjØAubjý)�”}”(hŒ/``u32 nr_bvec`` number of entries in **bvecs** ”h]”(j)�”}”(hŒ``u32 nr_bvec``”h]”j )�”}”(hjÅBh]”hŒ u32 nr_bvec”…”�”}”(hjÇBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MŠhj¿Bubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in **bvecs**”h]”(hŒnumber of entries in ”…”�”}”(hjÞBh²hh³Nh´Nubjâ)�”}”(hŒ **bvecs**”h]”hŒbvecs”…”�”}”(hjæBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÞBubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÚBh´MŠhjÛBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÚBh´MŠhjØAubjý)�”}”(hŒE``struct bvec_iter iter`` bvec iterator describing offset and length ”h]”(j)�”}”(hŒ``struct bvec_iter iter``”•h]”j )�”}”(hj Ch]”hŒstruct bvec_iter iter”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M‹hjCubj)�”}”(hhh]”hÝ)�”}”(hŒ*bvec iterator describing offset and length”h]”hŒ*bvec iterator describing offset and length”…”�”}”(hj%Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j!Ch´M‹hj"Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j!Ch´M‹hjØAubjý)�”}”(hŒH``u64 remote_addr`` remote address to read/write (relative to **rkey**) ”h]”(j)�”}”(hŒ``u64 remote_addr``”h]”j )�”}”(hjECh]”hŒu64 remote_addr”…”�”}”(hjGCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCCubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MŒhj?Cubj)�”}”(hhh]”hÝ)�”}”(hŒ3remote address to read/write (relative to **rkey**)”h]”(hŒ*remote address to read/write (relative to ”…”�”}”(hj^Ch²hh³Nh´Nubjâ)�”}”(hŒ**rkey**”h]”hŒrkey”…”�”}”(hjfCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj^CubhŒ)”…”�”}”(hj^Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jZCh´MŒhj[Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jZCh´MŒhjØAubjý)�”}”(hŒ&``u32 rkey`` remote key to operate on ”h]”(j)�”}”(hŒ ``u32 rkey``”h]”j )�”}”(hj�Ch]”hŒu32 rkey”…”�”}”(hj’Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽCubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M�hjŠCubj)�”}”(hhh]”hÝ)�”}”(hŒremote key to operate on”h]”hŒremote key to operate on”…”�”}”(hj©Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¥Ch´M�hj¦Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¥Ch´M�hjØAubjý)�”}”(hŒd``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ ”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hjÉCh]”hŒenum dma_data_direction dir”…”�”}”(hjËCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇCubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MŽhjÃCubj)�”}”(hhh]”hÝ)�”}”(hŒC``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j )�”}”(hŒ``DMA_TO_DEVICE``”h]”hŒ DMA_TO_DEVICE”…”�”}”(hjæCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâCubhŒ for RDMA WRITE, ”…”�”}”(hjâCh²hh³Nh´Nubj )�”}”(hŒ``DMA_FROM_DEVICE``”h]”hŒDMA_FROM_DEVICE”…”�”}”(hjøCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâCubhŒ for RDMA READ”…”�”}”(hjâCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÞCh´MŽhjßCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÞCh´MŽhjØAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¼AubhÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M�hj¼AubhÝ)�”}”(hŒŒMaps the bio_vec array directly, avoiding intermediate scatterlist conversion. Supports MR registration for iWARP devices and force_mr mode.”h]”hŒŒMaps the bio_vec array directly, avoiding intermediate scatterlist conversion. Supports MR registration for iWARP devices and force_mr mode.”…”�”}”(hj:Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M�hj¼AubhÝ)�”}”(hŒhReturns the number of WQEs that will be needed on the workqueue if successful, or a negative error code:”h]”hŒhReturns the number of WQEs that will be needed on the workqueue if successful, or a negative error code:”…”�”}”(hjIDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M’hj¼AubhŒ block_quote”“”)�”}”(hŒp* -EINVAL - **nr_bvec** is zero or **iter.bi_size** is zero * -ENOMEM - DMA mapping or memory allocation failed”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ:-EINVAL - **nr_bvec** is zero or **iter.bi_size** is zero”h]”hŒ option_list”“”)�”}”(hhh]”hŒoption_list_item”“”)�”}”(hhh]”(hŒ option_group”“”)�”}”(hhh]”hŒoption”“”)�”}”(hŒ-EINVAL”h]”(hŒ option_string”“”)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hj€Dsbah}”(h]”h ]”h"]”h$]”h&]”uh1j~DhjzDubhŒoption_argument”“”)�”}”(hŒINVAL”h]”hŒINVAL”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jŽDhjzDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxDhjuDubah}”(h]”h ]”h"]”h$]”h&]”uh1jsDhjpDubhŒ description”“”)�”}”(hŒ1- **nr_bvec** is zero or **iter.bi_size** is zero”h]”j_D)�”}”(hhh]”jdD)�”}”(hŒ/**nr_bvec** is zero or **iter.bi_size** is zero”h]”hÝ)�”}”(hj¶Dh]”(jâ)�”}”(hŒ **nr_bvec**”h]”hŒnr_bvec”…”�”}”(hj»Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¸DubhŒ is zero or ”…”�”}”(hj¸Dh²hh³Nh´Nubjâ)�”}”(hŒ**iter.bi_size**”h]”hŒ iter.bi_size”…”�”}”(hjÍDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¸DubhŒ is zero”…”�”}”(hj¸Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M•hj´Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhj±Dubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j^Dh³jåDh´M•hj­Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j«DhjpDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnDhjkDubah}”(h]”h ]”h"]”h$]”h&]”uh1jiDh³jåDh´M•hjeDubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhj`DubjdD)�”}”(hŒ1-ENOMEM - DMA mapping or memory allocation failed”h]”hÝ)�”}”(hjEh]”hŒ1-ENOMEM - DMA mapping or memory allocation failed”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M–hj Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhj`Dubeh}”(h]”h ]”h"]”h$]”h&]”jòDjŒuh1j^Dh³jåDh´M•hjZDubah}”(h]”h ]”h"]”h$]”h&]”uh1jXDh³jåDh´M•hj¼Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'rdma_rw_ctx_signature_init (C function)”Œc.rdma_rw_ctx_signature_init”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hXint rdma_rw_ctx_signature_init (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, struct scatterlist *prot_sg, u32 prot_sg_cnt, struct ib_sig_attrs *sig_attrs, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”j")�”}”(hXint rdma_rw_ctx_signature_init(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, struct scatterlist *prot_sg, u32 prot_sg_cnt, struct ib_sig_attrs *sig_attrs, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjPEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjLEh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÐubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Eh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjLEh²hh³j^Eh´MÐubjš)�”}”(hŒrdma_rw_ctx_signature_init”h]”jN)�”}”(hŒrdma_rw_ctx_signature_init”h]”hŒrdma_rw_ctx_signature_init”…”�”}”(hjqEh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjmEubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjLEh²hh³j^Eh´MÐubj·)�”}”(hŒã(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, struct scatterlist *prot_sg, u32 prot_sg_cnt, struct ib_sig_attrs *sig_attrs, u64 remote_addr, u32 rkey, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‰Eubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšEh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰Eubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hj«Eh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¨Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j­EŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjsEsbŒc.rdma_rw_ctx_signature_init”†”asbuh1hhj‰Eubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËEh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰Eubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÙEh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‰EubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjæEh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‰Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÿEh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjûEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûEubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jFŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhjûEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Fh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûEubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjIFh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjûEubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjVFh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjûEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjrFh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjoFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jtFŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhjkFubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkFubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjžFh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒstruct scatterlist *sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj·Fh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj³Fubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄFh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³Fubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjÕFh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÒFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j×FŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhj³Fubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóFh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³Fubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj³FubjN)�”}”(hŒsg”h]”hŒsg”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒ u32 sg_cnt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj*Gh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj'Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j,GŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhj#Gubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#GubjN)�”}”(hŒsg_cnt”h]”hŒsg_cnt”…”�”}”(hjVGh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒstruct scatterlist *prot_sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjoGh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjkGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Gh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkGubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŠGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�GŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhjkGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Gh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkGubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¹Gh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjkGubjN)�”}”(hŒprot_sg”h]”hŒprot_sg”…”�”}”(hjÆGh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒu32 prot_sg_cnt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjâGh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjßGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jäGŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhjÛGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛGubjN)�”}”(hŒ prot_sg_cnt”h]”hŒ prot_sg_cnt”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒstruct ib_sig_attrs *sig_attrs”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj'Hh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj#Hubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#Hubh)�”}”(hhh]”jN)�”}”(hŒ ib_sig_attrs”h]”hŒ ib_sig_attrs”…”�”}”(hjEHh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjBHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jGHŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhj#Hubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#Hubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjqHh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj#HubjN)�”}”(hŒ sig_attrs”h]”hŒ sig_attrs”…”�”}”(hj~Hh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒu64 remote_addr”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjšHh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj—Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jœHŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhj“Hubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“HubjN)�”}”(hŒ remote_addr”h]”hŒ remote_addr”…”�”}”(hjÆHh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj“Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒu32 rkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjâHh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjßHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jäHŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhjÛHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛHubjN)�”}”(hŒrkey”h]”hŒrkey”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj'Ih²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj#Iubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Ih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#Iubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjEIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjBIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jGIŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇEŒc.rdma_rw_ctx_signature_init”†”asbuh1hhj#Iubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#IubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjqIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj…Eubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjLEh²hh³j^Eh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjHEh²hh³j^Eh´MÐubah}”(h]”jCEah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j^Eh´MÐhjEEh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ.initialize a RW context with signature offload”h]”hŒ.initialize a RW context with signature offload”…”�”}”(hj›Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÐhj˜Ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjEEh²hh³j^Eh´MÐubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj³IjÓj³IjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXP**Parameters** ``struct rdma_rw_ctx *ctx`` context to initialize ``struct ib_qp *qp`` queue pair to operate on ``u32 port_num`` port num to which the connection is bound ``struct scatterlist *sg`` scatterlist to READ/WRITE from/to ``u32 sg_cnt`` number of entries in **sg** ``struct scatterlist *prot_sg`` scatterlist to READ/WRITE protection information from/to ``u32 prot_sg_cnt`` number of entries in **prot_sg** ``struct ib_sig_attrs *sig_attrs`` signature offloading algorithms ``u64 remote_addr`` remote address to read/write (relative to **rkey**) ``u32 rkey`` remote key to operate on ``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ **Description** Returns the number of WQEs that will be needed on the workqueue if successful, or a negative error code.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÔhj·Iubjø)�”}”(hhh]”(jý)�”}”(hŒ2``struct rdma_rw_ctx *ctx`` context to initialize ”h]”(j)�”}”(hŒ``struct rdma_rw_ctx *ctx``”h]”j )�”}”(hjÜIh]”hŒstruct rdma_rw_ctx *ctx”…”�”}”(hjÞIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚIubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÑhjÖIubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to initialize”h]”hŒcontext to initialize”…”�”}”(hjõIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ.``struct ib_qp *qp`` queue pair to operate on ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjJh]”hŒstruct ib_qp *qp”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÒhjJubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to operate on”h]”hŒqueue pair to operate on”…”�”}”(hj.Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j*Jh´MÒhj+Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j*Jh´MÒhjÓIubjý)�”}”(hŒ;``u32 port_num`` port num to which the connection is bound ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjNJh]”hŒ u32 port_num”…”�”}”(hjPJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLJubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÓhjHJubj)�”}”(hhh]”hÝ)�”}”(hŒ)port num to which the connection is bound”h]”hŒ)port num to which the connection is bound”…”�”}”(hjgJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jcJh´MÓhjdJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jcJh´MÓhjÓIubjý)�”}”(hŒ=``struct scatterlist *sg`` scatterlist to READ/WRITE from/to ”h]”(j)�”}”(hŒ``struct scatterlist *sg``”h]”j )�”}”(hj‡Jh]”hŒstruct scatterlist *sg”…”�”}”(hj‰Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÔhj�Jubj)�”}”(hhh]”hÝ)�”}”(hŒ!scatterlist to READ/WRITE from/to”h]”hŒ!scatterlist to READ/WRITE from/to”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ+``u32 sg_cnt`` number of entries in **sg** ”h]”(j)�”}”(hŒ``u32 sg_cnt``”h]”j )�”}”(hjÀJh]”hŒ u32 sg_cnt”…”�”}”(hjÂJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÕhjºJubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in **sg**”h]”(hŒnumber of entries in ”…”�”}”(hjÙJh²hh³Nh´Nubjâ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hjáJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÙJubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒY``struct scatterlist *prot_sg`` scatterlist to READ/WRITE protection information from/to ”h]”(j)�”}”(hŒ``struct scatterlist *prot_sg``”h]”j )�”}”(hjKh]”hŒstruct scatterlist *prot_sg”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÖhjKubj)�”}”(hhh]”hÝ)�”}”(hŒ8scatterlist to READ/WRITE protection information from/to”h]”hŒ8scatterlist to READ/WRITE protection information from/to”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jKh´MÖhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jKh´MÖhjÓIubjý)�”}”(hŒ5``u32 prot_sg_cnt`` number of entries in **prot_sg** ”h]”(j)�”}”(hŒ``u32 prot_sg_cnt``”h]”j )�”}”(hj@Kh]”hŒu32 prot_sg_cnt”…”�”}”(hjBKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M×hj:Kubj)�”}”(hhh]”hÝ)�”}”(hŒ number of entries in **prot_sg**”h]”(hŒnumber of entries in ”…”�”}”(hjYKh²hh³Nh´Nubjâ)�”}”(hŒ **prot_sg**”h]”hŒprot_sg”…”�”}”(hjaKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjYKubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jUKh´M×hjVKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jUKh´M×hjÓIubjý)�”}”(hŒC``struct ib_sig_attrs *sig_attrs`` signature offloading algorithms ”h]”(j)�”}”(hŒ"``struct ib_sig_attrs *sig_attrs``”h]”j )�”}”(hj‡Kh]”hŒstruct ib_sig_attrs *sig_attrs”…”�”}”(hj‰Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MØhj�Kubj)�”}”(hhh]”hÝ)�”}”(hŒsignature offloading algorithms”h]”hŒsignature offloading algorithms”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœKh´MØhj�Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jœKh´MØhjÓIubjý)�”}”(hŒH``u64 remote_addr`` remote address to read/write (relative to **rkey**) ”h]”(j)�”}”(hŒ``u64 remote_addr``”h]”j )�”}”(hjÀKh]”hŒu64 remote_addr”…”�”}”(hjÂKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÙhjºKubj)�”}”(hhh]”hÝ)�”}”(hŒ3remote address to read/write (relative to **rkey**)”h]”(hŒ*remote address to read/write (relative to ”…”�”}”(hjÙKh²hh³Nh´Nubjâ)�”}”(hŒ**rkey**”h]”hŒrkey”…”�”}”(hjáKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÙKubhŒ)”…”�”}”(hjÙKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÕKh´MÙhjÖKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÕKh´MÙhjÓIubjý)�”}”(hŒ&``u32 rkey`` remote key to operate on ”h]”(j)�”}”(hŒ ``u32 rkey``”h]”j )�”}”(hj Lh]”hŒu32 rkey”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÚhjLubj)�”}”(hhh]”hÝ)�”}”(hŒremote key to operate on”h]”hŒremote key to operate on”…”�”}”(hj$Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j Lh´MÚhj!Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j Lh´MÚhjÓIubjý)�”}”(hŒd``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ ”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hjDLh]”hŒenum dma_data_direction dir”…”�”}”(hjFLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBLubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÛhj>Lubj)�”}”(hhh]”hÝ)�”}”(hŒC``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j )�”}”(hŒ``DMA_TO_DEVICE``”h]”hŒ DMA_TO_DEVICE”…”�”}”(hjaLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]LubhŒ for RDMA WRITE, ”…”�”}”(hj]Lh²hh³Nh´Nubj )�”}”(hŒ``DMA_FROM_DEVICE``”h]”hŒDMA_FROM_DEVICE”…”�”}”(hjsLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]LubhŒ for RDMA READ”…”�”}”(hj]Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jYLh´MÛhjZLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jYLh´MÛhjÓIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj·IubhÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÝhj·IubhÝ)�”}”(hŒhReturns the number of WQEs that will be needed on the workqueue if successful, or a negative error code.”h]”hŒhReturns the number of WQEs that will be needed on the workqueue if successful, or a negative error code.”…”�”}”(hjµLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÜhj·Iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_rw_ctx_wrs (C function)”Œc.rdma_rw_ctx_wrs”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŽstruct ib_send_wr * rdma_rw_ctx_wrs (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct ib_cqe *cqe, struct ib_send_wr *chain_wr)”h]”j")�”}”(hŒŒstruct ib_send_wr *rdma_rw_ctx_wrs(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct ib_cqe *cqe, struct ib_send_wr *chain_wr)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjäLh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjàLh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MXubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàLh²hh³jñLh´MXubh)�”}”(hhh]”jN)�”}”(hŒ ib_send_wr”h]”hŒ ib_send_wr”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jMŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒrdma_rw_ctx_wrs”sbŒc.rdma_rw_ctx_wrs”†”asbuh1hhjàLh²hh³jñLh´MXubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Mh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàLh²hh³jñLh´MXubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj2Mh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjàLh²hh³jñLh´MXubjš)�”}”(hŒrdma_rw_ctx_wrs”h]”jN)�”}”(hj!Mh]”hŒrdma_rw_ctx_wrs”…”�”}”(hjCMh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?Mubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjàLh²hh³jñLh´MXubj·)�”}”(hŒj(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct ib_cqe *cqe, struct ib_send_wr *chain_wr)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj^Mh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjZMubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkMh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZMubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hj|Mh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjyMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j~MŒmodname”NŒ classname”Njkjn)�”}”jq]”jMŒc.rdma_rw_ctx_wrs”†”asbuh1hhjZMubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšMh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZMubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¨Mh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjZMubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjµMh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjVMubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÎMh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÊMubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛMh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊMubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjìMh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjéMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jîMŒmodname”NŒ classname”Njkjn)�”}”jq]”jMŒc.rdma_rw_ctx_wrs”†”asbuh1hhjÊMubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊMubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÊMubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj%Nh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÊMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjVMubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjANh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jCNŒmodname”NŒ classname”Njkjn)�”}”jq]”jMŒc.rdma_rw_ctx_wrs”†”asbuh1hhj:Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:NubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjmNh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjVMubj½)�”}”(hŒstruct ib_cqe *cqe”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj†Nh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‚Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚Nubh)�”}”(hhh]”jN)�”}”(hŒib_cqe”h]”hŒib_cqe”…”�”}”(hj¤Nh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¡Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¦NŒmodname”NŒ classname”Njkjn)�”}”jq]”jMŒc.rdma_rw_ctx_wrs”†”asbuh1hhj‚Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚Nubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÐNh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‚NubjN)�”}”(hŒcqe”h]”hŒcqe”…”�”}”(hjÝNh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‚Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjVMubj½)�”}”(hŒstruct ib_send_wr *chain_wr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjöNh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjòNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjòNubh)�”}”(hhh]”jN)�”}”(hŒ ib_send_wr”h]”hŒ ib_send_wr”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jOŒmodname”NŒ classname”Njkjn)�”}”jq]”jMŒc.rdma_rw_ctx_wrs”†”asbuh1hhjòNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Oh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjòNubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj@Oh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjòNubjN)�”}”(hŒchain_wr”h]”hŒchain_wr”…”�”}”(hjMOh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjòNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjVMubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjàLh²hh³jñLh´MXubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÜLh²hh³jñLh´MXubah}”(h]”j×Lah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jñLh´MXhjÙLh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ6return chain of WRs for a RDMA READ or WRITE operation”h]”hŒ6return chain of WRs for a RDMA READ or WRITE operation”…”�”}”(hjwOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MXhjtOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÙLh²hh³jñLh´MXubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj�OjÓj�OjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX“**Parameters** ``struct rdma_rw_ctx *ctx`` context to operate on ``struct ib_qp *qp`` queue pair to operate on ``u32 port_num`` port num to which the connection is bound ``struct ib_cqe *cqe`` completion queue entry for the last WR ``struct ib_send_wr *chain_wr`` WR to append to the posted chain **Description** Return the WR chain for the set of RDMA READ/WRITE operations described by **ctx**, as well as any memory registration operations needed. If **chain_wr** is non-NULL the WR it points to will be appended to the chain of WRs posted. If **chain_wr** is not set **cqe** must be set so that the caller gets a completion notification.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M\hj“Oubjø)�”}”(hhh]”(jý)�”}”(hŒ2``struct rdma_rw_ctx *ctx`` context to operate on ”h]”(j)�”}”(hŒ``struct rdma_rw_ctx *ctx``”h]”j )�”}”(hj¸Oh]”hŒstruct rdma_rw_ctx *ctx”…”�”}”(hjºOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MYhj²Oubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to operate on”h]”hŒcontext to operate on”…”�”}”(hjÑOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÍOh´MYhjÎOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÍOh´MYhj¯Oubjý)�”}”(hŒ.``struct ib_qp *qp`` queue pair to operate on ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjñOh]”hŒstruct ib_qp *qp”…”�”}”(hjóOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjïOubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MZhjëOubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to operate on”h]”hŒqueue pair to operate on”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPh´MZhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jPh´MZhj¯Oubjý)�”}”(hŒ;``u32 port_num`` port num to which the connection is bound ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hj*Ph]”hŒ u32 port_num”…”�”}”(hj,Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M[hj$Pubj)�”}”(hhh]”hÝ)�”}”(hŒ)port num to which the connection is bound”h]”hŒ)port num to which the connection is bound”…”�”}”(hjCPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j?Ph´M[hj@Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j?Ph´M[hj¯Oubjý)�”}”(hŒ>``struct ib_cqe *cqe`` completion queue entry for the last WR ”h]”(j)�”}”(hŒ``struct ib_cqe *cqe``”h]”j )�”}”(hjcPh]”hŒstruct ib_cqe *cqe”…”�”}”(hjePh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaPubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M\hj]Pubj)�”}”(hhh]”hÝ)�”}”(hŒ&completion queue entry for the last WR”h]”hŒ&completion queue entry for the last WR”…”�”}”(hj|Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jxPh´M\hjyPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jxPh´M\hj¯Oubjý)�”}”(hŒA``struct ib_send_wr *chain_wr`` WR to append to the posted chain ”h]”(j)�”}”(hŒ``struct ib_send_wr *chain_wr``”h]”j )�”}”(hjœPh]”hŒstruct ib_send_wr *chain_wr”…”�”}”(hjžPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšPubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M]hj–Pubj)�”}”(hhh]”hÝ)�”}”(hŒ WR to append to the posted chain”h]”hŒ WR to append to the posted chain”…”�”}”(hjµPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j±Ph´M]hj²Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j±Ph´M]hj¯Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj“OubhÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M_hj“OubhÝ)�”}”(hXIReturn the WR chain for the set of RDMA READ/WRITE operations described by **ctx**, as well as any memory registration operations needed. If **chain_wr** is non-NULL the WR it points to will be appended to the chain of WRs posted. If **chain_wr** is not set **cqe** must be set so that the caller gets a completion notification.”h]”(hŒKReturn the WR chain for the set of RDMA READ/WRITE operations described by ”…”�”}”(hjíPh²hh³Nh´Nubjâ)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hjõPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjíPubhŒ<, as well as any memory registration operations needed. If ”…”�”}”(hjíPh²hh³Nh´Nubjâ)�”}”(hŒ **chain_wr**”h]”hŒchain_wr”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjíPubhŒQ is non-NULL the WR it points to will be appended to the chain of WRs posted. If ”…”�”}”(hjíPh²hh³Nh´Nubjâ)�”}”(hŒ **chain_wr**”h]”hŒchain_wr”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjíPubhŒ is not set ”…”�”}”(hjíPh²hh³Nh´Nubjâ)�”}”(hŒ**cqe**”h]”hŒcqe”…”�”}”(hj+Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjíPubhŒ? must be set so that the caller gets a completion notification.”…”�”}”(hjíPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M^hj“Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_rw_ctx_post (C function)”Œc.rdma_rw_ctx_post”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒint rdma_rw_ctx_post (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct ib_cqe *cqe, struct ib_send_wr *chain_wr)”h]”j")�”}”(hŒ~int rdma_rw_ctx_post(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct ib_cqe *cqe, struct ib_send_wr *chain_wr)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjdQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj`Qh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj`Qh²hh³jrQh´M–ubjš)�”}”(hŒrdma_rw_ctx_post”h]”jN)�”}”(hŒrdma_rw_ctx_post”h]”hŒrdma_rw_ctx_post”…”�”}”(hj…Qh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Qubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj`Qh²hh³jrQh´M–ubj·)�”}”(hŒj(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct ib_cqe *cqe, struct ib_send_wr *chain_wr)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¡Qh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�Qubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Qubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hj¿Qh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¼Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÁQŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj‡QsbŒc.rdma_rw_ctx_post”†”asbuh1hhj�Qubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Qubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjíQh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�QubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjúQh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj™Qubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hj1Rh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj.Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j3RŒmodname”NŒ classname”Njkjn)�”}”jq]”jÛQŒc.rdma_rw_ctx_post”†”asbuh1hhjRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjORh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj]Rh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjRubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjjRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj™Qubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj†Rh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjƒRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jˆRŒmodname”NŒ classname”Njkjn)�”}”jq]”jÛQŒc.rdma_rw_ctx_post”†”asbuh1hhjRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Rh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hj²Rh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj™Qubj½)�”}”(hŒstruct ib_cqe *cqe”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjËRh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÇRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇRubh)�”}”(hhh]”jN)�”}”(hŒib_cqe”h]”hŒib_cqe”…”�”}”(hjéRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjæRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jëRŒmodname”NŒ classname”Njkjn)�”}”jq]”jÛQŒc.rdma_rw_ctx_post”†”asbuh1hhjÇRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇRubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÇRubjN)�”}”(hŒcqe”h]”hŒcqe”…”�”}”(hj"Sh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÇRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj™Qubj½)�”}”(hŒstruct ib_send_wr *chain_wr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj;Sh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj7Subj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHSh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7Subh)�”}”(hhh]”jN)�”}”(hŒ ib_send_wr”h]”hŒ ib_send_wr”…”�”}”(hjYSh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjVSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j[SŒmodname”NŒ classname”Njkjn)�”}”jq]”jÛQŒc.rdma_rw_ctx_post”†”asbuh1hhj7Subj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwSh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7Subj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj…Sh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj7SubjN)�”}”(hŒchain_wr”h]”hŒchain_wr”…”�”}”(hj’Sh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj7Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj™Qubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj`Qh²hh³jrQh´M–ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj\Qh²hh³jrQh´M–ubah}”(h]”jWQah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jrQh´M–hjYQh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ(post a RDMA READ or RDMA WRITE operation”h]”hŒ(post a RDMA READ or RDMA WRITE operation”…”�”}”(hj¼Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M–hj¹Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjYQh²hh³jrQh´M–ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÔSjÓjÔSjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX�**Parameters** ``struct rdma_rw_ctx *ctx`` context to operate on ``struct ib_qp *qp`` queue pair to operate on ``u32 port_num`` port num to which the connection is bound ``struct ib_cqe *cqe`` completion queue entry for the last WR ``struct ib_send_wr *chain_wr`` WR to append to the posted chain **Description** Post the set of RDMA READ/WRITE operations described by **ctx**, as well as any memory registration operations needed. If **chain_wr** is non-NULL the WR it points to will be appended to the chain of WRs posted. If **chain_wr** is not set **cqe** must be set so that the caller gets a completion notification.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MšhjØSubjø)�”}”(hhh]”(jý)�”}”(hŒ2``struct rdma_rw_ctx *ctx`` context to operate on ”h]”(j)�”}”(hŒ``struct rdma_rw_ctx *ctx``”h]”j )�”}”(hjýSh]”hŒstruct rdma_rw_ctx *ctx”…”�”}”(hjÿSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûSubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M—hj÷Subj)�”}”(hhh]”hÝ)�”}”(hŒcontext to operate on”h]”hŒcontext to operate on”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jTh´M—hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jTh´M—hjôSubjý)�”}”(hŒ.``struct ib_qp *qp`` queue pair to operate on ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hj6Th]”hŒstruct ib_qp *qp”…”�”}”(hj8Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M˜hj0Tubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to operate on”h]”hŒqueue pair to operate on”…”�”}”(hjOTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jKTh´M˜hjLTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jKTh´M˜hjôSubjý)�”}”(hŒ;``u32 port_num`` port num to which the connection is bound ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjoTh]”hŒ u32 port_num”…”�”}”(hjqTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmTubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M™hjiTubj)�”}”(hhh]”hÝ)�”}”(hŒ)port num to which the connection is bound”h]”hŒ)port num to which the connection is bound”…”�”}”(hjˆTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j„Th´M™hj…Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j„Th´M™hjôSubjý)�”}”(hŒ>``struct ib_cqe *cqe`` completion queue entry for the last WR ”h]”(j)�”}”(hŒ``struct ib_cqe *cqe``”h]”j )�”}”(hj¨Th]”hŒstruct ib_cqe *cqe”…”�”}”(hjªTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mšhj¢Tubj)�”}”(hhh]”hÝ)�”}”(hŒ&completion queue entry for the last WR”h]”hŒ&completion queue entry for the last WR”…”�”}”(hjÁTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j½Th´Mšhj¾Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j½Th´MšhjôSubjý)�”}”(hŒA``struct ib_send_wr *chain_wr`` WR to append to the posted chain ”h]”(j)�”}”(hŒ``struct ib_send_wr *chain_wr``”h]”j )�”}”(hjáTh]”hŒstruct ib_send_wr *chain_wr”…”�”}”(hjãTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßTubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M›hjÛTubj)�”}”(hhh]”hÝ)�”}”(hŒ WR to append to the posted chain”h]”hŒ WR to append to the posted chain”…”�”}”(hjúTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jöTh´M›hj÷Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jöTh´M›hjôSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjØSubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjUh]”hŒ Description”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M�hjØSubhÝ)�”}”(hX7Post the set of RDMA READ/WRITE operations described by **ctx**, as well as any memory registration operations needed. If **chain_wr** is non-NULL the WR it points to will be appended to the chain of WRs posted. If **chain_wr** is not set **cqe** must be set so that the caller gets a completion notification.”h]”(hŒ8Post the set of RDMA READ/WRITE operations described by ”…”�”}”(hj2Uh²hh³Nh´Nubjâ)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hj:Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj2UubhŒ<, as well as any memory registration operations needed. If ”…”�”}”(hj2Uh²hh³Nh´Nubjâ)�”}”(hŒ **chain_wr**”h]”hŒchain_wr”…”�”}”(hjLUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj2UubhŒR is non-NULL the WR it points to will be appended to the chain of WRs posted. If ”…”�”}”(hj2Uh²hh³Nh´Nubjâ)�”}”(hŒ **chain_wr**”h]”hŒchain_wr”…”�”}”(hj^Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj2UubhŒ is not set ”…”�”}”(hj2Uh²hh³Nh´Nubjâ)�”}”(hŒ**cqe**”h]”hŒcqe”…”�”}”(hjpUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj2UubhŒ? must be set so that the caller gets a completion notification.”…”�”}”(hj2Uh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MœhjØSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ rdma_rw_ctx_destroy (C function)”Œc.rdma_rw_ctx_destroy”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ“void rdma_rw_ctx_destroy (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, enum dma_data_direction dir)”h]”j")�”}”(hŒ’void rdma_rw_ctx_destroy(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, enum dma_data_direction dir)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©Uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¥Uh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Uh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥Uh²hh³j·Uh´M®ubjš)�”}”(hŒrdma_rw_ctx_destroy”h]”jN)�”}”(hŒrdma_rw_ctx_destroy”h]”hŒrdma_rw_ctx_destroy”…”�”}”(hjÊUh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÆUubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¥Uh²hh³j·Uh´M®ubj·)�”}”(hŒz(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjæUh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjâUubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâUubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jVŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÌUsbŒc.rdma_rw_ctx_destroy”†”asbuh1hhjâUubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Vh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâUubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj2Vh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjâUubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj?Vh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjâUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞUubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjXVh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjTVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeVh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTVubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjvVh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjsVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jxVŒmodname”NŒ classname”Njkjn)�”}”jq]”j VŒc.rdma_rw_ctx_destroy”†”asbuh1hhjTVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Vh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTVubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¢Vh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjTVubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj¯Vh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞUubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjËVh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÈVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÍVŒmodname”NŒ classname”Njkjn)�”}”jq]”j VŒc.rdma_rw_ctx_destroy”†”asbuh1hhjÄVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéVh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄVubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hj÷Vh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞUubj½)�”}”(hŒstruct scatterlist *sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Wubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Wubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj.Wh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj+Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j0WŒmodname”NŒ classname”Njkjn)�”}”jq]”j VŒc.rdma_rw_ctx_destroy”†”asbuh1hhj Wubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Wubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjZWh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj WubjN)�”}”(hŒsg”h]”hŒsg”…”�”}”(hjgWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞUubj½)�”}”(hŒ u32 sg_cnt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjƒWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj€Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j…WŒmodname”NŒ classname”Njkjn)�”}”jq]”j VŒc.rdma_rw_ctx_destroy”†”asbuh1hhj|Wubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Wh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj|WubjN)�”}”(hŒsg_cnt”h]”hŒsg_cnt”…”�”}”(hj¯Wh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj|Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞUubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjÈWh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÄWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄWubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjæWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjãWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jèWŒmodname”NŒ classname”Njkjn)�”}”jq]”j VŒc.rdma_rw_ctx_destroy”†”asbuh1hhjÄWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄWubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞUubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¥Uh²hh³j·Uh´M®ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¡Uh²hh³j·Uh´M®ubah}”(h]”jœUah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j·Uh´M®hjžUh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ3release all resources allocated by rdma_rw_ctx_init”h]”hŒ3release all resources allocated by rdma_rw_ctx_init”…”�”}”(hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j=Yh´M²hjtXubjý)�”}”(hŒ+``u32 sg_cnt`` number of entries in **sg** ”h]”(j)�”}”(hŒ``u32 sg_cnt``”h]”j )�”}”(hjaYh]”hŒ u32 sg_cnt”…”�”}”(hjcYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M³hj[Yubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in **sg**”h]”(hŒnumber of entries in ”…”�”}”(hjzYh²hh³Nh´Nubjâ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hj‚Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjzYubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jvYh´M³hjwYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jvYh´M³hjtXubjý)�”}”(hŒc``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hj¨Yh]”hŒenum dma_data_direction dir”…”�”}”(hjªYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mµhj¢Yubj)�”}”(hhh]”hÝ)�”}”(hŒC``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j )�”}”(hŒ``DMA_TO_DEVICE``”h]”hŒ DMA_TO_DEVICE”…”�”}”(hjÅYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁYubhŒ for RDMA WRITE, ”…”�”}”(hjÁYh²hh³Nh´Nubj )�”}”(hŒ``DMA_FROM_DEVICE``”h]”hŒDMA_FROM_DEVICE”…”�”}”(hj×Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁYubhŒ for RDMA READ”…”�”}”(hjÁYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M´hj¾Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j½Yh´MµhjtXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjXXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%rdma_rw_ctx_destroy_bvec (C function)”Œc.rdma_rw_ctx_destroy_bvec”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒžvoid rdma_rw_ctx_destroy_bvec (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, const struct bio_vec *bvecs, u32 nr_bvec, enum dma_data_direction dir)”h]”j")�”}”(hŒ�void rdma_rw_ctx_destroy_bvec(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, const struct bio_vec *bvecs, u32 nr_bvec, enum dma_data_direction dir)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"Zh²hh³Nh´Nubah}”(h]”•h ]”j ah"]”h$]”h&]”uh1jühjZh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Zh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZh²hh³j0Zh´MØubjš)�”}”(hŒrdma_rw_ctx_destroy_bvec”h]”jN)�”}”(hŒrdma_rw_ctx_destroy_bvec”h]”hŒrdma_rw_ctx_destroy_bvec”…”�”}”(hjCZh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?Zubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjZh²hh³j0Zh´MØubj·)�”}”(hŒ€(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, const struct bio_vec *bvecs, u32 nr_bvec, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj_Zh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj[Zubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlZh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[Zubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hj}Zh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjzZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jZŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjEZsbŒc.rdma_rw_ctx_destroy_bvec”†”asbuh1hhj[Zubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[Zubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj«Zh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj[ZubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj¸Zh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj[Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjWZubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÑZh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÍZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞZh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÍZubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjïZh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjìZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jñZŒmodname”NŒ classname”Njkjn)�”}”jq]”j™ZŒc.rdma_rw_ctx_destroy_bvec”†”asbuh1hhjÍZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÍZubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÍZubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj([h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÍZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjWZubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjD[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjA[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jF[Œmodname”NŒ classname”Njkjn)�”}”jq]”j™ZŒc.rdma_rw_ctx_destroy_bvec”†”asbuh1hhj=[ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb[h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=[ubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjp[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj=[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjWZubj½)�”}”(hŒconst struct bio_vec *bvecs”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj‰[h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj…[ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–[h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj…[ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj¤[h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj…[ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±[h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj…[ubh)�”}”(hhh]”jN)�”}”(hŒbio_vec”h]”hŒbio_vec”…”�”}”(hjÂ[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¿[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÄ[Œmodname”NŒ classname”Njkjn)�”}”jq]”j™ZŒc.rdma_rw_ctx_destroy_bvec”†”asbuh1hhj…[ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà[h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj…[ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjî[h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj…[ubjN)�”}”(hŒbvecs”h]”hŒbvecs”…”�”}”(hjû[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj…[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjWZubj½)�”}”(hŒ u32 nr_bvec”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j\Œmodname”NŒ classname”Njkjn)�”}”jq]”j™ZŒc.rdma_rw_ctx_destroy_bvec”†”asbuh1hhj\ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5\h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj\ubjN)�”}”(hŒnr_bvec”h]”hŒnr_bvec”…”�”}”(hjC\h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjWZubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj\\h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjX\ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji\h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjX\ubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjz\h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjw\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j|\Œmodname”NŒ classname”Njkjn)�”}”jq]”j™ZŒc.rdma_rw_ctx_destroy_bvec”†”asbuh1hhjX\ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜\h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjX\ubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj¦\h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjX\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjWZubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjZh²hh³j0Zh´MØubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjZh²hh³j0Zh´MØubah}”(h]”jZah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j0Zh´MØhjZh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ,release resources from rdma_rw_ctx_init_bvec”h]”hŒ,release resources from rdma_rw_ctx_init_bvec”…”�”}”(hjÐ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MØhjÍ\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjZh²hh³j0Zh´MØubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjè\jÓjè\jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX½**Parameters** ``struct rdma_rw_ctx *ctx`` context to release ``struct ib_qp *qp`` queue pair to operate on ``u32 port_num`` port num to which the connection is bound (unused) ``const struct bio_vec *bvecs`` bio_vec array that was used for the READ/WRITE (unused) ``u32 nr_bvec`` number of entries in **bvecs** ``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ **Description** Releases all resources allocated by a successful rdma_rw_ctx_init_bvec() call. Must not be called if rdma_rw_ctx_init_bvec() returned an error. The **port_num** and **bvecs** parameters are unused but present for API symmetry with rdma_rw_ctx_destroy().”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjò\h]”hŒ Parameters”…”�”}”(hjô\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjð\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÜhjì\ubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct rdma_rw_ctx *ctx`` context to release ”h]”(j)�”}”(hŒ``struct rdma_rw_ctx *ctx``”h]”j )�”}”(hj]h]”hŒstruct rdma_rw_ctx *ctx”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÙhj ]ubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to release”h]”hŒcontext to release”…”�”}”(hj*]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ib_qp *qp`` queue pair to operate on ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjJ]h]”hŒstruct ib_qp *qp”…”�”}”(hjL]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÚhjD]ubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to operate on”h]”hŒqueue pair to operate on”…”�”}”(hjc]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒD``u32 port_num`` port num to which the connection is bound (unused) ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjƒ]h]”hŒ u32 port_num”…”�”}”(hj…]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÛhj}]ubj)�”}”(hhh]”hÝ)�”}”(hŒ2port num to which the connection is bound (unused)”h]”hŒ2port num to which the connection is bound (unused)”…”�”}”(hjœ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``const struct bio_vec *bvecs`` bio_vec array that was used for the READ/WRITE (unused) ”h]”(j)�”}”(hŒ``const struct bio_vec *bvecs``”h]”j )�”}”(hj¼]h]”hŒconst struct bio_vec *bvecs”…”�”}”(hj¾]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÜhj¶]ubj)�”}”(hhh]”hÝ)�”}”(hŒ7bio_vec array that was used for the READ/WRITE (unused)”h]”hŒ7bio_vec array that was used for the READ/WRITE (unused)”…”�”}”(hjÕ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 nr_bvec`` number of entries in **bvecs** ”h]”(j)�”}”(hŒ``u32 nr_bvec``”h]”j )�”}”(hjõ]h]”hŒ u32 nr_bvec”…”�”}”(hj÷]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÝhjï]ubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in **bvecs**”h]”(hŒnumber of entries in ”…”�”}”(hj^h²hh³Nh´Nubjâ)�”}”(hŒ **bvecs**”h]”hŒbvecs”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ ”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hj<^h]”hŒenum dma_data_direction dir”…”�”}”(hj>^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MÞhj6^ubj)�”}”(hhh]”hÝ)�”}”(hŒC``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j )�”}”(hŒ``DMA_TO_DEVICE``”h]”hŒ DMA_TO_DEVICE”…”�”}”(hjY^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU^ubhŒ for RDMA WRITE, ”…”�”}”(hjU^h²hh³Nh´Nubj )�”}”(hŒ``DMA_FROM_DEVICE``”h]”hŒDMA_FROM_DEVICE”…”�”}”(hjk^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU^ubhŒ for RDMA READ”…”�”}”(hjU^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQ^h´MÞhjR^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQ^h´MÞhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjì\ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj—^h]”hŒ Description”…”�”}”(hj™^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj•^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Màhjì\ubhÝ)�”}”(hŒ�Releases all resources allocated by a successful rdma_rw_ctx_init_bvec() call. Must not be called if rdma_rw_ctx_init_bvec() returned an error.”h]”hŒ�Releases all resources allocated by a successful rdma_rw_ctx_init_bvec() call. Must not be called if rdma_rw_ctx_init_bvec() returned an error.”…”�”}”(hj­^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mßhjì\ubhÝ)�”}”(hŒmThe **port_num** and **bvecs** parameters are unused but present for API symmetry with rdma_rw_ctx_destroy().”h]”(hŒThe ”…”�”}”(hj¼^h²hh³Nh´Nubjâ)�”}”(hŒ **port_num**”h]”hŒport_num”…”�”}”(hjÄ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¼^ubhŒ and ”…”�”}”(hj¼^h²hh³Nh´Nubjâ)�”}”(hŒ **bvecs**”h]”hŒbvecs”…”�”}”(hjÖ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¼^ubhŒO parameters are unused but present for API symmetry with rdma_rw_ctx_destroy().”…”�”}”(hj¼^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mâhjì\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ*rdma_rw_ctx_destroy_signature (C function)”Œc.rdma_rw_ctx_destroy_signature”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒËvoid rdma_rw_ctx_destroy_signature (struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, struct scatterlist *prot_sg, u32 prot_sg_cnt, enum dma_data_direction dir)”h]”j")�”}”(hŒÊvoid rdma_rw_ctx_destroy_signature(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, struct scatterlist *prot_sg, u32 prot_sg_cnt, enum dma_data_direction dir)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj _h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj _h²hh³j_h´M ubjš)�”}”(hŒrdma_rw_ctx_destroy_signature”h]”jN)�”}”(hŒrdma_rw_ctx_destroy_signature”h]”hŒrdma_rw_ctx_destroy_signature”…”�”}”(hj0_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj,_ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj _h²hh³j_h´M ubj·)�”}”(hŒ¨(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num, struct scatterlist *sg, u32 sg_cnt, struct scatterlist *prot_sg, u32 prot_sg_cnt, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct rdma_rw_ctx *ctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjL_h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjH_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjH_ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_rw_ctx”h]”hŒ rdma_rw_ctx”…”�”}”(hjj_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjg_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jl_Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj2_sbŒc.rdma_rw_ctx_destroy_signature”†”asbuh1hhjH_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjH_ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj˜_h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjH_ubjN)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj¥_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjH_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¾_h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjº_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjº_ubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjÜ_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÙ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÞ_Œmodname”NŒ classname”Njkjn)�”}”jq]”j†_Œc.rdma_rw_ctx_destroy_signature”†”asbuh1hhjº_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjº_ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjº_ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjº_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj1`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj.`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j3`Œmodname”NŒ classname”Njkjn)�”}”jq]”j†_Œc.rdma_rw_ctx_destroy_signature”†”asbuh1hhj*`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*`ubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hj]`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj*`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubj½)�”}”(hŒstruct scatterlist *sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjv`h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjr`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr`ubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj”`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‘`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j–`Œmodname”NŒ classname”Njkjn)�”}”jq]”j†_Œc.rdma_rw_ctx_destroy_signature”†”asbuh1hhjr`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr`ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÀ`h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjr`ubjN)�”}”(hŒsg”h]”hŒsg”…”�”}”(hjÍ`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjr`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubj½)�”}”(hŒ u32 sg_cnt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjé`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjæ`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jë`Œmodname”NŒ classname”Njkjn)�”}”jq]”j†_Œc.rdma_rw_ctx_destroy_signature”†”asbuh1hhjâ`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâ`ubjN)�”}”(hŒsg_cnt”h]”hŒsg_cnt”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjâ`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubj½)�”}”(hŒstruct scatterlist *prot_sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj.ah²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj*aubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;ah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*aubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjLah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjIaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jNaŒmodname”NŒ classname”Njkjn)�”}”jq]”j†_Œc.rdma_rw_ctx_destroy_signature”†”asbuh1hhj*aubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*aubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjxah²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj*aubjN)�”}”(hŒprot_sg”h]”hŒprot_sg”…”�”}”(hj…ah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj*aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubj½)�”}”(hŒu32 prot_sg_cnt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¡ah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjžaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j£aŒmodname”NŒ classname”Njkjn)�”}”jq]”j†_Œc.rdma_rw_ctx_destroy_signature”†”asbuh1hhjšaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿ah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjšaubjN)�”}”(hŒ prot_sg_cnt”h]”hŒ prot_sg_cnt”…”�”}”(hjÍah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjšaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjæah²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjâaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâaubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jbŒmodname”NŒ classname”Njkjn)�”}”jq]”j†_Œc.rdma_rw_ctx_destroy_signature”†”asbuh1hhjâaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"bh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâaubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj0bh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjâaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjD_ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj _h²hh³j_h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj_h²hh³j_h´M ubah}”(h]”j_ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j_h´M hj_h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ=release all resources allocated by rdma_rw_ctx_signature_init”h]”hŒ=release all resources allocated by rdma_rw_ctx_signature_init”…”�”}”(hjZbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M hjWbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj_h²hh³j_h´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjrbjÓjrbjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX!**Parameters** ``struct rdma_rw_ctx *ctx`` context to release ``struct ib_qp *qp`` queue pair to operate on ``u32 port_num`` port num to which the connection is bound ``struct scatterlist *sg`` scatterlist that was used for the READ/WRITE ``u32 sg_cnt`` number of entries in **sg** ``struct scatterlist *prot_sg`` scatterlist that was used for the READ/WRITE of the PI ``u32 prot_sg_cnt`` number of entries in **prot_sg** ``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj|bh]”hŒ Parameters”…”�”}”(hj~bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjzbubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhjvbubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct rdma_rw_ctx *ctx`` context to release ”h]”(j)�”}”(hŒ``struct rdma_rw_ctx *ctx``”h]”j )�”}”(hj›bh]”hŒstruct rdma_rw_ctx *ctx”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™bubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhj•bubj)�”}”(hhh]”hÝ)�”}”(hŒcontext to release”h]”hŒcontext to release”…”�”}”(hj´bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j°bh´Mhj±bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j°bh´Mhj’bubjý)�”}”(hŒ.``struct ib_qp *qp`` queue pair to operate on ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjÔbh]”hŒstruct ib_qp *qp”…”�”}”(hjÖbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒbubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MhjÎbubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to operate on”h]”hŒqueue pair to operate on”…”�”}”(hjíbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jébh´Mhjêbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jébh´Mhj’bubjý)�”}”(hŒ;``u32 port_num`` port num to which the connection is bound ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hj ch]”hŒ u32 port_num”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhjcubj)�”}”(hhh]”hÝ)�”}”(hŒ)port num to which the connection is bound”h]”hŒ)port num to which the connection is bound”…”�”}”(hj&ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j"ch´Mhj#cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j"ch´Mhj’bubjý)�”}”(hŒH``struct scatterlist *sg`` scatterlist that was used for the READ/WRITE ”h]”(j)�”}”(hŒ``struct scatterlist *sg``”h]”j )�”}”(hjFch]”hŒstruct scatterlist *sg”…”�”}”(hjHch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhj@cubj)�”}”(hhh]”hÝ)�”}”(hŒ,scatterlist that was used for the READ/WRITE”h]”hŒ,scatterlist that was used for the READ/WRITE”…”�”}”(hj_ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j[ch´Mhj\cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j[ch´Mhj’bubjý)�”}”(hŒ+``u32 sg_cnt`` number of entries in **sg** ”h]”(j)�”}”(hŒ``u32 sg_cnt``”h]”j )�”}”(hjch]”hŒ u32 sg_cnt”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhjycubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in **sg**”h]”(hŒnumber of entries in ”…”�”}”(hj˜ch²hh³Nh´Nubjâ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj˜cubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”ch´Mhj•cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjycubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”ch´Mhj’bubjý)�”}”(hŒW``struct scatterlist *prot_sg`` scatterlist that was used for the READ/WRITE of the PI ”h]”(j)�”}”(hŒ``struct scatterlist *prot_sg``”h]”j )�”}”(hjÆch]”hŒstruct scatterlist *prot_sg”…”�”}”(hjÈch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MhjÀcubj)�”}”(hhh]”hÝ)�”}”(hŒ6scatterlist that was used for the READ/WRITE of the PI”h]”hŒ6scatterlist that was used for the READ/WRITE of the PI”…”�”}”(hjßch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÛch´MhjÜcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÛch´Mhj’bubjý)�”}”(hŒ5``u32 prot_sg_cnt`` number of entries in **prot_sg** ”h]”(j)�”}”(hŒ``u32 prot_sg_cnt``”h]”j )�”}”(hjÿch]”hŒu32 prot_sg_cnt”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhjùcubj)�”}”(hhh]”hÝ)�”}”(hŒ number of entries in **prot_sg**”h]”(hŒnumber of entries in ”…”�”}”(hjdh²hh³Nh´Nubjâ)�”}”(hŒ **prot_sg**”h]”hŒprot_sg”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jdh´Mhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jdh´Mhj’bubjý)�”}”(hŒc``enum dma_data_direction dir`` ``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hjFdh]”hŒenum dma_data_direction dir”…”�”}”(hjHdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDdubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhj@dubj)�”}”(hhh]”hÝ)�”}”(hŒC``DMA_TO_DEVICE`` for RDMA WRITE, ``DMA_FROM_DEVICE`` for RDMA READ”h]”(j )�”}”(hŒ``DMA_TO_DEVICE``”h]”hŒ DMA_TO_DEVICE”…”�”}”(hjcdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_dubhŒ for RDMA WRITE, ”…”�”}”(hj_dh²hh³Nh´Nubj )�”}”(hŒ``DMA_FROM_DEVICE``”h]”hŒDMA_FROM_DEVICE”…”�”}”(hjudh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_dubhŒ for RDMA READ”…”�”}”(hj_dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´Mhj\dubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j[dh´Mhj’bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjvbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_rw_mr_factor (C function)”Œc.rdma_rw_mr_factor”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ^unsigned int rdma_rw_mr_factor (struct ib_device *device, u32 port_num, unsigned int maxpages)”h]”j")�”}”(hŒ]unsigned int rdma_rw_mr_factor(struct ib_device *device, u32 port_num, unsigned int maxpages)”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÀdh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¼dh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼dh²hh³jÎdh´M)ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÝdh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¼dh²hh³jÎdh´M)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼dh²hh³jÎdh´M)ubjš)�”}”(hŒrdma_rw_mr_factor”h]”jN)�”}”(hŒrdma_rw_mr_factor”h]”hŒrdma_rw_mr_factor”…”�”}”(hjýdh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjùdubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¼dh²hh³jÎdh´M)ubj·)�”}”(hŒ?(struct ib_device *device, u32 port_num, unsigned int maxpages)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&eh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj7eh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj4eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j9eŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÿdsbŒc.rdma_rw_mr_factor”†”asbuh1hhjeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjeeh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjeubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjreh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjeubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjŽeh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‹eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�eŒmodname”NŒ classname”Njkjn)�”}”jq]”jSeŒc.rdma_rw_mr_factor”†”asbuh1hhj‡eubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬eh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡eubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjºeh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjeubj½)�”}”(hŒunsigned int maxpages”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÓeh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÏeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏeubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjïeh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÏeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏeubjN)�”}”(hŒmaxpages”h]”hŒmaxpages”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÏeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjeubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¼dh²hh³jÎdh´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¸dh²hh³jÎdh´M)ubah}”(h]”j³dah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÎdh´M)hjµdh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ+return number of MRs required for a payload”h]”hŒ+return number of MRs required for a payload”…”�”}”(hj5fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M)hj2fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjµdh²hh³jÎdh´M)ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjMfjÓjMfjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX¼**Parameters** ``struct ib_device *device`` device handling the connection ``u32 port_num`` port num to which the connection is bound ``unsigned int maxpages`` maximum payload pages per rdma_rw_ctx **Description** Returns the number of MRs the device requires to move **maxpayload** bytes. The returned value is used during transport creation to compute max_rdma_ctxts and the size of the transport's Send and Send Completion Queues.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjWfh]”hŒ Parameters”…”�”}”(hjYfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjUfubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M-hjQfubjø)�”}”(hhh]”(jý)�”}”(hŒ<``struct ib_device *device`` device handling the connection ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjvfh]”hŒstruct ib_device *device”…”�”}”(hjxfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtfubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M*hjpfubj)�”}”(hhh]”hÝ)�”}”(hŒdevice handling the connection”h]”hŒdevice handling the connection”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‹fh´M*hjŒfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‹fh´M*hjmfubjý)�”}”(hŒ;``u32 port_num`` port num to which the connection is bound ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hj¯fh]”hŒ u32 port_num”…”�”}”(hj±fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­fubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M+hj©fubj)�”}”(hhh]”hÝ)�”}”(hŒ)port num to which the connection is bound”h]”hŒ)port num to which the connection is bound”…”�”}”(hjÈfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÄfh´M+hjÅfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÄfh´M+hjmfubjý)�”}”(hŒ@``unsigned int maxpages`` maximum payload pages per rdma_rw_ctx ”h]”(j)�”}”(hŒ``unsigned int maxpages``”h]”j )�”}”(hjèfh]”hŒunsigned int maxpages”…”�”}”(hjêfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæfubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M,hjâfubj)�”}”(hhh]”hÝ)�”}”(hŒ%maximum payload pages per rdma_rw_ctx”h]”hŒ%maximum payload pages per rdma_rw_ctx”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjQfubhÝ)�”}”(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&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M.hjQfubhÝ)�”}”(hŒÛReturns the number of MRs the device requires to move **maxpayload** bytes. The returned value is used during transport creation to compute max_rdma_ctxts and the size of the transport's Send and Send Completion Queues.”h]”(hŒ6Returns the number of MRs the device requires to move ”…”�”}”(hj9gh²hh³Nh´Nubjâ)�”}”(hŒ**maxpayload**”h]”hŒ maxpayload”…”�”}”(hjAgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj9gubhŒ™ bytes. The returned value is used during transport creation to compute max_rdma_ctxts and the size of the transport’s Send and Send Completion Queues.”…”�”}”(hj9gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´M-hjQfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ rdma_rw_max_send_wr (C function)”Œc.rdma_rw_max_send_wr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒtunsigned int rdma_rw_max_send_wr (struct ib_device *dev, u32 port_num, unsigned int max_rdma_ctxs, u32 create_flags)”h]”j")�”}”(hŒsunsigned int rdma_rw_max_send_wr(struct ib_device *dev, u32 port_num, unsigned int max_rdma_ctxs, u32 create_flags)”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjzgh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjvgh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MAubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰gh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjvgh²hh³jˆgh´MAubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj—gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjvgh²hh³jˆgh´MAubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥gh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjvgh²hh³jˆgh´MAubjš)�”}”(hŒrdma_rw_max_send_wr”h]”jN)�”}”(hŒrdma_rw_max_send_wr”h]”hŒrdma_rw_max_send_wr”…”�”}”(hj·gh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³gubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjvgh²hh³jˆgh´MAubj·)�”}”(hŒS(struct ib_device *dev, u32 port_num, unsigned int max_rdma_ctxs, u32 create_flags)”h]”(j½)�”}”(hŒstruct ib_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÓgh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÏgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàgh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏgubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjñgh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjîgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jógŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¹gsbŒc.rdma_rw_max_send_wr”†”asbuh1hhjÏgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏgubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÏgubjN)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj,hh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÏgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjËgubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjHhh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjEhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jJhŒmodname”NŒ classname”Njkjn)�”}”jq]”j hŒc.rdma_rw_max_send_wr”†”asbuh1hhjAhubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAhubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjthh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjAhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjËgubj½)�”}”(hŒunsigned int max_rdma_ctxs”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‰hubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰hubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj©hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‰hubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰hubjN)�”}”(hŒ max_rdma_ctxs”h]”hŒ max_rdma_ctxs”…”�”}”(hjÅhh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‰hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjËgubj½)�”}”(hŒu32 create_flags”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjáhh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÞhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jãhŒmodname”NŒ classname”Njkjn)�”}”jq]”j hŒc.rdma_rw_max_send_wr”†”asbuh1hhjÚhubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚhubjN)�”}”(hŒ create_flags”h]”hŒ create_flags”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÚhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjËgubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjvgh²hh³jˆgh´MAubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjrgh²hh³jˆgh´MAubah}”(h]”jmgah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jˆgh´MAhjogh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ1compute max Send WRs needed for RDMA R/W contexts”h]”hŒ1compute max Send WRs needed for RDMA R/W contexts”…”�”}”(hj7ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MAhj4ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjogh²hh³jˆgh´MAubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjOijÓjOijÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX(**Parameters** ``struct ib_device *dev`` RDMA device ``u32 port_num`` port number ``unsigned int max_rdma_ctxs`` number of rdma_rw_ctx structures ``u32 create_flags`` QP create flags (pass IB_QP_CREATE_INTEGRITY_EN if data integrity will be enabled on the QP) **Description** Returns the total number of Send Queue entries needed for **max_rdma_ctxs**. The result accounts for memory registration and invalidation work requests when the device requires them. ULPs use this to size Send Queues and Send CQs before creating a Queue Pair.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjYih]”hŒ Parameters”…”�”}”(hj[ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjWiubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MEhjSiubjø)�”}”(hhh]”(jý)�”}”(hŒ&``struct ib_device *dev`` RDMA device ”h]”(j)�”}”(hŒ``struct ib_device *dev``”h]”j )�”}”(hjxih]”hŒstruct ib_device *dev”…”�”}”(hjzih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjviubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MBhjriubj)�”}”(hhh]”hÝ)�”}”(hŒ RDMA device”h]”hŒ RDMA device”…”�”}”(hj‘ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�ih´MBhjŽiubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjriubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�ih´MBhjoiubjý)�”}”(hŒ``u32 port_num`` port number ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hj±ih]”hŒ u32 port_num”…”�”}”(hj³ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯iubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MChj«iubj)�”}”(hhh]”hÝ)�”}”(hŒ port number”h]”hŒ port number”…”�”}”(hjÊih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÆih´MChjÇiubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÆih´MChjoiubjý)�”}”(hŒ@``unsigned int max_rdma_ctxs`` number of rdma_rw_ctx structures ”h]”(j)�”}”(hŒ``unsigned int max_rdma_ctxs``”h]”j )�”}”(hjêih]”hŒunsigned int max_rdma_ctxs”…”�”}”(hjìih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèiubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MDhjäiubj)�”}”(hhh]”hÝ)�”}”(hŒ number of rdma_rw_ctx structures”h]”hŒ number of rdma_rw_ctx structures”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÿih´MDhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÿih´MDhjoiubjý)�”}”(hŒr``u32 create_flags`` QP create flags (pass IB_QP_CREATE_INTEGRITY_EN if data integrity will be enabled on the QP) ”h]”(j)�”}”(hŒ``u32 create_flags``”h]”j )�”}”(hj#jh]”hŒu32 create_flags”…”�”}”(hj%jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!jubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:22: ./drivers/infiniband/core/rw.c”h´MFhjjubj)�”}”(hhh]”hÝ)�”}”(hŒ\QP create flags (pass IB_QP_CREATE_INTEGRITY_EN if data integrity will be enabled on the QP)”h]”hŒ\QP create flags (pass IB_QP_CREATE_INTEGRITY_EN if data integrity will be enabled on the QP)”…”�”}”(hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Kšhj:nubj)�”}”(hhh]”hÝ)�”}”(hŒ5Pointer to rdma device whose capability to be checked”h]”hŒ5Pointer to rdma device whose capability to be checked”…”�”}”(hjYnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jUnh´KšhjVnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jUnh´Kšhj7nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjnubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj{nh]”hŒ Description”…”�”}”(hj}nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjynubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´KœhjnubhÝ)�”}”(hŒÌReturns true if a rdma device's owning user namespace has CAP_NET_RAW capability, otherwise false. When rdma subsystem is in legacy shared network, namespace mode, the default net namespace is considered.”h]”hŒÎReturns true if a rdma device’s owning user namespace has CAP_NET_RAW capability, otherwise false. When rdma subsystem is in legacy shared network, namespace mode, the default net namespace is considered.”…”�”}”(hj‘nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´K›hjnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_device_put (C function)”Œc.ib_device_put”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void ib_device_put (struct ib_device *device)”h]”j")�”}”(hŒ,void ib_device_put(struct ib_device *device)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¼nh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏnh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼nh²hh³jÎnh´MVubjš)�”}”(hŒ ib_device_put”h]”jN)�”}”(hŒ ib_device_put”h]”hŒ ib_device_put”…”�”}”(hjánh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÝnubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¼nh²hh³jÎnh´MVubj·)�”}”(hŒ(struct ib_device *device)”h]”j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjýnh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjùnubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjùnubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”joŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjãnsbŒc.ib_device_put”†”asbuh1hhjùnubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;oh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjùnubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjIoh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjùnubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjVoh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjùnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjõnubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¼nh²hh³jÎnh´MVubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¸nh²hh³jÎnh´MVubah}”(h]”j³nah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÎnh´MVhjµnh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒRelease IB device reference”h]”hŒRelease IB device reference”…”�”}”(hj€oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MVhj}oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjµnh²hh³jÎnh´MVubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj˜ojÓj˜ojÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒÎ**Parameters** ``struct ib_device *device`` device whose reference to be released **Description** ib_device_put() releases reference to the IB device to allow it to be unregistered and eventually free.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MZhjœoubjø)�”}”(hhh]”jý)�”}”(hŒC``struct ib_device *device`` device whose reference to be released ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjÁoh]”hŒstruct ib_device *device”…”�”}”(hjÃoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿oubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MWhj»oubj)�”}”(hhh]”hÝ)�”}”(hŒ%device whose reference to be released”h]”hŒ%device whose reference to be released”…”�”}”(hjÚoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÖoh´MWhj×oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÖoh´MWhj¸oubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjœoubhÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MYhjœoubhÝ)�”}”(hŒgib_device_put() releases reference to the IB device to allow it to be unregistered and eventually free.”h]”hŒgib_device_put() releases reference to the IB device to allow it to be unregistered and eventually free.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MXhjœoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ_ib_alloc_device (C function)”Œc._ib_alloc_device”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒBstruct ib_device * _ib_alloc_device (size_t size, struct net *net)”h]”j")�”}”(hŒ@struct ib_device *_ib_alloc_device(size_t size, struct net *net)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjAph²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj=ph²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MGubj:•)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=ph²hh³jNph´MGubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj`ph²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj]pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jbpŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒ_ib_alloc_device”sbŒc._ib_alloc_device”†”asbuh1hhj=ph²hh³jNph´MGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=ph²hh³jNph´MGubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj�ph²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj=ph²hh³jNph´MGubjš)�”}”(hŒ_ib_alloc_device”h]”jN)�”}”(hj~ph]”hŒ_ib_alloc_device”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjœpubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj=ph²hh³jNph´MGubj·)�”}”(hŒ(size_t size, struct net *net)”h]”(j½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¾ph²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj»pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÀpŒmodname”NŒ classname”Njkjn)�”}”jq]”j|pŒc._ib_alloc_device”†”asbuh1hhj·pubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj·pubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjêph²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj·pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj³pubj½)�”}”(hŒstruct net *net”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÿpubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿpubh)�”}”(hhh]”jN)�”}”(hŒnet”h]”hŒnet”…”�”}”(hj!qh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j#qŒmodname”NŒ classname”Njkjn)�”}”jq]”j|pŒc._ib_alloc_device”†”asbuh1hhjÿpubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿpubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjMqh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÿpubjN)�”}”(hŒnet”h]”hŒnet”…”�”}”(hjZqh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj³pubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj=ph²hh³jNph´MGubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj9ph²hh³jNph´MGubah}”(h]”j4pah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jNph´MGhj6ph²hubj±)�”}”(hhh]”hÝ)�”}”(hŒallocate an IB device struct”h]”hŒallocate an IB device struct”…”�”}”(hj„qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MGhj�qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj6ph²hh³jNph´MGubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjœqjÓjœqjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``size_t size`` size of structure to allocate ``struct net *net`` network namespace device should be located in, namespace must stay valid until ib_register_device() is completed. **Description** Low-level drivers should use ib_alloc_device() to allocate :c:type:`struct ib_device `. **size** is the size of the structure to be allocated, including any private data used by the low-level driver. ib_dealloc_device() must be used to free structures allocated with ib_alloc_device().”h]”(hÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MKhj qubjø)�”}”(hhh]”(jý)�”}”(hŒ.``size_t size`` size of structure to allocate ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hjÅqh]”hŒ size_t size”…”�”}”(hjÇqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃqubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MHhj¿qubj)�”}”(hhh]”hÝ)�”}”(hŒsize of structure to allocate”h]”hŒsize of structure to allocate”…”�”}”(hjÞqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÚqh´MHhjÛqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÚqh´MHhj¼qubjý)�”}”(hŒ†``struct net *net`` network namespace device should be located in, namespace must stay valid until ib_register_device() is completed. ”h]”(j)�”}”(hŒ``struct net *net``”h]”j )�”}”(hjþqh]”hŒstruct net *net”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüqubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MJhjøqubj)�”}”(hhh]”hÝ)�”}”(hŒqnetwork namespace device should be located in, namespace must stay valid until ib_register_device() is completed.”h]”hŒqnetwork namespace device should be located in, namespace must stay valid until ib_register_device() is completed.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MIhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjøqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jrh´MJhj¼qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj qubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj:rh]”hŒ Description”…”�”}”(hj`. **size** is the size of the structure to be allocated, including any private data used by the low-level driver. ib_dealloc_device() must be used to free structures allocated with ib_alloc_device().”h]”(hŒ;Low-level drivers should use ib_alloc_device() to allocate ”…”�”}”(hjPrh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct ib_device `”h]”j )�”}”(hjZrh]”hŒstruct ib_device”…”�”}”(hj\rh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jeŒc-type”eh"]”h$]”h&]”uh1jhjXrubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/infiniband”Œ refdomain”jeŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jkjn)�”}”jq]”sbŒ reftarget”Œ ib_device”uh1hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MKhjPrubhŒ. ”…”�”}”(hjPrh²hh³Nh´Nubjâ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hj‚rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjPrubhŒ½ is the size of the structure to be allocated, including any private data used by the low-level driver. ib_dealloc_device() must be used to free structures allocated with ib_alloc_device().”…”�”}”(hjPrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j}rh´MKhj qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_dealloc_device (C function)”Œc.ib_dealloc_device”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1void ib_dealloc_device (struct ib_device *device)”h]”j")�”}”(hŒ0void ib_dealloc_device(struct ib_device *device)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjºrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¶rh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉrh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶rh²hh³jÈrh´M«ubjš)�”}”(hŒib_dealloc_device”h]”jN)�”}”(hŒib_dealloc_device”h]”hŒib_dealloc_device”…”�”}”(hjÛrh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj×rubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¶rh²hh³jÈrh´M«ubj·)�”}”(hŒ(struct ib_device *device)”h]”j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj÷rh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjórubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjórubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jsŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÝrsbŒc.ib_dealloc_device”†”asbuh1hhjórubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjórubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjCsh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjórubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjPsh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjórubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjïrubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¶rh²hh³jÈrh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj²rh²hh³jÈrh´M«ubah}”(h]”j­rah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÈrh´M«hj¯rh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒfree an IB device struct”h]”hŒfree an IB device struct”…”�”}”(hjzsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M«hjwsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¯rh²hh³jÈrh´M«ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj’sjÓj’sjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ…**Parameters** ``struct ib_device *device`` structure to free **Description** Free a structure allocated with ib_alloc_device().”h]”(hÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¯hj–subjø)�”}”(hhh]”jý)�”}”(hŒ/``struct ib_device *device`` structure to free ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj»sh]”hŒstruct ib_device *device”…”�”}”(hj½sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹subah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¬hjµsubj)�”}”(hhh]”hÝ)�”}”(hŒstructure to free”h]”hŒstructure to free”…”�”}”(hjÔsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÐsh´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–subhÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M®hj–subhÝ)�”}”(hŒ2Free a structure allocated with ib_alloc_device().”h]”hŒ2Free a structure allocated with ib_alloc_device().”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M­hj–subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#ib_port_immutable_read (C function)”Œc.ib_port_immutable_read”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒaconst struct ib_port_immutable* ib_port_immutable_read (struct ib_device *dev, unsigned int port)”h]”j")�”}”(hŒ`const struct ib_port_immutable *ib_port_immutable_read(struct ib_device *dev, unsigned int port)”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj;th²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj7th²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M}ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIth²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7th²hh³jHth´M}ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjWth²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj7th²hh³jHth´M}ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdth²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7th²hh³jHth´M}ubh)�”}”(hhh]”jN)�”}”(hŒib_port_immutable”h]”hŒib_port_immutable”…”�”}”(hjuth²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjrtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jwtŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_port_immutable_read”sbŒc.ib_port_immutable_read”†”asbuh1hhj7th²hh³jHth´M}ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7th²hh³jHth´M}ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¤th²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj7th²hh³jHth´M}ubjš)�”}”(hŒib_port_immutable_read”h]”jN)�”}”(hj“th]”hŒib_port_immutable_read”…”�”}”(hjµth²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj±tubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj7th²hh³jHth´M}ubj·)�”}”(hŒ*(struct ib_device *dev, unsigned int port)”h]”(j½)�”}”(hŒstruct ib_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÐth²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÌtubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝth²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÌtubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjîth²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjëtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jðtŒmodname”NŒ classname”Njkjn)�”}”jq]”j‘tŒc.ib_port_immutable_read”†”asbuh1hhjÌtubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÌtubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÌtubjN)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj'uh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÌtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÈtubj½)�”}”(hŒunsigned int port”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj@uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjhjFzubhÝ)�”}”(hŒàCallers should call this routine only once, and protect against races with registration. Typically it should only be called as part of a remove callback in an implementation of driver core's struct device_driver and related.”h]”hŒâCallers should call this routine only once, and protect against races with registration. Typically it should only be called as part of a remove callback in an implementation of driver core’s struct device_driver and related.”…”�”}”(hjËzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M@hjFzubhÝ)�”}”(hŒWIf ops.dealloc_driver is used then ib_dev will be freed upon return from this function.”h]”hŒWIf ops.dealloc_driver is used then ib_dev will be freed upon return from this function.”…”�”}”(hjÚzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MEhjFzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)ib_unregister_device_and_put (C function)”Œc.ib_unregister_device_and_put”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ{ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj{h²hh³j{h´MRubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj{h²hh³j{h´MRubah}”(h]”jüzah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j{h´MRhjþzh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ)Unregister a device while holding a 'get'”h]”hŒ-Unregister a device while holding a ‘get’”…”�”}”(hjÉ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MRhjÆ{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjþzh²hh³j{h´MRubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjá{jÓjá{jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_device *ib_dev`` The device to unregister **Description** This is the same as ib_unregister_device(), except it includes an internal ib_device_put() that should match a 'get' obtained by the caller. It is safe to call this routine concurrently from multiple threads while holding the 'get'. When the function returns the device is fully unregistered. Drivers using this flow MUST use the driver_unregister callback to clean up their resources associated with the device and dealloc it.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjë{h]”hŒ Parameters”…”�”}”(hjí{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjé{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MVhjå{ubjø)�”}”(hhh]”jý)�”}”(hŒ6``struct ib_device *ib_dev`` The device to unregister ”h]”(j)�”}”(hŒ``struct ib_device *ib_dev``”h]”j )�”}”(hj |h]”hŒstruct ib_device *ib_dev”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MShj|ubj)�”}”(hhh]”hÝ)�”}”(hŒThe device to unregister”h]”hŒThe device to unregister”…”�”}”(hj#|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j|h´MShj |ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j|h´MShj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjå{ubhÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MUhjå{ubhÝ)�”}”(hŒŒThis is the same as ib_unregister_device(), except it includes an internal ib_device_put() that should match a 'get' obtained by the caller.”h]”hŒ�This is the same as ib_unregister_device(), except it includes an internal ib_device_put() that should match a ‘get’ obtained by the caller.”…”�”}”(hj[|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MThjå{ubhÝ)�”}”(hŒ—It is safe to call this routine concurrently from multiple threads while holding the 'get'. When the function returns the device is fully unregistered.”h]”hŒ›It is safe to call this routine concurrently from multiple threads while holding the ‘get’. When the function returns the device is fully unregistered.”…”�”}”(hjj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MWhjå{ubhÝ)�”}”(hŒ†Drivers using this flow MUST use the driver_unregister callback to clean up their resources associated with the device and dealloc it.”h]”hŒ†Drivers using this flow MUST use the driver_unregister callback to clean up their resources associated with the device and dealloc it.”…”�”}”(hjy|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M[hjå{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ib_unregister_driver (C function)”Œc.ib_unregister_driver”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9void ib_unregister_driver (enum rdma_driver_id driver_id)”h]”j")�”}”(hŒ8void ib_unregister_driver(enum rdma_driver_id driver_id)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¤|h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·|h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤|h²hh³j¶|h´Mjubjš)�”}”(hŒib_unregister_driver”h]”jN)�”}”(hŒib_unregister_driver”h]”hŒib_unregister_driver”…”�”}”(hjÉ|h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÅ|ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¤|h²hh³j¶|h´Mjubj·)�”}”(hŒ(enum rdma_driver_id driver_id)”h]”j½)�”}”(hŒenum rdma_driver_id driver_id”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjå|h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjá|ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò|h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjá|ubh)�”}”(hhh]”jN)�”}”(hŒrdma_driver_id”h]”hŒrdma_driver_id”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j}Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjË|sbŒc.ib_unregister_driver”†”asbuh1hhjá|ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#}h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjá|ubjN)�”}”(hŒ driver_id”h]”hŒ driver_id”…”�”}”(hj1}h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjá|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÝ|ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¤|h²hh³j¶|h´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj |h²hh³j¶|h´Mjubah}”(h]”j›|ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¶|h´Mjhj�|h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ&Unregister all IB devices for a driver”h]”hŒ&Unregister all IB devices for a driver”…”�”}”(hj[}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MjhjX}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj�|h²hh³j¶|h´Mjubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjs}jÓjs}jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXé**Parameters** ``enum rdma_driver_id driver_id`` The driver to unregister **Description** This implements a fence for device unregistration. It only returns once all devices associated with the driver_id have fully completed their unregistration and returned from ib_unregister_device*(). If device's are not yet unregistered it goes ahead and starts unregistering them. This does not block creation of new devices with the given driver_id, that is the responsibility of the caller.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj}}h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj{}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mnhjw}ubjø)�”}”(hhh]”jý)�”}”(hŒ;``enum rdma_driver_id driver_id`` The driver to unregister ”h]”(j)�”}”(hŒ!``enum rdma_driver_id driver_id``”h]”j )�”}”(hjœ}h]”hŒenum rdma_driver_id driver_id”…”�”}”(hjž}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mkhj–}ubj)�”}”(hhh]”hÝ)�”}”(hŒThe driver to unregister”h]”hŒThe driver to unregister”…”�”}”(hjµ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j±}h´Mkhj²}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j±}h´Mkhj“}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjw}ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj×}h]”hŒ Description”…”�”}”(hjÙ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÕ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mmhjw}ubhÝ)�”}”(hŒÆThis implements a fence for device unregistration. It only returns once all devices associated with the driver_id have fully completed their unregistration and returned from ib_unregister_device*().”h]”hŒÆThis implements a fence for device unregistration. It only returns once all devices associated with the driver_id have fully completed their unregistration and returned from ib_unregister_device*().”…”�”}”(hjí}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mlhjw}ubhÝ)�”}”(hŒQIf device's are not yet unregistered it goes ahead and starts unregistering them.”h]”hŒSIf device’s are not yet unregistered it goes ahead and starts unregistering them.”…”�”}”(hjü}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mphjw}ubhÝ)�”}”(hŒoThis does not block creation of new devices with the given driver_id, that is the responsibility of the caller.”h]”hŒoThis does not block creation of new devices with the given driver_id, that is the responsibility of the caller.”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mshjw}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(ib_unregister_device_queued (C function)”Œc.ib_unregister_device_queued”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;void ib_unregister_device_queued (struct ib_device *ib_dev)”h]”j")�”}”(hŒ:void ib_unregister_device_queued(struct ib_device *ib_dev)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj6~h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI~h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6~h²hh³jH~h´M˜ubjš)�”}”(hŒib_unregister_device_queued”h]”jN)�”}”(hŒib_unregister_device_queued”h]”hŒib_unregister_device_queued”…”�”}”(hj[~h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjW~ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj6~h²hh³jH~h´M˜ubj·)�”}”(hŒ(struct ib_device *ib_dev)”h]”j½)�”}”(hŒstruct ib_device *ib_dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjw~h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjs~ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„~h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjs~ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj•~h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj’~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j—~Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj]~sbŒc.ib_unregister_device_queued”†”asbuh1hhjs~ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ~h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjs~ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÃ~h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjs~ubjN)�”}”(hŒib_dev”h]”hŒib_dev”…”�”}”(hjÐ~h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjs~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjo~ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj6~h²hh³jH~h´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj2~h²hh³jH~h´M˜ubah}”(h]”j-~ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jH~h´M˜hj/~h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ&Unregister a device using a work queue”h]”hŒ&Unregister a device using a work queue”…”�”}”(hjú~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M˜hj÷~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj/~h²hh³jH~h´M˜ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjjÓjjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX•**Parameters** ``struct ib_device *ib_dev`` The device to unregister **Description** This schedules an asynchronous unregistration using a WQ for the device. A driver should use this to avoid holding locks while doing unregistration, such as holding the RTNL lock. Drivers using this API must use ib_unregister_driver before module unload to ensure that all scheduled unregistrations have completed.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mœhjubjø)�”}”(hhh]”jý)�”}”(hŒ6``struct ib_device *ib_dev`` The device to unregister ”h]”(j)�”}”(hŒ``struct ib_device *ib_dev``”h]”j )�”}”(hj;h]”hŒstruct ib_device *ib_dev”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M™hj5ubj)�”}”(hhh]”hÝ)�”}”(hŒThe device to unregister”h]”hŒThe device to unregister”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPh´M™hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jPh´M™hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjvh]”hŒ Description”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M›hjubhÝ)�”}”(hŒ³This schedules an asynchronous unregistration using a WQ for the device. A driver should use this to avoid holding locks while doing unregistration, such as holding the RTNL lock.”h]”hŒ³This schedules an asynchronous unregistration using a WQ for the device. A driver should use this to avoid holding locks while doing unregistration, such as holding the RTNL lock.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MšhjubhÝ)�”}”(hŒ†Drivers using this API must use ib_unregister_driver before module unload to ensure that all scheduled unregistrations have completed.”h]”hŒ†Drivers using this API must use ib_unregister_driver before module unload to ensure that all scheduled unregistrations have completed.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mžhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_register_client (C function)”Œc.ib_register_client”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1int ib_register_client (struct ib_client *client)”h]”j")�”}”(hŒ0int ib_register_client(struct ib_client *client)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÆh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÍubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÆh²hh³jØh´MÍubjš)�”}”(hŒib_register_client”h]”jN)�”}”(hŒib_register_client”h]”hŒib_register_client”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjçubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÆh²hh³jØh´MÍubj·)�”}”(hŒ(struct ib_client *client)”h]”j½)�”}”(hŒstruct ib_client *client”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj€ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€ubh)�”}”(hhh]”jN)�”}”(hŒ ib_client”h]”hŒ ib_client”…”�”}”(hj%€h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj"€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j'€Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjísbŒc.ib_register_client”†”asbuh1hhj€ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE€h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjS€h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj€ubjN)�”}”(hŒclient”h]”hŒclient”…”�”}”(hj`€h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÿubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÆh²hh³jØh´MÍubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÂh²hh³jØh´MÍubah}”(h]”j½ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jØh´MÍhj¿h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒRegister an IB client”h]”hŒRegister an IB client”…”�”}”(hjŠ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÍhj‡€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¿h²hh³jØh´MÍubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¢€jÓj¢€jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXG**Parameters** ``struct ib_client *client`` Client to register **Description** Upper level users of the IB drivers can use ib_register_client() to register callbacks for IB device addition and removal. When an IB device is added, each registered client's add method will be called (in the order the clients were registered), and when a device is removed, each client's remove method will be called (in the reverse order that clients were registered). In addition, when ib_register_client() is called, the client will receive an add callback for all devices already registered.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¬€h]”hŒ Parameters”…”�”}”(hj®€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjª€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÑhj¦€ubjø)�”}”(hhh]”jý)�”}”(hŒ0``struct ib_client *client`` Client to register ”h]”(j)�”}”(hŒ``struct ib_client *client``”h]”j )�”}”(hjË€h]”hŒstruct ib_client *client”…”�”}”(hjÍ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÎhjÅ€ubj)�”}”(hhh]”hÝ)�”}”(hŒClient to register”h]”hŒClient to register”…”�”}”(hjä€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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¦€ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj�h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÐhj¦€ubhÝ)�”}”(hXóUpper level users of the IB drivers can use ib_register_client() to register callbacks for IB device addition and removal. When an IB device is added, each registered client's add method will be called (in the order the clients were registered), and when a device is removed, each client's remove method will be called (in the reverse order that clients were registered). In addition, when ib_register_client() is called, the client will receive an add callback for all devices already registered.”h]”hX÷Upper level users of the IB drivers can use ib_register_client() to register callbacks for IB device addition and removal. When an IB device is added, each registered client’s add method will be called (in the order the clients were registered), and when a device is removed, each client’s remove method will be called (in the reverse order that clients were registered). In addition, when ib_register_client() is called, the client will receive an add callback for all devices already registered.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÏhj¦€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ib_unregister_client (C function)”Œc.ib_unregister_client”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void ib_unregister_client (struct ib_client *client)”h]”j")�”}”(hŒ3void ib_unregister_client(struct ib_client *client)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjK�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjG�h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mþubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjG�h²hh³jY�h´Mþubjš)�”}”(hŒib_unregister_client”h]”jN)�”}”(hŒib_unregister_client”h]”hŒib_unregister_client”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjh�ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjG�h²hh³jY�h´Mþubj·)�”}”(hŒ(struct ib_client *client)”h]”j½)�”}”(hŒstruct ib_client *client”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjˆ�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj„�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„�ubh)�”}”(hhh]”jN)�”}”(hŒ ib_client”h]”hŒ ib_client”…”�”}”(hj¦�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj£�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¨�Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjn�sbŒc.ib_unregister_client”†”asbuh1hhj„�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„�ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj„�ubjN)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjá�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj„�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj€�ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjG�h²hh³jY�h´Mþubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjC�h²hh³jY�h´Mþubah}”(h]”j>�ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jY�h´Mþhj@�h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒUnregister an IB client”h]”hŒUnregister an IB client”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mþhj‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj@�h²hh³jY�h´Mþubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj#‚jÓj#‚jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX‹**Parameters** ``struct ib_client *client`` Client to unregister **Description** Upper level users use ib_unregister_client() to remove their client registration. When ib_unregister_client() is called, the client will receive a remove callback for each IB device still registered. This is a full fence, once it returns no client callbacks will be called, or are running in another thread.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj-‚h]”hŒ Parameters”…”�”}”(hj/‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj+‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mhj'‚ubjø)�”}”(hhh]”jý)�”}”(hŒ2``struct ib_client *client`` Client to unregister ”h]”(j)�”}”(hŒ``struct ib_client *client``”h]”j )�”}”(hjL‚h]”hŒstruct ib_client *client”…”�”}”(hjN‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÿhjF‚ubj)�”}”(hhh]”hÝ)�”}”(hŒClient to unregister”h]”hŒClient to unregister”…”�”}”(hje‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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'‚ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj‡‚h]”hŒ Description”…”�”}”(hj‰‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj…‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mhj'‚ubhÝ)�”}”(hŒÈUpper level users use ib_unregister_client() to remove their client registration. When ib_unregister_client() is called, the client will receive a remove callback for each IB device still registered.”h]”hŒÈUpper level users use ib_unregister_client() to remove their client registration. When ib_unregister_client() is called, the client will receive a remove callback for each IB device still registered.”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mhj'‚ubhÝ)�”}”(hŒkThis is a full fence, once it returns no client callbacks will be called, or are running in another thread.”h]”hŒkThis is a full fence, once it returns no client callbacks will be called, or are running in another thread.”…”�”}”(hj¬‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mhj'‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_set_client_data (C function)”Œc.ib_set_client_data”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXvoid ib_set_client_data (struct ib_device *device, struct ib_client *client, void *data)”h]”j")�”}”(hŒWvoid ib_set_client_data(struct ib_device *device, struct ib_client *client, void *data)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛ‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjׂh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MŒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjׂh²hh³jé‚h´MŒubjš)�”}”(hŒib_set_client_data”h]”jN)�”}”(hŒib_set_client_data”h]”hŒib_set_client_data”…”�”}”(hjü‚h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjø‚ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjׂh²hh³jé‚h´MŒubj·)�”}”(hŒ@(struct ib_device *device, struct ib_client *client, void *data)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjƒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ƒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj6ƒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj3ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j8ƒŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjþ‚sbŒc.ib_set_client_data”†”asbuh1hhjƒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVƒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjdƒh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjƒubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjqƒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjƒubj½)�”}”(hŒstruct ib_client *client”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŠƒh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj†ƒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ƒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ƒubh)�”}”(hhh]”jN)�”}”(hŒ ib_client”h]”hŒ ib_client”…”�”}”(hj¨ƒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¥ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jªƒŒmodname”NŒ classname”•Njkjn)�”}”jq]”jRƒŒc.ib_set_client_data”†”asbuh1hhj†ƒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ƒubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÔƒh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj†ƒubjN)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjáƒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj†ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjƒubj½)�”}”(hŒ void *data”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjúƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjöƒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjöƒubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjöƒubjN)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj#„h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjöƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjƒubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjׂh²hh³jé‚h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÓ‚h²hh³jé‚h´MŒubah}”(h]”j΂ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jé‚h´MŒhjЂh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSet IB client context”h]”hŒSet IB client context”…”�”}”(hjM„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MŒhjJ„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjЂh²hh³jé‚h´MŒubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒje„jÓje„jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXž**Parameters** ``struct ib_device *device`` Device to set context for ``struct ib_client *client`` Client to set context for ``void *data`` Context to set **Description** ib_set_client_data() sets client context data that can be retrieved with ib_get_client_data(). This can only be called while the client is registered to the device, once the ib_client remove() callback returns this cannot be called.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M�hji„ubjø)�”}”(hhh]”(jý)�”}”(hŒ7``struct ib_device *device`` Device to set context for ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjŽ„h]”hŒstruct ib_device *device”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M�hjˆ„ubj)�”}”(hhh]”hÝ)�”}”(hŒDevice to set context for”h]”hŒDevice to set context for”…”�”}”(hj§„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ib_client *client`` Client to set context for ”h]”(j)�”}”(hŒ``struct ib_client *client``”h]”j )�”}”(hjÇ„h]”hŒstruct ib_client *client”…”�”}”(hjÉ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MŽhjÁ„ubj)�”}”(hhh]”hÝ)�”}”(hŒClient to set context for”h]”hŒClient to set context for”…”�”}”(hjà„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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`` Context to set ”h]”(j)�”}”(hŒ``void *data``”h]”j )�”}”(hj…h]”hŒ void *data”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M�hjú„ubj)�”}”(hhh]”hÝ)�”}”(hŒContext to set”h]”hŒContext to set”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hji„ubhÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M‘hji„ubhÝ)�”}”(hŒèib_set_client_data() sets client context data that can be retrieved with ib_get_client_data(). This can only be called while the client is registered to the device, once the ib_client remove() callback returns this cannot be called.”h]”hŒèib_set_client_data() sets client context data that can be retrieved with ib_get_client_data(). This can only be called while the client is registered to the device, once the ib_client remove() callback returns this cannot be called.”…”�”}”(hjQ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M�hji„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&ib_register_event_handler (C function)”Œc.ib_register_event_handler”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGvoid ib_register_event_handler (struct ib_event_handler *event_handler)”h]”j")�”}”(hŒFvoid ib_register_event_handler(struct ib_event_handler *event_handler)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj|…h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¥ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�…h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj|…h²hh³jŽ…h´M¥ubjš)�”}”(hŒib_register_event_handler”h]”jN)�”}”(hŒib_register_event_handler”h]”hŒib_register_event_handler”…”�”}”(hj¡…h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�…ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj|…h²hh³jŽ…h´M¥ubj·)�”}”(hŒ((struct ib_event_handler *event_handler)”h]”j½)�”}”(hŒ&struct ib_event_handler *event_handler”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj½…h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¹…ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ…h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¹…ubh)�”}”(hhh]”jN)�”}”(hŒib_event_handler”h]”hŒib_event_handler”…”�”}”(hjÛ…h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÝ…Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj£…sbŒc.ib_register_event_handler”†”asbuh1hhj¹…ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû…h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¹…ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¹…ubjN)�”}”(hŒ event_handler”h]”hŒ event_handler”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¹…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjµ…ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj|…h²hh³jŽ…h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjx…h²hh³jŽ…h´M¥ubah}”(h]”js…ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jŽ…h´M¥hju…h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒRegister an IB event handler”h]”hŒRegister an IB event handler”…”�”}”(hj@†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¥hj=†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hju…h²hh³jŽ…h´M¥ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjX†jÓjX†jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXH**Parameters** ``struct ib_event_handler *event_handler`` Handler to register **Description** ib_register_event_handler() registers an event handler that will be called back when asynchronous IB events occur (as defined in chapter 11 of the InfiniBand Architecture Specification). This callback occurs in workqueue context.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M©hj\†ubjø)�”}”(hhh]”jý)�”}”(hŒ?``struct ib_event_handler *event_handler`` Handler to register ”h]”(j)�”}”(hŒ*``struct ib_event_handler *event_handler``”h]”j )�”}”(hj�†h]”hŒ&struct ib_event_handler *event_handler”…”�”}”(hjƒ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¦hj{†ubj)�”}”(hhh]”hÝ)�”}”(hŒHandler to register”h]”hŒHandler to register”…”�”}”(hjš†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j–†h´M¦hj—†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j–†h´M¦hjx†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj\†ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj¼†h]”hŒ Description”…”�”}”(hj¾†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjº†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¨hj\†ubhÝ)�”}”(hŒåib_register_event_handler() registers an event handler that will be called back when asynchronous IB events occur (as defined in chapter 11 of the InfiniBand Architecture Specification). This callback occurs in workqueue context.”h]”hŒåib_register_event_handler() registers an event handler that will be called back when asynchronous IB events occur (as defined in chapter 11 of the InfiniBand Architecture Specification). This callback occurs in workqueue context.”…”�”}”(hjÒ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M§hj\†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(ib_unregister_event_handler (C function)”Œc.ib_unregister_event_handler”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIvoid ib_unregister_event_handler (struct ib_event_handler *event_handler)”h]”j")�”}”(hŒHvoid ib_unregister_event_handler(struct ib_event_handler *event_handler)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjý†h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjý†h²hh³j‡h´M·ubjš)�”}”(hŒib_unregister_event_handler”h]”jN)�”}”(hŒib_unregister_event_handler”h]”hŒib_unregister_event_handler”…”�”}”(hj"‡h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjý†h²hh³j‡h´M·ubj·)�”}”(hŒ((struct ib_event_handler *event_handler)”h]”j½)�”}”(hŒ&struct ib_event_handler *event_handler”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj>‡h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj:‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:‡ubh)�”}”(hhh]”jN)�”}”(hŒib_event_handler”h]”hŒib_event_handler”…”�”}”(hj\‡h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjY‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j^‡Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj$‡sbŒc.ib_unregister_event_handler”†”asbuh1hhj:‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:‡ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjЇh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj:‡ubjN)�”}”(hŒ event_handler”h]”hŒ event_handler”…”�”}”(hj—‡h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj6‡ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjý†h²hh³j‡h´M·ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjù†h²hh³j‡h´M·ubah}”(h]”jô†ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‡h´M·hjö†h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒUnregister an event handler”h]”hŒUnregister an event handler”…”�”}”(hjÁ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M·hj¾‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjö†h²hh³j‡h´M·ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÙ‡jÓjÙ‡jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ­**Parameters** ``struct ib_event_handler *event_handler`` Handler to unregister **Description** Unregister an event handler registered with ib_register_event_handler().”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjã‡h]”hŒ Parameters”…”�”}”(hjå‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjá‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M»hj݇ubjø)�”}”(hhh]”jý)�”}”(hŒA``struct ib_event_handler *event_handler`` Handler to unregister ”h]”(j)�”}”(hŒ*``struct ib_event_handler *event_handler``”h]”j )�”}”(hjˆh]”hŒ&struct ib_event_handler *event_handler”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¸hjü‡ubj)�”}”(hhh]”hÝ)�”}”(hŒHandler to unregister”h]”hŒHandler to unregister”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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݇ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj=ˆh]”hŒ Description”…”�”}”(hj?ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj;ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mºhj݇ubhÝ)�”}”(hŒHUnregister an event handler registered with ib_register_event_handler().”h]”hŒHUnregister an event handler registered with ib_register_event_handler().”…”�”}”(hjSˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¹hj݇ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_query_port (C function)”Œc.ib_query_port”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒZint ib_query_port (struct ib_device *device, u32 port_num, struct ib_port_attr *port_attr)”h]”j")�”}”(hŒYint ib_query_port(struct ib_device *device, u32 port_num, struct ib_port_attr *port_attr)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj~ˆh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘ˆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~ˆh²hh³j�ˆh´M ubjš)�”}”(hŒ ib_query_port”h]”jN)�”}”(hŒ ib_query_port”h]”hŒ ib_query_port”…”�”}”(hj£ˆh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŸˆubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj~ˆh²hh³j�ˆh´M ubj·)�”}”(hŒH(struct ib_device *device, u32 port_num, struct ib_port_attr *port_attr)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¿ˆh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj»ˆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̈h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»ˆubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj݈h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÚˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j߈Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¥ˆsbŒc.ib_query_port”†”asbuh1hhj»ˆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýˆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»ˆubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj»ˆubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj»ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj·ˆubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj4‰h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj1‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j6‰Œmodname”NŒ classname”Njkjn)�”}”jq]”jùˆŒc.ib_query_port”†”asbuh1hhj-‰ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR‰h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj-‰ubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hj`‰h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj-‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj·ˆubj½)�”}”(hŒstruct ib_port_attr *port_attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjy‰h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hju‰ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†‰h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hju‰ubh)�”}”(hhh]”jN)�”}”(hŒ ib_port_attr”h]”hŒ ib_port_attr”…”�”}”(hj—‰h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj”‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j™‰Œmodname”NŒ classname”Njkjn)�”}”jq]”jùˆŒc.ib_query_port”†”asbuh1hhju‰ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ‰h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hju‰ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhju‰ubjN)�”}”(hŒ port_attr”h]”hŒ port_attr”…”�”}”(hjЉh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhju‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj·ˆubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj~ˆh²hh³j�ˆh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjzˆh²hh³j�ˆh´M ubah}”(h]”juˆah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j�ˆh´M hjwˆh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒQuery IB port attributes”h]”hŒQuery IB port attributes”…”�”}”(hjú‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj÷‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjwˆh²hh³j�ˆh´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjŠjÓjŠjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_device *device`` Device to query ``u32 port_num`` Port number to query ``struct ib_port_attr *port_attr`` Port attributes **Description** ib_query_port() returns the attributes of a port through the **port_attr** pointer.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjŠh]”hŒ Parameters”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hjŠubjø)�”}”(hhh]”(jý)�”}”(hŒ-``struct ib_device *device`` Device to query ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj;Šh]”hŒstruct ib_device *device”…”�”}”(hj=Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj5Šubj)�”}”(hhh]”hÝ)�”}”(hŒDevice to query”h]”hŒDevice to query”…”�”}”(hjTŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPŠh´M hjQŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jPŠh´M hj2Šubjý)�”}”(hŒ&``u32 port_num`` Port number to query ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjtŠh]”hŒ u32 port_num”…”�”}”(hjvŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hjnŠubj)�”}”(hhh]”hÝ)�”}”(hŒPort number to query”h]”hŒPort number to query”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‰Šh´M hjŠŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‰Šh´M hj2Šubjý)�”}”(hŒ3``struct ib_port_attr *port_attr`` Port attributes ”h]”(j)�”}”(hŒ"``struct ib_port_attr *port_attr``”h]”j )�”}”(hj­Šh]”hŒstruct ib_port_attr *port_attr”…”�”}”(hj¯Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj§Šubj)�”}”(hhh]”hÝ)�”}”(hŒPort attributes”h]”hŒPort attributes”…”�”}”(hjÆŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŠh´M hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŠh´M hj2Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŠubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjèŠh]”hŒ Description”…”�”}”(hjêŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjæŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hjŠubhÝ)�”}”(hŒSib_query_port() returns the attributes of a port through the **port_attr** pointer.”h]”(hŒ=ib_query_port() returns the attributes of a port through the ”…”�”}”(hjþŠh²hh³Nh´Nubjâ)�”}”(hŒ **port_attr**”h]”hŒ port_attr”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjþŠubhŒ pointer.”…”�”}”(hjþŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hjŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ib_device_set_netdev (C function)”Œc.ib_device_set_netdev”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVint ib_device_set_netdev (struct ib_device *ib_dev, struct net_device *ndev, u32 port)”h]”j")�”}”(hŒUint ib_device_set_netdev(struct ib_device *ib_dev, struct net_device *ndev, u32 port)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj?‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj;‹h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M< ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN‹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;‹h²hh³jM‹h´M< ubjš)�”}”(hŒib_device_set_netdev”h]”jN)�”}”(hŒib_device_set_netdev”h]”hŒib_device_set_netdev”…”�”}”(hj`‹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj\‹ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj;‹h²hh³jM‹h´M< ubj·)�”}”(hŒ=(struct ib_device *ib_dev, struct net_device *ndev, u32 port)”h]”(j½)�”}”(hŒstruct ib_device *ib_dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj|‹h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjx‹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰‹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjx‹ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjš‹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj—‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jœ‹Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjb‹sbŒc.ib_device_set_netdev”†”asbuh1hhjx‹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº‹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjx‹ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÈ‹h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjx‹ubjN)�”}”(hŒib_dev”h]”hŒib_dev”…”�”}”(hjÕ‹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjx‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjt‹ubj½)�”}”(hŒstruct net_device *ndev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjî‹h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjê‹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû‹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjê‹ubh)�”}”(hhh]”jN)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒŒmodname”NŒ classname”Njkjn)�”}”jq]”j¶‹Œc.ib_device_set_netdev”†”asbuh1hhjê‹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Œh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjê‹ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj8Œh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjê‹ubjN)�”}”(hŒndev”h]”hŒndev”…”�”}”(hjEŒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjê‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjt‹ubj½)�”}”(hŒu32 port”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjaŒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jcŒŒmodname”NŒ classname”Njkjn)�”}”jq]”j¶‹Œc.ib_device_set_netdev”†”asbuh1hhjZŒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZŒubjN)�”}”(hŒport”h]”hŒport”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjt‹ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj;‹h²hh³jM‹h´M< ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj7‹h²hh³jM‹h´M< ubah}”(h]”j2‹ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jM‹h´M< hj4‹h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ2Associate the ib_dev with an underlying net_device”h]”hŒ2Associate the ib_dev with an underlying net_device”…”�”}”(hj·Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M< hj´Œh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj4‹h²hh³jM‹h´M< ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÏŒjÓjÏŒjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXS**Parameters** ``struct ib_device *ib_dev`` Device to modify ``struct net_device *ndev`` net_device to affiliate, may be NULL ``u32 port`` IB port the net_device is connected to **Description** Drivers should use this to link the ib_device to a netdev so the netdev shows up in interfaces like ib_enum_roce_netdev. Only one netdev may be affiliated with any port. The caller must ensure that the given ndev is not unregistered or unregistering, and that either the ib_device is unregistered or ib_device_set_netdev() is called with NULL when the ndev sends a NETDEV_UNREGISTER event.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÙŒh]”hŒ Parameters”…”�”}”(hjÛŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj׌ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M@ hjÓŒubjø)�”}”(hhh]”(jý)�”}”(hŒ.``struct ib_device *ib_dev`` Device to modify ”h]”(j)�”}”(hŒ``struct ib_device *ib_dev``”h]”j )�”}”(hjøŒh]”hŒstruct ib_device *ib_dev”…”�”}”(hjúŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M= hjòŒubj)�”}”(hhh]”hÝ)�”}”(hŒDevice to modify”h]”hŒDevice to modify”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 net_device *ndev`` net_device to affiliate, may be NULL ”h]”(j)�”}”(hŒ``struct net_device *ndev``”h]”j )�”}”(hj1�h]”hŒstruct net_device *ndev”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M> hj+�ubj)�”}”(hhh]”hÝ)�”}”(hŒ$net_device to affiliate, may be NULL”h]”hŒ$net_device to affiliate, may be NULL”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ4``u32 port`` IB port the net_device is connected to ”h]”(j)�”}”(hŒ ``u32 port``”h]”j )�”}”(hjj�h]”hŒu32 port”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M? hjd�ubj)�”}”(hhh]”hÝ)�”}”(hŒ&IB port the net_device is connected to”h]”hŒ&IB port the net_device is connected to”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�h´M? hj€�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�h´M? hjïŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÓŒubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj¥�h]”hŒ Description”…”�”}”(hj§�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj£�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MA hjÓŒubhÝ)�”}”(hŒ©Drivers should use this to link the ib_device to a netdev so the netdev shows up in interfaces like ib_enum_roce_netdev. Only one netdev may be affiliated with any port.”h]”hŒ©Drivers should use this to link the ib_device to a netdev so the netdev shows up in interfaces like ib_enum_roce_netdev. Only one netdev may be affiliated with any port.”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M@ hjÓŒubhÝ)�”}”(hŒÛThe caller must ensure that the given ndev is not unregistered or unregistering, and that either the ib_device is unregistered or ib_device_set_netdev() is called with NULL when the ndev sends a NETDEV_UNREGISTER event.”h]”hŒÛThe caller must ensure that the given ndev is not unregistered or unregistering, and that either the ib_device is unregistered or ib_device_set_netdev() is called with NULL when the ndev sends a NETDEV_UNREGISTER event.”…”�”}”(hjÊ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MD hjÓŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ib_query_netdev_port (C function)”Œc.ib_query_netdev_port”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVint ib_query_netdev_port (struct ib_device *ibdev, struct net_device *ndev, u32 *port)”h]”j")�”}”(hŒUint ib_query_netdev_port(struct ib_device *ibdev, struct net_device *ndev, u32 *port)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjõ�h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M» ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõ�h²hh³jŽh´M» ubjš)�”}”(hŒib_query_netdev_port”h]”jN)�”}”(hŒib_query_netdev_port”h]”hŒib_query_netdev_port”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŽubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjõ�h²hh³jŽh´M» ubj·)�”}”(hŒ=(struct ib_device *ibdev, struct net_device *ndev, u32 *port)”h]”(j½)�”}”(hŒstruct ib_device *ibdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj6Žh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj2Žubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2Žubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjTŽh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjQŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jVŽŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjŽsbŒc.ib_query_netdev_port”†”asbuh1hhj2Žubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2Žubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‚Žh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj2ŽubjN)�”}”(hŒibdev”h]”hŒibdev”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj2Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj.Žubj½)�”}”(hŒstruct net_device *ndev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¨Žh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¤Žubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤Žubh)�”}”(hhh]”jN)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÆŽh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÃŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÈŽŒmodname”NŒ classname”Njkjn)�”}”jq]”jpŽŒc.ib_query_netdev_port”†”asbuh1hhj¤Žubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤Žubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjòŽh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¤ŽubjN)�”}”(hŒndev”h]”hŒndev”…”�”}”(hjÿŽh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¤Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj.Žubj½)�”}”(hŒ u32 *port”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�Œmodname”NŒ classname”Njkjn)�”}”jq]”jpŽŒc.ib_query_netdev_port”†”asbuh1hhj�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�ubjN)�”}”(hŒport”h]”hŒport”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj.Žubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjõ�h²hh³jŽh´M» ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjñ�h²hh³jŽh´M» ubah}”(h]”jì�ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jŽh´M» hjî�h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ>Query the port number of a net_device associated with an ibdev”h]”hŒ>Query the port number of a net_device associated with an ibdev”…”�”}”(hj~�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M» hj{�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjî�h²hh³jŽh´M» ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj–�jÓj–�jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ�**Parameters** ``struct ib_device *ibdev`` IB device ``struct net_device *ndev`` Network device ``u32 *port`` IB port the net_device is connected to”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj �h]”hŒ Parameters”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjž�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¿ hjš�ubjø)�”}”(hhh]”(jý)�”}”(hŒ&``struct ib_device *ibdev`` IB device ”h]”(j)�”}”(hŒ``struct ib_device *ibdev``”h]”j )�”}”(hj¿�h]”hŒstruct ib_device *ibdev”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M½ hj¹�ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device”h]”hŒ IB device”…”�”}”(hjØ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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_device *ndev`` Network device ”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&]”uh1jhjö�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M¾ hjò�ubj)�”}”(hhh]”hÝ)�”}”(hŒNetwork device”h]”hŒNetwork device”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``u32 *port`` IB port the net_device is connected to”h]”(j)�”}”(hŒ ``u32 *port``”h]”j )�”}”(hj1�h]”hŒ u32 *port”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÀ hj+�ubj)�”}”(hhh]”hÝ)�”}”(hŒ&IB port the net_device is connected to”h]”hŒ&IB port the net_device is connected to”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.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÷hjš�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$ib_device_get_by_netdev (C function)”Œc.ib_device_get_by_netdev”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒcstruct ib_device * ib_device_get_by_netdev (struct net_device *ndev, enum rdma_driver_id driver_id)”h]”j")�”}”(hŒastruct ib_device *ib_device_get_by_netdev(struct net_device *ndev, enum rdma_driver_id driver_id)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‡�h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÖ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡�h²hh³j˜�h´MÖ ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj§�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¬�Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_device_get_by_netdev”sbŒc.ib_device_get_by_netdev”†”asbuh1hhj‡�h²hh³j˜�h´MÖ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡�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Ö ubjš)�”}”(hŒib_device_get_by_netdev”h]”jN)�”}”(hjÈ�h]”hŒib_device_get_by_netdev”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjæ�ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj‡�h²hh³j˜�h´MÖ ubj·)�”}”(hŒ8(struct net_device *ndev, enum rdma_driver_id driver_id)”h]”(j½)�”}”(hŒstruct net_device *ndev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘ubh)�”}”(hhh]”jN)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj#‘h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j%‘Œmodname”NŒ classname”Njkjn)�”}”jq]”jÆ�Œc.ib_device_get_by_netdev”†”asbuh1hhj‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjO‘h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‘ubjN)�”}”(hŒndev”h]”hŒndev”…”�”}”(hj\‘h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjý�ubj½)�”}”(hŒenum rdma_driver_id driver_id”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hju‘h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjq‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjq‘ubh)�”}”(hhh]”jN)�”}”(hŒrdma_driver_id”h]”hŒrdma_driver_id”…”�”}”(hj“‘h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j•‘Œmodname”NŒ classname”Njkjn)�”}”jq]”jÆ�Œc.ib_device_get_by_netdev”†”asbuh1hhjq‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjq‘ubjN)�”}”(hŒ driver_id”h]”hŒ driver_id”…”�”}”(hj¿‘h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjq‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjý�ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj‡�h²hh³j˜�h´MÖ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjƒ�h²hh³j˜�h´MÖ ubah}”(h]”j~�ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j˜�h´MÖ hj€�h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ*Find an IB device associated with a netdev”h]”hŒ*Find an IB device associated with a netdev”…”�”}”(hjé‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÖ hjæ‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj€�h²hh³j˜�h´MÖ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj’jÓj’jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXK**Parameters** ``struct net_device *ndev`` netdev to locate ``enum rdma_driver_id driver_id`` The driver ID that must match (RDMA_DRIVER_UNKNOWN matches all) **Description** Find and hold an ib_device that is associated with a netdev via ib_device_set_netdev(). The caller must call ib_device_put() on the returned pointer.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj ’h]”hŒ Parameters”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÚ hj’ubjø)�”}”(hhh]”(jý)�”}”(hŒ-``struct net_device *ndev`` netdev to locate ”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&]”uh1jhj(’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M× hj$’ubj)�”}”(hhh]”hÝ)�”}”(hŒnetdev to locate”h]”hŒnetdev to locate”…”�”}”(hjC’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``enum rdma_driver_id driver_id`` The driver ID that must match (RDMA_DRIVER_UNKNOWN matches all) ”h]”(j)�”}”(hŒ!``enum rdma_driver_id driver_id``”h]”j )�”}”(hjc’h]”hŒenum rdma_driver_id driver_id”…”�”}”(hje’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MØ hj]’ubj)�”}”(hhh]”hÝ)�”}”(hŒ?The driver ID that must match (RDMA_DRIVER_UNKNOWN matches all)”h]”hŒ?The driver ID that must match (RDMA_DRIVER_UNKNOWN matches all)”…”�”}”(hj|’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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’ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjž’h]”hŒ Description”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjœ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÚ hj’ubhÝ)�”}”(hŒ•Find and hold an ib_device that is associated with a netdev via ib_device_set_netdev(). The caller must call ib_device_put() on the returned pointer.”h]”hŒ•Find and hold an ib_device that is associated with a netdev via ib_device_set_netdev(). The caller must call ib_device_put() on the returned pointer.”…”�”}”(hj´’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÙ hj’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_query_pkey (C function)”Œc.ib_query_pkey”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPint ib_query_pkey (struct ib_device *device, u32 port_num, u16 index, u16 *pkey)”h]”j")�”}”(hŒOint ib_query_pkey(struct ib_device *device, u32 port_num, u16 index, u16 *pkey)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjã’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjß’h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mi ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß’h²hh³jñ’h´Mi ubjš)�”}”(hŒ ib_query_pkey”h]”jN)�”}”(hŒ ib_query_pkey”h]”hŒ ib_query_pkey”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj“ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjß’h²hh³jñ’h´Mi ubj·)�”}”(hŒ>(struct ib_device *device, u32 port_num, u16 index, u16 *pkey)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj“ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-“h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj>“h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj;“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j@“Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj“sbŒc.ib_query_pkey”†”asbuh1hhj“ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^“h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjl“h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj“ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjy“h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“ubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj•“h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj’“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j—“Œmodname”NŒ classname”Njkjn)�”}”jq]”jZ“Œc.ib_query_pkey”†”asbuh1hhjŽ“ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³“h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŽ“ubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjÁ“h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŽ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“ubj½)�”}”(hŒ u16 index”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÝ“h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÚ“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jß“Œmodname”NŒ classname”Njkjn)�”}”jq]”jZ“Œc.ib_query_pkey”†”asbuh1hhjÖ“ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû“h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÖ“ubjN)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÖ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“ubj½)�”}”(hŒ u16 *pkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj%”h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj"”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j'”Œmodname”NŒ classname”Njkjn)�”}”jq]”jZ“Œc.ib_query_pkey”†”asbuh1hhj”ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj”ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjQ”h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj”ubjN)�”}”(hŒpkey”h]”hŒpkey”…”�”}”(hj^”h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjß’h²hh³jñ’h´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÛ’h²hh³jñ’h´Mi ubah}”(h]”jÖ’ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jñ’h´Mi hjØ’h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒGet P_Key table entry”h]”hŒGet P_Key table entry”…”�”}”(hjˆ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mi hj…”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjØ’h²hh³jñ’h´Mi ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj ”jÓj ”jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒþ**Parameters** ``struct ib_device *device`` Device to query ``u32 port_num`` Port number to query ``u16 index`` P_Key table index to query ``u16 *pkey`` Returned P_Key **Description** ib_query_pkey() fetches the specified P_Key table entry.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjª”h]”hŒ Parameters”…”�”}”(hj¬”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¨”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mm hj¤”ubjø)�”}”(hhh]”(jý)�”}”(hŒ-``struct ib_device *device`` Device to query ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjÉ”h]”hŒstruct ib_device *device”…”�”}”(hjË”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mj hjÔubj)�”}”(hhh]”hÝ)�”}”(hŒDevice to query”h]”hŒDevice to query”…”�”}”(hjâ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ&``u32 port_num`` Port number to query ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hj•h]”hŒ u32 port_num”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mk hjü”ubj)�”}”(hhh]”hÝ)�”}”(hŒPort number to query”h]”hŒPort number to query”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ)``u16 index`` P_Key table index to query ”h]”(j)�”}”(hŒ ``u16 index``”h]”j )�”}”(hj;•h]”hŒ u16 index”…”�”}”(hj=•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Ml hj5•ubj)�”}”(hhh]”hÝ)�”}”(hŒP_Key table index to query”h]”hŒP_Key table index to query”…”�”}”(hjT•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jP•h´Ml hjQ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jP•h´Ml hjÀ”ubjý)�”}”(hŒ``u16 *pkey`` Returned P_Key ”h]”(j)�”}”(hŒ ``u16 *pkey``”h]”j )�”}”(hjt•h]”hŒ u16 *pkey”…”�”}”(hjv•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjr•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mm hjn•ubj)�”}”(hhh]”hÝ)�”}”(hŒReturned P_Key”h]”hŒReturned P_Key”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‰•h´Mm hjŠ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‰•h´Mm hjÀ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¤”ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj¯•h]”hŒ Description”…”�”}”(hj±•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj­•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mo hj¤”ubhÝ)�”}”(hŒ8ib_query_pkey() fetches the specified P_Key table entry.”h]”hŒ8ib_query_pkey() fetches the specified P_Key table entry.”…”�”}”(hjÅ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mn hj¤”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_modify_device (C function)”Œc.ib_modify_device”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒoint ib_modify_device (struct ib_device *device, int device_modify_mask, struct ib_device_modify *device_modify)”h]”j")�”}”(hŒnint ib_modify_device(struct ib_device *device, int device_modify_mask, struct ib_device_modify *device_modify)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjô•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjð•h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjð•h²hh³j–h´M ubjš)�”}”(hŒib_modify_device”h]”jN)�”}”(hŒib_modify_device”h]”hŒib_modify_device”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj–ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjð•h²hh³j–h´M ubj·)�”}”(hŒZ(struct ib_device *device, int device_modify_mask, struct ib_device_modify *device_modify)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj1–h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj-–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>–h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj-–ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjO–h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjL–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jQ–Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj–sbŒc.ib_modify_device”†”asbuh1hhj-–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo–h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj-–ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj}–h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj-–ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjŠ–h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj-–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj)–ubj½)�”}”(hŒint device_modify_mask”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj£–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjŸ–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±–h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŸ–ubjN)�”}”(hŒdevice_modify_mask”h]”hŒdevice_modify_mask”…”�”}”(hj¿–h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŸ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj)–ubj½)�”}”(hŒ&struct ib_device_modify *device_modify”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjØ–h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÔ–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå–h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔ–ubh)�”}”(hhh]”jN)�”}”(hŒib_device_modify”h]”hŒib_device_modify”…”�”}”(hjö–h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjó–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jø–Œmodname”NŒ classname”Njkjn)�”}”jq]”jk–Œc.ib_modify_device”†”asbuh1hhjÔ–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔ–ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj"—h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÔ–ubjN)�”}”(hŒ device_modify”h]”hŒ device_modify”…”�”}”(hj/—h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÔ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj)–ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjð•h²hh³j–h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjì•h²hh³j–h´M ubah}”(h]”jç•ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j–h´M hjé•h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒChange IB device attributes”h]”hŒChange IB device attributes”…”�”}”(hjY—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hjV—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjé•h²hh³j–h´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjq—jÓjq—jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXL**Parameters** ``struct ib_device *device`` Device to modify ``int device_modify_mask`` Mask of attributes to change ``struct ib_device_modify *device_modify`` New attribute values **Description** ib_modify_device() changes a device's attributes as specified by the **device_modify_mask** and **device_modify** structure.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mƒ hju—ubjø)�”}”(hhh]”(jý)�”}”(hŒ.``struct ib_device *device`` Device to modify ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjš—h]”hŒstruct ib_device *device”…”�”}”(hjœ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M€ hj”—ubj)�”}”(hhh]”hÝ)�”}”(hŒDevice to modify”h]”hŒDevice to modify”…”�”}”(hj³—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 device_modify_mask`` Mask of attributes to change ”h]”(j)�”}”(hŒ``int device_modify_mask``”h]”j )�”}”(hjÓ—h]”hŒint device_modify_mask”…”�”}”(hjÕ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M� hjÍ—ubj)�”}”(hhh]”hÝ)�”}”(hŒMask of attributes to change”h]”hŒMask of attributes to change”…”�”}”(hjì—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ib_device_modify *device_modify`` New attribute values ”h]”(j)�”}”(hŒ*``struct ib_device_modify *device_modify``”h]”j )�”}”(hj ˜h]”hŒ&struct ib_device_modify *device_modify”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M‚ hj˜ubj)�”}”(hhh]”hÝ)�”}”(hŒNew attribute values”h]”hŒNew attribute values”…”�”}”(hj%˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hju—ubhÝ)�”}”(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&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M„ hju—ubhÝ)�”}”(hŒ|ib_modify_device() changes a device's attributes as specified by the **device_modify_mask** and **device_modify** structure.”h]”(hŒGib_modify_device() changes a device’s attributes as specified by the ”…”�”}”(hj]˜h²hh³Nh´Nubjâ)�”}”(hŒ**device_modify_mask**”h]”hŒdevice_modify_mask”…”�”}”(hje˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj]˜ubhŒ and ”…”�”}”(hj]˜h²hh³Nh´Nubjâ)�”}”(hŒ**device_modify**”h]”hŒ device_modify”…”�”}”(hjw˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj]˜ubhŒ structure.”…”�”}”(hj]˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mƒ hju—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_modify_port (C function)”Œc.ib_modify_port”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒuint ib_modify_port (struct ib_device *device, u32 port_num, int port_modify_mask, struct ib_port_modify *port_modify)”h]”j")�”}”(hŒtint ib_modify_port(struct ib_device *device, u32 port_num, int port_modify_mask, struct ib_port_modify *port_modify)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj°˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¬˜h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M” ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿˜h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬˜h²hh³j¾˜h´M” ubjš)�”}”(hŒib_modify_port”h]”jN)�”}”(hŒib_modify_port”h]”hŒib_modify_port”…”�”}”(hjјh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj͘ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¬˜h²hh³j¾˜h´M” ubj·)�”}”(hŒb(struct ib_device *device, u32 port_num, int port_modify_mask, struct ib_port_modify *port_modify)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjí˜h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjé˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú˜h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjé˜ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j ™Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÓ˜sbŒc.ib_modify_port”†”asbuh1hhjé˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjé˜ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj9™h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjé˜ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjF™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjé˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjå˜ubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjb™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj_™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jd™Œmodname”NŒ classname”Njkjn)�”}”jq]”j'™Œc.ib_modify_port”†”asbuh1hhj[™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[™ubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjŽ™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj[™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjå˜ubj½)�”}”(hŒint port_modify_mask”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj§™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj£™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj£™ubjN)�”}”(hŒport_modify_mask”h]”hŒport_modify_mask”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj£™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjå˜ubj½)�”}”(hŒ"struct ib_port_modify *port_modify”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÜ™h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjØ™ubj:)�”}”(•hŒ ”h]”hŒ ”…”�”}”(hjé™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ™ubh)�”}”(hhh]”jN)�”}”(hŒib_port_modify”h]”hŒib_port_modify”…”�”}”(hjú™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj÷™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jü™Œmodname”NŒ classname”Njkjn)�”}”jq]”j'™Œc.ib_modify_port”†”asbuh1hhjØ™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ™ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj&šh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjØ™ubjN)�”}”(hŒ port_modify”h]”hŒ port_modify”…”�”}”(hj3šh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjå˜ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¬˜h²hh³j¾˜h´M” ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¨˜h²hh³j¾˜h´M” ubah}”(h]”j£˜ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¾˜h´M” hj¥˜h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ/Modifies the attributes for the specified port.”h]”hŒ/Modifies the attributes for the specified port.”…”�”}”(hj]šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M” hjZšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¥˜h²hh³j¾˜h´M” ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjušjÓjušjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX©**Parameters** ``struct ib_device *device`` The device to modify. ``u32 port_num`` The number of the port to modify. ``int port_modify_mask`` Mask used to specify which attributes of the port to change. ``struct ib_port_modify *port_modify`` New attribute values for the port. **Description** ib_modify_port() changes a port's attributes as specified by the **port_modify_mask** and **port_modify** structure.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjšh]”hŒ Parameters”…”�”}”(hj�šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj}šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M˜ hjyšubjø)�”}”(hhh]”(jý)�”}”(hŒ3``struct ib_device *device`` The device to modify. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjžšh]”hŒstruct ib_device *device”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœšubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M• hj˜šubj)�”}”(hhh]”hÝ)�”}”(hŒThe device to modify.”h]”hŒThe device to modify.”…”�”}”(hj·šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``u32 port_num`` The number of the port to modify. ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjךh]”hŒ u32 port_num”…”�”}”(hjÙšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕšubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M– hjÑšubj)�”}”(hhh]”hÝ)�”}”(hŒ!The number of the port to modify.”h]”hŒ!The number of the port to modify.”…”�”}”(hjðšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``int port_modify_mask`` Mask used to specify which attributes of the port to change. ”h]”(j)�”}”(hŒ``int port_modify_mask``”h]”j )�”}”(hj›h]”hŒint port_modify_mask”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M˜ hj ›ubj)�”}”(hhh]”hÝ)�”}”(hŒ(struct ib_device *device, u32 port_num, u16 pkey, u16 *index)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjKŸh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjGŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXŸh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGŸubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjiŸh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjfŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jkŸŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj1ŸsbŒc.ib_find_pkey”†”asbuh1hhjGŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGŸubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj—Ÿh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjGŸubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¤Ÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjGŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjCŸubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÀŸh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj½Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŸŒmodname”NŒ classname”Njkjn)�”}”jq]”j…ŸŒc.ib_find_pkey”†”asbuh1hhj¹Ÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞŸh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¹ŸubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjìŸh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¹Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjCŸubj½)�”}”(hŒu16 pkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j  Œmodname”NŒ classname”Njkjn)�”}”jq]”j…ŸŒc.ib_find_pkey”†”asbuh1hhj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubjN)�”}”(hŒpkey”h]”hŒpkey”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjCŸubj½)�”}”(hŒ u16 *index”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjM ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jR Œmodname”NŒ classname”Njkjn)�”}”jq]”j…ŸŒc.ib_find_pkey”†”asbuh1hhjI ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjI ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjI ubjN)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjI ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjCŸubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj Ÿh²hh³jŸh´MÝ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjŸh²hh³jŸh´MÝ ubah}”(h]”jŸah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jŸh´MÝ hjŸh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒAReturns the PKey table index where a specified PKey value occurs.”h]”hŒAReturns the PKey table index where a specified PKey value occurs.”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´MÝ hj° h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjŸh²hh³jŸh´MÝ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjË jÓjË jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_device *device`` The device to query. ``u32 port_num`` The port number of the device to search for the PKey. ``u16 pkey`` The PKey value to search for. ``u16 *index`` The index into the PKey table where the PKey was found.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÕ h]”hŒ Parameters”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Má hjÏ ubjø)�”}”(hhh]”(jý)�”}”(hŒ2``struct ib_device *device`` The device to query. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjô h]”hŒstruct ib_device *device”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mß hjî ubj)�”}”(hhh]”hÝ)�”}”(hŒThe device to query.”h]”hŒThe device to query.”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``u32 port_num`` The port number of the device to search for the PKey. ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hj-¡h]”hŒ u32 port_num”…”�”}”(hj/¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mà hj'¡ubj)�”}”(hhh]”hÝ)�”}”(hŒ5The port number of the device to search for the PKey.”h]”hŒ5The port number of the device to search for the PKey.”…”�”}”(hjF¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ+``u16 pkey`` The PKey value to search for. ”h]”(j)�”}”(hŒ ``u16 pkey``”h]”j )�”}”(hjf¡h]”hŒu16 pkey”…”�”}”(hjh¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Má hj`¡ubj)�”}”(hhh]”hÝ)�”}”(hŒThe PKey value to search for.”h]”hŒThe PKey value to search for.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``u16 *index`` The index into the PKey table where the PKey was found.”h]”(j)�”}”(hŒ``u16 *index``”h]”j )�”}”(hjŸ¡h]”hŒ u16 *index”…”�”}”(hj¡¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´Mã hj™¡ubj)�”}”(hhh]”hÝ)�”}”(hŒ7The index into the PKey table where the PKey was found.”h]”hŒ7The index into the PKey table where the PKey was found.”…”�”}”(hj¸¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/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×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%ib_get_net_dev_by_params (C function)”Œc.ib_get_net_dev_by_params”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŽstruct net_device * ib_get_net_dev_by_params (struct ib_device *dev, u32 port, u16 pkey, const union ib_gid *gid, const struct sockaddr *addr)”h]”j")�”}”(hŒŒstruct net_device *ib_get_net_dev_by_params(struct ib_device *dev, u32 port, u16 pkey, const union ib_gid *gid, const struct sockaddr *addr)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjù¡h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjõ¡h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõ¡h²hh³j¢h´M ubh)�”}”(hhh]”jN)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¢Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_get_net_dev_by_params”sbŒc.ib_get_net_dev_by_params”†”asbuh1hhjõ¡h²hh³j¢h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõ¡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 ubjš)�”}”(hŒib_get_net_dev_by_params”h]”jN)�”}”(hj6¢h]”hŒib_get_net_dev_by_params”…”�”}”(hjX¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjT¢ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjõ¡h²hh³j¢h´M ubj·)�”}”(hŒa(struct ib_device *dev, u32 port, u16 pkey, const union ib_gid *gid, const struct sockaddr *addr)”h]”(j½)�”}”(hŒstruct ib_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjs¢h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjo¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjo¢ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj‘¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŽ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j“¢Œmodname”NŒ classname”Njkjn)�”}”jq]”j4¢Œc.ib_get_net_dev_by_params”†”asbuh1hhjo¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjo¢ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj½¢h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjo¢ubjN)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÊ¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjo¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjk¢ubj½)�”}”(hŒu32 port”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjæ¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjã¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j袌modname”NŒ classname”Njkjn)�”}”jq]”j4¢Œc.ib_get_net_dev_by_params”†”asbuh1hhjߢubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjߢubjN)�”}”(hŒport”h]”hŒport”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjߢubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjk¢ubj½)�”}”(hŒu16 pkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj.£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj+£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j0£Œmodname”NŒ classname”Njkjn)�”}”jq]”j4¢Œc.ib_get_net_dev_by_params”†”asbuh1hhj'£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'£ubjN)�”}”(hŒpkey”h]”hŒpkey”…”�”}”(hjZ£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj'£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjk¢ubj½)�”}”(hŒconst union ib_gid *gid”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjs£h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjo£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjo£ubj()�”}”(hjŸœh]”hŒunion”…”�”}”(hjŽ£h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjo£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjo£ubh)�”}”(hhh]”jN)�”}”(hŒib_gid”h]”hŒib_gid”…”�”}”(hj¬£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj©£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j®£Œmodname”NŒ classname”Njkjn)�”}”jq]”j4¢Œc.ib_get_net_dev_by_params”†”asbuh1hhjo£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjo£ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjØ£h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjo£ubjN)�”}”(hŒgid”h]”hŒgid”…”�”}”(hjå£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjo£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjk¢ubj½)�”}”(hŒconst struct sockaddr *addr”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjþ£h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjú£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjú£ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjú£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjú£ubh)�”}”(hhh]”jN)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hj7¤h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj4¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j9¤Œmodname”NŒ classname”Njkjn)�”}”jq]”j4¢Œc.ib_get_net_dev_by_params”†”asbuh1hhjú£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjú£ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjc¤h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjú£ubjN)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjp¤h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjú£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjk¢ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjõ¡h²hh³j¢h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjñ¡h²hh³j¢h´M ubah}”(h]”jì¡ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¢h´M hjî¡h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ8Return the appropriate net_dev for a received CM request”h]”hŒ8Return the appropriate net_dev for a received CM request”…”�”}”(hjš¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj—¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjî¡h²hh³j¢h´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj²¤jÓj²¤jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXw**Parameters** ``struct ib_device *dev`` An RDMA device on which the request has been received. ``u32 port`` Port number on the RDMA device. ``u16 pkey`` The Pkey the request came on. ``const union ib_gid *gid`` A GID that the net_dev uses to communicate. ``const struct sockaddr *addr`` Contains the IP address that the request specified as its destination.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¼¤h]”hŒ Parameters”…”�”}”(hj¾¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjº¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj¶¤ubjø)�”}”(hhh]”(jý)�”}”(hŒQ``struct ib_device *dev`` An RDMA device on which the request has been received. ”h]”(j)�”}”(hŒ``struct ib_device *dev``”h]”j )�”}”(hjÛ¤h]”hŒstruct ib_device *dev”…”�”}”(hjݤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hjÕ¤ubj)�”}”(hhh]”hÝ)�”}”(hŒ6An RDMA device on which the request has been received.”h]”hŒ6An RDMA device on which the request has been received.”…”�”}”(hjô¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 port`` Port number on the RDMA device. ”h]”(j)�”}”(hŒ ``u32 port``”h]”j )�”}”(hj¥h]”hŒu32 port”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj¥ubj)�”}”(hhh]”hÝ)�”}”(hŒPort number on the RDMA device.”h]”hŒPort number on the RDMA device.”…”�”}”(hj-¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 pkey`` The Pkey the request came on. ”h]”(j)�”}”(hŒ ``u16 pkey``”h]”j )�”}”(hjM¥h]”hŒu16 pkey”…”�”}”(hjO¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hjG¥ubj)�”}”(hhh]”hÝ)�”}”(hŒThe Pkey the request came on.”h]”hŒThe Pkey the request came on.”…”�”}”(hjf¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒH``const union ib_gid *gid`` A GID that the net_dev uses to communicate. ”h]”(j)�”}”(hŒ``const union ib_gid *gid``”h]”j )�”}”(hj†¥h]”hŒconst union ib_gid *gid”…”�”}”(hjˆ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj€¥ubj)�”}”(hhh]”hÝ)�”}”(hŒ+A GID that the net_dev uses to communicate.”h]”hŒ+A GID that the net_dev uses to communicate.”…”�”}”(hjŸ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``const struct sockaddr *addr`` Contains the IP address that the request specified as its destination.”h]”(j)�”}”(hŒ``const struct sockaddr *addr``”h]”j )�”}”(hj¿¥h]”hŒconst struct sockaddr *addr”…”�”}”(hjÁ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:25: ./drivers/infiniband/core/device.c”h´M hj¹¥ubj)�”}”(hhh]”hÝ)�”}”(hŒFContains the IP address that the request specified as its destination.”h]”hŒFContains the IP address that the request specified as its destination.”…”�”}”(hjØ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ__ib_alloc_pd (C function)”Œc.__ib_alloc_pd”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ_struct ib_pd * __ib_alloc_pd (struct ib_device *device, unsigned int flags, const char *caller)”h]”j")�”}”(hŒ]struct ib_pd *__ib_alloc_pd(struct ib_device *device, unsigned int flags, const char *caller)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¦h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&¦h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦h²hh³j%¦h´M4ubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hj7¦h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj4¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j9¦Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒ __ib_alloc_pd”sbŒc.__ib_alloc_pd”†”asbuh1hhj¦h²hh³j%¦h´M4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX¦h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦h²hh³j%¦h´M4ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjf¦h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¦h²hh³j%¦h´M4ubjš)�”}”(hŒ __ib_alloc_pd”h]”jN)�”}”(hjU¦h]”hŒ __ib_alloc_pd”…”�”}”(hjw¦h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjs¦ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¦h²hh³j%¦h´M4ubj·)�”}”(hŒB(struct ib_device *device, unsigned int flags, const char *caller)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj’¦h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjަubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¦h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjަubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj°¦h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj­¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j²¦Œmodname”NŒ classname”Njkjn)�”}”jq]”jS¦Œc.__ib_alloc_pd”†”asbuh1hhjަubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΦh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjަubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjܦh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjަubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjé¦h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjަubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjЦubj½)�”}”(hŒunsigned int flags”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjþ¦ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjþ¦ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjþ¦ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjþ¦ubjN)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj:§h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjþ¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjЦubj½)�”}”(hŒconst char *caller”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjS§h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjO§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjO§ubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjn§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjO§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjO§ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjЧh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjO§ubjN)�”}”(hŒcaller”h]”hŒcaller”…”�”}”(hj—§h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjO§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjЦubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¦h²hh³j%¦h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¦h²hh³j%¦h´M4ubah}”(h]”j ¦ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j%¦h´M4hj ¦h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ&Allocates an unused protection domain.”h]”hŒ&Allocates an unused protection domain.”…”�”}”(hjÁ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M4hj¾§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj ¦h²hh³j%¦h´M4ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÙ§jÓjÙ§jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXÏ**Parameters** ``struct ib_device *device`` The device on which to allocate the protection domain. ``unsigned int flags`` protection domain flags ``const char *caller`` caller's build-time module name **Description** A protection domain object provides an association between QPs, shared receive queues, address handles, memory regions, and memory windows. Every PD has a local_dma_lkey which can be used as the lkey value for local memory operations.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjã§h]”hŒ Parameters”…”�”}”(hjå§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjá§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M8hjݧubjø)�”}”(hhh]”(jý)�”}”(hŒT``struct ib_device *device`` The device on which to allocate the protection domain. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj¨h]”hŒstruct ib_device *device”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M5hjü§ubj)�”}”(hhh]”hÝ)�”}”(hŒ6The device on which to allocate the protection domain.”h]”hŒ6The device on which to allocate the protection domain.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¨h´M5hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¨h´M5hjù§ubjý)�”}”(hŒ/``unsigned int flags`` protection domain 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&]”uh1jhj9¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M6hj5¨ubj)�”}”(hhh]”hÝ)�”}”(hŒprotection domain flags”h]”hŒprotection domain flags”…”�”}”(hjT¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jP¨h´M6hjQ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jP¨h´M6hjù§ubjý)�”}”(hŒ7``const char *caller`` caller's build-time module name ”h]”(j)�”}”(hŒ``const char *caller``”h]”j )�”}”(hjt¨h]”hŒconst char *caller”…”�”}”(hjv¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjr¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M7hjn¨ubj)�”}”(hhh]”hÝ)�”}”(hŒcaller's build-time module name”h]”hŒ!caller’s build-time module name”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‰¨h´M7hjЍubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‰¨h´M7hjù§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjݧubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj¯¨h]”hŒ Description”…”�”}”(hj±¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj­¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M9hjݧubhÝ)�”}”(hŒ‹A protection domain object provides an association between QPs, shared receive queues, address handles, memory regions, and memory windows.”h]”hŒ‹A protection domain object provides an association between QPs, shared receive queues, address handles, memory regions, and memory windows.”…”�”}”(hjŨh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M8hjݧubhÝ)�”}”(hŒ^Every PD has a local_dma_lkey which can be used as the lkey value for local memory operations.”h]”hŒ^Every PD has a local_dma_lkey which can be used as the lkey value for local memory operations.”…”�”}”(hjÔ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M;hjݧubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_dealloc_pd_user (C function)”Œc.ib_dealloc_pd_user”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAint ib_dealloc_pd_user (struct ib_pd *pd, struct ib_udata *udata)”h]”j")�”}”(hŒ@int ib_dealloc_pd_user(struct ib_pd *pd, struct ib_udata *udata)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÿ¨h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿ¨h²hh³j©h´Mubjš)�”}”(hŒib_dealloc_pd_user”h]”jN)�”}”(hŒib_dealloc_pd_user”h]”hŒib_dealloc_pd_user”…”�”}”(hj$©h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ©ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÿ¨h²hh³j©h´Mubj·)�”}”(hŒ*(struct ib_pd *pd, struct ib_udata *udata)”h]”(j½)�”}”(hŒstruct ib_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj@©h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj<©ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj<©ubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hj^©h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj[©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j`©Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj&©sbŒc.ib_dealloc_pd_user”†”asbuh1hhj<©ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj<©ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjŒ©h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj<©ubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hj™©h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj<©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj8©ubj½)�”}”(hŒstruct ib_udata *udata”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj²©h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj®©ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj®©ubh)�”}”(hhh]”jN)�”}”(hŒib_udata”h]”hŒib_udata”…”�”}”(hjЩh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÍ©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÒ©Œmodname”NŒ classname”Njkjn)�”}”jq]”jz©Œc.ib_dealloc_pd_user”†”asbuh1hhj®©ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj®©ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjü©h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj®©ubjN)�”}”(hŒudata”h]”hŒudata”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj®©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj8©ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÿ¨h²hh³j©h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjû¨h²hh³j©h´Mubah}”(h]”jö¨ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j©h´Mhjø¨h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ Deallocates a protection domain.”h]”hŒ Deallocates a protection domain.”…”�”}”(hj3ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mhj0ªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjø¨h²hh³j©h´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjKªjÓjKªjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX\**Parameters** ``struct ib_pd *pd`` The protection domain to deallocate. ``struct ib_udata *udata`` Valid user data or NULL for kernel object **Description** It is an error to call this function while any resources in the pd still exist. The caller is responsible to synchronously destroy them and guarantee no new allocations will happen.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MƒhjOªubjø)�”}”(hhh]”(jý)�”}”(hŒ:``struct ib_pd *pd`` The protection domain to deallocate. ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hjtªh]”hŒstruct ib_pd *pd”…”�”}”(hjvªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrªubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M€hjnªubj)�”}”(hhh]”hÝ)�”}”(hŒ$The protection domain to deallocate.”h]”hŒ$The protection domain to deallocate.”…”�”}”(hj�ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‰ªh´M€hjŠªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‰ªh´M€hjkªubjý)�”}”(hŒE``struct ib_udata *udata`` Valid user data or NULL for kernel object ”h]”(j)�”}”(hŒ``struct ib_udata *udata``”h]”j )�”}”(hj­ªh]”hŒstruct ib_udata *udata”…”�”}”(hj¯ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M�hj§ªubj)�”}”(hhh]”hÝ)�”}”(hŒ)Valid user data or NULL for kernel object”h]”hŒ)Valid user data or NULL for kernel object”…”�”}”(hjƪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjOªubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjèªh]”hŒ Description”…”�”}”(hjêªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjæªubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MƒhjOªubhÝ)�”}”(hŒ¶It is an error to call this function while any resources in the pd still exist. The caller is responsible to synchronously destroy them and guarantee no new allocations will happen.”h]”hŒ¶It is an error to call this function while any resources in the pd still exist. The caller is responsible to synchronously destroy them and guarantee no new allocations will happen.”…”�”}”(hjþªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M‚hjOªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_copy_ah_attr (C function)”Œc.rdma_copy_ah_attr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒRvoid rdma_copy_ah_attr (struct rdma_ah_attr *dest, const struct rdma_ah_attr *src)”h]”j")�”}”(hŒQvoid rdma_copy_ah_attr(struct rdma_ah_attr *dest, const struct rdma_ah_attr *src)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj)«h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)«h²hh³j;«h´M¡ubjš)�”}”(hŒrdma_copy_ah_attr”h]”jN)�”}”(hŒrdma_copy_ah_attr”h]”hŒrdma_copy_ah_attr”…”�”}”(hjN«h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjJ«ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj)«h²hh³j;«h´M¡ubj·)�”}”(hŒ;(struct rdma_ah_attr *dest, const struct rdma_ah_attr *src)”h]”(j½)�”}”(hŒstruct rdma_ah_attr *dest”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjj«h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjf«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjf«ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hjˆ«h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj…«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŠ«Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjP«sbŒc.rdma_copy_ah_attr”†”asbuh1hhjf«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjf«ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¶«h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjf«ubjN)�”}”(hŒdest”h]”hŒdest”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjf«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjb«ubj½)�”}”(hŒconst struct rdma_ah_attr *src”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjÜ«h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjØ«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ«ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj÷«h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjØ«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ«ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¬Œmodname”NŒ classname”Njkjn)�”}”jq]”j¤«Œc.rdma_copy_ah_attr”†”asbuh1hhjØ«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ«ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjA¬h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjØ«ubjN)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjN¬h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjb«ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj)«h²hh³j;«h´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj%«h²hh³j;«h´M¡ubah}”(h]”j «ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j;«h´M¡hj"«h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ2Copy rdma ah attribute from source to destination.”h]”hŒ2Copy rdma ah attribute from source to destination.”…”�”}”(hjx¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¡hju¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj"«h²hh³j;«h´M¡ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj�¬jÓj�¬jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒî**Parameters** ``struct rdma_ah_attr *dest`` Pointer to destination ah_attr. Contents of the destination pointer is assumed to be invalid and attribute are overwritten. ``const struct rdma_ah_attr *src`` Pointer to source ah_attr.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjš¬h]”hŒ Parameters”…”�”}”(hjœ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj˜¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¥hj”¬ubjø)�”}”(hhh]”(jý)�”}”(hŒš``struct rdma_ah_attr *dest`` Pointer to destination ah_attr. Contents of the destination pointer is assumed to be invalid and attribute are overwritten. ”h]”(j)�”}”(hŒ``struct rdma_ah_attr *dest``”h]”j )�”}”(hj¹¬h]”hŒstruct rdma_ah_attr *dest”…”�”}”(hj»¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M£hj³¬ubj)�”}”(hhh]”hÝ)�”}”(hŒ{Pointer to destination ah_attr. Contents of the destination pointer is assumed to be invalid and attribute are overwritten.”h]”hŒ{Pointer to destination ah_attr. Contents of the destination pointer is assumed to be invalid and attribute are overwritten.”…”�”}”(hjÒ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.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Œ=``const struct rdma_ah_attr *src`` Pointer to source ah_attr.”h]”(j)�”}”(hŒ"``const struct rdma_ah_attr *src``”h]”j )�”}”(hjó¬h]”hŒconst struct rdma_ah_attr *src”…”�”}”(hjõ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¥hjí¬ubj)�”}”(hhh]”hÝ)�”}”(hŒPointer to source ah_attr.”h]”hŒPointer to source ah_attr.”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.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×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!rdma_replace_ah_attr (C function)”Œc.rdma_replace_ah_attr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒTvoid rdma_replace_ah_attr (struct rdma_ah_attr *old, const struct rdma_ah_attr *new)”h]”j")�”}”(hŒSvoid rdma_replace_ah_attr(struct rdma_ah_attr *old, const struct rdma_ah_attr *new)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjM­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjI­h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\­h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjI­h²hh³j[­h´M°ubjš)�”}”(hŒrdma_replace_ah_attr”h]”jN)�”}”(hŒrdma_replace_ah_attr”h]”hŒrdma_replace_ah_attr”…”�”}”(hjn­h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjj­ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjI­h²hh³j[­h´M°ubj·)�”}”(hŒ:(struct rdma_ah_attr *old, const struct rdma_ah_attr *new)”h]”(j½)�”}”(hŒstruct rdma_ah_attr *old”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŠ­h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj†­ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—­h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†­ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hj¨­h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¥­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jª­Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjp­sbŒc.rdma_replace_ah_attr”†”asbuh1hhj†­ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ­h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†­ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÖ­h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj†­ubjN)�”}”(hŒold”h]”hŒold”…”�”}”(hjã­h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj†­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‚­ubj½)�”}”(hŒconst struct rdma_ah_attr *new”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjü­h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjø­ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjø­ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjø­ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjø­ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hj5®h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj2®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j7®Œmodname”NŒ classname”Njkjn)�”}”jq]”jÄ­Œc.rdma_replace_ah_attr”†”asbuh1hhjø­ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjø­ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hja®h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjø­ubjN)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjn®h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjø­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‚­ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjI­h²hh³j[­h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjE­h²hh³j[­h´M°ubah}”(h]”j@­ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j[­h´M°hjB­h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ#Replace valid ah_attr with new one.”h]”hŒ#Replace valid ah_attr with new one.”…”�”}”(hj˜®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M°hj•®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjB­h²hh³j[­h´M°ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj°®jÓj°®jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX�**Parameters** ``struct rdma_ah_attr *old`` Pointer to existing ah_attr which needs to be replaced. old is assumed to be valid or zero'd ``const struct rdma_ah_attr *new`` Pointer to the new ah_attr. **Description** rdma_replace_ah_attr() first releases any reference in the old ah_attr if old the ah_attr is valid; after that it copies the new attribute and holds the reference to the replaced ah_attr.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjº®h]”hŒ Parameters”…”�”}”(hj¼®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¸®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M´hj´®ubjø)�”}”(hhh]”(jý)�”}”(hŒz``struct rdma_ah_attr *old`` Pointer to existing ah_attr which needs to be replaced. old is assumed to be valid or zero'd ”h]”(j)�”}”(hŒ``struct rdma_ah_attr *old``”h]”j )�”}”(hjÙ®h]”hŒstruct rdma_ah_attr *old”…”�”}”(hjÛ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M²hjÓ®ubj)�”}”(hhh]”hÝ)�”}”(hŒ\Pointer to existing ah_attr which needs to be replaced. old is assumed to be valid or zero'd”h]”hŒ^Pointer to existing ah_attr which needs to be replaced. old is assumed to be valid or zero’d”…”�”}”(hjò®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.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Œ?``const struct rdma_ah_attr *new`` Pointer to the new ah_attr. ”h]”(j)�”}”(hŒ"``const struct rdma_ah_attr *new``”h]”j )�”}”(hj¯h]”hŒconst struct rdma_ah_attr *new”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M³hj ¯ubj)�”}”(hhh]”hÝ)�”}”(hŒPointer to the new ah_attr.”h]”hŒPointer to the new ah_attr.”…”�”}”(hj,¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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´®ubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mµhj´®ubhÝ)�”}”(hŒ»rdma_replace_ah_attr() first releases any reference in the old ah_attr if old the ah_attr is valid; after that it copies the new attribute and holds the reference to the replaced ah_attr.”h]”hŒ»rdma_replace_ah_attr() first releases any reference in the old ah_attr if old the ah_attr is valid; after that it copies the new attribute and holds the reference to the replaced ah_attr.”…”�”}”(hjd¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M´hj´®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_move_ah_attr (C function)”Œc.rdma_move_ah_attr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLvoid rdma_move_ah_attr (struct rdma_ah_attr *dest, struct rdma_ah_attr *src)”h]”j")�”}”(hŒKvoid rdma_move_ah_attr(struct rdma_ah_attr *dest, struct rdma_ah_attr *src)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj“¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj�¯h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÄubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�¯h²hh³j¡¯h´MÄubjš)�”}”(hŒrdma_move_ah_attr”h]”jN)�”}”(hŒrdma_move_ah_attr”h]”hŒrdma_move_ah_attr”…”�”}”(hj´¯h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj°¯ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj�¯h²hh³j¡¯h´MÄubj·)�”}”(hŒ5(struct rdma_ah_attr *dest, struct rdma_ah_attr *src)”h]”(j½)�”}”(hŒstruct rdma_ah_attr *dest”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjЯh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj̯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjݯh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj̯ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hjî¯h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjë¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jð¯Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¶¯sbŒc.rdma_move_ah_attr”†”asbuh1hhj̯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj̯ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj̯ubjN)�”}”(hŒdest”h]”hŒdest”…”�”}”(hj)°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj̯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjȯub•j½)�”}”(hŒstruct rdma_ah_attr *src”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjB°h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj>°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO°h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>°ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hj`°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj]°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jb°Œmodname”NŒ classname”Njkjn)�”}”jq]”j °Œc.rdma_move_ah_attr”†”asbuh1hhj>°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~°h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>°ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjŒ°h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj>°ubjN)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj™°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjȯubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj�¯h²hh³j¡¯h´MÄubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj‹¯h²hh³j¡¯h´MÄubah}”(h]”j†¯ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¡¯h´MÄhjˆ¯h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ.Move ah_attr pointed by source to destination.”h]”hŒ.Move ah_attr pointed by source to destination.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÄhjÀ°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjˆ¯h²hh³j¡¯h´MÄubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÛ°jÓjÛ°jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXÄ**Parameters** ``struct rdma_ah_attr *dest`` Pointer to destination ah_attr to copy to. dest is assumed to be valid or zero'd ``struct rdma_ah_attr *src`` Pointer to the new ah_attr. **Description** rdma_move_ah_attr() first releases any reference in the destination ah_attr if it is valid. This also transfers ownership of internal references from src to dest, making src invalid in the process. No new reference of the src ah_attr is taken.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjå°h]”hŒ Parameters”…”�”}”(hjç°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjã°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÈhjß°ubjø)�”}”(hhh]”(jý)�”}”(hŒo``struct rdma_ah_attr *dest`` Pointer to destination ah_attr to copy to. dest is assumed to be valid or zero'd ”h]”(j)�”}”(hŒ``struct rdma_ah_attr *dest``”h]”j )�”}”(hj±h]”hŒstruct rdma_ah_attr *dest”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÆhjþ°ubj)�”}”(hhh]”hÝ)�”}”(hŒPPointer to destination ah_attr to copy to. dest is assumed to be valid or zero'd”h]”hŒRPointer to destination ah_attr to copy to. dest is assumed to be valid or zero’d”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.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Œ9``struct rdma_ah_attr *src`` Pointer to the new ah_attr. ”h]”(j)�”}”(hŒ``struct rdma_ah_attr *src``”h]”j )�”}”(hj>±h]”hŒstruct rdma_ah_attr *src”…”�”}”(hj@±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÇhj8±ubj)�”}”(hhh]”hÝ)�”}”(hŒPointer to the new ah_attr.”h]”hŒPointer to the new ah_attr.”…”�”}”(hjW±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jS±h´MÇhjT±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jS±h´MÇhjû°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjß°ubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÉhjß°ubhÝ)�”}”(hŒórdma_move_ah_attr() first releases any reference in the destination ah_attr if it is valid. This also transfers ownership of internal references from src to dest, making src invalid in the process. No new reference of the src ah_attr is taken.”h]”hŒórdma_move_ah_attr() first releases any reference in the destination ah_attr if it is valid. This also transfers ownership of internal references from src to dest, making src invalid in the process. No new reference of the src ah_attr is taken.”…”�”}”(hj�±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÈhjß°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_create_ah (C function)”Œc.rdma_create_ah”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYstruct ib_ah * rdma_create_ah (struct ib_pd *pd, struct rdma_ah_attr *ah_attr, u32 flags)”h]”j")�”}”(hŒWstruct ib_ah *rdma_create_ah(struct ib_pd *pd, struct rdma_ah_attr *ah_attr, u32 flags)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¾±h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjº±h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Maubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̱h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjº±h²hh³j˱h´Maubh)�”}”(hhh]”jN)�”}”(hŒib_ah”h]”hŒib_ah”…”�”}”(hjݱh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÚ±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jß±Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒrdma_create_ah”sbŒc.rdma_create_ah”†”asbuh1hhjº±h²hh³j˱h´Maubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ±h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjº±h²hh³j˱h´Maubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjº±h²hh³j˱h´Maubjš)�”}”(hŒrdma_create_ah”h]”jN)�”}”(hjû±h]”hŒrdma_create_ah”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj²ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjº±h²hh³j˱h´Maubj·)�”}”(hŒ;(struct ib_pd *pd, struct rdma_ah_attr *ah_attr, u32 flags)”h]”(j½)�”}”(hŒstruct ib_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj8²h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj4²ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE²h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4²ubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hjV²h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjS²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jX²Œmodname”NŒ classname”Njkjn)�”}”jq]”jù±Œc.rdma_create_ah”†”asbuh1hhj4²ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt²h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4²ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‚²h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj4²ubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj4²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj0²ubj½)�”}”(hŒstruct rdma_ah_attr *ah_attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¨²h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¤²ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ²h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤²ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hjƲh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jȲŒmodname”NŒ classname”Njkjn)�”}”jq]”jù±Œc.rdma_create_ah”†”asbuh1hhj¤²ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä²h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤²ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjò²h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¤²ubjN)�”}”(hŒah_attr”h]”hŒah_attr”…”�”}”(hjÿ²h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¤²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj0²ubj½)�”}”(hŒ u32 flags”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j³Œmodname”NŒ classname”Njkjn)�”}”jq]”jù±Œc.rdma_create_ah”†”asbuh1hhj³ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9³h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³ubjN)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjG³h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj0²ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjº±h²hh³j˱h´Maubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¶±h²hh³j˱h´Maubah}”(h]”j±±ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j˱h´Mahj³±h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ7Creates an address handle for the given address vector.”h]”hŒ7Creates an address handle for the given address vector.”…”�”}”(hjq³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mahjn³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj³±h²hh³j˱h´Maubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‰³jÓj‰³jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX®**Parameters** ``struct ib_pd *pd`` The protection domain associated with the address handle. ``struct rdma_ah_attr *ah_attr`` The attributes of the address vector. ``u32 flags`` Create address handle flags (see enum rdma_create_ah_flags). **Description** It returns 0 on success and returns appropriate error code on error. The address handle is used to reference a local or global destination in all UD QP post sends.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj“³h]”hŒ Parameters”…”�”}”(hj•³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj‘³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mehj�³ubjø)�”}”(hhh]”(jý)�”}”(hŒO``struct ib_pd *pd`` The protection domain associated with the address handle. ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hj²³h]”hŒstruct ib_pd *pd”…”�”}”(hj´³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mchj¬³ubj)�”}”(hhh]”hÝ)�”}”(hŒ9The protection domain associated with the address handle.”h]”hŒ9The protection domain associated with the address handle.”…”�”}”(hj˳h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jdzh´Mchjȳubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jdzh´Mchj©³ubjý)�”}”(hŒG``struct rdma_ah_attr *ah_attr`` The attributes of the address vector. ”h]”(j)�”}”(hŒ ``struct rdma_ah_attr *ah_attr``”h]”j )�”}”(hjë³h]”hŒstruct rdma_ah_attr *ah_attr”…”�”}”(hjí³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mdhjå³ubj)�”}”(hhh]”hÝ)�”}”(hŒ%The attributes of the address vector.”h]”hŒ%The attributes of the address vector.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j´h´Mdhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j´h´Mdhj©³ubjý)�”}”(hŒK``u32 flags`` Create address handle flags (see enum rdma_create_ah_flags). ”h]”(j)�”}”(hŒ ``u32 flags``”h]”j )�”}”(hj$´h]”hŒ u32 flags”…”�”}”(hj&´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mehj´ubj)�”}”(hhh]”hÝ)�”}”(hŒµŒmodname”NŒ classname”Njkjn)�”}”jq]”jß´Œc.rdma_create_user_ah”†”asbuh1hhjµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZµh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjhµh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjµubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hjuµh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjµubj½)�”}”(hŒstruct rdma_ah_attr *ah_attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj޵h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjеubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›µh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjеubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hj¬µh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj©µubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j®µŒmodname”NŒ classname”Njkjn)�”}”jq]”jß´Œc.rdma_create_user_ah”†”asbuh1hhjеubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʵh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjеubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjصh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjеubjN)�”}”(hŒah_attr”h]”hŒah_attr”…”�”}”(hjåµh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjеubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjµubj½)�”}”(hŒstruct ib_udata *udata”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjþµh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjúµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjúµubh)�”}”(hhh]”jN)�”}”(hŒib_udata”h]”hŒib_udata”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¶Œmodname”NŒ classname”Njkjn)�”}”jq]”jß´Œc.rdma_create_user_ah”†”asbuh1hhjúµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:¶h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjúµubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjH¶h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjúµubjN)�”}”(hŒudata”h]”hŒudata”…”�”}”(hjU¶h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjúµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjµubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj ´h²hh³j±´h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjœ´h²hh³j±´h´M…ubah}”(h]”j—´ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j±´h´M…hj™´h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒzCreates an address handle for the given address vector. It resolves destination mac address for ah attribute of RoCE type.”h]”hŒzCreates an address handle for the given address vector. It resolves destination mac address for ah attribute of RoCE type.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M…hj|¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj™´h²hh³j±´h´M…ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj—¶jÓj—¶jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXË**Parameters** ``struct ib_pd *pd`` The protection domain associated with the address handle. ``struct rdma_ah_attr *ah_attr`` The attributes of the address vector. ``struct ib_udata *udata`` pointer to user's input output buffer information need by provider driver. **Description** It returns 0 on success and returns appropriate error code on error. The address handle is used to reference a local or global destination in all UD QP post sends.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¡¶h]”hŒ Parameters”…”�”}”(hj£¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjŸ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M‰hj›¶ubjø)�”}”(hhh]”(jý)�”}”(hŒO``struct ib_pd *pd`` The protection domain associated with the address handle. ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hjÀ¶h]”hŒstruct ib_pd *pd”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mˆhjº¶ubj)�”}”(hhh]”hÝ)�”}”(hŒ9The protection domain associated with the address handle.”h]”hŒ9The protection domain associated with the address handle.”…”�”}”(hjÙ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 rdma_ah_attr *ah_attr`` The attributes of the address vector. ”h]”(j)�”}”(hŒ ``struct rdma_ah_attr *ah_attr``”h]”j )�”}”(hjù¶h]”hŒstruct rdma_ah_attr *ah_attr”…”�”}”(hjû¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M‰hjó¶ubj)�”}”(hhh]”hÝ)�”}”(hŒ%The attributes of the address vector.”h]”hŒ%The attributes of the address vector.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ib_udata *udata`` pointer to user's input output buffer information need by provider driver. ”h]”(j)�”}”(hŒ``struct ib_udata *udata``”h]”j )�”}”(hj2·h]”hŒstruct ib_udata *udata”…”�”}”(hj4·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M‹hj,·ubj)�”}”(hhh]”hÝ)�”}”(hŒJpointer to user's input output buffer information need by provider driver.”h]”hŒLpointer to user’s input output buffer information need by provider driver.”…”�”}”(hjK·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MŠhjH·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jG·h´M‹hj·¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj›¶ubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M�hj›¶ubhÝ)�”}”(hŒ£It returns 0 on success and returns appropriate error code on error. The address handle is used to reference a local or global destination in all UD QP post sends.”h]”hŒ£It returns 0 on success and returns appropriate error code on error. The address handle is used to reference a local or global destination in all UD QP post sends.”…”�”}”(hj„·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MŒhj›¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$rdma_move_grh_sgid_attr (C function)”Œc.rdma_move_grh_sgid_attr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ¡void rdma_move_grh_sgid_attr (struct rdma_ah_attr *attr, union ib_gid *dgid, u32 flow_label, u8 hop_limit, u8 traffic_class, const struct ib_gid_attr *sgid_attr)”h]”j")�”}”(hŒ void rdma_move_grh_sgid_attr(struct rdma_ah_attr *attr, union ib_gid *dgid, u32 flow_label, u8 hop_limit, u8 traffic_class, const struct ib_gid_attr *sgid_attr)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¯·h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mªubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯·h²hh³jÁ·h´Mªubjš)�”}”(hŒrdma_move_grh_sgid_attr”h]”jN)�”}”(hŒrdma_move_grh_sgid_attr”h]”hŒrdma_move_grh_sgid_attr”…”�”}”(hjÔ·h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjзubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¯·h²hh³jÁ·h´Mªubj·)�”}”(hŒ„(struct rdma_ah_attr *attr, union ib_gid *dgid, u32 flow_label, u8 hop_limit, u8 traffic_class, const struct ib_gid_attr *sgid_attr)”h]”(j½)�”}”(hŒstruct rdma_ah_attr *attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjð·h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjì·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjì·ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¸Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÖ·sbŒc.rdma_move_grh_sgid_attr”†”asbuh1hhjì·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjì·ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj<¸h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjì·ubjN)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjI¸h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjì·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjè·ubj½)�”}”(hŒunion ib_gid *dgid”h]”(j()�”}”(hjŸœh]”hŒunion”…”�”}”(hjb¸h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj^¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^¸ubh)�”}”(hhh]”jN)�”}”(hŒib_gid”h]”hŒib_gid”…”�”}”(hj€¸h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj}¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j‚¸Œmodname”NŒ classname”Njkjn)�”}”jq]”j*¸Œc.rdma_move_grh_sgid_attr”†”asbuh1hhj^¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^¸ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¬¸h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj^¸ubjN)�”}”(hŒdgid”h]”hŒdgid”…”�”}”(hj¹¸h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjè·ubj½)�”}”(hŒu32 flow_label”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÕ¸h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÒ¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j׸Œmodname”NŒ classname”Njkjn)�”}”jq]”j*¸Œc.rdma_move_grh_sgid_attr”†”asbuh1hhjθubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjθubjN)�”}”(hŒ flow_label”h]”hŒ flow_label”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjθubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjè·ubj½)�”}”(hŒ u8 hop_limit”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¹Œmodname”NŒ classname”Njkjn)�”}”jq]”j*¸Œc.rdma_move_grh_sgid_attr”†”asbuh1hhj¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;¹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¹ubjN)�”}”(hŒ hop_limit”h]”hŒ hop_limit”…”�”}”(hjI¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjè·ubj½)�”}”(hŒu8 traffic_class”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hje¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjb¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jg¹Œmodname”NŒ classname”Njkjn)�”}”jq]”j*¸Œc.rdma_move_grh_sgid_attr”†”asbuh1hhj^¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^¹ubjN)�”}”(hŒ traffic_class”h]”hŒ traffic_class”…”�”}”(hj‘¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjè·ubj½)�”}”(hŒ#const struct ib_gid_attr *sgid_attr”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjª¹h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¦¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·¹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦¹ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjŹh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¦¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ¹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦¹ubh)�”}”(hhh]”jN)�”}”(hŒ ib_gid_attr”h]”hŒ ib_gid_attr”…”�”}”(hjã¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjà¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j幌modname”NŒ classname”Njkjn)�”}”jq]”j*¸Œc.rdma_move_grh_sgid_attr”†”asbuh1hhj¦¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦¹ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¦¹ubjN)�”}”(hŒ sgid_attr”h]”hŒ sgid_attr”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¦¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjè·ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¯·h²hh³jÁ·h´Mªubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj«·h²hh³jÁ·h´Mªubah}”(h]”j¦·ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÁ·h´Mªhj¨·h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒASets the sgid attribute of GRH, taking ownership of the reference”h]”hŒASets the sgid attribute of GRH, taking ownership of the reference”…”�”}”(hjFºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MªhjCºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¨·h²hh³jÁ·h´Mªubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj^ºjÓj^ºjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXà**Parameters** ``struct rdma_ah_attr *attr`` Pointer to AH attribute structure ``union ib_gid *dgid`` Destination GID ``u32 flow_label`` Flow label ``u8 hop_limit`` Hop limit ``u8 traffic_class`` traffic class ``const struct ib_gid_attr *sgid_attr`` Pointer to SGID attribute **Description** This takes ownership of the sgid_attr reference. The caller must ensure rdma_destroy_ah_attr() is called before destroying the rdma_ah_attr after calling this function.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M®hjbºubjø)�”}”(hhh]”(jý)�”}”(hŒ@``struct rdma_ah_attr *attr`` Pointer to AH attribute structure ”h]”(j)�”}”(hŒ``struct rdma_ah_attr *attr``”h]”j )�”}”(hj‡ºh]”hŒstruct rdma_ah_attr *attr”…”�”}”(hj‰ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M­hj�ºubj)�”}”(hhh]”hÝ)�”}”(hŒ!Pointer to AH attribute structure”h]”hŒ!Pointer to AH attribute structure”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ'``union ib_gid *dgid`` Destination GID ”h]”(j)�”}”(hŒ``union ib_gid *dgid``”h]”j )�”}”(hjÀºh]”hŒunion ib_gid *dgid”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M®hjººubj)�”}”(hhh]”hÝ)�”}”(hŒDestination GID”h]”hŒDestination GID”…”�”}”(hjÙºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 flow_label`` Flow label ”h]”(j)�”}”(hŒ``u32 flow_label``”h]”j )�”}”(hjùºh]”hŒu32 flow_label”…”�”}”(hjûºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¯hjóºubj)�”}”(hhh]”hÝ)�”}”(hŒ Flow label”h]”hŒ Flow label”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 hop_limit`` Hop limit ”h]”(j)�”}”(hŒ``u8 hop_limit``”h]”j )�”}”(hj2»h]”hŒ u8 hop_limit”…”�”}”(hj4»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M°hj,»ubj)�”}”(hhh]”hÝ)�”}”(hŒ Hop limit”h]”hŒ Hop limit”…”�”}”(hjK»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ#``u8 traffic_class`` traffic class ”h]”(j)�”}”(hŒ``u8 traffic_class``”h]”j )�”}”(hjk»h]”hŒu8 traffic_class”…”�”}”(hjm»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M±hje»ubj)�”}”(hhh]”hÝ)�”}”(hŒ traffic class”h]”hŒ traffic class”…”�”}”(hj„»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒB``const struct ib_gid_attr *sgid_attr`` Pointer to SGID attribute ”h]”(j)�”}”(hŒ'``const struct ib_gid_attr *sgid_attr``”h]”j )�”}”(hj¤»h]”hŒ#const struct ib_gid_attr *sgid_attr”…”�”}”(hj¦»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M²hjž»ubj)�”}”(hhh]”hÝ)�”}”(hŒPointer to SGID attribute”h]”hŒPointer to SGID attribute”…”�”}”(hj½»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjbºubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjß»h]”hŒ Description”…”�”}”(hjá»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÝ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M´hjbºubhÝ)�”}”(hŒ¨This takes ownership of the sgid_attr reference. The caller must ensure rdma_destroy_ah_attr() is called before destroying the rdma_ah_attr after calling this function.”h]”hŒ¨This takes ownership of the sgid_attr reference. The caller must ensure rdma_destroy_ah_attr() is called before destroying the rdma_ah_attr after calling this function.”…”�”}”(hjõ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M³hjbºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!rdma_destroy_ah_attr (C function)”Œc.rdma_destroy_ah_attr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8void rdma_destroy_ah_attr (struct rdma_ah_attr *ah_attr)”h]”j")�”}”(hŒ7void rdma_destroy_ah_attr(struct rdma_ah_attr *ah_attr)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj ¼h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÃubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ¼h²hh³j2¼h´MÃubjš)�”}”(hŒrdma_destroy_ah_attr”h]”jN)�”}”(hŒrdma_destroy_ah_attr”h]”hŒrdma_destroy_ah_attr”…”�”}”(hjE¼h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjA¼ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj ¼h²hh³j2¼h´MÃubj·)�”}”(hŒ(struct rdma_ah_attr *ah_attr)”h]”j½)�”}”(hŒstruct rdma_ah_attr *ah_attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hja¼h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj]¼ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj]¼ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj|¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�¼Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjG¼sbŒc.rdma_destroy_ah_attr”†”asbuh1hhj]¼ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj]¼ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj­¼h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj]¼ubjN)�”}”(hŒah_attr”h]”hŒah_attr”…”�”}”(hjº¼h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj]¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjY¼ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj ¼h²hh³j2¼h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¼h²hh³j2¼h´MÃubah}”(h]”j¼ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j2¼h´MÃhj¼h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ4Release reference to SGID attribute of ah attribute.”h]”hŒ4Release reference to SGID attribute of ah attribute.”…”�”}”(hjä¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÃhjá¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¼h²hh³j2¼h´MÃubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjü¼jÓjü¼jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct rdma_ah_attr *ah_attr`` Pointer to ah attribute **Description** Release reference to the SGID attribute of the ah attribute if it is non NULL. It is safe to call this multiple times, and safe to call it on a zero initialized ah_attr.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÇhj½ubjø)�”}”(hhh]”jý)�”}”(hŒ9``struct rdma_ah_attr *ah_attr`` Pointer to ah attribute ”h]”(j)�”}”(hŒ ``struct rdma_ah_attr *ah_attr``”h]”j )�”}”(hj%½h]”hŒstruct rdma_ah_attr *ah_attr”…”�”}”(hj'½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÅhj½ubj)�”}”(hhh]”hÝ)�”}”(hŒPointer to ah attribute”h]”hŒPointer to ah attribute”…”�”}”(hj>½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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½ubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÇhj½ubhÝ)�”}”(hŒ©Release reference to the SGID attribute of the ah attribute if it is non NULL. It is safe to call this multiple times, and safe to call it on a zero initialized ah_attr.”h]”hŒ©Release reference to the SGID attribute of the ah attribute if it is non NULL. It is safe to call this multiple times, and safe to call it on a zero initialized ah_attr.”…”�”}”(hjv½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÆhj½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_create_srq_user (C function)”Œc.ib_create_srq_user”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ•struct ib_srq * ib_create_srq_user (struct ib_pd *pd, struct ib_srq_init_attr *srq_init_attr, struct ib_usrq_object *uobject, struct ib_udata *udata)”h]”j")�”}”(hŒ“struct ib_srq *ib_create_srq_user(struct ib_pd *pd, struct ib_srq_init_attr *srq_init_attr, struct ib_usrq_object *uobject, struct ib_udata *udata)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¥½h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¡½h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡½h²hh³j²½h´M ubh)�”}”(hhh]”jN)�”}”(hŒib_srq”h]”hŒib_srq”…”�”}”(hjĽh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÁ½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jƽŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_create_srq_user”sbŒc.ib_create_srq_user”†”asbuh1hhj¡½h²hh³j²½h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡½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 ubjš)�”}”(hŒib_create_srq_user”h]”jN)�”}”(hjâ½h]”hŒib_create_srq_user”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¾ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¡½h²hh³j²½h´M ubj·)�”}”(hŒr(struct ib_pd *pd, struct ib_srq_init_attr *srq_init_attr, struct ib_usrq_object *uobject, struct ib_udata *udata)”h]”(j½)�”}”(hŒstruct ib_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾ubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hj=¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j?¾Œmodname”NŒ classname”Njkjn)�”}”jq]”jཌc.ib_create_srq_user”†”asbuh1hhj¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hji¾h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¾ubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hjv¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¾ubj½)�”}”(hŒ&struct ib_srq_init_attr *srq_init_attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�¾h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‹¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‹¾ubh)�”}”(hhh]”jN)�”}”(hŒib_srq_init_attr”h]”hŒib_srq_init_attr”…”�”}”(hj­¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjª¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¯¾Œmodname”NŒ classname”Njkjn)�”}”jq]”jཌc.ib_create_srq_user”†”asbuh1hhj‹¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‹¾ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÙ¾h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‹¾ubjN)�”}”(hŒ srq_init_attr”h]”hŒ srq_init_attr”…”�”}”(hjæ¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‹¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¾ubj½)�”}”(hŒstruct ib_usrq_object *uobject”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÿ¾h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjû¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjû¾ubh)�”}”(hhh]”jN)�”}”(hŒib_usrq_object”h]”hŒib_usrq_object”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¿Œmodname”NŒ classname”Njkjn)�”}”jq]”jཌc.ib_create_srq_user”†”asbuh1hhjû¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjû¾ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjI¿h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjû¾ubjN)�”}”(hŒuobject”h]”hŒuobject”…”�”}”(hjV¿h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjû¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¾ubj½)�”}”(hŒstruct ib_udata *udata”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjo¿h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjk¿ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjk¿ubh)�”}”(hhh]”jN)�”}”(hŒib_udata”h]”hŒib_udata”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŠ¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�¿Œmodname”NŒ classname”Njkjn)�”}”jq]”jཌc.ib_create_srq_user”†”asbuh1hhjk¿ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjk¿ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¹¿h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjk¿ubjN)�”}”(hŒudata”h]”hŒudata”…”�”}”(hjÆ¿h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjk¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¡½h²hh³j²½h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj�½h²hh³j²½h´M ubah}”(h]”j˜½ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j²½h´M hjš½h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ>Creates a SRQ associated with the specified protection domain.”h]”hŒ>Creates a SRQ associated with the specified protection domain.”…”�”}”(hjð¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjí¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjš½h²hh³j²½h´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÀjÓjÀjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXÕ**Parameters** ``struct ib_pd *pd`` The protection domain associated with the SRQ. ``struct ib_srq_init_attr *srq_init_attr`` A list of initial attributes required to create the SRQ. If SRQ creation succeeds, then the attributes are updated to the actual capabilities of the created SRQ. ``struct ib_usrq_object *uobject`` uobject pointer if this is not a kernel SRQ ``struct ib_udata *udata`` udata pointer if this is not a kernel SRQ **Description** srq_attr->max_wr and srq_attr->max_sge are read the determine the requested size of the SRQ, and set to the actual values allocated on return. If ib_create_srq() succeeds, then max_wr and max_sge will always be at least as large as the requested values.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÀh]”hŒ Parameters”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M$hj Àubjø)�”}”(hhh]”(jý)�”}”(hŒD``struct ib_pd *pd`` The protection domain associated with the SRQ. ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hj1Àh]”hŒstruct ib_pd *pd”…”�”}”(hj3Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M"hj+Àubj)�”}”(hhh]”hÝ)�”}”(hŒ.The protection domain associated with the SRQ.”h]”hŒ.The protection domain associated with the SRQ.”…”�”}”(hjJÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒÎ``struct ib_srq_init_attr *srq_init_attr`` A list of initial attributes required to create the SRQ. If SRQ creation succeeds, then the attributes are updated to the actual capabilities of the created SRQ. ”h]”(j)�”}”(hŒ*``struct ib_srq_init_attr *srq_init_attr``”h]”j )�”}”(hjjÀh]”hŒ&struct ib_srq_init_attr *srq_init_attr”…”�”}”(hjlÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M%hjdÀubj)�”}”(hhh]”hÝ)�”}”(hŒ¢A list of initial attributes required to create the SRQ. If SRQ creation succeeds, then the attributes are updated to the actual capabilities of the created SRQ.”h]”hŒ¢A list of initial attributes required to create the SRQ. If SRQ creation succeeds, then the attributes are updated to the actual capabilities of the created SRQ.”…”�”}”(hjƒÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M#hj€Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÀh´M%hj(Àubjý)�”}”(hŒO``struct ib_usrq_object *uobject`` uobject pointer if this is not a kernel SRQ ”h]”(j)�”}”(hŒ"``struct ib_usrq_object *uobject``”h]”j )�”}”(hj¤Àh]”hŒstruct ib_usrq_object *uobject”…”�”}”(hj¦Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M&hjžÀubj)�”}”(hhh]”hÝ)�”}”(hŒ+uobject pointer if this is not a kernel SRQ”h]”hŒ+uobject pointer if this is not a kernel SRQ”…”�”}”(hj½Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``struct ib_udata *udata`` udata pointer if this is not a kernel SRQ ”h]”(j)�”}”(hŒ``struct ib_udata *udata``”h]”j )�”}”(hjÝÀh]”hŒstruct ib_udata *udata”…”�”}”(hjßÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M'hj×Àubj)�”}”(hhh]”hÝ)�”}”(hŒ)udata pointer if this is not a kernel SRQ”h]”hŒ)udata pointer if this is not a kernel SRQ”…”�”}”(hjöÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ÀubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjÁh]”hŒ Description”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M)hj ÀubhÝ)�”}”(hŒþsrq_attr->max_wr and srq_attr->max_sge are read the determine the requested size of the SRQ, and set to the actual values allocated on return. If ib_create_srq() succeeds, then max_wr and max_sge will always be at least as large as the requested values.”h]”hŒþsrq_attr->max_wr and srq_attr->max_sge are read the determine the requested size of the SRQ, and set to the actual values allocated on return. If ib_create_srq() succeeds, then max_wr and max_sge will always be at least as large as the requested values.”…”�”}”(hj.Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M(hj Àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_create_qp_user (C function)”Œc.ib_create_qp_user”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ»struct ib_qp * ib_create_qp_user (struct ib_device *dev, struct ib_pd *pd, struct ib_qp_init_attr *attr, struct uverbs_attr_bundle *uattrs, struct ib_uqp_object *uobj, const char *caller)”h]”j")�”}”(hŒ¹struct ib_qp *ib_create_qp_user(struct ib_device *dev, struct ib_pd *pd, struct ib_qp_init_attr *attr, struct uverbs_attr_bundle *uattrs, struct ib_uqp_object *uobj, const char *caller)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj]Áh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjYÁh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MAubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjYÁh²hh³jjÁh´MAubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hj|Áh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjyÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j~ÁŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_create_qp_user”sbŒc.ib_create_qp_user”†”asbuh1hhjYÁh²hh³jjÁh´MAubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjYÁh²hh³jjÁh´MAubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj«Áh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjYÁh²hh³jjÁh´MAubjš)�”}”(hŒib_create_qp_user”h]”jN)�”}”(hjšÁh]”hŒib_create_qp_user”…”�”}”(hj¼Áh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¸Áubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjYÁh²hh³jjÁh´MAubj·)�”}”(hŒš(struct ib_device *dev, struct ib_pd *pd, struct ib_qp_init_attr *attr, struct uverbs_attr_bundle *uattrs, struct ib_uqp_object *uobj, const char *caller)”h]”(j½)�”}”(hŒstruct ib_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj×Áh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÓÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÓÁubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjõÁh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjòÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j÷ÁŒmodname”NŒ classname”Njkjn)�”}”jq]”j˜ÁŒc.ib_create_qp_user”†”asbuh1hhjÓÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÓÁubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj!Âh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÓÁubjN)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj.Âh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÓÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÏÁubj½)�”}”(hŒstruct ib_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjGÂh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjCÂubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCÂubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hjeÂh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jgÂŒmodname”NŒ classname”Njkjn)�”}”jq]”j˜ÁŒc.ib_create_qp_user”†”asbuh1hhjCÂubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCÂubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‘Âh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjCÂubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hjžÂh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjCÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÏÁubj½)�”}”(hŒstruct ib_qp_init_attr *attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj·Âh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj³Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³Âubh)�”}”(hhh]”jN)�”}”(hŒib_qp_init_attr”h]”hŒib_qp_init_attr”…”�”}”(hjÕÂh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÒÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j×ÂŒmodname”NŒ classname”Njkjn)�”}”jq]”j˜ÁŒc.ib_create_qp_user”†”asbuh1hhj³Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³Âubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj³ÂubjN)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÏÁubj½)�”}”(hŒ!struct uverbs_attr_bundle *uattrs”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj'Ãh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj#Ãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Ãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#Ãubh)�”}”(hhh]”jN)�”}”(hŒuverbs_attr_bundle”h]”hŒuverbs_attr_bundle”…”�”}”(hjEÃh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjBÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jGÃŒmodname”NŒ classname”Njkjn)�”}”jq]”j˜ÁŒc.ib_create_qp_user”†”asbuh1hhj#Ãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#Ãubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjqÃh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj#ÃubjN)�”}”(hŒuattrs”h]”hŒuattrs”…”�”}”(hj~Ãh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÏÁubj½)�”}”(hŒstruct ib_uqp_object *uobj”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj—Ãh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj“Ãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Ãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“Ãubh)�”}”(hhh]”jN)�”}”(hŒ ib_uqp_object”h]”hŒ ib_uqp_object”…”�”}”(hjµÃh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj²Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j·ÃŒmodname”NŒ classname”Njkjn)�”}”jq]”j˜ÁŒc.ib_create_qp_user”†”asbuh1hhj“Ãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“Ãubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjáÃh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj“ÃubjN)�”}”(hŒuobj”h]”hŒuobj”…”�”}”(hjîÃh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj“Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÏÁubj½)�”}”(hŒconst char *caller”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÄubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj"Äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÄubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj>Äh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÄubjN)�”}”(hŒcaller”h]”hŒcaller”…”�”}”(hjKÄh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÏÁubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjYÁh²hh³jjÁh´MAubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjUÁh²hh³jjÁh´MAubah}”(h]”jPÁah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jjÁh´MAhjRÁh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ=Creates a QP associated with the specified protection domain.”h]”hŒ=Creates a QP associated with the specified protection domain.”…”�”}”(hjuÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MAhjrÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjRÁh²hh³jjÁh´MAubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj�ÄjÓj�ÄjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXõ**Parameters** ``struct ib_device *dev`` IB device ``struct ib_pd *pd`` The protection domain associated with the QP. ``struct ib_qp_init_attr *attr`` A list of initial attributes required to create the QP. If QP creation succeeds, then the attributes are updated to the actual capabilities of the created QP. ``struct uverbs_attr_bundle *uattrs`` User ioctl attributes and udata ``struct ib_uqp_object *uobj`` uverbs obect ``const char *caller`` caller's build-time module name”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj—Äh]”hŒ Parameters”…”�”}”(hj™Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj•Äubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MEhj‘Äubjø)�”}”(hhh]”(jý)�”}”(hŒ$``struct ib_device *dev`` IB device ”h]”(j)�”}”(hŒ``struct ib_device *dev``”h]”j )�”}”(hj¶Äh]”hŒstruct ib_device *dev”…”�”}”(hj¸Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MChj°Äubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device”h]”hŒ IB device”…”�”}”(hjÏÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jËÄh´MChjÌÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jËÄh´MChj­Äubjý)�”}”(hŒC``struct ib_pd *pd`` The protection domain associated with the QP. ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hjïÄh]”hŒstruct ib_pd *pd”…”�”}”(hjñÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MDhjéÄubj)�”}”(hhh]”hÝ)�”}”(hŒ-The protection domain associated with the QP.”h]”hŒ-The protection domain associated with the QP.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÅh´MDhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÅh´MDhj­Äubjý)�”}”(hŒÁ``struct ib_qp_init_attr *attr`` A list of initial attributes required to create the QP. If QP creation succeeds, then the attributes are updated to the actual capabilities of the created QP. ”h]”(j)�”}”(hŒ ``struct ib_qp_init_attr *attr``”h]”j )�”}”(hj(Åh]”hŒstruct ib_qp_init_attr *attr”…”�”}”(hj*Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MGhj"Åubj)�”}”(hhh]”hÝ)�”}”(hŒŸA list of initial attributes required to create the QP. If QP creation succeeds, then the attributes are updated to the actual capabilities of the created QP.”h]”hŒŸA list of initial attributes required to create the QP. If QP creation succeeds, then the attributes are updated to the actual capabilities of the created QP.”…”�”}”(hjAÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MEhj>Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j=Åh´MGhj­Äubjý)�”}”(hŒF``struct uverbs_attr_bundle *uattrs`` User ioctl attributes and udata ”h]”(j)�”}”(hŒ%``struct uverbs_attr_bundle *uattrs``”h]”j )�”}”(hjbÅh]”hŒ!struct uverbs_attr_bundle *uattrs”…”�”}”(hjdÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MHhj\Åubj)�”}”(hhh]”hÝ)�”}”(hŒUser ioctl attributes and udata”h]”hŒUser ioctl attributes and udata”…”�”}”(hj{Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jwÅh´MHhjxÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jwÅh´MHhj­Äubjý)�”}”(hŒ,``struct ib_uqp_object *uobj`` uverbs obect ”h]”(j)�”}”(hŒ``struct ib_uqp_object *uobj``”h]”j )�”}”(hj›Åh]”hŒstruct ib_uqp_object *uobj”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MIhj•Åubj)�”}”(hhh]”hÝ)�”}”(hŒ uverbs obect”h]”hŒ uverbs obect”…”�”}”(hj´Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j°Åh´MIhj±Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j°Åh´MIhj­Äubjý)�”}”(hŒ6``const char *caller`` caller's build-time module name”h]”(j)�”}”(hŒ``const char *caller``”h]”j )�”}”(hjÔÅh]”hŒconst char *caller”…”�”}”(hjÖÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j•fhjÒÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MKhjÎÅubj)�”}”(hhh]”hÝ)�”}”(hŒcaller's build-time module name”h]”hŒ!caller’s build-time module name”…”�”}”(hjíÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MJhjêÅ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‘Äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$ib_modify_qp_with_udata (C function)”Œc.ib_modify_qp_with_udata”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqint ib_modify_qp_with_udata (struct ib_qp *ib_qp, struct ib_qp_attr *attr, int attr_mask, struct ib_udata *udata)”h]”j")�”}”(hŒpint ib_modify_qp_with_udata(struct ib_qp *ib_qp, struct ib_qp_attr *attr, int attr_mask, struct ib_udata *udata)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj.Æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj*Æh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mšubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Æh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*Æh²hh³j<Æh´Mšubjš)�”}”(hŒib_modify_qp_with_udata”h]”jN)�”}”(hŒib_modify_qp_with_udata”h]”hŒib_modify_qp_with_udata”…”�”}”(hjOÆh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjKÆubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj*Æh²hh³j<Æh´Mšubj·)�”}”(hŒU(struct ib_qp *ib_qp, struct ib_qp_attr *attr, int attr_mask, struct ib_udata *udata)”h]”(j½)�”}”(hŒstruct ib_qp *ib_qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjkÆh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjgÆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxÆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjgÆubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hj‰Æh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj†Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j‹ÆŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjQÆsbŒc.ib_modify_qp_with_udata”†”asbuh1hhjgÆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Æh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjgÆubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj·Æh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjgÆubjN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjÄÆh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjgÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjcÆubj½)�”}”(hŒstruct ib_qp_attr *attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÝÆh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÙÆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêÆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÙÆubh)�”}”(hhh]”jN)�”}”(hŒ ib_qp_attr”h]”hŒ ib_qp_attr”…”�”}”(hjûÆh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjøÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jýÆŒmodname”NŒ classname”Njkjn)�”}”jq]”j¥ÆŒc.ib_modify_qp_with_udata”†”asbuh1hhjÙÆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÙÆubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj'Çh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÙÆubjN)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj4Çh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÙÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjcÆubj½)�”}”(hŒ int attr_mask”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjMÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjIÇubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Çh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIÇubjN)�”}”(hŒ attr_mask”h]”hŒ attr_mask”…”�”}”(hjiÇh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjIÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjcÆubj½)�”}”(hŒstruct ib_udata *udata”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‚Çh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj~Çubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Çh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~Çubh)�”}”(hhh]”jN)�”}”(hŒib_udata”h]”hŒib_udata”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¢ÇŒmodname”NŒ classname”Njkjn)�”}”jq]”j¥ÆŒc.ib_modify_qp_with_udata”†”asbuh1hhj~Çubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Çh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~Çubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÌÇh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj~ÇubjN)�”}”(hŒudata”h]”hŒudata”…”�”}”(hjÙÇh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj~Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjcÆubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj*Æh²hh³j<Æh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj&Æh²hh³j<Æh´Mšubah}”(h]”j!Æah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j<Æh´Mšhj#Æh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ-Modifies the attributes for the specified QP.”h]”hŒ-Modifies the attributes for the specified QP.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MšhjÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj#Æh²hh³j<Æh´Mšubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÈjÓjÈjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXâ**Parameters** ``struct ib_qp *ib_qp`` The QP to modify. ``struct ib_qp_attr *attr`` On input, specifies the QP attributes to modify. On output, the current values of selected QP attributes are returned. ``int attr_mask`` A bit-mask used to specify which attributes of the QP are being modified. ``struct ib_udata *udata`` pointer to user's input output buffer information are being modified. It returns 0 on success and returns appropriate error code on error.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj%Èh]”hŒ Parameters”…”�”}”(hj'Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj#Èubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MžhjÈubjø)�”}”(hhh]”(jý)�”}”(hŒ*``struct ib_qp *ib_qp`` The QP to modify. ”h]”(j)�”}”(hŒ``struct ib_qp *ib_qp``”h]”j )�”}”(hjDÈh]”hŒstruct ib_qp *ib_qp”…”�”}”(hjFÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M›hj>Èubj)�”}”(hhh]”hÝ)�”}”(hŒThe QP to modify.”h]”hŒThe QP to modify.”…”�”}”(hj]Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ”``struct ib_qp_attr *attr`` On input, specifies the QP attributes to modify. On output, the current values of selected QP attributes are returned. ”h]”(j)�”}”(hŒ``struct ib_qp_attr *attr``”h]”j )�”}”(hj}Èh]”hŒstruct ib_qp_attr *attr”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M�hjwÈubj)�”}”(hhh]”hÝ)�”}”(hŒwOn input, specifies the QP attributes to modify. On output, the current values of selected QP attributes are returned.”h]”hŒwOn input, specifies the QP attributes to modify. On output, the current values of selected QP attributes are returned.”…”�”}”(hj–Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”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 attr_mask`` A bit-mask used to specify which attributes of the QP are being modified. ”h]”(j)�”}”(hŒ``int attr_mask``”h]”j )�”}”(hj·Èh]”hŒ int attr_mask”…”�”}”(hj¹Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MŸhj±Èubj)�”}”(hhh]”hÝ)�”}”(hŒIA bit-mask used to specify which attributes of the QP are being modified.”h]”hŒIA bit-mask used to specify which attributes of the QP are being modified.”…”�”}”(hjÐÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.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Œ¥``struct ib_udata *udata`` pointer to user's input output buffer information are being modified. It returns 0 on success and returns appropriate error code on error.”h]”(j)�”}”(hŒ``struct ib_udata *udata``”h]”j )�”}”(hjñÈh]”hŒstruct ib_udata *udata”…”�”}”(hjóÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjïÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¡hjëÈubj)�”}”(hhh]”hÝ)�”}”(hŒŠpointer to user's input output buffer information are being modified. It returns 0 on success and returns appropriate error code on error.”h]”hŒŒpointer to user’s input output buffer information are being modified. It returns 0 on success and returns appropriate error code on error.”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.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×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_alloc_mr (C function)”Œ c.ib_alloc_mr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVstruct ib_mr * ib_alloc_mr (struct ib_pd *pd, enum ib_mr_type mr_type, u32 max_num_sg)”h]”j")�”}”(hŒTstruct ib_mr *ib_alloc_mr(struct ib_pd *pd, enum ib_mr_type mr_type, u32 max_num_sg)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjKÉh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjGÉh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M7 ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÉh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGÉh²hh³jXÉh´M7 ubh)�”}”(hhh]”jN)�”}”(hŒib_mr”h]”hŒib_mr”…”�”}”(hjjÉh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjgÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jlÉŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒ ib_alloc_mr”sbŒ c.ib_alloc_mr”†”asbuh1hhjGÉh²hh³jXÉh´M7 ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Éh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGÉh²hh³jXÉh´M7 ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj™Éh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjGÉh²hh³jXÉh´M7 ubjš)�”}”(hŒ ib_alloc_mr”h]”jN)�”}”(hjˆÉh]”hŒ ib_alloc_mr”…”�”}”(hjªÉh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¦Éubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjGÉh²hh³jXÉh´M7 ubj·)�”}”(hŒ;(struct ib_pd *pd, enum ib_mr_type mr_type, u32 max_num_sg)”h]”(j½)�”}”(hŒstruct ib_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÅÉh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÁÉubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒÉh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÁÉubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hjãÉh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjàÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jåÉŒmodname”NŒ classname”Njkjn)�”}”jq]”j†ÉŒ c.ib_alloc_mr”†”asbuh1hhjÁÉubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÁÉubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÁÉubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÁÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj½Éubj½)�”}”(hŒenum ib_mr_type mr_type”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj5Êh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj1Êubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÊh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1Êubh)�”}”(hhh]”jN)�”}”(hŒ ib_mr_type”h]”hŒ ib_mr_type”…”�”}”(hjSÊh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjPÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jUÊŒmodname”NŒ classname”Njkjn)�”}”jq]”j†ÉŒ c.ib_alloc_mr”†”asbuh1hhj1Êubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqÊh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1ÊubjN)�”}”(hŒmr_type”h]”hŒmr_type”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj1Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj½Éubj½)�”}”(hŒu32 max_num_sg”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj›Êh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜Êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�ÊŒmodname”NŒ classname”Njkjn)�”}”jq]”j†ÉŒ c.ib_alloc_mr”†”asbuh1hhj”Êubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Êh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj”ÊubjN)�”}”(hŒ max_num_sg”h]”hŒ max_num_sg”…”�”}”(hjÇÊh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj”Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj½Éubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjGÉh²hh³jXÉh´M7 ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjCÉh²hh³jXÉh´M7 ubah}”(h]”j>Éah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jXÉh´M7 hj@Éh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒAllocates a memory region”h]”hŒAllocates a memory region”…”�”}”(hjñÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M7 hjîÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj@Éh²hh³jXÉh´M7 ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj ËjÓj ËjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXq**Parameters** ``struct ib_pd *pd`` protection domain associated with the region ``enum ib_mr_type mr_type`` memory region type ``u32 max_num_sg`` maximum sg entries available for registration. **Notes** Memory registeration page/sg lists must not exceed max_num_sg. For mr_type IB_MR_TYPE_MEM_REG, the total length cannot exceed max_num_sg * used_page_size.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjËh]”hŒ Parameters”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M; hj Ëubjø)�”}”(hhh]”(jý)�”}”(hŒB``struct ib_pd *pd`` protection domain associated with the region ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hj2Ëh]”hŒstruct ib_pd *pd”…”�”}”(hj4Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M8 hj,Ëubj)�”}”(hhh]”hÝ)�”}”(hŒ,protection domain associated with the region”h]”hŒ,protection domain associated with the region”…”�”}”(hjKËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jGËh´M8 hjHËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jGËh´M8 hj)Ëubjý)�”}”(hŒ/``enum ib_mr_type mr_type`` memory region type ”h]”(j)�”}”(hŒ``enum ib_mr_type mr_type``”h]”j )�”}”(hjkËh]”hŒenum ib_mr_type mr_type”…”�”}”(hjmËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiËubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M9 hjeËubj)�”}”(hhh]”hÝ)�”}”(hŒmemory region type”h]”hŒmemory region type”…”�”}”(hj„Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j€Ëh´M9 hj�Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j€Ëh´M9 hj)Ëubjý)�”}”(hŒB``u32 max_num_sg`` maximum sg entries available for registration. ”h]”(j)�”}”(hŒ``u32 max_num_sg``”h]”j )�”}”(hj¤Ëh]”hŒu32 max_num_sg”…”�”}”(hj¦Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M: hjžËubj)�”}”(hhh]”hÝ)�”}”(hŒ.maximum sg entries available for registration.”h]”hŒ.maximum sg entries available for registration.”…”�”}”(hj½Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ËubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M< hj ËubhÝ)�”}”(hŒšMemory registeration page/sg lists must not exceed max_num_sg. For mr_type IB_MR_TYPE_MEM_REG, the total length cannot exceed max_num_sg * used_page_size.”h]”hŒšMemory registeration page/sg lists must not exceed max_num_sg. For mr_type IB_MR_TYPE_MEM_REG, the total length cannot exceed max_num_sg * used_page_size.”…”�”}”(hjõËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M< hj Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ib_alloc_mr_integrity (C function)”Œc.ib_alloc_mr_integrity”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒastruct ib_mr * ib_alloc_mr_integrity (struct ib_pd *pd, u32 max_num_data_sg, u32 max_num_meta_sg)”h]”j")�”}”(hŒ_struct ib_mr *ib_alloc_mr_integrity(struct ib_pd *pd, u32 max_num_data_sg, u32 max_num_meta_sg)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj$Ìh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Ìh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mi ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Ìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Ìh²hh³j1Ìh´Mi ubh)�”}”(hhh]”jN)�”}”(hŒib_mr”h]”hŒib_mr”…”�”}”(hjCÌh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj@Ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jEÌŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_alloc_mr_integrity”sbŒc.ib_alloc_mr_integrity”†”asbuh1hhj Ìh²hh³j1Ìh´Mi ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÌh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Ìh²hh³j1Ìh´Mi ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjrÌh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj Ìh²hh³j1Ìh´Mi ubjš)�”}”(hŒib_alloc_mr_integrity”h]”jN)�”}”(hjaÌh]”hŒib_alloc_mr_integrity”…”�”}”(hjƒÌh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÌubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj Ìh²hh³j1Ìh´Mi ubj·)�”}”(hŒ<(struct ib_pd *pd, u32 max_num_data_sg, u32 max_num_meta_sg)”h]”(j½)�”}”(hŒstruct ib_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjžÌh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjšÌubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Ìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjšÌubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hj¼Ìh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¹Ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¾ÌŒmodname”NŒ classname”Njkjn)�”}”jq]”j_ÌŒc.ib_alloc_mr_integrity”†”asbuh1hhjšÌubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÌh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjšÌubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjèÌh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjšÌubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hjõÌh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjšÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj–Ìubj½)�”}”(hŒu32 max_num_data_sg”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÍŒmodname”NŒ classname”Njkjn)�”}”jq]”j_ÌŒc.ib_alloc_mr_integrity”†”asbuh1hhj Íubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ÍubjN)�”}”(hŒmax_num_data_sg”h]”hŒmax_num_data_sg”…”�”}”(hj=Íh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj–Ìubj½)�”}”(hŒu32 max_num_meta_sg”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjYÍh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjVÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j[ÍŒmodname”NŒ classname”Njkjn)�”}”jq]”j_ÌŒc.ib_alloc_mr_integrity”†”asbuh1hhjRÍubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÍh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRÍubjN)�”}”(hŒmax_num_meta_sg”h]”hŒmax_num_meta_sg”…”�”}”(hj…Íh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjRÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj–Ìubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj Ìh²hh³j1Ìh´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÌh²hh³j1Ìh´Mi ubah}”(h]”jÌah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j1Ìh´Mi hjÌh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$Allocates an integrity memory region”h]”hŒ$Allocates an integrity memory region”…”�”}”(hj¯Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mi hj¬Íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÌh²hh³j1Ìh´Mi ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÇÍjÓjÇÍjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX�**Parameters** ``struct ib_pd *pd`` protection domain associated with the region ``u32 max_num_data_sg`` maximum data sg entries available for registration ``u32 max_num_meta_sg`` maximum metadata sg entries available for registration **Notes** Memory registration page/sg lists must not exceed max_num_sg, also the integrity page/sg lists must not exceed max_num_meta_sg.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÑÍh]”hŒ Parameters”…”�”}”(hjÓÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÏÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mm hjËÍubjø)�”}”(hhh]”(jý)�”}”(hŒB``struct ib_pd *pd`` protection domain associated with the region ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hjðÍh]”hŒstruct ib_pd *pd”…”�”}”(hjòÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mj hjêÍubj)�”}”(hhh]”hÝ)�”}”(hŒ,protection domain associated with the region”h]”hŒ,protection domain associated with the region”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒK``u32 max_num_data_sg`` maximum data sg entries available for registration ”h]”(j)�”}”(hŒ``u32 max_num_data_sg``”h]”j )�”}”(hj)Îh]”hŒu32 max_num_data_sg”…”�”}”(hj+Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mk hj#Îubj)�”}”(hhh]”hÝ)�”}”(hŒ2maximum data sg entries available for registration”h]”hŒ2maximum data sg entries available for registration”…”�”}”(hjBÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒO``u32 max_num_meta_sg`` maximum metadata sg entries available for registration ”h]”(j)�”}”(hŒ``u32 max_num_meta_sg``”h]”j )�”}”(hjbÎh]”hŒu32 max_num_meta_sg”…”�”}”(hjdÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mm hj\Îubj)�”}”(hhh]”hÝ)�”}”(hŒ6maximum metadata sg entries available for registration”h]”hŒ6maximum metadata sg entries available for registration”…”�”}”(hj{Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Ml hjxÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jwÎh´Mm hjçÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjËÍubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mo hjËÍubhÝ)�”}”(hŒMemory registration page/sg lists must not exceed max_num_sg, also the integrity page/sg lists must not exceed max_num_meta_sg.”h]”hŒMemory registration page/sg lists must not exceed max_num_sg, also the integrity page/sg lists must not exceed max_num_meta_sg.”…”�”}”(hj´Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mo hjËÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_alloc_xrcd_user (C function)”Œc.ib_alloc_xrcd_user”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒkstruct ib_xrcd * ib_alloc_xrcd_user (struct ib_device *device, struct inode *inode, struct ib_udata *udata)”h]”j")�”}”(hŒistruct ib_xrcd *ib_alloc_xrcd_user(struct ib_device *device, struct inode *inode, struct ib_udata *udata)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjãÎh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjßÎh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mò ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñÎh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßÎh²hh³jðÎh´Mò ubh)�”}”(hhh]”jN)�”}”(hŒib_xrcd”h]”hŒib_xrcd”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÏŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_alloc_xrcd_user”sbŒc.ib_alloc_xrcd_user”†”asbuh1hhjßÎh²hh³jðÎh´Mò ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Ïh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßÎh²hh³jðÎh´Mò ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj1Ïh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjßÎh²hh³jðÎh´Mò ubjš)�”}”(hŒib_alloc_xrcd_user”h]”jN)�”}”(hj Ïh]”hŒib_alloc_xrcd_user”…”�”}”(hjBÏh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>Ïubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjßÎh²hh³jðÎh´Mò ubj·)�”}”(hŒG(struct ib_device *device, struct inode *inode, struct ib_udata *udata)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj]Ïh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjYÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjÏh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjYÏubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj{Ïh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjxÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j}ÏŒmodname”NŒ classname”Njkjn)�”}”jq]”jÏŒc.ib_alloc_xrcd_user”†”asbuh1hhjYÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Ïh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjYÏubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj§Ïh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjYÏubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj´Ïh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjYÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUÏubj½)�”}”(hŒstruct inode *inode”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÍÏh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÉÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÏh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉÏubh)�”}”(hhh]”jN)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjëÏh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjèÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jíÏŒmodname”NŒ classname”Njkjn)�”}”jq]”jÏŒc.ib_alloc_xrcd_user”†”asbuh1hhjÉÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉÏubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÉÏubjN)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj$Ðh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÉÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUÏubj½)�”}”(hŒstruct ib_udata *udata”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj=Ðh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj9Ðubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJÐh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9Ðubh)�”}”(hhh]”jN)�”}”(hŒib_udata”h]”hŒib_udata”…”�”}”(hj[Ðh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjXÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j]ÐŒmodname”NŒ classname”Njkjn)�”}”jq]”jÏŒc.ib_alloc_xrcd_user”†”asbuh1hhj9Ðubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÐh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9Ðubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‡Ðh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj9ÐubjN)�”}”(hŒudata”h]”hŒudata”…”�”}”(hj”Ðh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUÏubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjßÎh²hh³jðÎh´Mò ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÛÎh²hh³jðÎh´Mò ubah}”(h]”jÖÎah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jðÎh´Mò hjØÎh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒAllocates an XRC domain.”h]”hŒAllocates an XRC domain.”…”�”}”(hj¾Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mò hj»Ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjØÎh²hh³jðÎh´Mò ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÖÐjÓjÖÐjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ×**Parameters** ``struct ib_device *device`` The device on which to allocate the XRC domain. ``struct inode *inode`` inode to connect XRCD ``struct ib_udata *udata`` Valid user data or NULL for kernel object”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjàÐh]”hŒ Parameters”…”�”}”(hjâÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÞÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mö hjÚÐubjø)�”}”(hhh]”(jý)�”}”(hŒM``struct ib_device *device`` The device on which to allocate the XRC domain. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjÿÐh]”hŒstruct ib_device *device”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mó hjùÐubj)�”}”(hhh]”hÝ)�”}”(hŒ/The device on which to allocate the XRC domain.”h]”hŒ/The device on which to allocate the XRC domain.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 inode *inode`` inode to connect XRCD ”h]”(j)�”}”(hŒ``struct inode *inode``”h]”j )�”}”(hj8Ñh]”hŒstruct inode *inode”…”�”}”(hj:Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mô hj2Ñubj)�”}”(hhh]”hÝ)�”}”(hŒinode to connect XRCD”h]”hŒinode to connect XRCD”…”�”}”(hjQÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒD``struct ib_udata *udata`` Valid user data or NULL for kernel object”h]”(j)�”}”(hŒ``struct ib_udata *udata``”h]”j )�”}”(hjqÑh]”hŒstruct ib_udata *udata”…”�”}”(hjsÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mö hjkÑubj)�”}”(hhh]”hÝ)�”}”(hŒ)Valid user data or NULL for kernel object”h]”hŒ)Valid user data or NULL for kernel object”…”�”}”(hjŠÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mõ hj‡Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkÑ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×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ib_dealloc_xrcd_user (C function)”Œc.ib_dealloc_xrcd_user”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGint ib_dealloc_xrcd_user (struct ib_xrcd *xrcd, struct ib_udata *udata)”h]”j")�”}”(hŒFint ib_dealloc_xrcd_user(struct ib_xrcd *xrcd, struct ib_udata *udata)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjËÑh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÇÑh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÑh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇÑh²hh³jÙÑh´M ubjš)�”}”(hŒib_dealloc_xrcd_user”h]”jN)�”}”(hŒib_dealloc_xrcd_user”h]”hŒib_dealloc_xrcd_user”…”�”}”(hjìÑh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjèÑubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÇÑh²hh³jÙÑh´M ubj·)�”}”(hŒ.(struct ib_xrcd *xrcd, struct ib_udata *udata)”h]”(j½)�”}”(hŒstruct ib_xrcd *xrcd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒubh)�”}”(hhh]”jN)�”}”(hŒib_xrcd”h]”hŒib_xrcd”…”�”}”(hj&Òh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j(ÒŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjîÑsbŒc.ib_dealloc_xrcd_user”†”asbuh1hhjÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjTÒh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÒubjN)�”}”(hŒxrcd”h]”hŒxrcd”…”�”}”(hjaÒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÒubj½)�”}”(hŒstruct ib_udata *udata”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjzÒh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjvÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Òh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjvÒubh)�”}”(hhh]”jN)�”}”(hŒib_udata”h]”hŒib_udata”…”�”}”(hj˜Òh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj•Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jšÒŒmodname”NŒ classname”Njkjn)�”}”jq]”jBÒŒc.ib_dealloc_xrcd_user”†”asbuh1hhjvÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Òh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjvÒubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÄÒh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjvÒubjN)�”}”(hŒudata”h]”hŒudata”…”�”}”(hjÑÒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjvÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÒubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÇÑh²hh³jÙÑh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÃÑh²hh³jÙÑh´M ubah}”(h]”j¾Ñah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÙÑh´M hjÀÑh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒDeallocates an XRC domain.”h]”hŒDeallocates an XRC domain.”…”�”}”(hjûÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjøÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÀÑh²hh³jÙÑh´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÓjÓjÓjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒ�**Parameters** ``struct ib_xrcd *xrcd`` The XRC domain to deallocate. ``struct ib_udata *udata`` Valid user data or NULL for kernel object”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÓh]”hŒ Parameters”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÓubjø)�”}”(hhh]”(jý)�”}”(hŒ7``struct ib_xrcd *xrcd`` The XRC domain to deallocate. ”h]”(j)�”}”(hŒ``struct ib_xrcd *xrcd``”h]”j )�”}”(hj<Óh]”hŒstruct ib_xrcd *xrcd”…”�”}”(hj>Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hj6Óubj)�”}”(hhh]”hÝ)�”}”(hŒThe XRC domain to deallocate.”h]”hŒThe XRC domain to deallocate.”…”�”}”(hjUÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQÓh´M hjRÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQÓh´M hj3Óubjý)�”}”(hŒD``struct ib_udata *udata`` Valid user data or NULL for kernel object”h]”(j)�”}”(hŒ``struct ib_udata *udata``”h]”j )�”}”(hjuÓh]”hŒstruct ib_udata *udata”…”�”}”(hjwÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjoÓubj)�”}”(hhh]”hÝ)�”}”(hŒ)Valid user data or NULL for kernel object”h]”hŒ)Valid user data or NULL for kernel object”…”�”}”(hjŽÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hj‹Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŠÓh´M hj3Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_create_wq (C function)”Œc.ib_create_wq”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOstruct ib_wq * ib_create_wq (struct ib_pd *pd, struct ib_wq_init_attr *wq_attr)”h]”j")�”}”(hŒMstruct ib_wq *ib_create_wq(struct ib_pd *pd, struct ib_wq_init_attr *wq_attr)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÏÓh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjËÓh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M* ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝÓh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjËÓh²hh³jÜÓh´M* ubh)�”}”(hhh]”jN)�”}”(hŒib_wq”h]”hŒib_wq”…”�”}”(hjîÓh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjëÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jðÓŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒ ib_create_wq”sbŒc.ib_create_wq”†”asbuh1hhjËÓh²hh³jÜÓh´M* ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjËÓ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* ubjš)�”}”(hŒ ib_create_wq”h]”jN)�”}”(hj Ôh]”hŒ ib_create_wq”…”�”}”(hj.Ôh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj*Ôubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjËÓh²hh³jÜÓh´M* ubj·)�”}”(hŒ3(struct ib_pd *pd, struct ib_wq_init_attr *wq_attr)”h]”(j½)�”}”(hŒstruct ib_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjIÔh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjEÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEÔubh)�”}”(hhh]”jN)�”}”(hŒib_pd”h]”hŒib_pd”…”�”}”(hjgÔh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjdÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jiÔŒmodname”NŒ classname”Njkjn)�”}”jq]”j ÔŒc.ib_create_wq”†”asbuh1hhjEÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Ôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEÔubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj“Ôh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjEÔubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjEÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjAÔubj½)�”}”(hŒstruct ib_wq_init_attr *wq_attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¹Ôh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjµÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµÔubh)�”}”(hhh]”jN)�”}”(hŒib_wq_init_attr”h]”hŒib_wq_init_attr”…”�”}”(hj×Ôh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÔÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÙÔŒmodname”NŒ classname”Njkjn)�”}”jq]”j ÔŒc.ib_create_wq”†”asbuh1hhjµÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµÔubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjµÔubjN)�”}”(hŒwq_attr”h]”hŒwq_attr”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjµÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjAÔubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjËÓh²hh³jÜÓh´M* ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÇÓh²hh³jÜÓh´M* ubah}”(h]”jÂÓah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÜÓh´M* hjÄÓh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ=Creates a WQ associated with the specified protection domain.”h]”hŒ=Creates a WQ associated with the specified protection domain.”…”�”}”(hj:Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M* hj7Õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÄÓh²hh³jÜÓh´M* ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjRÕjÓjRÕjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_pd *pd`` The protection domain associated with the WQ. ``struct ib_wq_init_attr *wq_attr`` A list of initial attributes required to create the WQ. If WQ creation succeeds, then the attributes are updated to the actual capabilities of the created WQ. **Description** wq_attr->max_wr and wq_attr->max_sge determine the requested size of the WQ, and set to the actual values allocated on return. If ib_create_wq() succeeds, then max_wr and max_sge will always be at least as large as the requested values.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M. hjVÕubjø)�”}”(hhh]”(jý)�”}”(hŒC``struct ib_pd *pd`` The protection domain associated with the WQ. ”h]”(j)�”}”(hŒ``struct ib_pd *pd``”h]”j )�”}”(hj{Õh]”hŒstruct ib_pd *pd”…”�”}”(hj}Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M, hjuÕubj)�”}”(hhh]”hÝ)�”}”(hŒ-The protection domain associated with the WQ.”h]”hŒ-The protection domain associated with the WQ.”…”�”}”(hj”Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�Õh´M, hj‘Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�Õh´M, hjrÕubjý)�”}”(hŒÃ``struct ib_wq_init_attr *wq_attr`` A list of initial attributes required to create the WQ. If WQ creation succeeds, then the attributes are updated to the actual capabilities of the created WQ. ”h]”(j)�”}”(hŒ#``struct ib_wq_init_attr *wq_attr``”h]”j )�”}”(hj´Õh]”hŒstruct ib_wq_init_attr *wq_attr”…”�”}”(hj¶Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M/ hj®Õubj)�”}”(hhh]”hÝ)�”}”(hŒžA list of initial attributes required to create the WQ. If WQ creation succeeds, then the attributes are updated to the actual capabilities of the created WQ.”h]”hŒžA list of initial attributes required to create the WQ. If WQ creation succeeds, then the attributes are updated to the actual capabilities of the created WQ.”…”�”}”(hjÍÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M- hjÊÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÉÕh´M/ hjrÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjVÕubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjðÕh]”hŒ Description”…”�”}”(hjòÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjîÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M1 hjVÕubhÝ)�”}”(hŒìwq_attr->max_wr and wq_attr->max_sge determine the requested size of the WQ, and set to the actual values allocated on return. If ib_create_wq() succeeds, then max_wr and max_sge will always be at least as large as the requested values.”h]”hŒìwq_attr->max_wr and wq_attr->max_sge determine the requested size of the WQ, and set to the actual values allocated on return. If ib_create_wq() succeeds, then max_wr and max_sge will always be at least as large as the requested values.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M0 hjVÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_destroy_wq_user (C function)”Œc.ib_destroy_wq_user”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAint ib_destroy_wq_user (struct ib_wq *wq, struct ib_udata *udata)”h]”j")�”}”(hŒ@int ib_destroy_wq_user(struct ib_wq *wq, struct ib_udata *udata)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj5Öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj1Öh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MQ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDÖh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1Öh²hh³jCÖh´MQ ubjš)�”}”(hŒib_destroy_wq_user”h]”jN)�”}”(hŒib_destroy_wq_user”h]”hŒib_destroy_wq_user”…”�”}”(hjVÖh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjRÖubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj1Öh²hh³jCÖh´MQ ubj·)�”}”(hŒ*(struct ib_wq *wq, struct ib_udata *udata)”h]”(j½)�”}”(hŒstruct ib_wq *wq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjrÖh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjnÖubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjnÖubh)�”}”(hhh]”jN)�”}”(hŒib_wq”h]”hŒib_wq”…”�”}”(hj�Öh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j’ÖŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjXÖsbŒc.ib_destroy_wq_user”†”asbuh1hhjnÖubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Öh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjnÖubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¾Öh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjnÖubjN)�”}”(hŒwq”h]”hŒwq”…”�”}”(hjËÖh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjnÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjjÖubj½)�”}”(hŒstruct ib_udata *udata”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjäÖh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjàÖubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñÖh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàÖubh)�”}”(hhh]”jN)�”}”(hŒib_udata”h]”hŒib_udata”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j׌modname”NŒ classname”Njkjn)�”}”jq]”j¬ÖŒc.ib_destroy_wq_user”†”asbuh1hhjàÖubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàÖubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj.×h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjàÖubjN)�”}”(hŒudata”h]”hŒudata”…”�”}”(hj;×h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjàÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjjÖubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj1Öh²hh³jCÖh´MQ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj-Öh²hh³jCÖh´MQ ubah}”(h]”j(Öah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jCÖh´MQ hj*Öh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒDestroys the specified user WQ.”h]”hŒDestroys the specified user WQ.”…”�”}”(hje×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MQ hjb×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj*Öh²hh³jCÖh´MQ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj}×jÓj}×jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒg**Parameters** ``struct ib_wq *wq`` The WQ to destroy. ``struct ib_udata *udata`` Valid user data”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj‡×h]”hŒ Parameters”…”�”}”(hj‰×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj…×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MU hj�×ubjø)�”}”(hhh]”(jý)�”}”(hŒ(``struct ib_wq *wq`` The WQ to destroy. ”h]”(j)�”}”(hŒ``struct ib_wq *wq``”h]”j )�”}”(hj¦×h]”hŒstruct ib_wq *wq”…”�”}”(hj¨×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MR hj ×ubj)�”}”(hhh]”hÝ)�”}”(hŒThe WQ to destroy.”h]”hŒThe WQ to destroy.”…”�”}”(hj¿×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j»×h´MR hj¼×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j»×h´MR hj�×ubjý)�”}”(hŒ*``struct ib_udata *udata`` Valid user data”h]”(j)�”}”(hŒ``struct ib_udata *udata``”h]”j )�”}”(hjß×h]”hŒstruct ib_udata *udata”…”�”}”(hjá×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MT hjÙ×ubj)�”}”(hhh]”hÝ)�”}”(hŒValid user data”h]”hŒValid user data”…”�”}”(hjø×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MS hjõ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jô×h´MT hj�×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj�×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_map_mr_sg_pi (C function)”Œc.ib_map_mr_sg_pi”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒÚint ib_map_mr_sg_pi (struct ib_mr *mr, struct scatterlist *data_sg, int data_sg_nents, unsigned int *data_sg_offset, struct scatterlist *meta_sg, int meta_sg_nents, unsigned int *meta_sg_offset, unsigned int page_size)”h]”j")�”}”(hŒÙint ib_map_mr_sg_pi(struct ib_mr *mr, struct scatterlist *data_sg, int data_sg_nents, unsigned int *data_sg_offset, struct scatterlist *meta_sg, int meta_sg_nents, unsigned int *meta_sg_offset, unsigned int page_size)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj9Øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj5Øh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¥ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHØh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5Øh²hh³jGØh´M¥ ubjš)�”}”(hŒib_map_mr_sg_pi”h]”jN)�”}”(hŒib_map_mr_sg_pi”h]”hŒib_map_mr_sg_pi”…”�”}”(hjZØh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjVØubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj5Øh²hh³jGØh´M¥ ubj·)�”}”(hŒÆ(struct ib_mr *mr, struct scatterlist *data_sg, int data_sg_nents, unsigned int *data_sg_offset, struct scatterlist *meta_sg, int meta_sg_nents, unsigned int *meta_sg_offset, unsigned int page_size)”h]”(j½)�”}”(hŒstruct ib_mr *mr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjvØh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjrØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒØh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjrØubh)�”}”(hhh]”jN)�”}”(hŒib_mr”h]”hŒib_mr”…”�”}”(hj”Øh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‘Øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j–ØŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj\ØsbŒc.ib_map_mr_sg_pi”†”asbuh1hhjrØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Øh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjrØubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÂØh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjrØubjN)�”}”(hŒmr”h]”hŒmr”…”�”}”(hjÏØh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjrØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubj½)�”}”(hŒstruct scatterlist *data_sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjèØh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjäØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõØh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäØubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÙŒmodname”NŒ classname”Njkjn)�”}”jq]”j°ØŒc.ib_map_mr_sg_pi”†”asbuh1hhjäØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Ùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäØubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj2Ùh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjäØubjN)�”}”(hŒdata_sg”h]”hŒdata_sg”…”�”}”(hj?Ùh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjäØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubj½)�”}”(hŒint data_sg_nents”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjXÙh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjTÙubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfÙh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTÙubjN)�”}”(hŒ data_sg_nents”h]”hŒ data_sg_nents”…”�”}”(hjtÙh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubj½)�”}”(hŒunsigned int *data_sg_offset”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‰Ùubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Ùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰Ùubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj©Ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‰Ùubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Ùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰Ùubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÅÙh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‰ÙubjN)�”}”(hŒdata_sg_offset”h]”hŒdata_sg_offset”…”�”}”(hjÒÙh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‰Ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubj½)�”}”(hŒstruct scatterlist *meta_sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjëÙh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjçÙubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøÙh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçÙubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j ÚŒmodname”NŒ classname”Njkjn)�”}”jq]”j°ØŒc.ib_map_mr_sg_pi”†”asbuh1hhjçÙubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Úh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçÙubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj5Úh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjçÙubjN)�”}”(hŒmeta_sg”h]”hŒmeta_sg”…”�”}”(hjBÚh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjçÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubj½)�”}”(hŒint meta_sg_nents”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj[Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjWÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÚh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWÚubjN)�”}”(hŒ meta_sg_nents”h]”hŒ meta_sg_nents”…”�”}”(hjwÚh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjWÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubj½)�”}”(hŒunsigned int *meta_sg_offset”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjŒÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžÚh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒÚubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjŒÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºÚh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒÚubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÈÚh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjŒÚubjN)�”}”(hŒmeta_sg_offset”h]”hŒmeta_sg_offset”…”�”}”(hjÕÚh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŒÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubj½)�”}”(hŒunsigned int page_size”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjîÚh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjêÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüÚh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjêÚubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjêÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjêÚubjN)�”}”(hŒ page_size”h]”hŒ page_size”…”�”}”(hj&Ûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjêÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnØubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj5Øh²hh³jGØh´M¥ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj1Øh²hh³jGØh´M¥ ubah}”(h]”j,Øah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jGØh´M¥ hj.Øh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒrMap the dma mapped SG lists for PI (protection information) and set an appropriate memory region for registration.”h]”hŒrMap the dma mapped SG lists for PI (protection information) and set an appropriate memory region for registration.”…”�”}”(hjPÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¥ hjMÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj.Øh²hh³jGØh´M¥ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjhÛjÓjhÛjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX°**Parameters** ``struct ib_mr *mr`` memory region ``struct scatterlist *data_sg`` dma mapped scatterlist for data ``int data_sg_nents`` number of entries in data_sg ``unsigned int *data_sg_offset`` offset in bytes into data_sg ``struct scatterlist *meta_sg`` dma mapped scatterlist for metadata ``int meta_sg_nents`` number of entries in meta_sg ``unsigned int *meta_sg_offset`` offset in bytes into meta_sg ``unsigned int page_size`` page vector desired page size **Description** Constraints: - The MR must be allocated with type IB_MR_TYPE_INTEGRITY. After this completes successfully, the memory region is ready for registration. **Return** 0 on success.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M© hjlÛubjø)�”}”(hhh]”(jý)�”}”(hŒ#``struct ib_mr *mr`` memory region ”h]”(j)�”}”(hŒ``struct ib_mr *mr``”h]”j )�”}”(hj‘Ûh]”hŒstruct ib_mr *mr”…”�”}”(hj“Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M§ hj‹Ûubj)�”}”(hhh]”hÝ)�”}”(hŒ memory region”h]”hŒ memory region”…”�”}”(hjªÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 scatterlist *data_sg`` dma mapped scatterlist for data ”h]”(j)�”}”(hŒ``struct scatterlist *data_sg``”h]”j )�”}”(hjÊÛh]”hŒstruct scatterlist *data_sg”…”�”}”(hjÌÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¨ hjÄÛubj)�”}”(hhh]”hÝ)�”}”(hŒdma mapped scatterlist for data”h]”hŒdma mapped scatterlist for data”…”�”}”(hjãÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``int data_sg_nents`` number of entries in data_sg ”h]”(j)�”}”(hŒ``int data_sg_nents``”h]”j )�”}”(hjÜh]”hŒint data_sg_nents”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M© hjýÛubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in data_sg”h]”hŒnumber of entries in data_sg”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 *data_sg_offset`` offset in bytes into data_sg ”h]”(j)�”}”(hŒ ``unsigned int *data_sg_offset``”h]”j )�”}”(hj<Üh]”hŒunsigned int *data_sg_offset”…”�”}”(hj>Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”•h´Mª hj6Üubj)�”}”(hhh]”hÝ)�”}”(hŒoffset in bytes into data_sg”h]”hŒoffset in bytes into data_sg”…”�”}”(hjUÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQÜh´Mª hjRÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQÜh´Mª hjˆÛubjý)�”}”(hŒD``struct scatterlist *meta_sg`` dma mapped scatterlist for metadata ”h]”(j)�”}”(hŒ``struct scatterlist *meta_sg``”h]”j )�”}”(hjuÜh]”hŒstruct scatterlist *meta_sg”…”�”}”(hjwÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M« hjoÜubj)�”}”(hhh]”hÝ)�”}”(hŒ#dma mapped scatterlist for metadata”h]”hŒ#dma mapped scatterlist for metadata”…”�”}”(hjŽÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŠÜh´M« hj‹Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŠÜh´M« hjˆÛubjý)�”}”(hŒ3``int meta_sg_nents`` number of entries in meta_sg ”h]”(j)�”}”(hŒ``int meta_sg_nents``”h]”j )�”}”(hj®Üh]”hŒint meta_sg_nents”…”�”}”(hj°Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¬ hj¨Üubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in meta_sg”h]”hŒnumber of entries in meta_sg”…”�”}”(hjÇÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 *meta_sg_offset`` offset in bytes into meta_sg ”h]”(j)�”}”(hŒ ``unsigned int *meta_sg_offset``”h]”j )�”}”(hjçÜh]”hŒunsigned int *meta_sg_offset”…”�”}”(hjéÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M­ hjáÜubj)�”}”(hhh]”hÝ)�”}”(hŒoffset in bytes into meta_sg”h]”hŒoffset in bytes into meta_sg”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 page_size`` page vector desired page size ”h]”(j)�”}”(hŒ``unsigned int page_size``”h]”j )�”}”(hj Ýh]”hŒunsigned int page_size”…”�”}”(hj"Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M® hjÝubj)�”}”(hhh]”hÝ)�”}”(hŒpage vector desired page size”h]”hŒpage vector desired page size”…”�”}”(hj9Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j5Ýh´M® hj6Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j5Ýh´M® hjˆÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjlÛubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M° hjlÛubhÝ)�”}”(hŒGConstraints: - The MR must be allocated with type IB_MR_TYPE_INTEGRITY.”h]”hŒGConstraints: - The MR must be allocated with type IB_MR_TYPE_INTEGRITY.”…”�”}”(hjqÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¯ hjlÛubhÝ)�”}”(hŒPAfter this completes successfully, the memory region is ready for registration.”h]”hŒPAfter this completes successfully, the memory region is ready for registration.”…”�”}”(hj€Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M³ hjlÛubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M¶ hjlÛubhÝ)�”}”(hŒ 0 on success.”h]”hŒ 0 on success.”…”�”}”(hj§Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M³ hjlÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_map_mr_sg (C function)”Œc.ib_map_mr_sg”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒzint ib_map_mr_sg (struct ib_mr *mr, struct scatterlist *sg, int sg_nents, unsigned int *sg_offset, unsigned int page_size)”h]”j")�”}”(hŒyint ib_map_mr_sg(struct ib_mr *mr, struct scatterlist *sg, int sg_nents, unsigned int *sg_offset, unsigned int page_size)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖÝh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÒÝh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÊ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåÝh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒÝh²hh³jäÝh´MÊ ubjš)�”}”(hŒ ib_map_mr_sg”h]”jN)�”}”(hŒ ib_map_mr_sg”h]”hŒ ib_map_mr_sg”…”�”}”(hj÷Ýh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjóÝubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÒÝh²hh³jäÝh´MÊ ubj·)�”}”(hŒi(struct ib_mr *mr, struct scatterlist *sg, int sg_nents, unsigned int *sg_offset, unsigned int page_size)”h]”(j½)�”}”(hŒstruct ib_mr *mr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞubh)�”}”(hhh]”jN)�”}”(hŒib_mr”h]”hŒib_mr”…”�”}”(hj1Þh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj.Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j3ÞŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjùÝsbŒc.ib_map_mr_sg”†”asbuh1hhjÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQÞh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj_Þh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÞubjN)�”}”(hŒmr”h]”hŒmr”…”�”}”(hjlÞh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj Þubj½)�”}”(hŒstruct scatterlist *sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj…Þh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�Þubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Þh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Þubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj£Þh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¥ÞŒmodname”NŒ classname”Njkjn)�”}”jq]”jMÞŒc.ib_map_mr_sg”†”asbuh1hhj�Þubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÞh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Þubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÏÞh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�ÞubjN)�”}”(hŒsg”h]”hŒsg”…”�”}”(hjÜÞh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj Þubj½)�”}”(hŒ int sg_nents”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjõÞh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjñÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjñÞubjN)�”}”(hŒsg_nents”h]”hŒsg_nents”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjñÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj Þubj½)�”}”(hŒunsigned int *sg_offset”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj*ßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj&ßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8ßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&ßubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjFßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj&ßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&ßubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjbßh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj&ßubjN)�”}”(hŒ sg_offset”h]”hŒ sg_offset”…”�”}”(hjoßh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj&ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj Þubj½)�”}”(hŒunsigned int page_size”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjˆßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj„ßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„ßubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤ßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj„ßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²ßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„ßubjN)�”}”(hŒ page_size”h]”hŒ page_size”…”�”}”(hjÀßh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj„ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj Þubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÒÝh²hh³jäÝh´MÊ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÎÝh²hh³jäÝh´MÊ ubah}”(h]”jÉÝah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jäÝh´MÊ hjËÝh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒLMap the largest prefix of a dma mapped SG list and set it the memory region.”h]”hŒLMap the largest prefix of a dma mapped SG list and set it the memory region.”…”�”}”(hjêßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÊ hjçßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjËÝh²hh³jäÝh´MÊ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjàjÓjàjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXû**Parameters** ``struct ib_mr *mr`` memory region ``struct scatterlist *sg`` dma mapped scatterlist ``int sg_nents`` number of entries in sg ``unsigned int *sg_offset`` offset in bytes into sg ``unsigned int page_size`` page vector desired page size **Description** Constraints: - The first sg element is allowed to have an offset. - Each sg element must either be aligned to page_size or virtually contiguous to the previous element. In case an sg element has a non-contiguous offset, the mapping prefix will not include it. - The last sg element is allowed to have length less than page_size. - If sg_nents total byte length exceeds the mr max_num_sge * page_size then only max_num_sg entries will be mapped. - If the MR was allocated with type IB_MR_TYPE_SG_GAPS, none of these constraints holds and the page_size argument is ignored. Returns the number of sg elements that were mapped to the memory region. After this completes successfully, the memory region is ready for registration.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj àh]”hŒ Parameters”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj àubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÎ hjàubjø)�”}”(hhh]”(jý)�”}”(hŒ#``struct ib_mr *mr`` memory region ”h]”(j)�”}”(hŒ``struct ib_mr *mr``”h]”j )�”}”(hj+àh]”hŒstruct ib_mr *mr”…”�”}”(hj-àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)àubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÌ hj%àubj)�”}”(hhh]”hÝ)�”}”(hŒ memory region”h]”hŒ memory region”…”�”}”(hjDàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ2``struct scatterlist *sg`` dma mapped scatterlist ”h]”(j)�”}”(hŒ``struct scatterlist *sg``”h]”j )�”}”(hjdàh]”hŒstruct scatterlist *sg”…”�”}”(hjfàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbàubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÍ hj^àubj)�”}”(hhh]”hÝ)�”}”(hŒdma mapped scatterlist”h]”hŒdma mapped scatterlist”…”�”}”(hj}àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 sg_nents`` number of entries in sg ”h]”(j)�”}”(hŒ``int sg_nents``”h]”j )�”}”(hj�àh]”hŒ int sg_nents”…”�”}”(hjŸàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›àubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÎ hj—àubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in sg”h]”hŒnumber of entries in sg”…”�”}”(hj¶àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 *sg_offset`` offset in bytes into sg ”h]”(j)�”}”(hŒ``unsigned int *sg_offset``”h]”j )�”}”(hjÖàh]”hŒunsigned int *sg_offset”…”�”}”(hjØàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔàubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÏ hjÐàubj)�”}”(hhh]”hÝ)�”}”(hŒoffset in bytes into sg”h]”hŒoffset in bytes into sg”…”�”}”(hjïàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 page_size`` page vector desired page size ”h]”(j)�”}”(hŒ``unsigned int page_size``”h]”j )�”}”(hjáh]”hŒunsigned int page_size”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj áubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÐ hj áubj)�”}”(hhh]”hÝ)�”}”(hŒpage vector desired page size”h]”hŒpage vector desired page size”…”�”}”(hj(áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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àubhÝ)�”}”(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&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÒ hjàubhÝ)�”}”(hŒ Constraints:”h]”hŒ Constraints:”…”�”}”(hj`áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÑ hjàubj_D)�”}”(hhh]”(jdD)�”}”(hŒ2The first sg element is allowed to have an offset.”h]”hÝ)�”}”(hjtáh]”hŒ2The first sg element is allowed to have an offset.”…”�”}”(hjváh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÓ hjráubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhjoáubjdD)�”}”(hŒ¿Each sg element must either be aligned to page_size or virtually contiguous to the previous element. In case an sg element has a non-contiguous offset, the mapping prefix will not include it.”h]”hÝ)�”}”(hŒ¿Each sg element must either be aligned to page_size or virtually contiguous to the previous element. In case an sg element has a non-contiguous offset, the mapping prefix will not include it.”h]”hŒ¿Each sg element must either be aligned to page_size or virtually contiguous to the previous element. In case an sg element has a non-contiguous offset, the mapping prefix will not include it.”…”�”}”(hjŽáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÔ hjŠáubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhjoáubjdD)�”}”(hŒBThe last sg element is allowed to have length less than page_size.”h]”hÝ)�”}”(hj¥áh]”hŒBThe last sg element is allowed to have length less than page_size.”…”�”}”(hj§áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M× hj£áubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhjoáubjdD)�”}”(hŒqIf sg_nents total byte length exceeds the mr max_num_sge * page_size then only max_num_sg entries will be mapped.”h]”hÝ)�”}”(hŒqIf sg_nents total byte length exceeds the mr max_num_sge * page_size then only max_num_sg entries will be mapped.”h]”hŒqIf sg_nents total byte length exceeds the mr max_num_sge * page_size then only max_num_sg entries will be mapped.”…”�”}”(hj¿áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MØ hj»áubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhjoáubjdD)�”}”(hŒ}If the MR was allocated with type IB_MR_TYPE_SG_GAPS, none of these constraints holds and the page_size argument is ignored. ”h]”hÝ)�”}”(hŒ|If the MR was allocated with type IB_MR_TYPE_SG_GAPS, none of these constraints holds and the page_size argument is ignored.”h]”hŒ|If the MR was allocated with type IB_MR_TYPE_SG_GAPS, none of these constraints holds and the page_size argument is ignored.”…”�”}”(hjØáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÚ hjÔáubah}”(h]”h ]”h"]”h$]”h&]”uh1jcDhjoáubeh}”(h]”h ]”h"]”h$]”h&]”jòDjóDuh1j^Dh³jƒáh´MÓ hjàubhÝ)�”}”(hŒHReturns the number of sg elements that were mapped to the memory region.”h]”hŒHReturns the number of sg elements that were mapped to the memory region.”…”�”}”(hjóáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´MÝ hjàubhÝ)�”}”(hŒPAfter this completes successfully, the memory region is ready for registration.”h]”hŒPAfter this completes successfully, the memory region is ready for registration.”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mß hjàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_sg_to_pages (C function)”Œc.ib_sg_to_pages”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ�int ib_sg_to_pages (struct ib_mr *mr, struct scatterlist *sgl, int sg_nents, unsigned int *sg_offset_p, int (*set_page)(struct ib_mr *, u64))”h]”j")�”}”(hŒ‹int ib_sg_to_pages(struct ib_mr *mr, struct scatterlist *sgl, int sg_nents, unsigned int *sg_offset_p, int (*set_page)(struct ib_mr*, u64))”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj1âh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj-âh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mð ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj-âh²hh³j?âh´Mð ubjš)�”}”(hŒib_sg_to_pages”h]”jN)�”}”(hŒib_sg_to_pages”h]”hŒib_sg_to_pages”…”�”}”(hjRâh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjNâubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj-âh²hh³j?âh´Mð ubj·)�”}”(hŒy(struct ib_mr *mr, struct scatterlist *sgl, int sg_nents, unsigned int *sg_offset_p, int (*set_page)(struct ib_mr*, u64))”h]”(j½)�”}”(hŒstruct ib_mr *mr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjnâh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjjâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjjâubh)�”}”(hhh]”jN)�”}”(hŒib_mr”h]”hŒib_mr”…”�”}”(hjŒâh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‰âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŽâŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjTâsbŒc.ib_sg_to_pages”†”asbuh1hhjjâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjjâubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjºâh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjjâubjN)�”}”(hŒmr”h]”hŒmr”…”�”}”(hjÇâh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjfâubj½)�”}”(hŒstruct scatterlist *sgl”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjàâh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÜâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíâh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÜâubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjþâh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjûâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jãŒmodname”NŒ classname”Njkjn)�”}”jq]”j¨âŒc.ib_sg_to_pages”†”asbuh1hhjÜâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÜâubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj*ãh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÜâubjN)�”}”(hŒsgl”h]”hŒsgl”…”�”}”(hj7ãh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÜâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjfâubj½)�”}”(hŒ int sg_nents”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjPãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjLãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjLãubjN)�”}”(hŒsg_nents”h]”hŒsg_nents”…”�”}”(hjlãh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjLãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjfâubj½)�”}”(hŒunsigned int *sg_offset_p”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj…ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj�ãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�ãubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj�ãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯ãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�ãubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj½ãh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�ãubjN)�”}”(hŒ sg_offset_p”h]”hŒ sg_offset_p”…”�”}”(hjÊãh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjfâubj½)�”}”(hŒ#int (*set_page)(struct ib_mr*, u64)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjããh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjßãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßãubj‰)�”}”(hŒ(”h]”hŒ(”…”�”}”(hjÿãh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjßãubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjßãubjN)�”}”(hŒset_page”h]”hŒset_page”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjßã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Œstruct”…”�”}”(hjCäh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjßãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPäh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßãubh)�”}”(hhh]”jN)�”}”(hŒib_mr”h]”hŒib_mr”…”�”}”(hjaäh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jcäŒmodname”NŒ classname”Njkjn)�”}”jq]”j¨âŒc.ib_sg_to_pages”†”asbuh1hhjßãubj‰)�”}”(hjŒ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:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšäh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßãubh)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj«äh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¨äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j­äŒmodname”NŒ classname”Njkjn)�”}”jq]”j¨âŒc.ib_sg_to_pages”†”asbuh1hhjßãubj‰)�”}”(hj*äh]”hŒ)”…”�”}”(hjÉäh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjßãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjfâubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj-âh²hh³j?âh´Mð ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj)âh²hh³j?âh´Mð ubah}”(h]”j$âah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j?âh´Mð hj&âh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ8Convert the largest prefix of a sg list to a page vector”h]”hŒ8Convert the largest prefix of a sg list to a page vector”…”�”}”(hjòäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mð hjïäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj&âh²hh³j?âh´Mð ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj åjÓj åjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXW**Parameters** ``struct ib_mr *mr`` memory region ``struct scatterlist *sgl`` dma mapped scatterlist ``int sg_nents`` number of entries in sg ``unsigned int *sg_offset_p`` ==== ======================================================= IN start offset in bytes into sg OUT offset in bytes for element n of the sg of the first byte that has not been processed where n is the return value of this function. ==== ======================================================= ``int (*set_page)(struct ib_mr *, u64)`` driver page assignment function pointer **Description** Core service helper for drivers to convert the largest prefix of given sg list to a page vector. The sg list prefix converted is the prefix that meet the requirements of ib_map_mr_sg. Returns the number of sg elements that were assigned to a page vector.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjåh]”hŒ Parameters”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mô hjåubjø)�”}”(hhh]”(jý)�”}”(hŒ#``struct ib_mr *mr`` memory region ”h]”(j)�”}”(hŒ``struct ib_mr *mr``”h]”j )�”}”(hj3åh]”hŒstruct ib_mr *mr”…”�”}”(hj5åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mò hj-åubj)�”}”(hhh]”hÝ)�”}”(hŒ memory region”h]”hŒ memory region”…”�”}”(hjLåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ3``struct scatterlist *sgl`` dma mapped scatterlist ”h]”(j)�”}”(hŒ``struct scatterlist *sgl``”h]”j )�”}”(hjlåh]”hŒstruct scatterlist *sgl”…”�”}”(hjnåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mó hjfåubj)�”}”(hhh]”hÝ)�”}”(hŒdma mapped scatterlist”h]”hŒdma mapped scatterlist”…”�”}”(hj…åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ)``int sg_nents`` number of entries in sg ”h]”(j)�”}”(hŒ``int sg_nents``”h]”j )�”}”(hj¥åh]”hŒ int sg_nents”…”�”}”(hj§åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mô hjŸåubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of entries in sg”h]”hŒnumber of entries in sg”…”�”}”(hj¾åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jºåh´Mô hj»åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jºåh´Mô hj*åubjý)�”}”(hXN``unsigned int *sg_offset_p`` ==== ======================================================= IN start offset in bytes into sg OUT offset in bytes for element n of the sg of the first byte that has not been processed where n is the return value of this function. ==== ======================================================= ”h]”(j)�”}”(hŒ``unsigned int *sg_offset_p``”h]”j )�”}”(hjÞåh]”hŒunsigned int *sg_offset_p”…”�”}”(hjàåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜåubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mú hjØåubj)�”}”(hhh]”hŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jæhjþåubjæ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K7uh1jæhjþåubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÝ)�”}”(hŒIN”h]”hŒIN”…”�”}”(hj&æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mö hj#æubah}”(h]”h ]”h"]”h$]”h&]”uh1j!æhjæubj"æ)�”}”(hhh]”hÝ)�”}”(hŒstart offset in bytes into sg”h]”hŒstart offset in bytes into sg”…”�”}”(hj>æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j4æh´Mö hj;æubah}”(h]”h ]”h"]”h$]”h&]”uh1j!æhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjæubjæ)�”}”(hhh]”(j"æ)�”}”(hhh]”hÝ)�”}”(hŒOUT”h]”hŒOUT”…”�”}”(hj^æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M÷ hj[æubah}”(h]”h ]”h"]”h$]”h&]”uh1j!æhjXæubj"æ)�”}”(hhh]”hÝ)�”}”(hŒƒoffset in bytes for element n of the sg of the first byte that has not been processed where n is the return value of this function.”h]”hŒƒoffset in bytes for element n of the sg of the first byte that has not been processed where n is the return value of this function.”…”�”}”(hjvæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jlæh´M÷ hjsæubah}”(h]”h ]”h"]”h$]”h&]”uh1j!æhjXæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjþåubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jüå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ŒQ``int (*set_page)(struct ib_mr *, u64)`` driver page assignment function pointer ”h]”(j)�”}”(hŒ(``int (*set_page)(struct ib_mr *, u64)``”h]”j )�”}”(hjµæh]”hŒ$int (*set_page)(struct ib_mr *, u64)”…”�”}”(hj·æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³æubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mû hj¯æubj)�”}”(hhh]”hÝ)�”}”(hŒ'driver page assignment function pointer”h]”hŒ'driver page assignment function pointer”…”�”}”(hjÎæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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åubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjðæh]”hŒ Description”…”�”}”(hjòæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjîæubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mý hjåubhÝ)�”}”(hŒ·Core service helper for drivers to convert the largest prefix of given sg list to a page vector. The sg list prefix converted is the prefix that meet the requirements of ib_map_mr_sg.”h]”hŒ·Core service helper for drivers to convert the largest prefix of given sg list to a page vector. The sg list prefix converted is the prefix that meet the requirements of ib_map_mr_sg.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mü hjåubhÝ)�”}”(hŒFReturns the number of sg elements that were assigned to a page vector.”h]”hŒFReturns the number of sg elements that were assigned to a page vector.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_drain_sq (C function)”Œ c.ib_drain_sq”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ#void ib_drain_sq (struct ib_qp *qp)”h]”j")�”}”(hŒ"void ib_drain_sq(struct ib_qp *qp)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj@çh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mâ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSçh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj@çh²hh³jRçh´Mâ ubjš)�”}”(hŒ ib_drain_sq”h]”jN)�”}”(hŒ ib_drain_sq”h]”hŒ ib_drain_sq”…”�”}”(hjeçh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjaçubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj@çh²hh³jRçh´Mâ ubj·)�”}”(hŒ(struct ib_qp *qp)”h]”j½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�çh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj}çubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽçh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj}çubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjŸçh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjœçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¡çŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjgçsbŒ c.ib_drain_sq”†”asbuh1hhj}çubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿çh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj}çubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÍçh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj}çubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjÚçh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj}çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjyçubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj@çh²hh³jRçh´Mâ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj<çh²hh³jRçh´Mâ ubah}”(h]”j7çah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jRçh´Mâ hj9çh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ>Block until all SQ CQEs have been consumed by the application.”h]”hŒ>Block until all SQ CQEs have been consumed by the application.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mâ hjèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj9çh²hh³jRçh´Mâ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjèjÓjèjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXË**Parameters** ``struct ib_qp *qp`` queue pair to drain **Description** If the device has a provider-specific drain function, then call that. Otherwise call the generic drain function __ib_drain_sq(). The caller must: ensure there is room in the CQ and SQ for the drain work request and completion. allocate the CQ using ib_alloc_cq(). ensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj&èh]”hŒ Parameters”…”�”}”(hj(èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj$èubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mæ hj èubjø)�”}”(hhh]”jý)�”}”(hŒ)``struct ib_qp *qp`` queue pair to drain ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjEèh]”hŒstruct ib_qp *qp”…”�”}”(hjGèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCèubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mä hj?èubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to drain”h]”hŒqueue pair to drain”…”�”}”(hj^èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jZèh´Mä hj[èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jZèh´Mä hj<èubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj èubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj€èh]”hŒ Description”…”�”}”(hj‚èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj~èubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mæ hj èubhÝ)�”}”(hŒ�If the device has a provider-specific drain function, then call that. Otherwise call the generic drain function __ib_drain_sq().”h]”hŒ�If the device has a provider-specific drain function, then call that. Otherwise call the generic drain function __ib_drain_sq().”…”�”}”(hj–èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Må hj èubhÝ)�”}”(hŒThe caller must:”h]”hŒThe caller must:”…”�”}”(hj¥èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mé hj èubhÝ)�”}”(hŒPensure there is room in the CQ and SQ for the drain work request and completion.”h]”hŒPensure there is room in the CQ and SQ for the drain work request and completion.”…”�”}”(hj´èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Më hj èubhÝ)�”}”(hŒ$allocate the CQ using ib_alloc_cq().”h]”hŒ$allocate the CQ using ib_alloc_cq().”…”�”}”(hjÃèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mî hj èubhÝ)�”}”(hŒqensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”h]”hŒqensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”…”�”}”(hjÒèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mð hj èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_drain_rq (C function)”Œ c.ib_drain_rq”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ#void ib_drain_rq (struct ib_qp *qp)”h]”j")�”}”(hŒ"void ib_drain_rq(struct ib_qp *qp)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjýèh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mÿ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjýèh²hh³jéh´Mÿ ubjš)�”}”(hŒ ib_drain_rq”h]”jN)�”}”(hŒ ib_drain_rq”h]”hŒ ib_drain_rq”…”�”}”(hj"éh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjéubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjýèh²hh³jéh´Mÿ ubj·)�”}”(hŒ(struct ib_qp *qp)”h]”j½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj>éh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj:éubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKéh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:éubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hj\éh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjYéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j^éŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj$ésbŒ c.ib_drain_rq”†”asbuh1hhj:éubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|éh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:éubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjŠéh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj:éubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj—éh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj6éubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjýèh²hh³jéh´Mÿ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjùèh²hh³jéh´Mÿ ubah}”(h]”jôèah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jéh´Mÿ hjöèh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ>Block until all RQ CQEs have been consumed by the application.”h]”hŒ>Block until all RQ CQEs have been consumed by the application.”…”�”}”(hjÁéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mÿ hj¾éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjöèh²hh³jéh´Mÿ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÙéjÓjÙéjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXË**Parameters** ``struct ib_qp *qp`` queue pair to drain **Description** If the device has a provider-specific drain function, then call that. Otherwise call the generic drain function __ib_drain_rq(). The caller must: ensure there is room in the CQ and RQ for the drain work request and completion. allocate the CQ using ib_alloc_cq(). ensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjãéh]”hŒ Parameters”…”�”}”(hjåéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjáéubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÝéubjø)�”}”(hhh]”jý)�”}”(hŒ)``struct ib_qp *qp`` queue pair to drain ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjêh]”hŒstruct ib_qp *qp”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjüéubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to drain”h]”hŒqueue pair to drain”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ÝéubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj=êh]”hŒ Description”…”�”}”(hj?êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj;êubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÝéubhÝ)�”}”(hŒ�If the device has a provider-specific drain function, then call that. Otherwise call the generic drain function __ib_drain_rq().”h]”hŒ�If the device has a provider-specific drain function, then call that. Otherwise call the generic drain function __ib_drain_rq().”…”�”}”(hjSêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÝéubhÝ)�”}”(hŒThe caller must:”h]”hŒThe caller must:”…”�”}”(hjbêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÝéubhÝ)�”}”(hŒPensure there is room in the CQ and RQ for the drain work request and completion.”h]”hŒPensure there is room in the CQ and RQ for the drain work request and completion.”…”�”}”(hjqêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÝéubhÝ)�”}”(hŒ$allocate the CQ using ib_alloc_cq().”h]”hŒ$allocate the CQ using ib_alloc_cq().”…”�”}”(hj€êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÝéubhÝ)�”}”(hŒqensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”h]”hŒqensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjÝéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_drain_qp (C function)”Œ c.ib_drain_qp”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ#void ib_drain_qp (struct ib_qp *qp)”h]”j")�”}”(hŒ"void ib_drain_qp(struct ib_qp *qp)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¾êh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjºêh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍêh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºêh²hh³jÌêh´M ubjš)�”}”(hŒ ib_drain_qp”h]”jN)�”}”(hŒ ib_drain_qp”h]”hŒ ib_drain_qp”…”�”}”(hjßêh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛêubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjºêh²hh³jÌêh´M ubj·)�”}”(hŒ(struct ib_qp *qp)”h]”j½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjûêh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj÷êubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj÷êubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jëŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjáêsbŒ c.ib_drain_qp”†”asbuh1hhj÷êubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9ëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj÷êubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjGëh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj÷êubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjTëh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj÷êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjóêubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjºêh²hh³jÌêh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¶êh²hh³jÌêh´M ubah}”(h]”j±êah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÌêh´M hj³êh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒQBlock until all CQEs have been consumed by the application on both the RQ and SQ.”h]”hŒQBlock until all CQEs have been consumed by the application on both the RQ and SQ.”…”�”}”(hj~ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hj{ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj³êh²hh³jÌêh´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj–ëjÓj–ëjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXO**Parameters** ``struct ib_qp *qp`` queue pair to drain **Description** The caller must: ensure there is room in the CQ(s), SQ, and RQ for drain work requests and completions. allocate the CQs using ib_alloc_cq(). ensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj ëh]”hŒ Parameters”…”�”}”(hj¢ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjžëubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjšëubjø)�”}”(hhh]”jý)�”}”(hŒ)``struct ib_qp *qp`` queue pair to drain ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hj¿ëh]”hŒstruct ib_qp *qp”…”�”}”(hjÁëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hj¹ëubj)�”}”(hhh]”hÝ)�”}”(hŒqueue pair to drain”h]”hŒqueue pair to drain”…”�”}”(hjØëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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šëubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjúëh]”hŒ Description”…”�”}”(hjüëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjøëubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjšëubhÝ)�”}”(hŒThe caller must:”h]”hŒThe caller must:”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M hjšëubhÝ)�”}”(hŒVensure there is room in the CQ(s), SQ, and RQ for drain work requests and completions.”h]”hŒVensure there is room in the CQ(s), SQ, and RQ for drain work requests and completions.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M! hjšëubhÝ)�”}”(hŒ%allocate the CQs using ib_alloc_cq().”h]”hŒ%allocate the CQs using ib_alloc_cq().”…”�”}”(hj.ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M$ hjšëubhÝ)�”}”(hŒqensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”h]”hŒqensure that there are no other contexts that are posting WRs concurrently. Otherwise the drain is not guaranteed.”…”�”}”(hj=ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´M& hjšëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'rdma_alloc_hw_stats_struct (C function)”Œc.rdma_alloc_hw_stats_struct”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ€struct rdma_hw_stats * rdma_alloc_hw_stats_struct (const struct rdma_stat_desc *descs, int num_counters, unsigned long lifespan)”h]”j")�”}”(hŒ~struct rdma_hw_stats *rdma_alloc_hw_stats_struct(const struct rdma_stat_desc *descs, int num_counters, unsigned long lifespan)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjlìh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjhìh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Me ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjhìh²hh³jyìh´Me ubh)�”}”(hhh]”jN)�”}”(hŒ rdma_hw_stats”h]”hŒ rdma_hw_stats”…”�”}”(hj‹ìh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjˆìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�ìŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒrdma_alloc_hw_stats_struct”sbŒc.rdma_alloc_hw_stats_struct”†”asbuh1hhjhìh²hh³jyìh´Me ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjhìh²hh³jyìh´Me ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjºìh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjhìh²hh³jyìh´Me ubjš)�”}”(hŒrdma_alloc_hw_stats_struct”h]”jN)�”}”(hj©ìh]”hŒrdma_alloc_hw_stats_struct”…”�”}”(hjËìh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÇìubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjhìh²hh³jyìh´Me ubj·)�”}”(hŒN(const struct rdma_stat_desc *descs, int num_counters, unsigned long lifespan)”h]”(j½)�”}”(hŒ"const struct rdma_stat_desc *descs”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjæìh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjâìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâìubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjâìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâìubh)�”}”(hhh]”jN)�”}”(hŒrdma_stat_desc”h]”hŒrdma_stat_desc”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j!íŒmodname”NŒ classname”Njkjn)�”}”jq]”j§ìŒc.rdma_alloc_hw_stats_struct”†”asbuh1hhjâìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâìubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjKíh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjâìubjN)�”}”(hŒdescs”h]”hŒdescs”…”�”}”(hjXíh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjâìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞìubj½)�”}”(hŒint num_counters”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjqíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjmíubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjmíubjN)�”}”(hŒ num_counters”h]”hŒ num_counters”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjmíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞìubj½)�”}”(hŒunsigned long lifespan”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¦íh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¢íubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢íubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÂíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¢íubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐíh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢íubjN)�”}”(hŒlifespan”h]”hŒlifespan”…”�”}”(hjÞíh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¢íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÞìubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjhìh²hh³jyìh´Me ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjdìh²hh³jyìh´Me ubah}”(h]”j_ìah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jyìh´Me hjaìh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ;Helper function to allocate dynamic struct for the drivers.”h]”hŒ;Helper function to allocate dynamic struct for the drivers.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Me hjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjaìh²hh³jyìh´Me ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj îjÓj îjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒÃ**Parameters** ``const struct rdma_stat_desc *descs`` array of static descriptors ``int num_counters`` number of elements in array ``unsigned long lifespan`` milliseconds between updates”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj*îh]”hŒ Parameters”…”�”}”(hj,îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj(îubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mi hj$îubjø)�”}”(hhh]”(jý)�”}”(hŒC``const struct rdma_stat_desc *descs`` array of static descriptors ”h]”(j)�”}”(hŒ&``const struct rdma_stat_desc *descs``”h]”j )�”}”(hjIîh]”hŒ"const struct rdma_stat_desc *descs”…”�”}”(hjKîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGîubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mg hjCîubj)�”}”(hhh]”hÝ)�”}”(hŒarray of static descriptors”h]”hŒarray of static descriptors”…”�”}”(hjbîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^îh´Mg hj_îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j^îh´Mg hj@îubjý)�”}”(hŒ1``int num_counters`` number of elements in array ”h]”(j)�”}”(hŒ``int num_counters``”h]”j )�”}”(hj‚îh]”hŒint num_counters”…”�”}”(hj„îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€îubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mh hj|îubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of elements in array”h]”hŒnumber of elements in array”…”�”}”(hj›îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ7``unsigned long lifespan`` milliseconds between updates”h]”(j)�”}”(hŒ``unsigned long lifespan``”h]”j )�”}”(hj»îh]”hŒunsigned long lifespan”…”�”}”(hj½îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹îubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mj hjµîubj)�”}”(hhh]”hÝ)�”}”(hŒmilliseconds between updates”h]”hŒmilliseconds between updates”…”�”}”(hjÔîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:28: ./drivers/infiniband/core/verbs.c”h´Mi hjÑîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÐîh´Mj hj@îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj$îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&rdma_free_hw_stats_struct (C function)”Œc.rdma_free_hw_stats_struct”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒþŒmodname”NŒ classname”Njkjn)�”}”jq]”j.ýŒc.ib_sa_path_rec_get”†”asbuh1hhjþubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZþh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjþubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjhþh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjþubjN)�”}”(hŒrec”h]”hŒrec”…”�”}”(hjuþh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìüubj½)�”}”(hŒib_sa_comp_mask comp_mask”h]”(h)�”}”(hhh]”jN)�”}”(hŒib_sa_comp_mask”h]”hŒib_sa_comp_mask”…”�”}”(hj‘þh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŽþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j“þŒmodname”NŒ classname”Njkjn)�”}”jq]”j.ýŒc.ib_sa_path_rec_get”†”asbuh1hhjŠþubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯þh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŠþubjN)�”}”(hŒ comp_mask”h]”hŒ comp_mask”…”�”}”(hj½þh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŠþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìüubj½)�”}”(hŒunsigned long timeout_ms”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÖþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÒþubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäþh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒþubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjòþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÒþubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒþubjN)�”}”(hŒ timeout_ms”h]”hŒ timeout_ms”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÒþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìüubj½)�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”jN)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj*ÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj'ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j,ÿŒmodname”NŒ classname”Njkjn)�”}”jq]”j.ýŒc.ib_sa_path_rec_get”†”asbuh1hhj#ÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#ÿubjN)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hjVÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìüubj½)�”}”(hŒ]void (*callback)(int status, struct sa_path_rec *resp, unsigned int num_paths, void *context)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjoÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubj‰)�”}”(hjä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ÿubjN)�”}”(hŒcallback”h]”hŒcallback”…”�”}”(hj¥ÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkÿubj‰)�”}”(hj*ä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ÿubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubjN)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hjéÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkÿubj‰)�”}”(hjŽäh]”hŒ,”…”�”}”(hj÷ÿh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubh)�”}”(hhh]”jN)�”}”(hŒ sa_path_rec”h]”hŒ sa_path_rec”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j2Œmodname”NŒ classname”Njkjn)�”}”jq]”j.ýŒc.ib_sa_path_rec_get”†”asbuh1hhjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjkÿubjN)�”}”(hŒresp”h]”hŒresp”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkÿubj‰)�”}”(hjŽäh]”hŒ,”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubjý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubjN)�”}”(hŒ num_paths”h]”hŒ num_paths”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkÿubj‰)�”}”(hjŽäh]”hŒ,”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubjý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjkÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkÿubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjkÿubjN)�”}”(hŒcontext”h]”hŒcontext”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkÿubj‰)�”}”(hj*äh]”hŒ)”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjkÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìüubj½)�”}”(hŒ void *context”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj>ubjN)�”}”(hŒcontext”h]”hŒcontext”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìüubj½)�”}”(hŒstruct ib_sa_query **sa_query”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj€ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€ubh)�”}”(hhh]”jN)�”}”(hŒ ib_sa_query”h]”hŒ ib_sa_query”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¤Œmodname”NŒ classname”Njkjn)�”}”jq]”j.ýŒc.ib_sa_path_rec_get”†”asbuh1hhj€ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€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€ubjN)�”}”(hŒsa_query”h]”hŒsa_query”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìüubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj³üh²hh³jÅüh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¯üh²hh³jÅüh´Mgubah}”(h]”jªüah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÅüh´Mghj¬üh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒStart a Path get query”h]”hŒStart a Path get query”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mghjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¬üh²hh³jÅüh´Mgubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj*jÓj*jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXÊ**Parameters** ``struct ib_sa_client *client`` SA client ``struct ib_device *device`` device to send query on ``u32 port_num`` port number to send query on ``struct sa_path_rec *rec`` Path Record to send in query ``ib_sa_comp_mask comp_mask`` component mask to send in query ``unsigned long timeout_ms`` time to wait for response ``gfp_t gfp_mask`` GFP mask to use for internal allocations ``void (*callback)(int status, struct sa_path_rec *resp, unsigned int num_paths, void *context)`` function called when query completes, times out or is canceled ``void *context`` opaque user context passed to callback ``struct ib_sa_query **sa_query`` query context, used to cancel query **Description** Send a Path Record Get query to the SA to look up a path. The callback function will be called when the query completes (or fails); status is 0 for a successful response, -EINTR if the query is canceled, -ETIMEDOUT is the query timed out, or -EIO if an error occurred sending the query. The resp parameter of the callback is only valid if status is 0. If the return value of ib_sa_path_rec_get() is negative, it is an error code. Otherwise it is a query ID that can be used to cancel the query.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj4h]”hŒ Parameters”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mkhj.ubjø)�”}”(hhh]”(jý)�”}”(hŒ*``struct ib_sa_client *client`` SA client ”h]”(j)�”}”(hŒ``struct ib_sa_client *client``”h]”j )�”}”(hjSh]”hŒstruct ib_sa_client *client”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´MhhjMubj)�”}”(hhh]”hÝ)�”}”(hŒ SA client”h]”hŒ SA client”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jhh´Mhhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jhh´MhhjJubjý)�”}”(hŒ5``struct ib_device *device`` device to send query on ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjŒh]”hŒstruct ib_device *device”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mihj†ubj)�”}”(hhh]”hÝ)�”}”(hŒdevice to send query on”h]”hŒdevice to send query on”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¡h´Mihj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¡h´MihjJubjý)�”}”(hŒ.``u32 port_num`` port number to send query on ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjÅh]”hŒ u32 port_num”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mjhj¿ubj)�”}”(hhh]”hÝ)�”}”(hŒport number to send query on”h]”hŒport number to send query on”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÚh´MjhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÚh´MjhjJubjý)�”}”(hŒ9``struct sa_path_rec *rec`` Path Record to send in query ”h]”(j)�”}”(hŒ``struct sa_path_rec *rec``”h]”j )�”}”(hjþh]”hŒstruct sa_path_rec *rec”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mkhjøubj)�”}”(hhh]”hÝ)�”}”(hŒPath Record to send in query”h]”hŒPath Record to send in query”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mkhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´MkhjJubjý)�”}”(hŒ>``ib_sa_comp_mask comp_mask`` component mask to send in query ”h]”(j)�”}”(hŒ``ib_sa_comp_mask comp_mask``”h]”j )�”}”(hj7h]”hŒib_sa_comp_mask comp_mask”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mlhj1ubj)�”}”(hhh]”hÝ)�”}”(hŒcomponent mask to send in query”h]”hŒcomponent mask to send in query”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jLh´MlhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jLh´MlhjJubjý)�”}”(hŒ7``unsigned long timeout_ms`` time to wait for response ”h]”(j)�”}”(hŒ``unsigned long timeout_ms``”h]”j )�”}”(hjph]”hŒunsigned long timeout_ms”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mmhjjubj)�”}”(hhh]”hÝ)�”}”(hŒtime to wait for response”h]”hŒtime to wait for response”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j…h´Mmhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j…h´MmhjJubjý)�”}”(hŒ<``gfp_t gfp_mask`` GFP mask to use for internal allocations ”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&]”uh1jhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mnhj£ubj)�”}”(hhh]”hÝ)�”}”(hŒ(GFP mask to use for internal allocations”h]”hŒ(GFP mask to use for internal allocations”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¾h´Mnhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¾h´MnhjJubjý)�”}”(hŒ¡``void (*callback)(int status, struct sa_path_rec *resp, unsigned int num_paths, void *context)`` function called when query completes, times out or is canceled ”h]”(j)�”}”(hŒa``void (*callback)(int status, struct sa_path_rec *resp, unsigned int num_paths, void *context)``”h]”j )�”}”(hjâh]”hŒ]void (*callback)(int status, struct sa_path_rec *resp, unsigned int num_paths, void *context)”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´MphjÜubj)�”}”(hhh]”hÝ)�”}”(hŒ>function called when query completes, times out or is canceled”h]”hŒ>function called when query completes, times out or is canceled”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mohjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j÷h´MphjJubjý)�”}”(hŒ9``void *context`` opaque user context passed to callback ”h]”(j)�”}”(hŒ``void *context``”h]”j )�”}”(hjh]”hŒ void *context”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mqhjubj)�”}”(hhh]”hÝ)�”}”(hŒ&opaque user context passed to callback”h]”hŒ&opaque user context passed to callback”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j1h´Mqhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j1h´MqhjJubjý)�”}”(hŒF``struct ib_sa_query **sa_query`` query context, used to cancel query ”h]”(j)�”}”(hŒ!``struct ib_sa_query **sa_query``”h]”j )�”}”(hjUh]”hŒstruct ib_sa_query **sa_query”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´MrhjOubj)�”}”(hhh]”hÝ)�”}”(hŒ#query context, used to cancel query”h]”hŒ#query context, used to cancel query”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jjh´Mrhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jjh´MrhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj.ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj�h]”hŒ Description”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mthj.ubhÝ)�”}”(hXaSend a Path Record Get query to the SA to look up a path. The callback function will be called when the query completes (or fails); status is 0 for a successful response, -EINTR if the query is canceled, -ETIMEDOUT is the query timed out, or -EIO if an error occurred sending the query. The resp parameter of the callback is only valid if status is 0.”h]”hXaSend a Path Record Get query to the SA to look up a path. The callback function will be called when the query completes (or fails); status is 0 for a successful response, -EINTR if the query is canceled, -ETIMEDOUT is the query timed out, or -EIO if an error occurred sending the query. The resp parameter of the callback is only valid if status is 0.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mshj.ubhÝ)�”}”(hŒ�If the return value of ib_sa_path_rec_get() is negative, it is an error code. Otherwise it is a query ID that can be used to cancel the query.”h]”hŒ�If the return value of ib_sa_path_rec_get() is negative, it is an error code. Otherwise it is a query ID that can be used to cancel the query.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mzhj.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ib_sa_service_rec_get (C function)”Œc.ib_sa_service_rec_get”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hXSint ib_sa_service_rec_get (struct ib_sa_client *client, struct ib_device *device, u32 port_num, struct sa_service_rec *rec, ib_sa_comp_mask comp_mask, unsigned long timeout_ms, gfp_t gfp_mask, void (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context), void *context, struct ib_sa_query **sa_query)”h]”j")�”}”(hXRint ib_sa_service_rec_get(struct ib_sa_client *client, struct ib_device *device, u32 port_num, struct sa_service_rec *rec, ib_sa_comp_mask comp_mask, unsigned long timeout_ms, gfp_t gfp_mask, void (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context), void *context, struct ib_sa_query **sa_query)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjàh²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mèubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàh²hh³jòh´Mèubjš)�”}”(hŒib_sa_service_rec_get”h]”jN)�”}”(hŒib_sa_service_rec_get”h]”hŒib_sa_service_rec_get”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjàh²hh³jòh´Mèubj·)�”}”(hX9(struct ib_sa_client *client, struct ib_device *device, u32 port_num, struct sa_service_rec *rec, ib_sa_comp_mask comp_mask, unsigned long timeout_ms, gfp_t gfp_mask, void (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context), void *context, struct ib_sa_query **sa_query)”h]”(j½)�”}”(hŒstruct ib_sa_client *client”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubh)�”}”(hhh]”jN)�”}”(hŒ ib_sa_client”h]”hŒ ib_sa_client”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jAŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjsbŒc.ib_sa_service_rec_get”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubjN)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j³Œmodname”NŒ classname”Njkjn)�”}”jq]”j[Œc.ib_sa_service_rec_get”†”asbuh1hhj�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ u32 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”j[Œc.ib_sa_service_rec_get”†”asbuh1hhjÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒstruct sa_service_rec *rec”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGubh)�”}”(hhh]”jN)�”}”(hŒsa_service_rec”h]”hŒsa_service_rec”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jkŒmodname”NŒ classname”Njkjn)�”}”jq]”j[Œc.ib_sa_service_rec_get”†”asbuh1hhjGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjGubjN)�”}”(hŒrec”h]”hŒrec”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒib_sa_comp_mask comp_mask”h]”(h)�”}”(hhh]”jN)�”}”(hŒib_sa_comp_mask”h]”hŒib_sa_comp_mask”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÀŒmodname”NŒ classname”Njkjn)�”}”jq]”j[Œc.ib_sa_service_rec_get”†”asbuh1hhj·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj·ubjN)�”}”(hŒ comp_mask”h]”hŒ comp_mask”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒunsigned long timeout_ms”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿubjN)�”}”(hŒ timeout_ms”h]”hŒ timeout_ms”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”jN)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jYŒmodname”NŒ classname”Njkjn)�”}”jq]”j[Œc.ib_sa_service_rec_get”†”asbuh1hhjPubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPubjN)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒcvoid (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜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˜ubjN)�”}”(hŒcallback”h]”hŒcallback”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜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˜ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFa•h"]”h$]”h&]”uh1j9hj˜ubjN)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜ubj‰)�”}”(hjŽäh]”hŒ,”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜ubh)�”}”(hhh]”jN)�”}”(hŒsa_service_rec”h]”hŒsa_service_rec”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j_Œmodname”NŒ classname”Njkjn)�”}”jq]”j[Œc.ib_sa_service_rec_get”†”asbuh1hhj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜ubjN)�”}”(hŒresp”h]”hŒresp”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜ubj‰)�”}”(hjŽä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 ]”jFah"]”h$]”h&]”uh1j9hj˜ubjý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜ubjN)�”}”(hŒ num_services”h]”hŒ num_services”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜ubj‰)�”}”(hjŽä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 ]”jFah"]”h$]”h&]”uh1j9hj˜ubjý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜ubjN)�”}”(hŒcontext”h]”hŒcontext”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜ubj‰)�”}”(hj*äh]”hŒ)”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ void *context”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjk ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjk ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjk ubjN)�”}”(hŒcontext”h]”hŒcontext”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjk ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒstruct ib_sa_query **sa_query”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj­ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­ ubh)�”}”(hhh]”jN)�”}”(hŒ ib_sa_query”h]”hŒ ib_sa_query”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÌ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÑ Œmodname”NŒ classname”Njkjn)�”}”jq]”j[Œc.ib_sa_service_rec_get”†”asbuh1hhj­ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­ 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­ ubjN)�”}”(hŒsa_query”h]”hŒsa_query”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj­ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjàh²hh³jòh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÜh²hh³jòh´Mèubah}”(h]”j×ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jòh´MèhjÙh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒStart a Service get query”h]”hŒStart a Service get query”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mèhj< h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÙh²hh³jòh´Mèubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjW jÓjW jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXÛ**Parameters** ``struct ib_sa_client *client`` SA client ``struct ib_device *device`` device to send query on ``u32 port_num`` port number to send query on ``struct sa_service_rec *rec`` Service Record to send in query ``ib_sa_comp_mask comp_mask`` component mask to send in query ``unsigned long timeout_ms`` time to wait for response ``gfp_t gfp_mask`` GFP mask to use for internal allocations ``void (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context)`` function called when query completes, times out or is canceled ``void *context`` opaque user context passed to callback ``struct ib_sa_query **sa_query`` query context, used to cancel query **Description** Send a Service Record Get query to the SA to look up a path. The callback function will be called when the query completes (or fails); status is 0 for a successful response, -EINTR if the query is canceled, -ETIMEDOUT is the query timed out, or -EIO if an error occurred sending the query. The resp parameter of the callback is only valid if status is 0. If the return value of ib_sa_service_rec_get() is negative, it is an error code. Otherwise it is a query ID that can be used to cancel the query.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mìhj[ ubjø)�”}”(hhh]”(jý)�”}”(hŒ*``struct ib_sa_client *client`` SA client ”h]”(j)�”}”(hŒ``struct ib_sa_client *client``”h]”j )�”}”(hj€ h]”hŒstruct ib_sa_client *client”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Méhjz ubj)�”}”(hhh]”hÝ)�”}”(hŒ SA client”h]”hŒ SA client”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ5``struct ib_device *device`` device to send query on ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj¹ h]”hŒstruct ib_device *device”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mêhj³ ubj)�”}”(hhh]”hÝ)�”}”(hŒdevice to send query on”h]”hŒdevice to send query on”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ.``u32 port_num`` port number to send query on ”h]”(j)�”}”(hŒ``u32 port_num``”h]”j )�”}”(hjò h]”hŒ u32 port_num”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mëhjì ubj)�”}”(hhh]”hÝ)�”}”(hŒport number to send query on”h]”hŒport number to send query on”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ?``struct sa_service_rec *rec`` Service Record to send in query ”h]”(j)�”}”(hŒ``struct sa_service_rec *rec``”h]”j )�”}”(hj+ h]”hŒstruct sa_service_rec *rec”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mìhj% ubj)�”}”(hhh]”hÝ)�”}”(hŒService Record to send in query”h]”hŒService Record to send in query”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j@ h´MìhjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj% ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j@ h´Mìhjw ubjý)�”}”(hŒ>``ib_sa_comp_mask comp_mask`` component mask to send in query ”h]”(j)�”}”(hŒ``ib_sa_comp_mask comp_mask``”h]”j )�”}”(hjd h]”hŒib_sa_comp_mask comp_mask”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Míhj^ ubj)�”}”(hhh]”hÝ)�”}”(hŒcomponent mask to send in query”h]”hŒcomponent mask to send in query”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jy h´Míhjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jy h´Míhjw ubjý)�”}”(hŒ7``unsigned long timeout_ms`` time to wait for response ”h]”(j)�”}”(hŒ``unsigned long timeout_ms``”h]”j )�”}”(hj� h]”hŒunsigned long timeout_ms”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj› ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mîhj— ubj)�”}”(hhh]”hÝ)�”}”(hŒtime to wait for response”h]”hŒtime to wait for response”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ<``gfp_t gfp_mask`` GFP mask to use for internal allocations ”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&]”uh1jhjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´MïhjÐ ubj)�”}”(hhh]”hÝ)�”}”(hŒ(GFP mask to use for internal allocations”h]”hŒ(GFP mask to use for internal allocations”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context)`` function called when query completes, times out or is canceled ”h]”(j)�”}”(hŒg``void (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context)``”h]”j )�”}”(hj h]”hŒcvoid (*callback)(int status, struct sa_service_rec *resp, unsigned int num_services, void *context)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mñhj ubj)�”}”(hhh]”hÝ)�”}”(hŒ>function called when query completes, times out or is canceled”h]”hŒ>function called when query completes, times out or is canceled”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mðhj% ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j$ h´Mñhjw ubjý)�”}”(hŒ9``void *context`` opaque user context passed to callback ”h]”(j)�”}”(hŒ``void *context``”h]”j )�”}”(hjI h]”hŒ void *context”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´MòhjC ubj)�”}”(hhh]”hÝ)�”}”(hŒ&opaque user context passed to callback”h]”hŒ&opaque user context passed to callback”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^ h´Mòhj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j^ h´Mòhjw ubjý)�”}”(hŒF``struct ib_sa_query **sa_query`` query context, used to cancel query ”h]”(j)�”}”(hŒ!``struct ib_sa_query **sa_query``”h]”j )�”}”(hj‚ h]”hŒstruct ib_sa_query **sa_query”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Móhj| ubj)�”}”(hhh]”hÝ)�”}”(hŒ#query context, used to cancel query”h]”hŒ#query context, used to cancel query”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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[ ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj½ h]”hŒ Description”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj» ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mõhj[ ubhÝ)�”}”(hXdSend a Service Record Get query to the SA to look up a path. The callback function will be called when the query completes (or fails); status is 0 for a successful response, -EINTR if the query is canceled, -ETIMEDOUT is the query timed out, or -EIO if an error occurred sending the query. The resp parameter of the callback is only valid if status is 0.”h]”hXdSend a Service Record Get query to the SA to look up a path. The callback function will be called when the query completes (or fails); status is 0 for a successful response, -EINTR if the query is canceled, -ETIMEDOUT is the query timed out, or -EIO if an error occurred sending the query. The resp parameter of the callback is only valid if status is 0.”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Môhj[ ubhÝ)�”}”(hŒ‘If the return value of ib_sa_service_rec_get() is negative, it is an error code. Otherwise it is a query ID that can be used to cancel the query.”h]”hŒ‘If the return value of ib_sa_service_rec_get() is negative, it is an error code. Otherwise it is a query ID that can be used to cancel the query.”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:34: ./drivers/infiniband/core/sa_query.c”h´Mûhj[ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_ud_header_init (C function)”Œc.ib_ud_header_init”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒÃint ib_ud_header_init (int payload_bytes, int lrh_present, int eth_present, int vlan_present, int grh_present, int ip_version, int udp_present, int immediate_present, struct ib_ud_header *header)”h]”j")�”}”(hŒÂint ib_ud_header_init(int payload_bytes, int lrh_present, int eth_present, int vlan_present, int grh_present, int ip_version, int udp_present, int immediate_present, struct ib_ud_header *header)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj h²hh³j h´M0ubjš)�”}”(hŒib_ud_header_init”h]”jN)�”}”(hŒib_ud_header_init”h]”hŒib_ud_header_init”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj. ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj h²hh³j h´M0ubj·)�”}”(hŒ­(int payload_bytes, int lrh_present, int eth_present, int vlan_present, int grh_present, int ip_version, int udp_present, int immediate_present, struct ib_ud_header *header)”h]”(j½)�”}”(hŒint payload_bytes”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjJ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJ ubjN)�”}”(hŒ payload_bytes”h]”hŒ payload_bytes”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjJ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒint lrh_present”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubjN)�”}”(hŒ lrh_present”h]”hŒ lrh_present”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒint eth_present”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj´ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj´ ubjN)�”}”(hŒ eth_present”h]”hŒ eth_present”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj´ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒint vlan_present”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjé ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjé ubjN)�”}”(hŒ vlan_present”h]”hŒ vlan_present”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjé ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒint grh_present”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒ grh_present”h]”hŒ grh_present”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒint ip_version”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjSubjN)�”}”(hŒ ip_version”h]”hŒ ip_version”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒint udp_present”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjˆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆubjN)�”}”(hŒ udp_present”h]”hŒ udp_present”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒint immediate_present”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj½ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½ubjN)�”}”(hŒimmediate_present”h]”hŒimmediate_present”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubj½)�”}”(hŒstruct ib_ud_header *header”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjòubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjòubh)�”}”(hhh]”jN)�”}”(hŒ ib_ud_header”h]”hŒ ib_ud_header”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj4 sbŒc.ib_ud_header_init”†”asbuh1hhjòubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjòubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjòubjN)�”}”(hŒheader”h]”hŒheader”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjF ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj h²hh³j h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj h²hh³j h´M0ubah}”(h]”j ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j h´M0hj h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒInitialize UD header structure”h]”hŒInitialize UD header structure”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M0hjvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj h²hh³j h´M0ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‘jÓj‘jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX!**Parameters** ``int payload_bytes`` Length of packet payload ``int lrh_present`` specify if LRH is present ``int eth_present`` specify if Eth header is present ``int vlan_present`` packet is tagged vlan ``int grh_present`` GRH flag (if non-zero, GRH will be included) ``int ip_version`` if non-zero, IP header, V4 or V6, will be included ``int udp_present`` if non-zero, UDP header will be included ``int immediate_present`` specify if immediate data is present ``struct ib_ud_header *header`` Structure to initialize”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj›h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M4hj•ubjø)�”}”(hhh]”(jý)�”}”(hŒ/``int payload_bytes`` Length of packet payload ”h]”(j)�”}”(hŒ``int payload_bytes``”h]”j )�”}”(hjºh]”hŒint payload_bytes”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M1hj´ubj)�”}”(hhh]”hÝ)�”}”(hŒLength of packet payload”h]”hŒLength of packet payload”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÏh´M1hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÏh´M1hj±ubjý)�”}”(hŒ.``int lrh_present`` specify if LRH is present ”h]”(j)�”}”(hŒ``int lrh_present``”h]”j )�”}”(hjóh]”hŒint lrh_present”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M2hjíubj)�”}”(hhh]”hÝ)�”}”(hŒspecify if LRH is present”h]”hŒspecify if LRH is present”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´M2hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´M2hj±ubjý)�”}”(hŒ5``int eth_present`` specify if Eth header is present ”h]”(j)�”}”(hŒ``int eth_present``”h]”j )�”}”(hj,h]”hŒint eth_present”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M3hj&ubj)�”}”(hhh]”hÝ)�”}”(hŒ specify if Eth header is present”h]”hŒ specify if Eth header is present”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jAh´M3hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jAh´M3hj±ubjý)�”}”(hŒ+``int vlan_present`` packet is tagged vlan ”h]”(j)�”}”(hŒ``int vlan_present``”h]”j )�”}”(hjeh]”hŒint vlan_present”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M4hj_ubj)�”}”(hhh]”hÝ)�”}”(hŒpacket is tagged vlan”h]”hŒpacket is tagged vlan”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jzh´M4hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jzh´M4hj±ubjý)�”}”(hŒA``int grh_present`` GRH flag (if non-zero, GRH will be included) ”h]”(j)�”}”(hŒ``int grh_present``”h]”j )�”}”(hjžh]”hŒint grh_present”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M5hj˜ubj)�”}”(hhh]”hÝ)�”}”(hŒ,GRH flag (if non-zero, GRH will be included)”h]”hŒ,GRH flag (if non-zero, GRH will be included)”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j³h´M5hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j³h´M5hj±ubjý)�”}”(hŒF``int ip_version`` if non-zero, IP header, V4 or V6, will be included ”h]”(j)�”}”(hŒ``int ip_version``”h]”j )�”}”(hj×h]”hŒint ip_version”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M6hjÑubj)�”}”(hhh]”hÝ)�”}”(hŒ2if non-zero, IP header, V4 or V6, will be included”h]”hŒ2if non-zero, IP header, V4 or V6, will be included”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jìh´M6hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jìh´M6hj±ubjý)�”}”(hŒ=``int udp_present`` if non-zero, UDP header will be included ”h]”(j)�”}”(hŒ``int udp_present``”h]”j )�”}”(hjh]”hŒint udp_present”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M7hj ubj)�”}”(hhh]”hÝ)�”}”(hŒ(if non-zero, UDP header will be included”h]”hŒ(if non-zero, UDP header will be included”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j%h´M7hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j%h´M7hj±ubjý)�”}”(hŒ?``int immediate_present`` specify if immediate data is present ”h]”(j)�”}”(hŒ``int immediate_present``”h]”j )�”}”(hjIh]”hŒint immediate_present”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M8hjCubj)�”}”(hhh]”hÝ)�”}”(hŒ$specify if immediate data is present”h]”hŒ$specify if immediate data is present”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^h´M8hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j^h´M8hj±ubjý)�”}”(hŒ7``struct ib_ud_header *header`` Structure to initialize”h]”(j)�”}”(hŒ``struct ib_ud_header *header``”h]”j )�”}”(hj‚h]”hŒstruct ib_ud_header *header”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M:hj|ubj)�”}”(hhh]”hÝ)�”}”(hŒStructure to initialize”h]”hŒStructure to initialize”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M9hj˜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×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_ud_header_pack (C function)”Œc.ib_ud_header_pack”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ>int ib_ud_header_pack (struct ib_ud_header *header, void *buf)”h]”j")�”}”(hŒ=int ib_ud_header_pack(struct ib_ud_header *header, void *buf)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjØh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØh²hh³jêh´M–ubjš)�”}”(hŒib_ud_header_pack”h]”jN)�”}”(hŒib_ud_header_pack”h]”hŒib_ud_header_pack”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjùubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjØh²hh³jêh´M–ubj·)�”}”(hŒ((struct ib_ud_header *header, void *buf)”h]”(j½)�”}”(hŒstruct ib_ud_header *header”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubh)�”}”(hhh]”jN)�”}”(hŒ ib_ud_header”h]”hŒ ib_ud_header”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j9Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÿsbŒc.ib_ud_header_pack”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubjN)�”}”(hŒheader”h]”hŒheader”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ void *buf”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡ubjN)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjØh²hh³jêh´M–ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÔh²hh³jêh´M–ubah}”(h]”jÏah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jêh´M–hjÑh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ&Pack UD header struct into wire format”h]”hŒ&Pack UD header struct into wire format”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M–hjÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÑh²hh³jêh´M–ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjöjÓjöjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒÞ**Parameters** ``struct ib_ud_header *header`` UD header struct ``void *buf`` Buffer to pack into **Description** ib_ud_header_pack() packs the UD header structure **header** into wire format in the buffer **buf**.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´Mšhjúubjø)�”}”(hhh]”(jý)�”}”(hŒ1``struct ib_ud_header *header`` UD header struct ”h]”(j)�”}”(hŒ``struct ib_ud_header *header``”h]”j )�”}”(hjh]”hŒstruct ib_ud_header *header”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M—hjubj)�”}”(hhh]”hÝ)�”}”(hŒUD header struct”h]”hŒUD header struct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j4h´M—hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j4h´M—hjubjý)�”}”(hŒ"``void *buf`` Buffer to pack into ”h]”(j)�”}”(hŒ ``void *buf``”h]”j )�”}”(hjXh]”hŒ void *buf”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M˜hjRubj)�”}”(hhh]”hÝ)�”}”(hŒBuffer to pack into”h]”hŒBuffer to pack into”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jmh´M˜hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jmh´M˜hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjúubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj“h]”hŒ Description”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´MšhjúubhÝ)�”}”(hŒdib_ud_header_pack() packs the UD header structure **header** into wire format in the buffer **buf**.”h]”(hŒ2ib_ud_header_pack() packs the UD header structure ”…”�”}”(hj©h²hh³Nh´Nubjâ)�”}”(hŒ **header**”h]”hŒheader”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj©ubhŒ into wire format in the buffer ”…”�”}”(hj©h²hh³Nh´Nubjâ)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj©ubhŒ.”…”�”}”(hj©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:37: ./drivers/infiniband/core/ud_header.c”h´M™hjúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#ib_umem_find_best_pgsz (C function)”Œc.ib_umem_find_best_pgsz”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`unsigned long ib_umem_find_best_pgsz (struct ib_umem *umem, unsigned long pgsz_bitmap, u64 virt)”h]”j")�”}”(hŒ_unsigned long ib_umem_find_best_pgsz(struct ib_umem *umem, unsigned long pgsz_bitmap, u64 virt)”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjøh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjøh²hh³j h´KHubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjøh²hh³j h´KHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjøh²hh³j h´KHubjš)�”}”(hŒib_umem_find_best_pgsz”h]”jN)�”}”(hŒib_umem_find_best_pgsz”h]”hŒib_umem_find_best_pgsz”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj5ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjøh²hh³j h´KHubj·)�”}”(hŒ;(struct ib_umem *umem, unsigned long pgsz_bitmap, u64 virt)”h]”(j½)�”}”(hŒstruct ib_umem *umem”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”juŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj;sbŒc.ib_umem_find_best_pgsz”†”asbuh1hhjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjQubjN)�”}”(hŒumem”h]”hŒumem”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjMubj½)�”}”(hŒunsigned long pgsz_bitmap”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÃubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÃubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÃubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÃubjN)�”}”(hŒ pgsz_bitmap”h]”hŒ pgsz_bitmap”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjMubj½)�”}”(hŒu64 virt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”j�Œc.ib_umem_find_best_pgsz”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒvirt”h]”hŒvirt”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjMubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjøh²hh³j h´KHubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjôh²hh³j h´KHubah}”(h]”jïah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j h´KHhjñh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ)Find best HW page size to use for this MR”h]”hŒ)Find best HW page size to use for this MR”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KHhjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjñh²hh³j h´KHubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‰jÓj‰jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX¬**Parameters** ``struct ib_umem *umem`` umem struct ``unsigned long pgsz_bitmap`` bitmap of HW supported page sizes ``u64 virt`` IOVA **Description** This helper is intended for HW that support multiple page sizes but can do only a single page size in an MR. Returns 0 if the umem requires page sizes not supported by the driver to be mapped. Drivers always supporting PAGE_SIZE or smaller will never see a 0 result.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj“h]”hŒ Parameters”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KLhj�ubjø)�”}”(hhh]”(jý)�”}”(hŒ%``struct ib_umem *umem`` umem struct ”h]”(j)�”}”(hŒ``struct ib_umem *umem``”h]”j )�”}”(hj²h]”hŒstruct ib_umem *umem”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KJhj¬ubj)�”}”(hhh]”hÝ)�”}”(hŒ umem struct”h]”hŒ umem struct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÇh´KJhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÇh´KJhj©ubjý)�”}”(hŒ@``unsigned long pgsz_bitmap`` bitmap of HW supported page sizes ”h]”(j)�”}”(hŒ``unsigned long pgsz_bitmap``”h]”j )�”}”(hjëh]”hŒunsigned long pgsz_bitmap”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KKhjåubj)�”}”(hhh]”hÝ)�”}”(hŒ!bitmap of HW supported page sizes”h]”hŒ!bitmap of HW supported page sizes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´KKhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´KKhj©ubjý)�”}”(hŒ``u64 virt`` IOVA ”h]”(j)�”}”(hŒ ``u64 virt``”h]”j )�”}”(hj$h]”hŒu64 virt”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KLhjubj)�”}”(hhh]”hÝ)�”}”(hŒIOVA”h]”hŒIOVA”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j9h´KLhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j9h´KLhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj�ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj_h]”hŒ Description”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KNhj�ubhÝ)�”}”(hŒlThis helper is intended for HW that support multiple page sizes but can do only a single page size in an MR.”h]”hŒlThis helper is intended for HW that support multiple page sizes but can do only a single page size in an MR.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KMhj�ubhÝ)�”}”(hŒ�Returns 0 if the umem requires page sizes not supported by the driver to be mapped. Drivers always supporting PAGE_SIZE or smaller will never see a 0 result.”h]”hŒ�Returns 0 if the umem requires page sizes not supported by the driver to be mapped. Drivers always supporting PAGE_SIZE or smaller will never see a 0 result.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´KPhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_umem_get_desc (C function)”Œc.ib_umem_get_desc”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒrstruct ib_umem * ib_umem_get_desc (struct ib_device *device, const struct ib_uverbs_buffer_desc *desc, int access)”h]”j")�”}”(hŒpstruct ib_umem *ib_umem_get_desc(struct ib_device *device, const struct ib_uverbs_buffer_desc *desc, int access)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¯h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯h²hh³jÀh´Mubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÔŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_get_desc”sbŒc.ib_umem_get_desc”†”asbuh1hhj¯h²hh³jÀh´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯h²hh³jÀh´Mubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¯h²hh³jÀh´Mubjš)�”}”(hŒib_umem_get_desc”h]”jN)�”}”(hjðh]”hŒib_umem_get_desc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¯h²hh³jÀh´Mubj·)�”}”(hŒP(struct ib_device *device, const struct ib_uverbs_buffer_desc *desc, int access)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jMŒmodname”NŒ classname”Njkjn)�”}”jq]”jîŒc.ib_umem_get_desc”†”asbuh1hhj)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj)ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj%ubj½)�”}”(hŒ(const struct ib_uverbs_buffer_desc *desc”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubh)�”}”(hhh]”jN)�”}”(hŒib_uverbs_buffer_desc”h]”hŒib_uverbs_buffer_desc”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jØŒmodname”NŒ classname”Njkjn)�”}”jq]”jîŒc.ib_umem_get_desc”†”asbuh1hhj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj™ubjN)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj%ubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj%ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¯h²hh³jÀh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj«h²hh³jÀh´Mubah}”(h]”j¦ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÀh´Mhj¨h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$Pin a umem from a buffer descriptor.”h]”hŒ$Pin a umem from a buffer descriptor.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mhjkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¨h²hh³jÀh´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj†jÓj†jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒð**Parameters** ``struct ib_device *device`` IB device. ``const struct ib_uverbs_buffer_desc *desc`` buffer descriptor (VA or DMABUF). ``int access`` IB access flags. **Return** caller-owned umem on success, ERR_PTR(...) on error.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MhjŠubjø)�”}”(hhh]”(jý)�”}”(hŒ(``struct ib_device *device`` IB device. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj¯h]”hŒstruct ib_device *device”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mhj©ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÄh´MhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÄh´Mhj¦ubjý)�”}”(hŒO``const struct ib_uverbs_buffer_desc *desc`` buffer descriptor (VA or DMABUF). ”h]”(j)�”}”(hŒ,``const struct ib_uverbs_buffer_desc *desc``”h]”j )�”}”(hjèh]”hŒ(const struct ib_uverbs_buffer_desc *desc”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mhjâubj)�”}”(hhh]”hÝ)�”}”(hŒ!buffer descriptor (VA or DMABUF).”h]”hŒ!buffer descriptor (VA or DMABUF).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jýh´Mhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jýh´Mhj¦ubjý)�”}”(hŒ ``int access`` IB access flags. ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hj!h]”hŒ int access”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mhjubj)�”}”(hhh]”hÝ)�”}”(hŒIB access flags.”h]”hŒIB access flags.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j6h´Mhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j6h´Mhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŠubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hj\h]”hŒReturn”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M hjŠubhÝ)�”}”(hŒ4caller-owned umem on success, ERR_PTR(...) on error.”h]”hŒ4caller-owned umem on success, ERR_PTR(...) on error.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M hjŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_umem_get_attr (C function)”Œc.ib_umem_get_attr”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŠstruct ib_umem * ib_umem_get_attr (struct ib_device *device, const struct uverbs_attr_bundle *attrs, u16 attr_id, size_t size, int access)”h]”j")�”}”(hŒˆstruct ib_umem *ib_umem_get_attr(struct ib_device *device, const struct uverbs_attr_bundle *attrs, u16 attr_id, size_t size, int access)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÄubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�h²hh³j®h´MÄubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÂŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_get_attr”sbŒc.ib_umem_get_attr”†”asbuh1hhj�h²hh³j®h´MÄubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�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Äubjš)�”}”(hŒib_umem_get_attr”h]”jN)�”}”(hjÞh]”hŒib_umem_get_attr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjüubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj�h²hh³j®h´MÄubj·)�”}”(hŒh(struct ib_device *device, const struct uverbs_attr_bundle *attrs, u16 attr_id, size_t size, int access)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j;Œmodname”NŒ classname”Njkjn)�”}”jq]”jÜŒc.ib_umem_get_attr”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ&const struct uverbs_attr_bundle *attrs”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡ubh)�”}”(hhh]”jN)�”}”(hŒuverbs_attr_bundle”h]”hŒuverbs_attr_bundle”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÆŒmodname”NŒ classname”Njkjn)�”}”jq]”jÜŒc.ib_umem_get_attr”†”asbuh1hhj‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡ubjN)�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ u16 attr_id”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”jÜŒc.ib_umem_get_attr”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒattr_id”h]”hŒattr_id”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jcŒmodname”NŒ classname”Njkjn)�”}”jq]”jÜŒc.ib_umem_get_attr”†”asbuh1hhjZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj�h²hh³j®h´MÄubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj™h²hh³j®h´MÄubah}”(h]”j”ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j®h´MÄhj–h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ-Pin a umem from a per-command UMEM attribute.”h]”hŒ-Pin a umem from a per-command UMEM attribute.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÄhjéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj–h²hh³j®h´MÄubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjjÓjjÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX}**Parameters** ``struct ib_device *device`` IB device. ``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ``u16 attr_id`` per-command UMEM attribute id. ``size_t size`` minimum required umem length. ``int access`` IB access flags. **Return** caller-owned umem on success; NULL when no source supplied a buffer; ERR_PTR(...) on error.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÈhjubjø)�”}”(hhh]”(jý)�”}”(hŒ(``struct ib_device *device`` IB device. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj-h]”hŒstruct ib_device *device”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÅhj'ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jBh´MÅhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jBh´MÅhj$ubjý)�”}”(hŒR``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ”h]”(j)�”}”(hŒ*``const struct uverbs_attr_bundle *attrs``”h]”j )�”}”(hjfh]”hŒ&const struct uverbs_attr_bundle *attrs”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÆhj`ubj)�”}”(hhh]”hÝ)�”}”(hŒ&uverbs attribute bundle (may be NULL).”h]”hŒ&uverbs attribute bundle (may be NULL).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 attr_id`` per-command UMEM attribute id. ”h]”(j)�”}”(hŒ``u16 attr_id``”h]”j )�”}”(hjŸh]”hŒ u16 attr_id”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÇhj™ubj)�”}”(hhh]”hÝ)�”}”(hŒper-command UMEM attribute id.”h]”hŒper-command UMEM attribute id.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 size`` minimum required umem length. ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hjØh]”hŒ size_t size”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÈhjÒubj)�”}”(hhh]”hÝ)�”}”(hŒminimum required umem length.”h]”hŒminimum required umem length.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 access`` IB access flags. ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hjh]”hŒ int access”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÉhj ubj)�”}”(hhh]”hÝ)�”}”(hŒIB access flags.”h]”hŒIB access flags.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hjLh]”hŒReturn”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MËhjubhÝ)�”}”(hŒ[caller-owned umem on success; NULL when no source supplied a buffer; ERR_PTR(...) on error.”h]”hŒ[caller-owned umem on success; NULL when no source supplied a buffer; ERR_PTR(...) on error.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MËhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#ib_umem_get_attr_or_va (C function)”Œc.ib_umem_get_attr_or_va”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒšstruct ib_umem * ib_umem_get_attr_or_va (struct ib_device *device, const struct uverbs_attr_bundle *attrs, u16 attr_id, u64 addr, size_t size, int access)”h]”j")�”}”(hŒ˜struct ib_umem *ib_umem_get_attr_or_va(struct ib_device *device, const struct uverbs_attr_bundle *attrs, u16 attr_id, u64 addr, size_t size, int access)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�h²hh³jžh´MØubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j²Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_get_attr_or_va”sbŒc.ib_umem_get_attr_or_va”†”asbuh1hhj�h²hh³jžh´MØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�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Øubjš)�”}”(hŒib_umem_get_attr_or_va”h]”jN)�”}”(hjÎh]”hŒib_umem_get_attr_or_va”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjìubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj�h²hh³jžh´MØubj·)�”}”(hŒr(struct ib_device *device, const struct uverbs_attr_bundle *attrs, u16 attr_id, u64 addr, size_t size, int access)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j+Œmodname”NŒ classname”Njkjn)�”}”jq]”jÌŒc.ib_umem_get_attr_or_va”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ&const struct uverbs_attr_bundle *attrs”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ•Kh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwubh)�”}”(hhh]”jN)�”}”(hŒuverbs_attr_bundle”h]”hŒuverbs_attr_bundle”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¶Œmodname”NŒ classname”Njkjn)�”}”jq]”jÌŒc.ib_umem_get_attr_or_va”†”asbuh1hhjwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjwubjN)�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ u16 attr_id”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j Œmodname”NŒ classname”Njkjn)�”}”jq]”jÌŒc.ib_umem_get_attr_or_va”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒattr_id”h]”hŒattr_id”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒu64 addr”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jSŒmodname”NŒ classname”Njkjn)�”}”jq]”jÌŒc.ib_umem_get_attr_or_va”†”asbuh1hhjJubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJubjN)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j›Œmodname”NŒ classname”Njkjn)�”}”jq]”jÌŒc.ib_umem_get_attr_or_va”†”asbuh1hhj’ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj’ubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj�h²hh³jžh´MØubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj‰h²hh³jžh´MØubah}”(h]”j„ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jžh´MØhj†h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒGPin a umem from a per-command UMEM attribute, falling back to a UHW VA.”h]”hŒGPin a umem from a per-command UMEM attribute, falling back to a UHW VA.”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MØhj! h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj†h²hh³jžh´MØubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj< jÓj< jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXb**Parameters** ``struct ib_device *device`` IB device. ``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ``u16 attr_id`` per-command UMEM attribute id. ``u64 addr`` UHW user VA used when no per-command attribute matched. ``size_t size`` on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin. ``int access`` IB access flags. **Description** Like ib_umem_get_attr(), but pins **addr**/**size** when no per-command UMEM attribute is supplied. IMPORTANT: **size** is always consumed. On the attr / legacy paths it is used as the post-pin minimum-length check; on the VA fallback path it is the length to pin. Callers MUST pass a meaningful, validated value even when they expect an attribute-supplied buffer to be used. Every in-tree caller passes the same value for the two roles of **size** because no driver today distinguishes a user-passed buffer length from a driver-computed minimum. Drivers that currently accept a user-supplied length without cross-checking it against a driver minimum (vmw_pvrdma CQ/QP/SRQ, qedr CQ/QP/SRQ, mana WQ/QP, ionic CQ/QP), once tightened to compute and check a real minimum, will want to introduce a separate helper that passes these as distinct values. **Return** caller-owned umem on success, ERR_PTR(...) on error.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÜhj@ ubjø)�”}”(hhh]”(jý)�”}”(hŒ(``struct ib_device *device`` IB device. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hje h]”hŒstruct ib_device *device”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÚhj_ ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒR``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ”h]”(j)�”}”(hŒ*``const struct uverbs_attr_bundle *attrs``”h]”j )�”}”(hjž h]”hŒ&const struct uverbs_attr_bundle *attrs”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÛhj˜ ubj)�”}”(hhh]”hÝ)�”}”(hŒ&uverbs attribute bundle (may be NULL).”h]”hŒ&uverbs attribute bundle (may be NULL).”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 attr_id`` per-command UMEM attribute id. ”h]”(j)�”}”(hŒ``u16 attr_id``”h]”j )�”}”(hj× h]”hŒ u16 attr_id”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÜhjÑ ubj)�”}”(hhh]”hÝ)�”}”(hŒper-command UMEM attribute id.”h]”hŒper-command UMEM attribute id.”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``u64 addr`` UHW user VA used when no per-command attribute matched. ”h]”(j)�”}”(hŒ ``u64 addr``”h]”j )�”}”(hj!h]”hŒu64 addr”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÝhj !ubj)�”}”(hhh]”hÝ)�”}”(hŒ7UHW user VA used when no per-command attribute matched.”h]”hŒ7UHW user VA used when no per-command attribute matched.”…”�”}”(hj)!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 size`` on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin. ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hjI!h]”hŒ size_t size”…”�”}”(hjK!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MßhjC!ubj)�”}”(hhh]”hÝ)�”}”(hŒ|on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin.”h]”hŒ|on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin.”…”�”}”(hjb!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MÞhj_!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j^!h´Mßhj\ ubjý)�”}”(hŒ ``int access`` IB access flags. ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hjƒ!h]”hŒ int access”…”�”}”(hj…!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Màhj}!ubj)�”}”(hhh]”hÝ)�”}”(hŒIB access flags.”h]”hŒIB access flags.”…”�”}”(hjœ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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@ ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj¾!h]”hŒ Description”…”�”}”(hjÀ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¼!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mâhj@ ubhÝ)�”}”(hŒcLike ib_umem_get_attr(), but pins **addr**/**size** when no per-command UMEM attribute is supplied.”h]”(hŒ"Like ib_umem_get_attr(), but pins ”…”�”}”(hjÔ!h²hh³Nh´Nubjâ)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hjÜ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÔ!ubhŒ/”…”�”}”(hjÔ!h²hh³Nh´Nubjâ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hjî!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÔ!ubhŒ0 when no per-command UMEM attribute is supplied.”…”�”}”(hjÔ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Máhj@ ubhÝ)�”}”(hXIMPORTANT: **size** is always consumed. On the attr / legacy paths it is used as the post-pin minimum-length check; on the VA fallback path it is the length to pin. Callers MUST pass a meaningful, validated value even when they expect an attribute-supplied buffer to be used.”h]”(hŒ IMPORTANT: ”…”�”}”(hj"h²hh³Nh´Nubjâ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj"ubhX is always consumed. On the attr / legacy paths it is used as the post-pin minimum-length check; on the VA fallback path it is the length to pin. Callers MUST pass a meaningful, validated value even when they expect an attribute-supplied buffer to be used.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mähj@ ubhÝ)�”}”(hXÖEvery in-tree caller passes the same value for the two roles of **size** because no driver today distinguishes a user-passed buffer length from a driver-computed minimum. Drivers that currently accept a user-supplied length without cross-checking it against a driver minimum (vmw_pvrdma CQ/QP/SRQ, qedr CQ/QP/SRQ, mana WQ/QP, ionic CQ/QP), once tightened to compute and check a real minimum, will want to introduce a separate helper that passes these as distinct values.”h]”(hŒ@Every in-tree caller passes the same value for the two roles of ”…”�”}”(hj("h²hh³Nh´Nubjâ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hj0"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj("ubhXŽ because no driver today distinguishes a user-passed buffer length from a driver-computed minimum. Drivers that currently accept a user-supplied length without cross-checking it against a driver minimum (vmw_pvrdma CQ/QP/SRQ, qedr CQ/QP/SRQ, mana WQ/QP, ionic CQ/QP), once tightened to compute and check a real minimum, will want to introduce a separate helper that passes these as distinct values.”…”�”}”(hj("h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Méhj@ ubhÝ)�”}”(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&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mñhj@ ubhÝ)�”}”(hŒ4caller-owned umem on success, ERR_PTR(...) on error.”h]”hŒ4caller-owned umem on success, ERR_PTR(...) on error.”…”�”}”(hja"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mòhj@ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_umem_get_cq_buf (C function)”Œc.ib_umem_get_cq_buf”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒstruct ib_umem * ib_umem_get_cq_buf (struct ib_device *device, const struct uverbs_attr_bundle *attrs, size_t size, int access)”h]”j")�”}”(hŒ}struct ib_umem *ib_umem_get_cq_buf(struct ib_device *device, const struct uverbs_attr_bundle *attrs, size_t size, int access)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjŒ"h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ"h²hh³j�"h´M1ubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(hj¯"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¬"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j±"Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_get_cq_buf”sbŒc.ib_umem_get_cq_buf”†”asbuh1hhjŒ"h²hh³j�"h´M1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ"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´M1ubjš)�”}”(hŒib_umem_get_cq_buf”h]”jN)�”}”(hjÍ"h]”hŒib_umem_get_cq_buf”…”�”}”(hjï"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjë"ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjŒ"h²hh³j�"h´M1ubj·)�”}”(hŒ[(struct ib_device *device, const struct uverbs_attr_bundle *attrs, size_t size, int access)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj(#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj%#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j*#Œmodname”NŒ classname”Njkjn)�”}”jq]”jË"Œc.ib_umem_get_cq_buf”†”asbuh1hhj#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjT#h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj#ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hja#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubj½)�”}”(hŒ&const struct uverbs_attr_bundle *attrs”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjz#h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjv#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjv#ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj•#h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjv#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjv#ubh)�”}”(hhh]”jN)�”}”(hŒuverbs_attr_bundle”h]”hŒuverbs_attr_bundle”…”�”}”(hj³#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj°#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jµ#Œmodname”NŒ classname”Njkjn)�”}”jq]”jË"Œc.ib_umem_get_cq_buf”†”asbuh1hhjv#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjv#ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjß#h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjv#ubjN)�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hjì#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjv#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubj½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j $Œmodname”NŒ classname”Njkjn)�”}”jq]”jË"Œc.ib_umem_get_cq_buf”†”asbuh1hhj$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$ubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj4$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjM$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjI$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjI$ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hji$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjI$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjŒ"h²hh³j�"h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjˆ"h²hh³j�"h´M1ubah}”(h]”jƒ"ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j�"h´M1hj…"h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ1Pin a CQ buffer umem from per-command attributes.”h]”hŒ1Pin a CQ buffer umem from per-command attributes.”…”�”}”(hj“$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M1hj�$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj…"h²hh³j�"h´M1ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj«$jÓj«$jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXB**Parameters** ``struct ib_device *device`` IB device. ``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ``size_t size`` minimum required CQ buffer length. ``int access`` IB access flags. **Description** Resolves the CQ buffer from the new UMEM attribute or the legacy CQ buffer attributes. There is no UHW VA fallback, so the caller must arrange its own backing (typically an in-kernel allocation) when no source is available. **Return** caller-owned umem on success; NULL when no source supplied a buffer; ERR_PTR(...) on error.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjµ$h]”hŒ Parameters”…”�”}”(hj·$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj³$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M5hj¯$ubjø)�”}”(hhh]”(jý)�”}”(hŒ(``struct ib_device *device`` IB device. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjÔ$h]”hŒstruct ib_device *device”…”�”}”(hjÖ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M2hjÎ$ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(hjí$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jé$h´M2hjê$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jé$h´M2hjË$ubjý)�”}”(hŒR``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ”h]”(j)�”}”(hŒ*``const struct uverbs_attr_bundle *attrs``”h]”j )�”}”(hj %h]”hŒ&const struct uverbs_attr_bundle *attrs”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M3hj%ubj)�”}”(hhh]”hÝ)�”}”(hŒ&uverbs attribute bundle (may be NULL).”h]”hŒ&uverbs attribute bundle (may be NULL).”…”�”}”(hj&%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j"%h´M3hj#%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j"%h´M3hjË$ubjý)�”}”(hŒ3``size_t size`` minimum required CQ buffer length. ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hjF%h]”hŒ size_t size”…”�”}”(hjH%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M4hj@%ubj)�”}”(hhh]”hÝ)�”}”(hŒ"minimum required CQ buffer length.”h]”hŒ"minimum required CQ buffer length.”…”�”}”(hj_%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j[%h´M4hj\%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j[%h´M4hjË$ubjý)�”}”(hŒ ``int access`` IB access flags. ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hj%h]”hŒ int access”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M5hjy%ubj)�”}”(hhh]”hÝ)�”}”(hŒIB access flags.”h]”hŒIB access flags.”…”�”}”(hj˜%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”%h´M5hj•%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”%h´M5hjË$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¯$ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjº%h]”hŒ Description”…”�”}”(hj¼%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¸%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M7hj¯$ubhÝ)�”}”(hŒßResolves the CQ buffer from the new UMEM attribute or the legacy CQ buffer attributes. There is no UHW VA fallback, so the caller must arrange its own backing (typically an in-kernel allocation) when no source is available.”h]”hŒßResolves the CQ buffer from the new UMEM attribute or the legacy CQ buffer attributes. There is no UHW VA fallback, so the caller must arrange its own backing (typically an in-kernel allocation) when no source is available.”…”�”}”(hjÐ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M6hj¯$ubhÝ)�”}”(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&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M;hj¯$ubhÝ)�”}”(hŒ[caller-owned umem on success; NULL when no source supplied a buffer; ERR_PTR(...) on error.”h]”hŒ[caller-owned umem on success; NULL when no source supplied a buffer; ERR_PTR(...) on error.”…”�”}”(hj÷%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´M<hj¯$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%ib_umem_get_cq_buf_or_va (C function)”Œc.ib_umem_get_cq_buf_or_va”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ�struct ib_umem * ib_umem_get_cq_buf_or_va (struct ib_device *device, const struct uverbs_attr_bundle *attrs, u64 addr, size_t size, int access)”h]”j")�”}”(hŒ�struct ib_umem *ib_umem_get_cq_buf_or_va(struct ib_device *device, const struct uverbs_attr_bundle *attrs, u64 addr, size_t size, int access)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj&&h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj"&h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MKubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"&h²hh³j3&h´MKubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(hjE&h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjB&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jG&Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_get_cq_buf_or_va”sbŒc.ib_umem_get_cq_buf_or_va”†”asbuh1hhj"&h²hh³j3&h´MKubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"&h²hh³j3&h´MKubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjt&h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj"&h²hh³j3&h´MKubjš)�”}”(hŒib_umem_get_cq_buf_or_va”h]”jN)�”}”(hjc&h]”hŒib_umem_get_cq_buf_or_va”…”�”}”(hj…&h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�&ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj"&h²hh³j3&h´MKubj·)�”}”(hŒe(struct ib_device *device, const struct uverbs_attr_bundle *attrs, u64 addr, size_t size, int access)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjœ&ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjœ&ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj¾&h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj»&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÀ&Œmodname”NŒ classname”Njkjn)�”}”jq]”ja&Œc.ib_umem_get_cq_buf_or_va”†”asbuh1hhjœ&ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjœ&ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjê&h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjœ&ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj÷&h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjœ&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj˜&ubj½)�”}”(hŒ&const struct uverbs_attr_bundle *attrs”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj 'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj 'ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj+'h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj 'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj 'ubh)�”}”(hhh]”jN)�”}”(hŒuverbs_attr_bundle”h]”hŒuverbs_attr_bundle”…”�”}”(hjI'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjF'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jK'Œmodname”NŒ classname”Njkjn)�”}”jq]”ja&Œc.ib_umem_get_cq_buf_or_va”†”asbuh1hhj 'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj 'ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hju'h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj 'ubjN)�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hj‚'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj 'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj˜&ubj½)�”}”(hŒu64 addr”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjž'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj›'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j 'Œmodname”NŒ classname”Njkjn)�”}”jq]”ja&Œc.ib_umem_get_cq_buf_or_va”†”asbuh1hhj—'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—'ubjN)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjÊ'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj—'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj˜&ubj½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjæ'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjã'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jè'Œmodname”NŒ classname”Njkjn)�”}”jq]”ja&Œc.ib_umem_get_cq_buf_or_va”†”asbuh1hhjß'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß'ubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjß'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj˜&ubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj+(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj'(ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'(ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hjG(h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj'(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj˜&ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj"&h²hh³j3&h´MKubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj&h²hh³j3&h´MKubah}”(h]”j&ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j3&h´MKhj&h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ*Pin a CQ buffer umem with UHW VA fallback.”h]”hŒ*Pin a CQ buffer umem with UHW VA fallback.”…”�”}”(hjq(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MKhjn(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj&h²hh³j3&h´MKubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‰(jÓj‰(jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_device *device`` IB device. ``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ``u64 addr`` UHW user VA used when no per-command attribute matched. ``size_t size`` on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin. ``int access`` IB access flags. **Description** Like ib_umem_get_cq_buf(), but pins **addr**/**size** when neither the UMEM attribute nor the legacy CQ buffer attributes are supplied. See ib_umem_get_attr_or_va() for the note on **size**'s dual role and the migration path for drivers that would distinguish a user-supplied length from a driver-computed minimum. **Return** caller-owned umem on success, ERR_PTR(...) on error.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj“(h]”hŒ Parameters”…”�”}”(hj•(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj‘(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MOhj�(ubjø)�”}”(hhh]”(jý)�”}”(hŒ(``struct ib_device *device`` IB device. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj²(h]”hŒstruct ib_device *device”…”�”}”(hj´(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MLhj¬(ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(hjË(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÇ(h´MLhjÈ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÇ(h´MLhj©(ubjý)�”}”(hŒR``const struct uverbs_attr_bundle *attrs`` uverbs attribute bundle (may be NULL). ”h]”(j)�”}”(hŒ*``const struct uverbs_attr_bundle *attrs``”h]”j )�”}”(hjë(h]”hŒ&const struct uverbs_attr_bundle *attrs”…”�”}”(hjí(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MMhjå(ubj)�”}”(hhh]”hÝ)�”}”(hŒ&uverbs attribute bundle (may be NULL).”h]”hŒ&uverbs attribute bundle (may be NULL).”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j)h´MMhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j)h´MMhj©(ubjý)�”}”(hŒE``u64 addr`` UHW user VA used when no per-command attribute matched. ”h]”(j)�”}”(hŒ ``u64 addr``”h]”j )�”}”(hj$)h]”hŒu64 addr”…”�”}”(hj&)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj")ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MNhj)ubj)�”}”(hhh]”hÝ)�”}”(hŒ7UHW user VA used when no per-command attribute matched.”h]”hŒ7UHW user VA used when no per-command attribute matched.”…”�”}”(hj=)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j9)h´MNhj:)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j9)h´MNhj©(ubjý)�”}”(hŒ�``size_t size`` on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin. ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hj])h]”hŒ size_t size”…”�”}”(hj_)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MPhjW)ubj)�”}”(hhh]”hÝ)�”}”(hŒ|on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin.”h]”hŒ|on the attr / legacy paths, the minimum required umem length validated post-pin; on the VA fallback path, the length to pin.”…”�”}”(hjv)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MOhjs)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jr)h´MPhj©(ubjý)�”}”(hŒ ``int access`` IB access flags. ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hj—)h]”hŒ int access”…”�”}”(hj™)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MQhj‘)ubj)�”}”(hhh]”hÝ)�”}”(hŒIB access flags.”h]”hŒIB access flags.”…”�”}”(hj°)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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�(ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjÒ)h]”hŒ Description”…”�”}”(hjÔ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÐ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MShj�(ubhÝ)�”}”(hŒ‡Like ib_umem_get_cq_buf(), but pins **addr**/**size** when neither the UMEM attribute nor the legacy CQ buffer attributes are supplied.”h]”(hŒ$Like ib_umem_get_cq_buf(), but pins ”…”�”}”(hjè)h²hh³Nh´Nubjâ)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hjð)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjè)ubhŒ/”…”�”}”(hjè)h²hh³Nh´Nubjâ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjè)ubhŒR when neither the UMEM attribute nor the legacy CQ buffer attributes are supplied.”…”�”}”(hjè)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MRhj�(ubhÝ)�”}”(hŒ²See ib_umem_get_attr_or_va() for the note on **size**'s dual role and the migration path for drivers that would distinguish a user-supplied length from a driver-computed minimum.”h]”(hŒ-See ib_umem_get_attr_or_va() for the note on ”…”�”}”(hj*h²hh³Nh´Nubjâ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hj#*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj*ubhŒ’s dual role and the migration path for drivers that would distinguish a user-supplied length from a driver-computed minimum.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MUhj�(ubhÝ)�”}”(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&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MYhj�(ubhÝ)�”}”(hŒ4caller-owned umem on success, ERR_PTR(...) on error.”h]”hŒ4caller-owned umem on success, ERR_PTR(...) on error.”…”�”}”(hjT*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´MZhj�(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_umem_release (C function)”Œc.ib_umem_release”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void ib_umem_release (struct ib_umem *umem)”h]”j")�”}”(hŒ*void ib_umem_release(struct ib_umem *umem)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj*h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mhubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*h²hh³j‘*h´Mhubjš)�”}”(hŒib_umem_release”h]”jN)�”}”(hŒib_umem_release”h]”hŒib_umem_release”…”�”}”(hj¤*h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj *ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj*h²hh³j‘*h´Mhubj·)�”}”(hŒ(struct ib_umem *umem)”h]”j½)�”}”(hŒstruct ib_umem *umem”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÀ*h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¼*ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼*ubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(hjÞ*h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jà*Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¦*sbŒc.ib_umem_release”†”asbuh1hhj¼*ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼*ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¼*ubjN)�”}”(hŒumem”h]”hŒumem”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¼*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸*ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj*h²hh³j‘*h´Mhubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj{*h²hh³j‘*h´Mhubah}”(h]”jv*ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‘*h´Mhhjx*h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒrelease pinned memory”h]”hŒrelease pinned memory”…”�”}”(hjC+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mhhj@+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjx*h²hh³j‘*h´Mhubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj[+jÓj[+jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hŒA**Parameters** ``struct ib_umem *umem`` umem struct to release”h]”(hÝ)�”}”(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&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mlhj_+ubjø)�”}”(hhh]”jý)�”}”(hŒ/``struct ib_umem *umem`` umem struct to release”h]”(j)�”}”(hŒ``struct ib_umem *umem``”h]”j )�”}”(hj„+h]”hŒstruct ib_umem *umem”…”�”}”(hj†+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mnhj~+ubj)�”}”(hhh]”hÝ)�”}”(hŒumem struct to release”h]”hŒumem struct to release”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mihjš+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j™+h´Mnhj{+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj_+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'ib_umem_odp_alloc_implicit (C function)”Œc.ib_umem_odp_alloc_implicit”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVstruct ib_umem_odp * ib_umem_odp_alloc_implicit (struct ib_device *device, int access)”h]”j")�”}”(hŒTstruct ib_umem_odp *ib_umem_odp_alloc_implicit(struct ib_device *device, int access)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÞ+h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÚ+h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K}ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì+h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚ+h²hh³jë+h´K}ubh)�”}”(hhh]”jN)�”}”(hŒ ib_umem_odp”h]”hŒ ib_umem_odp”…”�”}”(hjý+h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjú+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÿ+Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_odp_alloc_implicit”sbŒc.ib_umem_odp_alloc_implicit”†”asbuh1hhjÚ+h²hh³jë+h´K}ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚ+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}ubjš)�”}”(hŒib_umem_odp_alloc_implicit”h]”jN)�”}”(hj,h]”hŒib_umem_odp_alloc_implicit”…”�”}”(hj=,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9,ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÚ+h²hh³jë+h´K}ubj·)�”}”(hŒ&(struct ib_device *device, int access)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjT,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjT,ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjv,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjs,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jx,Œmodname”NŒ classname”Njkjn)�”}”jq]”j,Œc.ib_umem_odp_alloc_implicit”†”asbuh1hhjT,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjT,ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¢,h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjT,ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¯,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjT,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjP,ubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈ,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÄ,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄ,ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hjä,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjP,ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÚ+h²hh³jë+h´K}ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÖ+h²hh³jë+h´K}ubah}”(h]”jÑ+ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jë+h´K}hjÓ+h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ#Allocate a parent implicit ODP umem”h]”hŒ#Allocate a parent implicit ODP umem”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K}hj -h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÓ+h²hh³jë+h´K}ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj&-jÓj&-jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX#**Parameters** ``struct ib_device *device`` IB device to create UMEM ``int access`` ib_reg_mr access flags **Description** Implicit ODP umems do not have a VA range and do not have any page lists. They exist only to hold the per_mm reference to help the driver create children umems.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K�hj*-ubjø)�”}”(hhh]”(jý)�”}”(hŒ6``struct ib_device *device`` IB device to create UMEM ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjO-h]”hŒstruct ib_device *device”…”�”}”(hjQ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´KƒhjI-ubj)�”}”(hhh]”hÝ)�”}”(hŒIB device to create UMEM”h]”hŒIB device to create UMEM”…”�”}”(hjh-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jd-h´Kƒhje-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jd-h´KƒhjF-ubjý)�”}”(hŒ&``int access`` ib_reg_mr access flags ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hjˆ-h]”hŒ int access”…”�”}”(hjŠ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K„hj‚-ubj)�”}”(hhh]”hÝ)�”}”(hŒib_reg_mr access flags”h]”hŒib_reg_mr access flags”…”�”}”(hj¡-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�-h´K„hjž-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�-h´K„hjF-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj*-ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjÃ-h]”hŒ Description”…”�”}”(hjÅ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÁ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K†hj*-ubhÝ)�”}”(hŒ Implicit ODP umems do not have a VA range and do not have any page lists. They exist only to hold the per_mm reference to help the driver create children umems.”h]”hŒ Implicit ODP umems do not have a VA range and do not have any page lists. They exist only to hold the per_mm reference to help the driver create children umems.”…”�”}”(hjÙ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K~hj*-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$ib_umem_odp_alloc_child (C function)”Œc.ib_umem_odp_alloc_child”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ•struct ib_umem_odp * ib_umem_odp_alloc_child (struct ib_umem_odp *root, unsigned long addr, size_t size, const struct mmu_interval_notifier_ops *ops)”h]”j")�”}”(hŒ“struct ib_umem_odp *ib_umem_odp_alloc_child(struct ib_umem_odp *root, unsigned long addr, size_t size, const struct mmu_interval_notifier_ops *ops)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj.h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´KŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.h²hh³j.h´KŸubh)�”}”(hhh]”jN)�”}”(hŒ ib_umem_odp”h]”hŒ ib_umem_odp”…”�”}”(hj'.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j).Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_odp_alloc_child”sbŒc.ib_umem_odp_alloc_child”†”asbuh1hhj.h²hh³j.h´KŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.h²hh³j.h´KŸubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjV.h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj.h²hh³j.h´KŸubjš)�”}”(hŒib_umem_odp_alloc_child”h]”jN)�”}”(hjE.h]”hŒib_umem_odp_alloc_child”…”�”}”(hjg.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjc.ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj.h²hh³j.h´KŸubj·)�”}”(hŒh(struct ib_umem_odp *root, unsigned long addr, size_t size, const struct mmu_interval_notifier_ops *ops)”h]”(j½)�”}”(hŒstruct ib_umem_odp *root”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‚.h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj~.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~.ubh)�”}”(hhh]”jN)�”}”(hŒ ib_umem_odp”h]”hŒ ib_umem_odp”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¢.Œmodname”NŒ classname”Njkjn)�”}”jq]”jC.Œc.ib_umem_odp_alloc_child”†”asbuh1hhj~.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~.ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÌ.h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj~.ubjN)�”}”(hŒroot”h]”hŒroot”…”�”}”(hjÙ.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj~.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjz.ubj½)�”}”(hŒunsigned long addr”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjò.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjî.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjî.ubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjî.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjî.ubjN)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj*/h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjî.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjz.ubj½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjF/h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjC/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jH/Œmodname”NŒ classname”Njkjn)�”}”jq]”jC.Œc.ib_umem_odp_alloc_child”†”asbuh1hhj?/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj?/ubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjr/h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjz.ubj½)�”}”(hŒ+const struct mmu_interval_notifier_ops *ops”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj‹/h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‡/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡/ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj¦/h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‡/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡/ubh)�”}”(hhh]”jN)�”}”(hŒmmu_interval_notifier_ops”h]”hŒmmu_interval_notifier_ops”…”�”}”(hjÄ/h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÁ/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÆ/Œmodname”NŒ classname”Njkjn)�”}”jq]”jC.Œc.ib_umem_odp_alloc_child”†”asbuh1hhj‡/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡/ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjð/h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡/ubjN)�”}”(hŒops”h]”hŒops”…”�”}”(hjý/h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjz.ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj.h²hh³j.h´KŸubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj.h²hh³j.h´KŸubah}”(h]”jû-ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j.h´KŸhjý-h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ;Allocate a child ODP umem under an implicit parent ODP umem”h]”hŒ;Allocate a child ODP umem under an implicit parent ODP umem”…”�”}”(hj'0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´KŸhj$0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjý-h²hh³j.h´KŸubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj?0jÓj?0jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXX**Parameters** ``struct ib_umem_odp *root`` The parent umem enclosing the child. This must be allocated using ib_alloc_implicit_odp_umem() ``unsigned long addr`` The starting userspace VA ``size_t size`` The length of the userspace VA ``const struct mmu_interval_notifier_ops *ops`` MMU interval ops, currently only **invalidate**”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjI0h]”hŒ Parameters”…”�”}”(hjK0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjG0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K£hjC0ubjø)�”}”(hhh]”(jý)�”}”(hŒ|``struct ib_umem_odp *root`` The parent umem enclosing the child. This must be allocated using ib_alloc_implicit_odp_umem() ”h]”(j)�”}”(hŒ``struct ib_umem_odp *root``”h]”j )�”}”(hjh0h]”hŒstruct ib_umem_odp *root”…”�”}”(hjj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K£hjb0ubj)�”}”(hhh]”hÝ)�”}”(hŒ^The parent umem enclosing the child. This must be allocated using ib_alloc_implicit_odp_umem()”h]”hŒ^The parent umem enclosing the child. This must be allocated using ib_alloc_implicit_odp_umem()”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K¢hj~0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j}0h´K£hj_0ubjý)�”}”(hŒ1``unsigned long addr`` The starting userspace VA ”h]”(j)�”}”(hŒ``unsigned long addr``”h]”j )�”}”(hj¢0h]”hŒunsigned long addr”…”�”}”(hj¤0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K¤hjœ0ubj)�”}”(hhh]”hÝ)�”}”(hŒThe starting userspace VA”h]”hŒThe starting userspace VA”…”�”}”(hj»0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j·0h´K¤hj¸0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j·0h´K¤hj_0ubjý)�”}”(hŒ/``size_t size`` The length of the userspace VA ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hjÛ0h]”hŒ size_t size”…”�”}”(hjÝ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K¥hjÕ0ubj)�”}”(hhh]”hÝ)�”}”(hŒThe length of the userspace VA”h]”hŒThe length of the userspace VA”…”�”}”(hjô0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jð0h´K¥hjñ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jð0h´K¥hj_0ubjý)�”}”(hŒ_``const struct mmu_interval_notifier_ops *ops`` MMU interval ops, currently only **invalidate**”h]”(j)�”}”(hŒ/``const struct mmu_interval_notifier_ops *ops``”h]”j )�”}”(hj1h]”hŒ+const struct mmu_interval_notifier_ops *ops”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K§hj1ubj)�”}”(hhh]”hÝ)�”}”(hŒ/MMU interval ops, currently only **invalidate**”h]”(hŒ!MMU interval ops, currently only ”…”�”}”(hj-1h²hh³Nh´Nubjâ)�”}”(hŒ**invalidate**”h]”hŒ invalidate”…”�”}”(hj51h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj-1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´K¦hj*1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j)1h´K§hj_0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjC0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_umem_odp_get (C function)”Œc.ib_umem_odp_get”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ™struct ib_umem_odp * ib_umem_odp_get (struct ib_device *device, unsigned long addr, size_t size, int access, const struct mmu_interval_notifier_ops *ops)”h]”j")�”}”(hŒ—struct ib_umem_odp *ib_umem_odp_get(struct ib_device *device, unsigned long addr, size_t size, int access, const struct mmu_interval_notifier_ops *ops)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj|1h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjx1h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´KÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjx1h²hh³j‰1h´KÞubh)�”}”(hhh]”jN)�”}”(hŒ ib_umem_odp”h]”hŒ ib_umem_odp”…”�”}”(hj›1h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�1Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒib_umem_odp_get”sbŒc.ib_umem_odp_get”†”asbuh1hhjx1h²hh³j‰1h´KÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjx1h²hh³j‰1h´KÞubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÊ1h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjx1h²hh³j‰1h´KÞubjš)�”}”(hŒib_umem_odp_get”h]”jN)�”}”(hj¹1h]”hŒib_umem_odp_get”…”�”}”(hjÛ1h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj×1ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjx1h²hh³j‰1h´KÞubj·)�”}”(hŒt(struct ib_device *device, unsigned long addr, size_t size, int access, const struct mmu_interval_notifier_ops *ops)”h]”(j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjö1h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjò1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjò1ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j2Œmodname”NŒ classname”Njkjn)�”}”jq]”j·1Œc.ib_umem_odp_get”†”asbuh1hhjò1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj22h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjò1ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj@2h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjò1ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjM2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjò1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjî1ubj½)�”}”(hŒunsigned long addr”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjf2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjb2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb2ubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj‚2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjb2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb2ubjN)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjž2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjb2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjî1ubj½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjº2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj·2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¼2Œmodname”NŒ classname”Njkjn)�”}”jq]”j·1Œc.ib_umem_odp_get”†”asbuh1hhj³2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³2ubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjæ2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjî1ubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjû2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjû2ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjû2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjî1ubj½)�”}”(hŒ+const struct mmu_interval_notifier_ops *ops”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj43h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj03ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj03ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjO3h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj03ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj03ubh)�”}”(hhh]”jN)�”}”(hŒmmu_interval_notifier_ops”h]”hŒmmu_interval_notifier_ops”…”�”}”(hjm3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jo3Œmodname”NŒ classname”Njkjn)�”}”jq]”j·1Œc.ib_umem_odp_get”†”asbuh1hhj03ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj03ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj™3h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj03ubjN)�”}”(hŒops”h]”hŒops”…”�”}”(hj¦3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj03ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjî1ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjx1h²hh³j‰1h´KÞubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjt1h²hh³j‰1h´KÞubah}”(h]”jo1ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‰1h´KÞhjq1h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$Create a umem_odp for a userspace va”h]”hŒ$Create a umem_odp for a userspace va”…”�”}”(hjÐ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´KÞhjÍ3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjq1h²hh³j‰1h´KÞubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjè3jÓjè3jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_device *device`` IB device struct to get UMEM ``unsigned long addr`` userspace virtual address to start at ``size_t size`` length of region to pin ``int access`` IB_ACCESS_xxx flags for memory being pinned ``const struct mmu_interval_notifier_ops *ops`` MMU interval ops, currently only **invalidate** **Description** The driver should use when the access flags indicate ODP memory. It avoids pinning, instead, stores the mm for future page fault handling in conjunction with MMU notifiers.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”•h´Kâhjì3ubjø)�”}”(hhh]”(jý)�”}”(hŒ:``struct ib_device *device`` IB device struct to get UMEM ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj4h]”hŒstruct ib_device *device”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´Kàhj 4ubj)�”}”(hhh]”hÝ)�”}”(hŒIB device struct to get UMEM”h]”hŒIB device struct to get UMEM”…”�”}”(hj*4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j&4h´Kàhj'4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j&4h´Kàhj4ubjý)�”}”(hŒ=``unsigned long addr`` userspace virtual address to start at ”h]”(j)�”}”(hŒ``unsigned long addr``”h]”j )�”}”(hjJ4h]”hŒunsigned long addr”…”�”}”(hjL4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´KáhjD4ubj)�”}”(hhh]”hÝ)�”}”(hŒ%userspace virtual address to start at”h]”hŒ%userspace virtual address to start at”…”�”}”(hjc4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j_4h´Káhj`4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j_4h´Káhj4ubjý)�”}”(hŒ(``size_t size`` length of region to pin ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hjƒ4h]”hŒ size_t size”…”�”}”(hj…4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´Kâhj}4ubj)�”}”(hhh]”hÝ)�”}”(hŒlength of region to pin”h]”hŒlength of region to pin”…”�”}”(hjœ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j˜4h´Kâhj™4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j˜4h´Kâhj4ubjý)�”}”(hŒ;``int access`` IB_ACCESS_xxx flags for memory being pinned ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hj¼4h]”hŒ int access”…”�”}”(hj¾4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´Kãhj¶4ubj)�”}”(hhh]”hÝ)�”}”(hŒ+IB_ACCESS_xxx flags for memory being pinned”h]”hŒ+IB_ACCESS_xxx flags for memory being pinned”…”�”}”(hjÕ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÑ4h´KãhjÒ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÑ4h´Kãhj4ubjý)�”}”(hŒ```const struct mmu_interval_notifier_ops *ops`` MMU interval ops, currently only **invalidate** ”h]”(j)�”}”(hŒ/``const struct mmu_interval_notifier_ops *ops``”h]”j )�”}”(hjõ4h]”hŒ+const struct mmu_interval_notifier_ops *ops”…”�”}”(hj÷4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´Kähjï4ubj)�”}”(hhh]”hÝ)�”}”(hŒ/MMU interval ops, currently only **invalidate**”h]”(hŒ!MMU interval ops, currently only ”…”�”}”(hj5h²hh³Nh´Nubjâ)�”}”(hŒ**invalidate**”h]”hŒ invalidate”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j 5h´Kähj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjï4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j 5h´Kähj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjì3ubhÝ)�”}”(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&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´Kæhjì3ubhÝ)�”}”(hŒ¬The driver should use when the access flags indicate ODP memory. It avoids pinning, instead, stores the mm for future page fault handling in conjunction with MMU notifiers.”h]”hŒ¬The driver should use when the access flags indicate ODP memory. It avoids pinning, instead, stores the mm for future page fault handling in conjunction with MMU notifiers.”…”�”}”(hjT5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´Kåhjì3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)ib_umem_odp_map_dma_and_lock (C function)”Œc.ib_umem_odp_map_dma_and_lock”hNt”auh1jhhôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒuint ib_umem_odp_map_dma_and_lock (struct ib_umem_odp *umem_odp, u64 user_virt, u64 bcnt, u64 access_mask, bool fault)”h]”j")�”}”(hŒtint ib_umem_odp_map_dma_and_lock(struct ib_umem_odp *umem_odp, u64 user_virt, u64 bcnt, u64 access_mask, bool fault)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒ5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj5h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5h²hh³j‘5h´M2ubjš)�”}”(hŒib_umem_odp_map_dma_and_lock”h]”jN)�”}”(hŒib_umem_odp_map_dma_and_lock”h]”hŒib_umem_odp_map_dma_and_lock”…”�”}”(hj¤5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj 5ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj5h²hh³j‘5h´M2ubj·)�”}”(hŒT(struct ib_umem_odp *umem_odp, u64 user_virt, u64 bcnt, u64 access_mask, bool fault)”h]”(j½)�”}”(hŒstruct ib_umem_odp *umem_odp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÀ5h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¼5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼5ubh)�”}”(hhh]”jN)�”}”(hŒ ib_umem_odp”h]”hŒ ib_umem_odp”…”�”}”(hjÞ5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛ5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jà5Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¦5sbŒc.ib_umem_odp_map_dma_and_lock”†”asbuh1hhj¼5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼5ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¼5ubjN)�”}”(hŒumem_odp”h]”hŒumem_odp”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¼5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸5ubj½)�”}”(hŒ u64 user_virt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj56h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj26ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j76Œmodname”NŒ classname”Njkjn)�”}”jq]”jú5Œc.ib_umem_odp_map_dma_and_lock”†”asbuh1hhj.6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.6ubjN)�”}”(hŒ user_virt”h]”hŒ user_virt”…”�”}”(hja6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj.6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸5ubj½)�”}”(hŒu64 bcnt”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj}6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjz6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j6Œmodname”NŒ classname”Njkjn)�”}”jq]”jú5Œc.ib_umem_odp_map_dma_and_lock”†”asbuh1hhjv6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjv6ubjN)�”}”(hŒbcnt”h]”hŒbcnt”…”�”}”(hj©6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjv6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸5ubj½)�”}”(hŒu64 access_mask”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÅ6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÂ6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÇ6Œmodname”NŒ classname”Njkjn)�”}”jq]”jú5Œc.ib_umem_odp_map_dma_and_lock”†”asbuh1hhj¾6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾6ubjN)�”}”(hŒ access_mask”h]”hŒ access_mask”…”�”}”(hjñ6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¾6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸5ubj½)�”}”(hŒ bool fault”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7ubjN)�”}”(hŒfault”h]”hŒfault”…”�”}”(hj%7h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸5ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj5h²hh³j‘5h´M2ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj{5h²hh³j‘5h´M2ubah}”(h]”jv5ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‘5h´M2hjx5h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ2DMA map userspace memory in an ODP MR and lock it.”h]”hŒ2DMA map userspace memory in an ODP MR and lock it.”…”�”}”(hjO7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M2hjL7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjx5h²hh³j‘5h´M2ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjg7jÓjg7jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_umem_odp *umem_odp`` the umem to map and pin ``u64 user_virt`` the address from which we need to map. ``u64 bcnt`` the minimal number of bytes to pin and map. The mapping might be bigger due to alignment, and may also be smaller in case of an error pinning or mapping a page. The actual pages mapped is returned in the return value. ``u64 access_mask`` bit mask of the requested access permissions for the given range. ``bool fault`` is faulting required for the given range **Description** Maps the range passed in the argument to DMA addresses. Upon success the ODP MR will be locked to let caller complete its device page table update. Returns the number of pages mapped in success, negative error code for failure.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjq7h]”hŒ Parameters”…”�”}”(hjs7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjo7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M6hjk7ubjø)�”}”(hhh]”(jý)�”}”(hŒ9``struct ib_umem_odp *umem_odp`` the umem to map and pin ”h]”(j)�”}”(hŒ ``struct ib_umem_odp *umem_odp``”h]”j )�”}”(hj�7h]”hŒstruct ib_umem_odp *umem_odp”…”�”}”(hj’7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M:hjŠ7ubj)�”}”(hhh]”hÝ)�”}”(hŒthe umem to map and pin”h]”hŒthe umem to map and pin”…”�”}”(hj©7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ9``u64 user_virt`` the address from which we need to map. ”h]”(j)�”}”(hŒ``u64 user_virt``”h]”j )�”}”(hjÉ7h]”hŒ u64 user_virt”…”�”}”(hjË7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M;hjÃ7ubj)�”}”(hhh]”hÝ)�”}”(hŒ&the address from which we need to map.”h]”hŒ&the address from which we need to map.”…”�”}”(hjâ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œç``u64 bcnt`` the minimal number of bytes to pin and map. The mapping might be bigger due to alignment, and may also be smaller in case of an error pinning or mapping a page. The actual pages mapped is returned in the return value. ”h]”(j)�”}”(hŒ ``u64 bcnt``”h]”j )�”}”(hj8h]”hŒu64 bcnt”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M?hjü7ubj)�”}”(hhh]”hÝ)�”}”(hŒÙthe minimal number of bytes to pin and map. The mapping might be bigger due to alignment, and may also be smaller in case of an error pinning or mapping a page. The actual pages mapped is returned in the return value.”h]”hŒÙthe minimal number of bytes to pin and map. The mapping might be bigger due to alignment, and may also be smaller in case of an error pinning or mapping a page. The actual pages mapped is returned in the return value.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M<hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j8h´M?hj‡7ubjý)�”}”(hŒV``u64 access_mask`` bit mask of the requested access permissions for the given range. ”h]”(j)�”}”(hŒ``u64 access_mask``”h]”j )�”}”(hj<8h]”hŒu64 access_mask”…”�”}”(hj>8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´MAhj68ubj)�”}”(hhh]”hÝ)�”}”(hŒAbit mask of the requested access permissions for the given range.”h]”hŒAbit mask of the requested access permissions for the given range.”…”�”}”(hjU8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M@hjR8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj68ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQ8h´MAhj‡7ubjý)�”}”(hŒ8``bool fault`` is faulting required for the given range ”h]”(j)�”}”(hŒ``bool fault``”h]”j )�”}”(hjv8h]”hŒ bool fault”…”�”}”(hjx8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´MBhjp8ubj)�”}”(hhh]”hÝ)�”}”(hŒ(is faulting required for the given range”h]”hŒ(is faulting required for the given range”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‹8h´MBhjŒ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‹8h´MBhj‡7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjk7ubhÝ)�”}”(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&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´MDhjk7ubhÝ)�”}”(hŒ“Maps the range passed in the argument to DMA addresses. Upon success the ODP MR will be locked to let caller complete its device page table update.”h]”hŒ“Maps the range passed in the argument to DMA addresses. Upon success the ODP MR will be locked to let caller complete its device page table update.”…”�”}”(hjÇ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M3hjk7ubhÝ)�”}”(hŒOReturns the number of pages mapped in success, negative error code for failure.”h]”hŒOReturns the number of pages mapped in success, negative error code for failure.”…”�”}”(hjÖ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´M7hjk7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hhôh²hh³Nh´Nubeh}”(h]”Œinfiniband-core-interfaces”ah ]”h"]”Œinfiniband core interfaces”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒRDMA Verbs transport library”h]”hŒRDMA Verbs transport library”…”�”}”(hj÷8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjô8h²hh³hÊh´K/ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_fast_reg_mr (C function)”Œc.rvt_fast_reg_mr”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPint rvt_fast_reg_mr (struct rvt_qp *qp, struct ib_mr *ibmr, u32 key, int access)”h]”j")�”}”(hŒOint rvt_fast_reg_mr(struct rvt_qp *qp, struct ib_mr *ibmr, u32 key, int access)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj9h²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mcubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9h²hh³j,9h´Mcubjš)�”}”(hŒrvt_fast_reg_mr”h]”jN)�”}”(hŒrvt_fast_reg_mr”h]”hŒrvt_fast_reg_mr”…”�”}”(hj?9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj;9ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj9h²hh³j,9h´Mcubj·)�”}”(hŒ<(struct rvt_qp *qp, struct ib_mr *ibmr, u32 key, int access)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj[9h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjW9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjW9ubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjy9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjv9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j{9Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjA9sbŒc.rvt_fast_reg_mr”†”asbuh1hhjW9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjW9ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj§9h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjW9ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj´9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjW9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjS9ubj½)�”}”(hŒstruct ib_mr *ibmr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÍ9h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÉ9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉ9ubh)�”}”(hhh]”jN)�”}”(hŒib_mr”h]”hŒib_mr”…”�”}”(hjë9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjè9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jí9Œmodname”NŒ classname”Njkjn)�”}”jq]”j•9Œc.rvt_fast_reg_mr”†”asbuh1hhjÉ9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉ9ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÉ9ubjN)�”}”(hŒibmr”h]”hŒibmr”…”�”}”(hj$:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÉ9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjS9ubj½)�”}”(hŒu32 key”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj@:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj=:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jB:Œmodname”NŒ classname”Njkjn)�”}”jq]”j•9Œc.rvt_fast_reg_mr”†”asbuh1hhj9:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9:ubjN)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjl:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjS9ubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj…:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj�:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�:ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hj¡:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjS9ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj9h²hh³j,9h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj9h²hh³j,9h´Mcubah}”(h]”j9ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j,9h´Mchj9h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒfast register physical MR”h]”hŒfast register physical MR”…”�”}”(hjË:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MchjÈ:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj9h²hh³j,9h´Mcubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjã:jÓjã:jÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hX%**Parameters** ``struct rvt_qp *qp`` the queue pair where the work request comes from ``struct ib_mr *ibmr`` the memory region to be registered ``u32 key`` updated key for this memory region ``int access`` access flags for this memory region **Description** Returns 0 on success.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjí:h]”hŒ Parameters”…”�”}”(hjï:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjë:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mghjç:ubjø)�”}”(hhh]”(jý)�”}”(hŒG``struct rvt_qp *qp`` the queue pair where the work request comes from ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hj ;h]”hŒstruct rvt_qp *qp”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mdhj;ubj)�”}”(hhh]”hÝ)�”}”(hŒ0the queue pair where the work request comes from”h]”hŒ0the queue pair where the work request comes from”…”�”}”(hj%;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j!;h´Mdhj";ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j!;h´Mdhj;ubjý)�”}”(hŒ:``struct ib_mr *ibmr`` the memory region to be registered ”h]”(j)�”}”(hŒ``struct ib_mr *ibmr``”h]”j )�”}”(hjE;h]”hŒstruct ib_mr *ibmr”…”�”}”(hjG;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjC;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mehj?;ubj)�”}”(hhh]”hÝ)�”}”(hŒ"the memory region to be registered”h]”hŒ"the memory region to be registered”…”�”}”(hj^;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jZ;h´Mehj[;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jZ;h´Mehj;ubjý)�”}”(hŒ/``u32 key`` updated key for this memory region ”h]”(j)�”}”(hŒ ``u32 key``”h]”j )�”}”(hj~;h]”hŒu32 key”…”�”}”(hj€;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mfhjx;ubj)�”}”(hhh]”hÝ)�”}”(hŒ"updated key for this memory region”h]”hŒ"updated key for this memory region”…”�”}”(hj—;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j“;h´Mfhj”;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j“;h´Mfhj;ubjý)�”}”(hŒ3``int access`` access flags for this memory region ”h]”(j)�”}”(hŒ``int access``”h]”j )�”}”(hj·;h]”hŒ int access”…”�”}”(hj¹;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mghj±;ubj)�”}”(hhh]”hÝ)�”}”(hŒ#access flags for this memory region”h]”hŒ#access flags for this memory region”…”�”}”(hjÐ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÌ;h´MghjÍ;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ç:ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjò;h]”hŒ Description”…”�”}”(hjô;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjð;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mihjç:ubhÝ)�”}”(hŒReturns 0 on success.”h]”hŒReturns 0 on success.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mhhjç:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ rvt_invalidate_rkey (C function)”Œc.rvt_invalidate_rkey”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5int rvt_invalidate_rkey (struct rvt_qp *qp, u32 rkey)”h]”j")�”}”(hŒ4int rvt_invalidate_rkey(struct rvt_qp *qp, u32 rkey)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj7<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj3<h²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M†ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj3<h²hh³jE<h´M†ubjš)�”}”(hŒrvt_invalidate_rkey”h]”jN)�”}”(hŒrvt_invalidate_rkey”h]”hŒrvt_invalidate_rkey”…”�”}”(hjX<h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjT<ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj3<h²hh³jE<h´M†ubj·)�”}”(hŒ(struct rvt_qp *qp, u32 rkey)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjt<h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjp<ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjp<ubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hj’<h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j”<Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjZ<sbŒc.rvt_invalidate_rkey”†”asbuh1hhjp<ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjp<ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÀ<h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjp<ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjÍ<h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjp<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjl<ubj½)�”}”(hŒu32 rkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjé<h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjæ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jë<Œmodname”NŒ classname”Njkjn)�”}”jq]”j®<Œc.rvt_invalidate_rkey”†”asbuh1hhjâ<ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâ<ubjN)�”}”(hŒrkey”h]”hŒrkey”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjâ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjl<ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj3<h²hh³jE<h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj/<h²hh³jE<h´M†ubah}”(h]”j*<ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jE<h´M†hj,<h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒinvalidate an MR rkey”h]”hŒinvalidate an MR rkey”…”�”}”(hj?=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M†hj<=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj,<h²hh³jE<h´M†ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjW=jÓjW=jÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hŒŸ**Parameters** ``struct rvt_qp *qp`` queue pair associated with the invalidate op ``u32 rkey`` rkey to invalidate **Description** Returns 0 on success.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MŠhj[=ubjø)�”}”(hhh]”(jý)�”}”(hŒC``struct rvt_qp *qp`` queue pair associated with the invalidate op ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hj€=h]”hŒstruct rvt_qp *qp”…”�”}”(hj‚=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M‡hjz=ubj)�”}”(hhh]”hÝ)�”}”(hŒ,queue pair associated with the invalidate op”h]”hŒ,queue pair associated with the invalidate op”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ ``u32 rkey`` rkey to invalidate ”h]”(j)�”}”(hŒ ``u32 rkey``”h]”j )�”}”(hj¹=h]”hŒu32 rkey”…”�”}”(hj»=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mˆhj³=ubj)�”}”(hhh]”hÝ)�”}”(hŒrkey to invalidate”h]”hŒrkey to invalidate”…”�”}”(hjÒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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[=ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjô=h]”hŒ Description”…”�”}”(hjö=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjò=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MŠhj[=ubhÝ)�”}”(hŒReturns 0 on success.”h]”hŒReturns 0 on success.”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M‰hj[=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_lkey_ok (C function)”Œ c.rvt_lkey_ok”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŒint rvt_lkey_ok (struct rvt_lkey_table *rkt, struct rvt_pd *pd, struct rvt_sge *isge, struct rvt_sge *last_sge, struct ib_sge *sge, int acc)”h]”j")�”}”(hŒ‹int rvt_lkey_ok(struct rvt_lkey_table *rkt, struct rvt_pd *pd, struct rvt_sge *isge, struct rvt_sge *last_sge, struct ib_sge *sge, int acc)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj9>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj5>h²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÂubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5>h²hh³jG>h´MÂubjš)�”}”(hŒ rvt_lkey_ok”h]”jN)�”}”(hŒ rvt_lkey_ok”h]”hŒ rvt_lkey_ok”…”�”}”(hjZ>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjV>ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj5>h²hh³jG>h´MÂubj·)�”}”(hŒ|(struct rvt_lkey_table *rkt, struct rvt_pd *pd, struct rvt_sge *isge, struct rvt_sge *last_sge, struct ib_sge *sge, int acc)”h]”(j½)�”}”(hŒstruct rvt_lkey_table *rkt”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjv>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjr>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr>ubh)�”}”(hhh]”jN)�”}”(hŒrvt_lkey_table”h]”hŒrvt_lkey_table”…”�”}”(hj”>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‘>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j–>Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj\>sbŒ c.rvt_lkey_ok”†”asbuh1hhjr>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr>ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÂ>h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjr>ubjN)�”}”(hŒrkt”h]”hŒrkt”…”�”}”(hjÏ>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjr>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjn>ubj½)�”}”(hŒstruct rvt_pd *pd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjè>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjä>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä>ubh)�”}”(hhh]”jN)�”}”(hŒrvt_pd”h]”hŒrvt_pd”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j?Œmodname”NŒ classname”Njkjn)�”}”jq]”j°>Œ c.rvt_lkey_ok”†”asbuh1hhjä>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä>ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj2?h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjä>ubjN)�”}”(hŒpd”h]”hŒpd”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjä>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjn>ubj½)�”}”(hŒstruct rvt_sge *isge”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjX?h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjT?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjT?ubh)�”}”(hhh]”jN)�”}”(hŒrvt_sge”h]”hŒrvt_sge”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjs?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jx?Œmodname”NŒ classname”Njkjn)�”}”jq]”j°>Œ c.rvt_lkey_ok”†”asbuh1hhjT?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjT?ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¢?h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjT?ubjN)�”}”(hŒisge”h]”hŒisge”…”�”}”(hj¯?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjT?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjn>ubj½)�”}”(hŒstruct rvt_sge *last_sge”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÈ?h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÄ?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄ?ubh)�”}”(hhh]”jN)�”}”(hŒrvt_sge”h]”hŒrvt_sge”…”�”}”(hjæ?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjã?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jè?Œmodname”NŒ classname”Njkjn)�”}”jq]”j°>Œ c.rvt_lkey_ok”†”asbuh1hhjÄ?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄ?ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÄ?ubjN)�”}”(hŒlast_sge”h]”hŒlast_sge”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjn>ubj½)�”}”(hŒstruct ib_sge *sge”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj8@h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj4@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4@ubh)�”}”(hhh]”jN)�”}”(hŒib_sge”h]”hŒib_sge”…”�”}”(hjV@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjS@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jX@Œmodname”NŒ classname”Njkjn)�”}”jq]”j°>Œ c.rvt_lkey_ok”†”asbuh1hhj4@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4@ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‚@h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj4@ubjN)�”}”(hŒsge”h]”hŒsge”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj4@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjn>ubj½)�”}”(hŒint acc”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¤@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤@ubjN)�”}”(hŒacc”h]”hŒacc”…”�”}”(hjÄ@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¤@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjn>ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj5>h²hh³jG>h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj1>h²hh³jG>h´MÂubah}”(h]”j,>ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jG>h´MÂhj.>h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ(check IB SGE for validity and initialize”h]”hŒ(check IB SGE for validity and initialize”…”�”}”(hjî@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÂhjë@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj.>h²hh³jG>h´MÂubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjAjÓjAjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hX**Parameters** ``struct rvt_lkey_table *rkt`` table containing lkey to check SGE against ``struct rvt_pd *pd`` protection domain ``struct rvt_sge *isge`` outgoing internal SGE ``struct rvt_sge *last_sge`` last outgoing SGE written ``struct ib_sge *sge`` SGE to check ``int acc`` access flags **Description** Check the IB SGE for validity and initialize our internal version of it. Increments the reference count when a new sge is stored. **Return** 0 if compressed, 1 if added , otherwise returns -errno.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjAh]”hŒ Parameters”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÆhj Aubjø)�”}”(hhh]”(jý)�”}”(hŒJ``struct rvt_lkey_table *rkt`` table containing lkey to check SGE against ”h]”(j)�”}”(hŒ``struct rvt_lkey_table *rkt``”h]”j )�”}”(hj/Ah]”hŒstruct rvt_lkey_table *rkt”…”�”}”(hj1Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÃhj)Aubj)�”}”(hhh]”hÝ)�”}”(hŒ*table containing lkey to check SGE against”h]”hŒ*table containing lkey to check SGE against”…”�”}”(hjHAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jDAh´MÃhjEAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jDAh´MÃhj&Aubjý)�”}”(hŒ(``struct rvt_pd *pd`` protection domain ”h]”(j)�”}”(hŒ``struct rvt_pd *pd``”h]”j )�”}”(hjhAh]”hŒstruct rvt_pd *pd”…”�”}”(hjjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÄhjbAubj)�”}”(hhh]”hÝ)�”}”(hŒprotection domain”h]”hŒprotection domain”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j}Ah´MÄhj~Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j}Ah´MÄhj&Aubjý)�”}”(hŒ/``struct rvt_sge *isge`` outgoing internal SGE ”h]”(j)�”}”(hŒ``struct rvt_sge *isge``”h]”j )�”}”(hj¡Ah]”hŒstruct rvt_sge *isge”…”�”}”(hj£Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÅhj›Aubj)�”}”(hhh]”hÝ)�”}”(hŒoutgoing internal SGE”h]”hŒoutgoing internal SGE”…”�”}”(hjºAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ7``struct rvt_sge *last_sge`` last outgoing SGE written ”h]”(j)�”}”(hŒ``struct rvt_sge *last_sge``”h]”j )�”}”(hjÚAh]”hŒstruct rvt_sge *last_sge”…”�”}”(hjÜAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÆhjÔAubj)�”}”(hhh]”hÝ)�”}”(hŒlast outgoing SGE written”h]”hŒlast outgoing SGE written”…”�”}”(hjóAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ib_sge *sge`` SGE to check ”h]”(j)�”}”(hŒ``struct ib_sge *sge``”h]”j )�”}”(hjBh]”hŒstruct ib_sge *sge”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÇhj Bubj)�”}”(hhh]”hÝ)�”}”(hŒ SGE to check”h]”hŒ SGE to check”…”�”}”(hj,Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j(Bh´MÇhj)Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j(Bh´MÇhj&Aubjý)�”}”(hŒ``int acc`` access flags ”h]”(j)�”}”(hŒ ``int acc``”h]”j )�”}”(hjLBh]”hŒint acc”…”�”}”(hjNBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÈhjFBubj)�”}”(hhh]”hÝ)�”}”(hŒ access flags”h]”hŒ access flags”…”�”}”(hjeBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jaBh´MÈhjbBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jaBh´MÈhj&Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj AubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÊhj AubhÝ)�”}”(hŒHCheck the IB SGE for validity and initialize our internal version of it.”h]”hŒHCheck the IB SGE for validity and initialize our internal version of it.”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÉhj AubhÝ)�”}”(hŒ8Increments the reference count when a new sge is stored.”h]”hŒ8Increments the reference count when a new sge is stored.”…”�”}”(hj¬Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÌhj AubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÎhj AubhÝ)�”}”(hŒ70 if compressed, 1 if added , otherwise returns -errno.”h]”hŒ70 if compressed, 1 if added , otherwise returns -errno.”…”�”}”(hjÓBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´MÏhj Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_rkey_ok (C function)”Œ c.rvt_rkey_ok”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ_int rvt_rkey_ok (struct rvt_qp *qp, struct rvt_sge *sge, u32 len, u64 vaddr, u32 rkey, int acc)”h]”j")�”}”(hŒ^int rvt_rkey_ok(struct rvt_qp *qp, struct rvt_sge *sge, u32 len, u64 vaddr, u32 rkey, int acc)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjþBh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjþBh²hh³jCh´M3ubjš)�”}”(hŒ rvt_rkey_ok”h]”jN)�”}”(hŒ rvt_rkey_ok”h]”hŒ rvt_rkey_ok”…”�”}”(hj#Ch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjCubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjþBh²hh³jCh´M3ubj·)�”}”(hŒO(struct rvt_qp *qp, struct rvt_sge *sge, u32 len, u64 vaddr, u32 rkey, int acc)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj?Ch²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj;Cubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;Cubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hj]Ch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j_CŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj%CsbŒ c.rvt_rkey_ok”†”asbuh1hhj;Cubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Ch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;Cubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‹Ch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj;CubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj˜Ch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj;Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj7Cubj½)�”}”(hŒstruct rvt_sge *sge”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj±Ch²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj­Cubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Ch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­Cubh)�”}”(hhh]”jN)�”}”(hŒrvt_sge”h]”hŒrvt_sge”…”�”}”(hjÏCh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÌCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÑCŒmodname”NŒ classname”Njkjn)�”}”jq]”jyCŒ c.rvt_rkey_ok”†”asbuh1hhj­Cubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­Cubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjûCh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj­CubjN)�”}”(hŒsge”h]”hŒsge”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj­Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj7Cubj½)�”}”(hŒu32 len”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj$Dh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj!Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j&DŒmodname”NŒ classname”Njkjn)�”}”jq]”jyCŒ c.rvt_rkey_ok”†”asbuh1hhjDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBDh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjDubjN)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjPDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj7Cubj½)�”}”(hŒ u64 vaddr”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjlDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjiDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jnDŒmodname”NŒ classname”Njkjn)�”}”jq]”jyCŒ c.rvt_rkey_ok”†”asbuh1hhjeDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠDh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeDubjN)�”}”(hŒvaddr”h]”hŒvaddr”…”�”}”(hj˜Dh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjeDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj7Cubj½)�”}”(hŒu32 rkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj´Dh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj±Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¶DŒmodname”NŒ classname”Njkjn)�”}”jq]”jyCŒ c.rvt_rkey_ok”†”asbuh1hhj­Dubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒDh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­DubjN)�”}”(hŒrkey”h]”hŒrkey”…”�”}”(hjàDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj­Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj7Cubj½)�”}”(hŒint acc”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjùDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjõDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõDubjN)�”}”(hŒacc”h]”hŒacc”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjõDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj7Cubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjþBh²hh³jCh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjúBh²hh³jCh´M3ubah}”(h]”jõBah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jCh´M3hj÷Bh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ.check the IB virtual address, length, and RKEY”h]”hŒ.check the IB virtual address, length, and RKEY”…”�”}”(hj?Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M3hjstruct rvt_dev_info *rvt_alloc_device(size_t size, int nports)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjéOh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjåOh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Oh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjåOh²hh³jöOh´K%ubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j PŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒrvt_alloc_device”sbŒc.rvt_alloc_device”†”asbuh1hhjåOh²hh³jöOh´K%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Ph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjåOh²hh³jöOh´K%ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj7Ph²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjåOh²hh³jöOh´K%ubjš)�”}”(hŒrvt_alloc_device”h]”jN)�”}”(hj&Ph]”hŒrvt_alloc_device”…”�”}”(hjHPh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjDPubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjåOh²hh³jöOh´K%ubj·)�”}”(hŒ(size_t size, int nports)”h]”(j½)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jN)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjfPh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjcPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jhPŒmodname”NŒ classname”Njkjn)�”}”jq]”j$PŒc.rvt_alloc_device”†”asbuh1hhj_Pubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Ph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj_PubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj’Ph²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj_Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj[Pubj½)�”}”(hŒ int nports”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj«Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj§Pubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Ph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj§PubjN)�”}”(hŒnports”h]”hŒnports”…”�”}”(hjÇPh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj§Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj[Pubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjåOh²hh³jöOh´K%ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjáOh²hh³jöOh´K%ubah}”(h]”jÜOah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jöOh´K%hjÞOh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ allocate rdi”h]”hŒ allocate rdi”…”�”}”(hjñPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K%hjîPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÞOh²hh³jöOh´K%ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj QjÓj QjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hXŸ**Parameters** ``size_t size`` how big of a structure to allocate ``int nports`` number of ports to allocate array slots for **Description** Use IB core device alloc to allocate space for the rdi which is assumed to be inside of the ib_device. Any extra space that drivers require should be included in size. We also allocate a port array based on the number of ports. **Return** pointer to allocated rdi”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjQh]”hŒ Parameters”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K)hj Qubjø)�”}”(hhh]”(jý)�”}”(hŒ3``size_t size`` how big of a structure to allocate ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hj2Qh]”hŒ size_t size”…”�”}”(hj4Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K&hj,Qubj)�”}”(hhh]”hÝ)�”}”(hŒ"how big of a structure to allocate”h]”hŒ"how big of a structure to allocate”…”�”}”(hjKQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jGQh´K&hjHQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jGQh´K&hj)Qubjý)�”}”(hŒ;``int nports`` number of ports to allocate array slots for ”h]”(j)�”}”(hŒ``int nports``”h]”j )�”}”(hjkQh]”hŒ int nports”…”�”}”(hjmQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiQubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K'hjeQubj)�”}”(hhh]”hÝ)�”}”(hŒ+number of ports to allocate array slots for”h]”hŒ+number of ports to allocate array slots for”…”�”}”(hj„Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j€Qh´K'hj�Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j€Qh´K'hj)Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj QubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K)hj QubhÝ)�”}”(hŒ§Use IB core device alloc to allocate space for the rdi which is assumed to be inside of the ib_device. Any extra space that drivers require should be included in size.”h]”hŒ§Use IB core device alloc to allocate space for the rdi which is assumed to be inside of the ib_device. Any extra space that drivers require should be included in size.”…”�”}”(hj¼Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K(hj QubhÝ)�”}”(hŒ;We also allocate a port array based on the number of ports.”h]”hŒ;We also allocate a port array based on the number of ports.”…”�”}”(hjËQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K,hj QubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hjÜQh]”hŒReturn”…”�”}”(hjÞQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÚQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K.hj QubhÝ)�”}”(hŒpointer to allocated rdi”h]”hŒpointer to allocated rdi”…”�”}”(hjòQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K/hj Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_dealloc_device (C function)”Œc.rvt_dealloc_device”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2void rvt_dealloc_device (struct rvt_dev_info *rdi)”h]”j")�”}”(hŒ1void rvt_dealloc_device(struct rvt_dev_info *rdi)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!Rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjRh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´KDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Rh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRh²hh³j/Rh´KDubjš)�”}”(hŒrvt_dealloc_device”h]”jN)�”}”(hŒrvt_dealloc_device”h]”hŒrvt_dealloc_device”…”�”}”(hjBRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>Rubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjRh²hh³j/Rh´KDubj·)�”}”(hŒ(struct rvt_dev_info *rdi)”h]”j½)�”}”(hŒstruct rvt_dev_info *rdi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj^Rh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjZRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZRubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hj|Rh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjyRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j~RŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjDRsbŒc.rvt_dealloc_device”†”asbuh1hhjZRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZRubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjªRh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjZRubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hj·Rh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjVRubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjRh²hh³j/Rh´KDubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjRh²hh³j/Rh´KDubah}”(h]”jRah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j/Rh´KDhjRh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒdeallocate rdi”h]”hŒdeallocate rdi”…”�”}”(hjáRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´KDhjÞRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjRh²hh³j/Rh´KDubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjùRjÓjùRjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hŒ…**Parameters** ``struct rvt_dev_info *rdi`` structure to free **Description** Free a structure allocated with rvt_alloc_device()”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´KHhjýRubjø)�”}”(hhh]”jý)�”}”(hŒ/``struct rvt_dev_info *rdi`` structure to free ”h]”(j)�”}”(hŒ``struct rvt_dev_info *rdi``”h]”j )�”}”(hj"Sh]”hŒstruct rvt_dev_info *rdi”…”�”}”(hj$Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Subah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´KEhjSubj)�”}”(hhh]”hÝ)�”}”(hŒstructure to free”h]”hŒstructure to free”…”�”}”(hj;Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7Sh´KEhj8Subah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j7Sh´KEhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjýRubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´KGhjýRubhÝ)�”}”(hŒ2Free a structure allocated with rvt_alloc_device()”h]”hŒ2Free a structure allocated with rvt_alloc_device()”…”�”}”(hjsSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´KFhjýRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ rvt_register_device (C function)”Œc.rvt_register_device”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2int rvt_register_device (struct rvt_dev_info *rdi)”h]”j")�”}”(hŒ1int rvt_register_device(struct rvt_dev_info *rdi)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¢Sh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjžSh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjžSh²hh³j°Sh´Mãubjš)�”}”(hŒrvt_register_device”h]”jN)�”}”(hŒrvt_register_device”h]”hŒrvt_register_device”…”�”}”(hjÃSh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¿Subah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjžSh²hh³j°Sh´Mãubj·)�”}”(hŒ(struct rvt_dev_info *rdi)”h]”j½)�”}”(hŒstruct rvt_dev_info *rdi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjßSh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÛSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìSh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛSubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hjýSh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjúSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÿSŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÅSsbŒc.rvt_register_device”†”asbuh1hhjÛSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛSubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj+Th²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÛSubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hj8Th²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj×Subah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjžSh²hh³j°Sh´Mãubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjšSh²hh³j°Sh´Mãubah}”(h]”j•Sah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j°Sh´Mãhj—Sh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒregister a driver”h]”hŒregister a driver”…”�”}”(hjbTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mãhj_Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj—Sh²hh³j°Sh´Mãubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjzTjÓjzTjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hŒï**Parameters** ``struct rvt_dev_info *rdi`` main dev structure for all of rdmavt operations **Description** It is up to drivers to allocate the rdi and fill in the appropriate information. **Return** 0 on success otherwise an errno.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mçhj~Tubjø)�”}”(hhh]”jý)�”}”(hŒM``struct rvt_dev_info *rdi`` main dev structure for all of rdmavt operations ”h]”(j)�”}”(hŒ``struct rvt_dev_info *rdi``”h]”j )�”}”(hj£Th]”hŒstruct rvt_dev_info *rdi”…”�”}”(hj¥Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mähj�Tubj)�”}”(hhh]”hÝ)�”}”(hŒ/main dev structure for all of rdmavt operations”h]”hŒ/main dev structure for all of rdmavt operations”…”�”}”(hj¼Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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~TubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mæhj~TubhÝ)�”}”(hŒPIt is up to drivers to allocate the rdi and fill in the appropriate information.”h]”hŒPIt is up to drivers to allocate the rdi and fill in the appropriate information.”…”�”}”(hjôTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Måhj~TubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hjUh]”hŒReturn”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mèhj~TubhÝ)�”}”(hŒ 0 on success otherwise an errno.”h]”hŒ 0 on success otherwise an errno.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Méhj~Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"rvt_unregister_device (C function)”Œc.rvt_unregister_device”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5void rvt_unregister_device (struct rvt_dev_info *rdi)”h]”j")�”}”(hŒ4void rvt_unregister_device(struct rvt_dev_info *rdi)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjFUh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjFUh²hh³jXUh´MQubjš)�”}”(hŒrvt_unregister_device”h]”jN)�”}”(hŒrvt_unregister_device”h]”hŒrvt_unregister_device”…”�”}”(hjkUh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjgUubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjFUh²hh³jXUh´MQubj·)�”}”(hŒ(struct rvt_dev_info *rdi)”h]”j½)�”}”(hŒstruct rvt_dev_info *rdi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‡Uh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjƒUubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Uh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒUubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hj¥Uh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¢Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j§UŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjmUsbŒc.rvt_unregister_device”†”asbuh1hhjƒUubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒUubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÓUh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjƒUubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hjàUh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjƒUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjFUh²hh³jXUh´MQubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjBUh²hh³jXUh´MQubah}”(h]”j=Uah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jXUh´MQhj?Uh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒremove a driver”h]”hŒremove a driver”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MQhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj?Uh²hh³jXUh´MQubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj"VjÓj"VjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hŒ=**Parameters** ``struct rvt_dev_info *rdi`` rvt dev struct”h]”(hÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MUhj&Vubjø)�”}”(hhh]”jý)�”}”(hŒ+``struct rvt_dev_info *rdi`` rvt dev struct”h]”(j)�”}”(hŒ``struct rvt_dev_info *rdi``”h]”j )�”}”(hjKVh]”hŒstruct rvt_dev_info *rdi”…”�”}”(hjMVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIVubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MWhjEVubj)�”}”(hhh]”hÝ)�”}”(hŒrvt dev struct”h]”hŒrvt dev struct”…”�”}”(hjdVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MRhjaVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j`Vh´MWhjBVubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj&Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_init_port (C function)”Œc.rvt_init_port”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒfint rvt_init_port (struct rvt_dev_info *rdi, struct rvt_ibport *port, int port_index, u16 *pkey_table)”h]”j")�”}”(hŒeint rvt_init_port(struct rvt_dev_info *rdi, struct rvt_ibport *port, int port_index, u16 *pkey_table)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥Vh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¡Vh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mdubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Vh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡Vh²hh³j³Vh´Mdubjš)�”}”(hŒ rvt_init_port”h]”jN)�”}”(hŒ rvt_init_port”h]”hŒ rvt_init_port”…”�”}”(hjÆVh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÂVubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¡Vh²hh³j³Vh´Mdubj·)�”}”(hŒT(struct rvt_dev_info *rdi, struct rvt_ibport *port, int port_index, u16 *pkey_table)”h]”(j½)�”}”(hŒstruct rvt_dev_info *rdi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjâVh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÞVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïVh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞVubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjýVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jWŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÈVsbŒc.rvt_init_port”†”asbuh1hhjÞVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞVubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj.Wh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÞVubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hj;Wh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÞVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚVubj½)�”}”(hŒstruct rvt_ibport *port”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjTWh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjPWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPWubh)�”}”(hhh]”jN)�”}”(hŒ rvt_ibport”h]”hŒ rvt_ibport”…”�”}”(hjrWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjoWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jtWŒmodname”NŒ classname”Njkjn)�”}”jq]”jWŒc.rvt_init_port”†”asbuh1hhjPWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPWubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjžWh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjPWubjN)�”}”(hŒport”h]”hŒport”…”�”}”(hj«Wh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjPWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚVubj½)�”}”(hŒint port_index”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÄWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÀWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀWubjN)�”}”(hŒ port_index”h]”hŒ port_index”…”�”}”(hjàWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÀWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚVubj½)�”}”(hŒu16 *pkey_table”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjüWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjùWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jþWŒmodname”NŒ classname”Njkjn)�”}”jq]”jWŒc.rvt_init_port”†”asbuh1hhjõWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõWubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj(Xh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjõWubjN)�”}”(hŒ pkey_table”h]”hŒ pkey_table”…”�”}”(hj5Xh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjõWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚVubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¡Vh²hh³j³Vh´Mdubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj�Vh²hh³j³Vh´Mdubah}”(h]”j˜Vah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j³Vh´MdhjšVh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ"init internal data for driver port”h]”hŒ"init internal data for driver port”…”�”}”(hj_Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mdhj\Xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjšVh²hh³j³Vh´Mdubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjwXjÓjwXjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hXv**Parameters** ``struct rvt_dev_info *rdi`` rvt_dev_info struct ``struct rvt_ibport *port`` rvt port ``int port_index`` 0 based index of ports, different from IB core port num ``u16 *pkey_table`` pkey_table for **port** **Description** Keep track of a list of ports. No need to have a detach port. They persist until the driver goes away. **Return** always 0”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj�Xh]”hŒ Parameters”…”�”}”(hjƒXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mhhj{Xubjø)�”}”(hhh]”(jý)�”}”(hŒ1``struct rvt_dev_info *rdi`` rvt_dev_info struct ”h]”(j)�”}”(hŒ``struct rvt_dev_info *rdi``”h]”j )�”}”(hj Xh]”hŒstruct rvt_dev_info *rdi”…”�”}”(hj¢Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžXubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MehjšXubj)�”}”(hhh]”hÝ)�”}”(hŒrvt_dev_info struct”h]”hŒrvt_dev_info struct”…”�”}”(hj¹Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jµXh´Mehj¶Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jµXh´Mehj—Xubjý)�”}”(hŒ%``struct rvt_ibport *port`` rvt port ”h]”(j)�”}”(hŒ``struct rvt_ibport *port``”h]”j )�”}”(hjÙXh]”hŒstruct rvt_ibport *port”…”�”}”(hjÛXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MfhjÓXubj)�”}”(hhh]”hÝ)�”}”(hŒrvt port”h]”hŒrvt port”…”�”}”(hjòXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jîXh´MfhjïXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jîXh´Mfhj—Xubjý)�”}”(hŒK``int port_index`` 0 based index of ports, different from IB core port num ”h]”(j)�”}”(hŒ``int port_index``”h]”j )�”}”(hjYh]”hŒint port_index”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mghj Yubj)�”}”(hhh]”hÝ)�”}”(hŒ70 based index of ports, different from IB core port num”h]”hŒ70 based index of ports, different from IB core port num”…”�”}”(hj+Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j'Yh´Mghj(Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j'Yh´Mghj—Xubjý)�”}”(hŒ,``u16 *pkey_table`` pkey_table for **port** ”h]”(j)�”}”(hŒ``u16 *pkey_table``”h]”j )�”}”(hjKYh]”hŒu16 *pkey_table”…”�”}”(hjMYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MhhjEYubj)�”}”(hhh]”hÝ)�”}”(hŒpkey_table for **port**”h]”(hŒpkey_table for ”…”�”}”(hjdYh²hh³Nh´Nubjâ)�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjlYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjdYubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j`Yh´MhhjaYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j`Yh´Mhhj—Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj{XubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mjhj{XubhÝ)�”}”(hŒfKeep track of a list of ports. No need to have a detach port. They persist until the driver goes away.”h]”hŒfKeep track of a list of ports. No need to have a detach port. They persist until the driver goes away.”…”�”}”(hjªYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mihj{XubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hj»Yh]”hŒReturn”…”�”}”(hj½Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¹Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mlhj{XubhÝ)�”}”(hŒalways 0”h]”hŒalways 0”…”�”}”(hjÑYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´Mmhj{Xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_cq_enter (C function)”Œc.rvt_cq_enter”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJbool rvt_cq_enter (struct rvt_cq *cq, struct ib_wc *entry, bool solicited)”h]”j")�”}”(hŒIbool rvt_cq_enter(struct rvt_cq *cq, struct ib_wc *entry, bool solicited)”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjüYh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjüYh²hh³j Zh´Kubjš)�”}”(hŒ rvt_cq_enter”h]”jN)�”}”(hŒ rvt_cq_enter”h]”hŒ rvt_cq_enter”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjüYh²hh³j Zh´Kubj·)�”}”(hŒ8(struct rvt_cq *cq, struct ib_wc *entry, bool solicited)”h]”(j½)�”}”(hŒstruct rvt_cq *cq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjs_lock held. **Return** return true on success, else return false if cq is full.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj…[h]”hŒ Parameters”…”�”}”(hj‡[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjƒ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khj[ubjø)�”}”(hhh]”(jý)�”}”(hŒ'``struct rvt_cq *cq`` completion queue ”h]”(j)�”}”(hŒ``struct rvt_cq *cq``”h]”j )�”}”(hj¤[h]”hŒstruct rvt_cq *cq”…”�”}”(hj¦[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khjž[ubj)�”}”(hhh]”hÝ)�”}”(hŒcompletion queue”h]”hŒcompletion queue”…”�”}”(hj½[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¹[h´Khjº[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjž[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¹[h´Khj›[ubjý)�”}”(hŒ5``struct ib_wc *entry`` work completion entry to add ”h]”(j)�”}”(hŒ``struct ib_wc *entry``”h]”j )�”}”(hjÝ[h]”hŒstruct ib_wc *entry”…”�”}”(hjß[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khj×[ubj)�”}”(hhh]”hÝ)�”}”(hŒwork completion entry to add”h]”hŒwork completion entry to add”…”�”}”(hjö[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jò[h´Khjó[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jò[h´Khj›[ubjý)�”}”(hŒ2``bool solicited`` true if **entry** is solicited ”h]”(j)�”}”(hŒ``bool solicited``”h]”j )�”}”(hj\h]”hŒbool solicited”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khj\ubj)�”}”(hhh]”hÝ)�”}”(hŒtrue if **entry** is solicited”h]”(hŒtrue if ”…”�”}”(hj/\h²hh³Nh´Nubjâ)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hj7\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj/\ubhŒ is solicited”…”�”}”(hj/\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j+\h´Khj,\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j+\h´Khj›[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj[ubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khj[ubhÝ)�”}”(hŒ(This may be called with qp->s_lock held.”h]”hŒ(This may be called with qp->s_lock held.”…”�”}”(hjy\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khj[ubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khj[ubhÝ)�”}”(hŒ8return true on success, else return false if cq is full.”h]”hŒ8return true on success, else return false if cq is full.”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Khj[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_error_qp (C function)”Œc.rvt_error_qp”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;int rvt_error_qp (struct rvt_qp *qp, enum ib_wc_status err)”h]”j")�”}”(hŒ:int rvt_error_qp(struct rvt_qp *qp, enum ib_wc_status err)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÏ\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjË\h²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M÷ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ\h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjË\h²hh³jÝ\h´M÷ubjš)�”}”(hŒ rvt_error_qp”h]”jN)�”}”(hŒ rvt_error_qp”h]”hŒ rvt_error_qp”…”�”}”(hjð\h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjì\ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjË\h²hh³jÝ\h´M÷ubj·)�”}”(hŒ*(struct rvt_qp *qp, enum ib_wc_status err)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj]ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj]ubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hj*]h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj']ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j,]Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjò\sbŒc.rvt_error_qp”†”asbuh1hhj]ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ]h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj]ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjX]h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj]ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hje]h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj]ubj½)�”}”(hŒenum ib_wc_status err”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj~]h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjz]ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹]h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjz]ubh)�”}”(hhh]”jN)�”}”(hŒ ib_wc_status”h]”hŒ ib_wc_status”…”�”}”(hjœ]h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj™]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jž]Œmodname”NŒ classname”Njkjn)�”}”jq]”jF]Œc.rvt_error_qp”†”asbuh1hhjz]ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº]h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjz]ubjN)�”}”(hŒerr”h]”hŒerr”…”�”}”(hjÈ]h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjz]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj]ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjË\h²hh³jÝ\h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÇ\h²hh³jÝ\h´M÷ubah}”(h]”jÂ\ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÝ\h´M÷hjÄ\h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒput a QP into the error state”h]”hŒput a QP into the error state”…”�”}”(hjò]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M÷hjï]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÄ\h²hh³jÝ\h´M÷ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj ^jÓj ^jÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hXˆ**Parameters** ``struct rvt_qp *qp`` the QP to put into the error state ``enum ib_wc_status err`` the receive completion error to signal if a RWQE is active **Description** Flushes both send and receive work queues. **Return** true if last WQE event should be generated. The QP r_lock and s_lock should be held and interrupts disabled. If we are already in error state, just return.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj^h]”hŒ Parameters”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mûhj^ubjø)�”}”(hhh]”(jý)�”}”(hŒ9``struct rvt_qp *qp`` the QP to put into the error state ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hj3^h]”hŒstruct rvt_qp *qp”…”�”}”(hj5^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Møhj-^ubj)�”}”(hhh]”hÝ)�”}”(hŒ"the QP to put into the error state”h]”hŒ"the QP to put into the error state”…”�”}”(hjL^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒU``enum ib_wc_status err`` the receive completion error to signal if a RWQE is active ”h]”(j)�”}”(hŒ``enum ib_wc_status err``”h]”j )�”}”(hjl^h]”hŒenum ib_wc_status err”…”�”}”(hjn^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mùhjf^ubj)�”}”(hhh]”hÝ)�”}”(hŒ:the receive completion error to signal if a RWQE is active”h]”hŒ:the receive completion error to signal if a RWQE is active”…”�”}”(hj…^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�^h´Mùhj‚^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�^h´Mùhj*^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj^ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj§^h]”hŒ Description”…”�”}”(hj©^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¥^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mûhj^ubhÝ)�”}”(hŒ*Flushes both send and receive work queues.”h]”hŒ*Flushes both send and receive work queues.”…”�”}”(hj½^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Múhj^ubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mühj^ubhÝ)�”}”(hŒ›true if last WQE event should be generated. The QP r_lock and s_lock should be held and interrupts disabled. If we are already in error state, just return.”h]”hŒ›true if last WQE event should be generated. The QP r_lock and s_lock should be held and interrupts disabled. If we are already in error state, just return.”…”�”}”(hjä^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mýhj^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_get_rwqe (C function)”Œc.rvt_get_rwqe”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5int rvt_get_rwqe (struct rvt_qp *qp, bool wr_id_only)”h]”j")�”}”(hŒ4int rvt_get_rwqe(struct rvt_qp *qp, bool wr_id_only)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj_h²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj_h²hh³j!_h´M ubjš)�”}”(hŒ rvt_get_rwqe”h]”jN)�”}”(hŒ rvt_get_rwqe”h]”hŒ rvt_get_rwqe”…”�”}”(hj4_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj0_ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj_h²hh³j!_h´M ubj·)�”}”(hŒ$(struct rvt_qp *qp, bool wr_id_only)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjP_h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjL_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjL_ubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjn_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjk_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jp_Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj6_sbŒc.rvt_get_rwqe”†”asbuh1hhjL_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjL_ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjœ_h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjL_ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj©_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjL_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjH_ubj½)�”}”(hŒbool wr_id_only”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hjÂ_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¾_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾_ubjN)�”}”(hŒ wr_id_only”h]”hŒ wr_id_only”…”�”}”(hjÝ_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¾_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjH_ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj_h²hh³j!_h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj _h²hh³j!_h´M ubah}”(h]”j_ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j!_h´M hj_h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ%copy the next RWQE into the QP's RWQE”h]”hŒ'copy the next RWQE into the QP’s RWQE”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M hj`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj_h²hh³j!_h´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj`jÓj`jÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hŒ÷**Parameters** ``struct rvt_qp *qp`` the QP ``bool wr_id_only`` update qp->r_wr_id only, not qp->r_sge **Description** Return -1 if there is a local error, 0 if no RWQE is available, otherwise return 1. Can be called from interrupt level.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj)`h]”hŒ Parameters”…”�”}”(hj+`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj'`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M hj#`ubjø)�”}”(hhh]”(jý)�”}”(hŒ``struct rvt_qp *qp`` the QP ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hjH`h]”hŒstruct rvt_qp *qp”…”�”}”(hjJ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M hjB`ubj)�”}”(hhh]”hÝ)�”}”(hŒthe QP”h]”hŒthe QP”…”�”}”(hja`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ;``bool wr_id_only`` update qp->r_wr_id only, not qp->r_sge ”h]”(j)�”}”(hŒ``bool wr_id_only``”h]”j )�”}”(hj�`h]”hŒbool wr_id_only”…”�”}”(hjƒ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M hj{`ubj)�”}”(hhh]”hÝ)�”}”(hŒ&update qp->r_wr_id only, not qp->r_sge”h]”hŒ&update qp->r_wr_id only, not qp->r_sge”…”�”}”(hjš`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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#`ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj¼`h]”hŒ Description”…”�”}”(hj¾`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjº`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M hj#`ubhÝ)�”}”(hŒSReturn -1 if there is a local error, 0 if no RWQE is available, otherwise return 1.”h]”hŒSReturn -1 if there is a local error, 0 if no RWQE is available, otherwise return 1.”…”�”}”(hjÒ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M hj#`ubhÝ)�”}”(hŒ#Can be called from interrupt level.”h]”hŒ#Can be called from interrupt level.”…”�”}”(hjá`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M hj#`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_comm_est (C function)”Œc.rvt_comm_est”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(•j)�”}”(hŒ%void rvt_comm_est (struct rvt_qp *qp)”h]”j")�”}”(hŒ$void rvt_comm_est(struct rvt_qp *qp)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj ah²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MŠ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ah²hh³jah´MŠ ubjš)�”}”(hŒ rvt_comm_est”h]”jN)�”}”(hŒ rvt_comm_est”h]”hŒ rvt_comm_est”…”�”}”(hj1ah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj-aubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj ah²hh³jah´MŠ ubj·)�”}”(hŒ(struct rvt_qp *qp)”h]”j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjMah²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjIaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIaubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjkah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjhaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jmaŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj3asbŒc.rvt_comm_est”†”asbuh1hhjIaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIaubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj™ah²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjIaubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj¦ah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjIaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjEaubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj ah²hh³jah´MŠ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjah²hh³jah´MŠ ubah}”(h]”jaah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jah´MŠ hjah²hubj±)�”}”(hhh]”hÝ)�”}”(hŒhandle trap with QP established”h]”hŒhandle trap with QP established”…”�”}”(hjÐah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MŠ hjÍah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjah²hh³jah´MŠ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjèajÓjèajÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hŒ.**Parameters** ``struct rvt_qp *qp`` the QP”h]”(hÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MŽ hjìaubjø)�”}”(hhh]”jý)�”}”(hŒ``struct rvt_qp *qp`` the QP”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hjbh]”hŒstruct rvt_qp *qp”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M� hj bubj)�”}”(hhh]”hÝ)�”}”(hŒthe QP”h]”hŒthe QP”…”�”}”(hj*bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M‹ hj'bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j&bh´M� hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjìaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_add_rnr_timer (C function)”Œc.rvt_add_rnr_timer”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void rvt_add_rnr_timer (struct rvt_qp *qp, u32 aeth)”h]”j")�”}”(hŒ3void rvt_add_rnr_timer(struct rvt_qp *qp, u32 aeth)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjkbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjgbh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MÕ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjgbh²hh³jybh´MÕ ubjš)�”}”(hŒrvt_add_rnr_timer”h]”jN)�”}”(hŒrvt_add_rnr_timer”h]”hŒrvt_add_rnr_timer”…”�”}”(hjŒbh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjˆbubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjgbh²hh³jybh´MÕ ubj·)�”}”(hŒ(struct rvt_qp *qp, u32 aeth)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¨bh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¤bubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤bubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjÆbh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÃbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÈbŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjŽbsbŒc.rvt_add_rnr_timer”†”asbuh1hhj¤bubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤bubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjôbh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¤bubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¤bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj bubj½)�”}”(hŒu32 aeth”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jcŒmodname”NŒ classname”Njkjn)�”}”jq]”jâbŒc.rvt_add_rnr_timer”†”asbuh1hhjcubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;ch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjcubjN)�”}”(hŒaeth”h]”hŒaeth”…”�”}”(hjIch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj bubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjgbh²hh³jybh´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjcbh²hh³jybh´MÕ ubah}”(h]”j^bah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jybh´MÕ hj`bh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ add/start an rnr timer on the QP”h]”hŒ add/start an rnr timer on the QP”…”�”}”(hjsch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MÕ hjpch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj`bh²hh³jybh´MÕ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‹cjÓj‹cjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hŒo**Parameters** ``struct rvt_qp *qp`` the QP ``u32 aeth`` aeth of RNR timeout, simulated aeth for loopback”h]”(hÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MÙ hj�cubjø)�”}”(hhh]”(jý)�”}”(hŒ``struct rvt_qp *qp`` the QP ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hj´ch]”hŒstruct rvt_qp *qp”…”�”}”(hj¶ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MÖ hj®cubj)�”}”(hhh]”hÝ)�”}”(hŒthe QP”h]”hŒthe QP”…”�”}”(hjÍch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ=``u32 aeth`` aeth of RNR timeout, simulated aeth for loopback”h]”(j)�”}”(hŒ ``u32 aeth``”h]”j )�”}”(hjích]”hŒu32 aeth”…”�”}”(hjïch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MØ hjçcubj)�”}”(hhh]”hÝ)�”}”(hŒ0aeth of RNR timeout, simulated aeth for loopback”h]”hŒ0aeth of RNR timeout, simulated aeth for loopback”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M× hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jdh´MØ hj«cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj�cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_stop_rc_timers (C function)”Œc.rvt_stop_rc_timers”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void rvt_stop_rc_timers (struct rvt_qp *qp)”h]”j")�”}”(hŒ*void rvt_stop_rc_timers(struct rvt_qp *qp)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjGdh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjCdh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mç ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCdh²hh³jUdh´Mç ubjš)�”}”(hŒrvt_stop_rc_timers”h]”jN)�”}”(hŒrvt_stop_rc_timers”h]”hŒrvt_stop_rc_timers”…”�”}”(hjhdh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjddubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjCdh²hh³jUdh´Mç ubj·)�”}”(hŒ(struct rvt_qp *qp)”h]”j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj„dh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj€dubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘dh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€dubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hj¢dh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŸdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¤dŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjjdsbŒc.rvt_stop_rc_timers”†”asbuh1hhj€dubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€dubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÐdh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj€dubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjÝdh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj€dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj|dubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjCdh²hh³jUdh´Mç ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj?dh²hh³jUdh´Mç ubah}”(h]”j:dah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jUdh´Mç hjqp with the current QP when the return value is 0. **Return** 0 - iter->qp is valid 1 - no more QPs”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjlh]”hŒ Parameters”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÿkubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mm hjûkubjø)�”}”(hhh]”jý)�”}”(hŒ*``struct rvt_qp_iter *iter`` the iterator ”h]”(j)�”}”(hŒ``struct rvt_qp_iter *iter``”h]”j )�”}”(hj lh]”hŒstruct rvt_qp_iter *iter”…”�”}”(hj"lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mj hjlubj)�”}”(hhh]”hÝ)�”}”(hŒ the iterator”h]”hŒ the iterator”…”�”}”(hj9lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j5lh´Mj hj6lubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j5lh´Mj hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjûkubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj[lh]”hŒ Description”…”�”}”(hj]lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjYlubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Ml hjûkubhÝ)�”}”(hŒKFine grained QP iterator suitable for use with debugfs seq_file mechanisms.”h]”hŒKFine grained QP iterator suitable for use with debugfs seq_file mechanisms.”…”�”}”(hjqlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mk hjûkubhÝ)�”}”(hŒ@Updates iter->qp with the current QP when the return value is 0.”h]”hŒ@Updates iter->qp with the current QP when the return value is 0.”…”�”}”(hj€lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mn hjûkubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hj‘lh]”hŒReturn”…”�”}”(hj“lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj�lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mq hjûkubhÝ)�”}”(hŒ%0 - iter->qp is valid 1 - no more QPs”h]”hŒ%0 - iter->qp is valid 1 - no more QPs”…”�”}”(hj§lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mr hjûkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_qp_iter (C function)”Œ c.rvt_qp_iter”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXvoid rvt_qp_iter (struct rvt_dev_info *rdi, u64 v, void (*cb)(struct rvt_qp *qp, u64 v))”h]”j")�”}”(hŒWvoid rvt_qp_iter(struct rvt_dev_info *rdi, u64 v, void (*cb)(struct rvt_qp *qp, u64 v))”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÖlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÒlh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M¨ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjålh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒlh²hh³jälh´M¨ ubjš)�”}”(hŒ rvt_qp_iter”h]”jN)�”}”(hŒ rvt_qp_iter”h]”hŒ rvt_qp_iter”…”�”}”(hj÷lh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjólubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÒlh²hh³jälh´M¨ ubj·)�”}”(hŒG(struct rvt_dev_info *rdi, u64 v, void (*cb)(struct rvt_qp *qp, u64 v))”h]”(j½)�”}”(hŒstruct rvt_dev_info *rdi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjmubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hj1mh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj.mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j3mŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjùlsbŒ c.rvt_qp_iter”†”asbuh1hhjmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjmubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj_mh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjmubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hjlmh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj mubj½)�”}”(hŒu64 v”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjˆmh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj…mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŠmŒmodname”NŒ classname”Njkjn)�”}”jq]”jMmŒ c.rvt_qp_iter”†”asbuh1hhj�mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦mh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�mubjN)�”}”(hjhh]”hŒv”…”�”}”(hj´mh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj mubj½)�”}”(hŒ$void (*cb)(struct rvt_qp *qp, u64 v)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌmh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÈmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÈmubj‰)�”}”(hjä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ÈmubjN)�”}”(hŒcb”h]”hŒcb”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÈmubj‰)�”}”(hj*ä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Œstruct”…”�”}”(hj*nh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÈmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÈmubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjHnh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjEnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jJnŒmodname”NŒ classname”Njkjn)�”}”jq]”jMmŒ c.rvt_qp_iter”†”asbuh1hhjÈmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfnh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÈmubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjtnh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÈmubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÈmubj‰)�”}”(hjŽäh]”hŒ,”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÈmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœnh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÈmubh)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj­nh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjªnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¯nŒmodname”NŒ classname”Njkjn)�”}”jq]”jMmŒ c.rvt_qp_iter”†”asbuh1hhjÈmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËnh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÈmubjN)�”}”(hjhh]”hŒv”…”�”}”(hjÙnh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÈmubj‰)�”}”(hj*äh]”hŒ)”…”�”}”(hjænh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÈmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÒlh²hh³jälh´M¨ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÎlh²hh³jälh´M¨ ubah}”(h]”jÉlah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jälh´M¨ hjËlh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiterate all QPs”h]”hŒiterate all QPs”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M¨ hj oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjËlh²hh³jälh´M¨ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj'ojÓj'ojÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hXä**Parameters** ``struct rvt_dev_info *rdi`` rvt devinfo ``u64 v`` a 64-bit value ``void (*cb)(struct rvt_qp *qp, u64 v)`` a callback **Description** This provides a way for iterating all QPs. The **cb** is a user-defined callback and **v** is a 64-bit value passed to and relevant for processing in the cb. An example use case would be to alter QP processing based on criteria not part of the rvt_qp. The code has an internal iterator to simplify non seq_file use cases.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj1oh]”hŒ Parameters”…”�”}”(hj3oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj/oubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M¬ hj+oubjø)�”}”(hhh]”(jý)�”}”(hŒ)``struct rvt_dev_info *rdi`` rvt devinfo ”h]”(j)�”}”(hŒ``struct rvt_dev_info *rdi``”h]”j )�”}”(hjPoh]”hŒstruct rvt_dev_info *rdi”…”�”}”(hjRoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNoubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M© hjJoubj)�”}”(hhh]”hÝ)�”}”(hŒ rvt devinfo”h]”hŒ rvt devinfo”…”�”}”(hjioh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jeoh´M© hjfoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jeoh´M© hjGoubjý)�”}”(hŒ``u64 v`` a 64-bit value ”h]”(j)�”}”(hŒ ``u64 v``”h]”j )�”}”(hj‰oh]”hŒu64 v”…”�”}”(hj‹oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡oubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mª hjƒoubj)�”}”(hhh]”hÝ)�”}”(hŒa 64-bit value”h]”hŒa 64-bit value”…”�”}”(hj¢oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jžoh´Mª hjŸoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jžoh´Mª hjGoubjý)�”}”(hŒ4``void (*cb)(struct rvt_qp *qp, u64 v)`` a callback ”h]”(j)�”}”(hŒ(``void (*cb)(struct rvt_qp *qp, u64 v)``”h]”j )�”}”(hjÂoh]”hŒ$void (*cb)(struct rvt_qp *qp, u64 v)”…”�”}”(hjÄoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀoubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M« hj¼oubj)�”}”(hhh]”hÝ)�”}”(hŒ a callback”h]”hŒ a callback”…”�”}”(hjÛoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j×oh´M« hjØoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j×oh´M« hjGoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj+oubhÝ)�”}”(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&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M­ hj+oubhÝ)�”}”(hŒ*This provides a way for iterating all QPs.”h]”hŒ*This provides a way for iterating all QPs.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´M¬ hj+oubhÝ)�”}”(hŒÑThe **cb** is a user-defined callback and **v** is a 64-bit value passed to and relevant for processing in the cb. An example use case would be to alter QP processing based on criteria not part of the rvt_qp.”h]”(hŒThe ”…”�”}”(hj"ph²hh³Nh´Nubjâ)�”}”(hŒ**cb**”h]”hŒcb”…”�”}”(hj*ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj"pubhŒ is a user-defined callback and ”…”�”}”(hj"ph²hh³Nh´Nubjâ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´ML hj:uubjø)�”}”(hhh]”jý)�”}”(hŒ&``struct rvt_qp *sqp`` the sending QP ”h]”(j)�”}”(hŒ``struct rvt_qp *sqp``”h]”j )�”}”(hj_uh]”hŒstruct rvt_qp *sqp”…”�”}”(hjauh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]uubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MI hjYuubj)�”}”(hhh]”hÝ)�”}”(hŒthe sending QP”h]”hŒthe sending QP”…”�”}”(hjxuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jtuh´MI hjuuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jtuh´MI hjVuubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj:uubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjšuh]”hŒ Description”…”�”}”(hjœuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj˜uubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MK hj:uubhÝ)�”}”(hX8This is called from rvt_do_send() to forward a WQE addressed to the same HFI Note that although we are single threaded due to the send engine, we still have to protect against post_send(). We don't have to worry about receive interrupts since this is a connected protocol and all packets will pass through here.”h]”hX:This is called from rvt_do_send() to forward a WQE addressed to the same HFI Note that although we are single threaded due to the send engine, we still have to protect against post_send(). We don’t have to worry about receive interrupts since this is a connected protocol and all packets will pass through here.”…”�”}”(hj°uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´MJ hj:uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_mcast_find (C function)”Œc.rvt_mcast_find”hNt”auh1jhjô8h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒWstruct rvt_mcast * rvt_mcast_find (struct rvt_ibport *ibp, union ib_gid *mgid, u16 lid)”h]”j")�”}”(hŒUstruct rvt_mcast *rvt_mcast_find(struct rvt_ibport *ibp, union ib_gid *mgid, u16 lid)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjßuh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÛuh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´K^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíuh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛuh²hh³jìuh´K^ubh)�”}”(hhh]”jN)�”}”(hŒ rvt_mcast”h]”hŒ rvt_mcast”…”�”}”(hjþuh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjûuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jvŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒrvt_mcast_find”sbŒc.rvt_mcast_find”†”asbuh1hhjÛuh²hh³jìuh´K^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛuh²hh³jìuh´K^ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj-vh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÛuh²hh³jìuh´K^ubjš)�”}”(hŒrvt_mcast_find”h]”jN)�”}”(hjvh]”hŒrvt_mcast_find”…”�”}”(hj>vh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:vubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÛuh²hh³jìuh´K^ubj·)�”}”(hŒ5(struct rvt_ibport *ibp, union ib_gid *mgid, u16 lid)”h]”(j½)�”}”(hŒstruct rvt_ibport *ibp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjYvh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjUvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUvubh)�”}”(hhh]”jN)�”}”(hŒ rvt_ibport”h]”hŒ rvt_ibport”…”�”}”(hjwvh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjtvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jyvŒmodname”NŒ classname”Njkjn)�”}”jq]”jvŒc.rvt_mcast_find”†”asbuh1hhjUvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•vh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUvubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj£vh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjUvubjN)�”}”(hŒibp”h]”hŒibp”…”�”}”(hj°vh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjUvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQvubj½)�”}”(hŒunion ib_gid *mgid”h]”(j()�”}”(hjŸœh]”hŒunion”…”�”}”(hjÉvh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÅvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÅvubh)�”}”(hhh]”jN)�”}”(hŒib_gid”h]”hŒib_gid”…”�”}”(hjçvh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjävubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jévŒmodname”NŒ classname”Njkjn)�”}”jq]”jvŒc.rvt_mcast_find”†”asbuh1hhjÅvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÅvubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÅvubjN)�”}”(hŒmgid”h]”hŒmgid”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÅvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQvubj½)�”}”(hŒu16 lid”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjwŒmodname”NŒ classname”Njkjn)�”}”jq]”jvŒc.rvt_mcast_find”†”asbuh1hhj5wubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZwh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5wubjN)�”}”(hŒlid”h]”hŒlid”…”�”}”(hjhwh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj5wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQvubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÛuh²hh³jìuh´K^ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj×uh²hh³jìuh´K^ubah}”(h]”jÒuah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jìuh´K^hjÔuh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ7search the global table for the given multicast GID/LID”h]”hŒ7search the global table for the given multicast GID/LID”…”�”}”(hj’wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´K^hj�wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÔuh²hh³jìuh´K^ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjªwjÓjªwjÔ‰jÕ‰jÖ‰uh1jh²hhjô8h³Nh´NubjØ)�”}”(hX¶**Parameters** ``struct rvt_ibport *ibp`` the IB port structure ``union ib_gid *mgid`` the multicast GID to search for ``u16 lid`` the multicast LID portion of the multicast address (host order) **NOTE** It is valid to have 1 MLID with multiple MGIDs. It is not valid to have 1 MGID with multiple MLIDs. **Description** The caller is responsible for decrementing the reference count if found. **Return** NULL if not found.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kbhj®wubjø)�”}”(hhh]”(jý)�”}”(hŒ1``struct rvt_ibport *ibp`` the IB port structure ”h]”(j)�”}”(hŒ``struct rvt_ibport *ibp``”h]”j )�”}”(hjÓwh]”hŒstruct rvt_ibport *ibp”…”�”}”(hjÕwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑwubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´KahjÍwubj)�”}”(hhh]”hÝ)�”}”(hŒthe IB port structure”h]”hŒthe IB port structure”…”�”}”(hjìwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jèwh´Kahjéwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jèwh´KahjÊwubjý)�”}”(hŒ7``union ib_gid *mgid`` the multicast GID to search for ”h]”(j)�”}”(hŒ``union ib_gid *mgid``”h]”j )�”}”(hj xh]”hŒunion ib_gid *mgid”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”u•Zh1jhj xubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kbhjxubj)�”}”(hhh]”hÝ)�”}”(hŒthe multicast GID to search for”h]”hŒthe multicast GID to search for”…”�”}”(hj%xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j!xh´Kbhj"xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j!xh´KbhjÊwubjý)�”}”(hŒL``u16 lid`` the multicast LID portion of the multicast address (host order) ”h]”(j)�”}”(hŒ ``u16 lid``”h]”j )�”}”(hjExh]”hŒu16 lid”…”�”}”(hjGxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCxubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kchj?xubj)�”}”(hhh]”hÝ)�”}”(hŒ?the multicast LID portion of the multicast address (host order)”h]”hŒ?the multicast LID portion of the multicast address (host order)”…”�”}”(hj^xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jZxh´Kchj[xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jZxh´KchjÊwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj®wubhÝ)�”}”(hŒ**NOTE**”h]”jâ)�”}”(hj€xh]”hŒNOTE”…”�”}”(hj‚xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj~xubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kehj®wubhÝ)�”}”(hŒdIt is valid to have 1 MLID with multiple MGIDs. It is not valid to have 1 MGID with multiple MLIDs.”h]”hŒdIt is valid to have 1 MLID with multiple MGIDs. It is not valid to have 1 MGID with multiple MLIDs.”…”�”}”(hj–xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´K_hj®wubhÝ)�”}”(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&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kbhj®wubhÝ)�”}”(hŒHThe caller is responsible for decrementing the reference count if found.”h]”hŒHThe caller is responsible for decrementing the reference count if found.”…”�”}”(hj½xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kdhj®wubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hjÎxh]”hŒReturn”…”�”}”(hjÐxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÌxubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kfhj®wubhÝ)�”}”(hŒNULL if not found.”h]”hŒNULL if not found.”…”�”}”(hjäxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:67: ./drivers/infiniband/sw/rdmavt/mcast.c”h´Kghj®wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjô8h²hh³Nh´Nubeh}”(h]”Œrdma-verbs-transport-library”ah ]”h"]”Œrdma verbs transport library”ah$]”h&]”uh1hµhh·h²hh³hÊh´K/ubh¶)�”}”(hhh]”(h»)�”}”(hŒUpper Layer Protocols”h]”hŒUpper Layer Protocols”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjyh²hh³hÊh´KGubh¶)�”}”(hhh]”(h»)�”}”(hŒ iSCSI Extensions for RDMA (iSER)”h]”hŒ iSCSI Extensions for RDMA (iSER)”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjyh²hh³hÊh´KJubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_data_buf (C struct)”Œc.iser_data_buf”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_data_buf”h]”j")�”}”(hŒstruct iser_data_buf”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj=yh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj9yh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKyh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9yh²hh³jJyh´Kubjš)�”}”(hŒ iser_data_buf”h]”jN)�”}”(hj7yh]”hŒ iser_data_buf”…”�”}”(hj]yh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjYyubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj9yh²hh³jJyh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj5yh²hh³jJyh´Kubah}”(h]”j0yah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jJyh´Khj2yh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiSER data buffer”h]”hŒiSER data buffer”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Kµhj|yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj2yh²hh³jJyh´Kubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj—yjÓj—yjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX4**Definition**:: struct iser_data_buf { struct scatterlist *sg; int size; unsigned long data_len; int dma_nents; }; **Members** ``sg`` pointer to the sg list ``size`` num entries of this sg ``data_len`` total buffer byte len ``dma_nents`` returned by dma_map_sg”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(jâ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj£yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjŸyubhŒ:”…”�”}”(hjŸyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´K¹hj›yubhŒ literal_block”“”)�”}”(hŒwstruct iser_data_buf { struct scatterlist *sg; int size; unsigned long data_len; int dma_nents; };”h]”hŒwstruct iser_data_buf { struct scatterlist *sg; int size; unsigned long data_len; int dma_nents; };”…”�”}”hj¾ysbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´K»hj›yubhÝ)�”}”(hŒ **Members**”h]”jâ)�”}”(hjÏyh]”hŒMembers”…”�”}”(hjÑyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÍyubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´KÂhj›yubjø)�”}”(hhh]”(jý)�”}”(hŒ``sg`` pointer to the sg list ”h]”(j)�”}”(hŒ``sg``”h]”j )�”}”(hjîyh]”hŒsg”…”�”}”(hjðyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìyubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´K¸hjèyubj)�”}”(hhh]”hÝ)�”}”(hŒpointer to the sg list”h]”hŒpointer to the sg list”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jzh´K¸hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jzh´K¸hjåyubjý)�”}”(hŒ ``size`` num entries of this sg ”h]”(j)�”}”(hŒ``size``”h]”j )�”}”(hj'zh]”hŒsize”…”�”}”(hj)zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%zubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´K¹hj!zubj)�”}”(hhh]”hÝ)�”}”(hŒnum entries of this sg”h]”hŒnum entries of this sg”…”�”}”(hj@zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jhj͆ubj)�”}”(hhh]”hÝ)�”}”(hŒ memory region”h]”hŒ memory region”…”�”}”(hjì†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ"``sig_mr`` signature memory region”h]”(j)�”}”(hŒ ``sig_mr``”h]”j )�”}”(hj ‡h]”hŒsig_mr”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M>hj‡ubj)�”}”(hhh]”hÝ)�”}”(hŒsignature memory region”h]”hŒsignature memory region”…”�”}”(hj%‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_fr_desc (C struct)”Œc.iser_fr_desc”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_fr_desc”h]”j")�”}”(hŒstruct iser_fr_desc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjf‡h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjb‡h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb‡h²hh³js‡h´MEubjš)�”}”(hŒ iser_fr_desc”h]”jN)�”}”(hj`‡h]”hŒ iser_fr_desc”…”�”}”(hj†‡h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‚‡ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjb‡h²hh³js‡h´MEubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj^‡h²hh³js‡h´MEubah}”(h]”jY‡ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³js‡h´MEhj[‡h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒFast registration descriptor”h]”hŒFast registration descriptor”…”�”}”(hj¨‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MFhj¥‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj[‡h²hh³js‡h´MEubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjÀ‡jÓjÀ‡jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hXœ**Definition**:: struct iser_fr_desc { struct list_head list; struct iser_reg_resources rsc; bool sig_protected; struct list_head all_list; }; **Members** ``list`` entry in connection fastreg pool ``rsc`` data buffer registration resources ``sig_protected`` is region protected indicator ``all_list`` first and last list members”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MJhjćubj½y)�”}”(hŒ·struct iser_fr_desc { struct list_head list; struct iser_reg_resources rsc; bool sig_protected; struct list_head all_list; };”h]”hŒ·struct iser_fr_desc { struct list_head list; struct iser_reg_resources rsc; bool sig_protected; struct list_head all_list; };”…”�”}”hjå‡sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MLhjćubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MShjćubjø)�”}”(hhh]”(jý)�”}”(hŒ*``list`` entry in connection fastreg pool ”h]”(j)�”}”(hŒ``list``”h]”j )�”}”(hjˆh]”hŒlist”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MIhjˆubj)�”}”(hhh]”hÝ)�”}”(hŒ entry in connection fastreg pool”h]”hŒ entry in connection fastreg pool”…”�”}”(hj.ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j*ˆh´MIhj+ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j*ˆh´MIhj ˆubjý)�”}”(hŒ+``rsc`` data buffer registration resources ”h]”(j)�”}”(hŒ``rsc``”h]”j )�”}”(hjNˆh]”hŒrsc”…”�”}”(hjPˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MJhjHˆubj)�”}”(hhh]”hÝ)�”}”(hŒ"data buffer registration resources”h]”hŒ"data buffer registration resources”…”�”}”(hjgˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jcˆh´MJhjdˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jcˆh´MJhj ˆubjý)�”}”(hŒ0``sig_protected`` is region protected indicator ”h]”(j)�”}”(hŒ``sig_protected``”h]”j )�”}”(hj‡ˆh]”hŒ sig_protected”…”�”}”(hj‰ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MKhj�ˆubj)�”}”(hhh]”hÝ)�”}”(hŒis region protected indicator”h]”hŒis region protected indicator”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœˆh´MKhj�ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jœˆh´MKhj ˆubjý)�”}”(hŒ(``all_list`` first and last list members”h]”(j)�”}”(hŒ ``all_list``”h]”j )�”}”(hjÀˆh]”hŒall_list”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MKhjºˆubj)�”}”(hhh]”hÝ)�”}”(hŒfirst and last list members”h]”hŒfirst and last list members”…”�”}”(hjÙˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MLhjÖˆ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ćubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_fr_pool (C struct)”Œc.iser_fr_pool”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_fr_pool”h]”j")�”}”(hŒstruct iser_fr_pool”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‰h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(‰h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰h²hh³j'‰h´MRubjš)�”}”(hŒ iser_fr_pool”h]”jN)�”}”(hj‰h]”hŒ iser_fr_pool”…”�”}”(hj:‰h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6‰ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj‰h²hh³j'‰h´MRubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj‰h²hh³j'‰h´MRubah}”(h]”j ‰ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j'‰h´MRhj‰h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!connection fast registration pool”h]”hŒ!connection fast registration pool”…”�”}”(hj\‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MUhjY‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj‰h²hh³j'‰h´MRubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjt‰jÓjt‰jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hXA**Definition**:: struct iser_fr_pool { struct list_head list; spinlock_t lock; int size; struct list_head all_list; }; **Members** ``list`` list of fastreg descriptors ``lock`` protects fastreg pool ``size`` size of the pool ``all_list`` first and last list members”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MYhjx‰ubj½y)�”}”(hŒƒstruct iser_fr_pool { struct list_head list; spinlock_t lock; int size; struct list_head all_list; };”h]”hŒƒstruct iser_fr_pool { struct list_head list; spinlock_t lock; int size; struct list_head all_list; };”…”�”}”hj™‰sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M[hjx‰ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mbhjx‰ubjø)�”}”(hhh]”(jý)�”}”(hŒ%``list`` list of fastreg descriptors ”h]”(j)�”}”(hŒ``list``”h]”j )�”}”(hjɉh]”hŒlist”…”�”}”(hjˉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjljubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MXhjÉubj)�”}”(hhh]”hÝ)�”}”(hŒlist of fastreg descriptors”h]”hŒlist of fastreg descriptors”…”�”}”(hjâ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÞ‰h´MXhj߉ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÞ‰h´MXhjÀ‰ubjý)�”}”(hŒ``lock`` protects fastreg pool ”h]”(j)�”}”(hŒ``lock``”h]”j )�”}”(hjŠh]”hŒlock”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MYhjü‰ubj)�”}”(hhh]”hÝ)�”}”(hŒprotects fastreg pool”h]”hŒprotects fastreg pool”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŠh´MYhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŠh´MYhjÀ‰ubjý)�”}”(hŒ``size`` size of the pool ”h]”(j)�”}”(hŒ``size``”h]”j )�”}”(hj;Šh]”hŒsize”…”�”}”(hj=Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MZhj5Šubj)�”}”(hhh]”hÝ)�”}”(hŒsize of the pool”h]”hŒsize of the pool”…”�”}”(hjTŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPŠh´MZhjQŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jPŠh´MZhjÀ‰ubjý)�”}”(hŒ(``all_list`` first and last list members”h]”(j)�”}”(hŒ ``all_list``”h]”j )�”}”(hjtŠh]”hŒall_list”…”�”}”(hjvŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MZhjnŠubj)�”}”(hhh]”hÝ)�”}”(hŒfirst and last list members”h]”hŒfirst and last list members”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M[hjŠŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‰Šh´MZhjÀ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjx‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_conn (C struct)”Œ c.ib_conn”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒib_conn”h]”j")�”}”(hŒstruct ib_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjΊh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÊŠh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Maubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜŠh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊŠh²hh³jÛŠh´Maubjš)�”}”(hŒib_conn”h]”jN)�”}”(hjÈŠh]”hŒib_conn”…”�”}”(hjîŠh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjêŠubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÊŠh²hh³jÛŠh´Maubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÆŠh²hh³jÛŠh´Maubah}”(h]”jÁŠah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÛŠh´MahjÊh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒInfiniband related objects”h]”hŒInfiniband related objects”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mdhj ‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÊh²hh³jÛŠh´Maubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj(‹jÓj(‹jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX¶**Definition**:: struct ib_conn { struct rdma_cm_id *cma_id; struct ib_qp *qp; struct ib_cq *cq; u32 cq_size; struct iser_device *device; struct iser_fr_pool fr_pool; bool pi_support; struct ib_cqe reg_cqe; }; **Members** ``cma_id`` rdma_cm connection maneger handle ``qp`` Connection Queue-pair ``cq`` Connection completion queue ``cq_size`` The number of max outstanding completions ``device`` reference to iser device ``fr_pool`` connection fast registration pool ``pi_support`` Indicate device T10-PI support ``reg_cqe`` completion handler”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(jâ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj4‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj0‹ubhŒ:”…”�”}”(hj0‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mhhj,‹ubj½y)�”}”(hX)struct ib_conn { struct rdma_cm_id *cma_id; struct ib_qp *qp; struct ib_cq *cq; u32 cq_size; struct iser_device *device; struct iser_fr_pool fr_pool; bool pi_support; struct ib_cqe reg_cqe; };”•h]”hX)struct ib_conn { struct rdma_cm_id *cma_id; struct ib_qp *qp; struct ib_cq *cq; u32 cq_size; struct iser_device *device; struct iser_fr_pool fr_pool; bool pi_support; struct ib_cqe reg_cqe; };”…”�”}”hjM‹sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mjhj,‹ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Muhj,‹ubjø)�”}”(hhh]”(jý)�”}”(hŒ-``cma_id`` rdma_cm connection maneger handle ”h]”(j)�”}”(hŒ ``cma_id``”h]”j )�”}”(hj}‹h]”hŒcma_id”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mghjw‹ubj)�”}”(hhh]”hÝ)�”}”(hŒ!rdma_cm connection maneger handle”h]”hŒ!rdma_cm connection maneger handle”…”�”}”(hj–‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j’‹h´Mghj“‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j’‹h´Mghjt‹ubjý)�”}”(hŒ``qp`` Connection Queue-pair ”h]”(j)�”}”(hŒ``qp``”h]”j )�”}”(hj¶‹h]”hŒqp”…”�”}”(hj¸‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mhhj°‹ubj)�”}”(hhh]”hÝ)�”}”(hŒConnection Queue-pair”h]”hŒConnection Queue-pair”…”�”}”(hjÏ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jË‹h´MhhjÌ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jË‹h´Mhhjt‹ubjý)�”}”(hŒ#``cq`` Connection completion queue ”h]”(j)�”}”(hŒ``cq``”h]”j )�”}”(hjï‹h]”hŒcq”…”�”}”(hjñ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjí‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mihjé‹ubj)�”}”(hhh]”hÝ)�”}”(hŒConnection completion queue”h]”hŒConnection completion queue”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŒh´MihjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŒh´Mihjt‹ubjý)�”}”(hŒ6``cq_size`` The number of max outstanding completions ”h]”(j)�”}”(hŒ ``cq_size``”h]”j )�”}”(hj(Œh]”hŒcq_size”…”�”}”(hj*Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mjhj"Œubj)�”}”(hhh]”hÝ)�”}”(hŒ)The number of max outstanding completions”h]”hŒ)The number of max outstanding completions”…”�”}”(hjAŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j=Œh´Mjhj>Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j=Œh´Mjhjt‹ubjý)�”}”(hŒ$``device`` reference to iser device ”h]”(j)�”}”(hŒ ``device``”h]”j )�”}”(hjaŒh]”hŒdevice”…”�”}”(hjcŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mkhj[Œubj)�”}”(hhh]”hÝ)�”}”(hŒreference to iser device”h]”hŒreference to iser device”…”�”}”(hjzŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jvŒh´MkhjwŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jvŒh´Mkhjt‹ubjý)�”}”(hŒ.``fr_pool`` connection fast registration pool ”h]”(j)�”}”(hŒ ``fr_pool``”h]”j )�”}”(hjšŒh]”hŒfr_pool”…”�”}”(hjœŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mlhj”Œubj)�”}”(hhh]”hÝ)�”}”(hŒ!connection fast registration pool”h]”hŒ!connection fast registration pool”…”�”}”(hj³Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¯Œh´Mlhj°Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¯Œh´Mlhjt‹ubjý)�”}”(hŒ.``pi_support`` Indicate device T10-PI support ”h]”(j)�”}”(hŒ``pi_support``”h]”j )�”}”(hjÓŒh]”hŒ pi_support”…”�”}”(hjÕŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MmhjÍŒubj)�”}”(hhh]”hÝ)�”}”(hŒIndicate device T10-PI support”h]”hŒIndicate device T10-PI support”…”�”}”(hjìŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jèŒh´MmhjéŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jèŒh´Mmhjt‹ubjý)�”}”(hŒ``reg_cqe`` completion handler”h]”(j)�”}”(hŒ ``reg_cqe``”h]”j )�”}”(hj �h]”hŒreg_cqe”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mmhj�ubj)�”}”(hhh]”hÝ)�”}”(hŒcompletion handler”h]”hŒcompletion handler”…”�”}”(hj%�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mnhj"�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j!�h´Mmhjt‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj,‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_conn (C struct)”Œ c.iser_conn”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_conn”h]”j")�”}”(hŒstruct iser_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjb�h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mtubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb�h²hh³js�h´Mtubjš)�”}”(hŒ iser_conn”h]”jN)�”}”(hj`�h]”hŒ iser_conn”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‚�ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjb�h²hh³js�h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj^�h²hh³js�h´Mtubah}”(h]”jY�ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³js�h´Mthj[�h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiSER connection context”h]”hŒiSER connection context”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M{hj¥�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj[�h²hh³js�h´Mtubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjÀ�jÓjÀ�jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX **Definition**:: struct iser_conn { struct ib_conn ib_conn; struct iscsi_conn *iscsi_conn; struct iscsi_endpoint *ep; enum iser_conn_state state; unsigned qp_max_recv_dtos; u16 max_cmds; char name[ISER_OBJECT_NAME_SIZE]; struct work_struct release_work; struct mutex state_mutex; struct completion stop_completion; struct completion ib_completion; struct completion up_completion; struct list_head conn_list; struct iser_login_desc login_desc; struct iser_rx_desc *rx_descs; u32 num_rx_descs; unsigned short scsi_sg_tablesize; unsigned short pages_per_mr; bool snd_w_inv; }; **Members** ``ib_conn`` connection RDMA resources ``iscsi_conn`` link to matching iscsi connection ``ep`` transport handle ``state`` connection logical state ``qp_max_recv_dtos`` maximum number of data outs, corresponds to max number of post recvs ``max_cmds`` maximum cmds allowed for this connection ``name`` connection peer portal ``release_work`` deferred work for release job ``state_mutex`` protects iser onnection state ``stop_completion`` conn_stop completion ``ib_completion`` RDMA cleanup completion ``up_completion`` connection establishment completed (state is ISER_CONN_UP) ``conn_list`` entry in ig conn list ``login_desc`` login descriptor ``rx_descs`` rx buffers array (cyclic buffer) ``num_rx_descs`` number of rx descriptors ``scsi_sg_tablesize`` scsi host sg_tablesize ``pages_per_mr`` maximum pages available for registration ``snd_w_inv`` connection uses remote invalidation”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MhjÄ�ubj½y)�”}”(hXstruct iser_conn { struct ib_conn ib_conn; struct iscsi_conn *iscsi_conn; struct iscsi_endpoint *ep; enum iser_conn_state state; unsigned qp_max_recv_dtos; u16 max_cmds; char name[ISER_OBJECT_NAME_SIZE]; struct work_struct release_work; struct mutex state_mutex; struct completion stop_completion; struct completion ib_completion; struct completion up_completion; struct list_head conn_list; struct iser_login_desc login_desc; struct iser_rx_desc *rx_descs; u32 num_rx_descs; unsigned short scsi_sg_tablesize; unsigned short pages_per_mr; bool snd_w_inv; };”h]”hXstruct iser_conn { struct ib_conn ib_conn; struct iscsi_conn *iscsi_conn; struct iscsi_endpoint *ep; enum iser_conn_state state; unsigned qp_max_recv_dtos; u16 max_cmds; char name[ISER_OBJECT_NAME_SIZE]; struct work_struct release_work; struct mutex state_mutex; struct completion stop_completion; struct completion ib_completion; struct completion up_completion; struct list_head conn_list; struct iser_login_desc login_desc; struct iser_rx_desc *rx_descs; u32 num_rx_descs; unsigned short scsi_sg_tablesize; unsigned short pages_per_mr; bool snd_w_inv; };”…”�”}”hjå�sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M�hjÄ�ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M—hjÄ�ubjø)�”}”(hhh]”(jý)�”}”(hŒ&``ib_conn`` connection RDMA resources ”h]”(j)�”}”(hŒ ``ib_conn``”h]”j )�”}”(hjŽh]”hŒib_conn”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M~hjŽubj)�”}”(hhh]”hÝ)�”}”(hŒconnection RDMA resources”h]”hŒconnection RDMA resources”…”�”}”(hj.Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``iscsi_conn`` link to matching iscsi connection ”h]”(j)�”}”(hŒ``iscsi_conn``”h]”j )�”}”(hjNŽh]”hŒ iscsi_conn”…”�”}”(hjPŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MhjHŽubj)�”}”(hhh]”hÝ)�”}”(hŒ!link to matching iscsi connection”h]”hŒ!link to matching iscsi connection”…”�”}”(hjgŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jcŽh´MhjdŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jcŽh´Mhj Žubjý)�”}”(hŒ``ep`` transport handle ”h]”(j)�”}”(hŒ``ep``”h]”j )�”}”(hj‡Žh]”hŒep”…”�”}”(hj‰Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M€hj�Žubj)�”}”(hhh]”hÝ)�”}”(hŒtransport handle”h]”hŒtransport handle”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ#``state`` connection logical state ”h]”(j)�”}”(hŒ ``state``”h]”j )�”}”(hjÀŽh]”hŒstate”…”�”}”(hjÂŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M�hjºŽubj)�”}”(hhh]”hÝ)�”}”(hŒconnection logical state”h]”hŒconnection logical state”…”�”}”(hjÙŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``qp_max_recv_dtos`` maximum number of data outs, corresponds to max number of post recvs ”h]”(j)�”}”(hŒ``qp_max_recv_dtos``”h]”j )�”}”(hjùŽh]”hŒqp_max_recv_dtos”…”�”}”(hjûŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MƒhjóŽubj)�”}”(hhh]”hÝ)�”}”(hŒDmaximum number of data outs, corresponds to max number of post recvs”h]”hŒDmaximum number of data outs, corresponds to max number of post recvs”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.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``max_cmds`` maximum cmds allowed for this connection ”h]”(j)�”}”(hŒ ``max_cmds``”h]”j )�”}”(hj3�h]”hŒmax_cmds”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M„hj-�ubj)�”}”(hhh]”hÝ)�”}”(hŒ(maximum cmds allowed for this connection”h]”hŒ(maximum cmds allowed for this connection”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ ``name`` connection peer portal ”h]”(j)�”}”(hŒ``name``”h]”j )�”}”(hjl�h]”hŒname”…”�”}”(hjn�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M…hjf�ubj)�”}”(hhh]”hÝ)�”}”(hŒconnection peer portal”h]”hŒconnection peer portal”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ/``release_work`` deferred work for release job ”h]”(j)�”}”(hŒ``release_work``”h]”j )�”}”(hj¥�h]”hŒ release_work”…”�”}”(hj§�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M†hjŸ�ubj)�”}”(hhh]”hÝ)�”}”(hŒdeferred work for release job”h]”hŒdeferred work for release job”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ.``state_mutex`` protects iser onnection state ”h]”(j)�”}”(hŒ``state_mutex``”h]”j )�”}”(hjÞ�h]”hŒ state_mutex”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M‡hjØ�ubj)�”}”(hhh]”hÝ)�”}”(hŒprotects iser onnection state”h]”hŒprotects iser onnection state”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ)``stop_completion`` conn_stop completion ”h]”(j)�”}”(hŒ``stop_completion``”h]”j )�”}”(hj�h]”hŒstop_completion”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mˆhj�ubj)�”}”(hhh]”hÝ)�”}”(hŒconn_stop completion”h]”hŒconn_stop completion”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ*``ib_completion`` RDMA cleanup completion ”h]”(j)�”}”(hŒ``ib_completion``”h]”j )�”}”(hjP�h]”hŒ ib_completion”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M‰hjJ�ubj)�”}”(hhh]”hÝ)�”}”(hŒRDMA cleanup completion”h]”hŒRDMA cleanup completion”…”�”}”(hji�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒM``up_completion`` connection establishment completed (state is ISER_CONN_UP) ”h]”(j)�”}”(hŒ``up_completion``”h]”j )�”}”(hj‰�h]”hŒ up_completion”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M‹hjƒ�ubj)�”}”(hhh]”hÝ)�”}”(hŒ:connection establishment completed (state is ISER_CONN_UP)”h]”hŒ:connection establishment completed (state is ISER_CONN_UP)”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.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Œ$``conn_list`` entry in ig conn list ”h]”(j)�”}”(hŒ ``conn_list``”h]”j )�”}”(hjÃ�h]”hŒ conn_list”…”�”}”(hjÅ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MŒhj½�ubj)�”}”(hhh]”hÝ)�”}”(hŒentry in ig conn list”h]”hŒentry in ig conn list”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ ``login_desc`` login descriptor ”h]”(j)�”}”(hŒ``login_desc``”h]”j )�”}”(hjü�h]”hŒ login_desc”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M�hjö�ubj)�”}”(hhh]”hÝ)�”}”(hŒlogin descriptor”h]”hŒlogin descriptor”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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_descs`` rx buffers array (cyclic buffer) ”h]”(j)�”}”(hŒ ``rx_descs``”h]”j )�”}”(hj5‘h]”hŒrx_descs”…”�”}”(hj7‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MŽhj/‘ubj)�”}”(hhh]”hÝ)�”}”(hŒ rx buffers array (cyclic buffer)”h]”hŒ rx buffers array (cyclic buffer)”…”�”}”(hjN‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jJ‘h´MŽhjK‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jJ‘h´MŽhj Žubjý)�”}”(hŒ*``num_rx_descs`` number of rx descriptors ”h]”(j)�”}”(hŒ``num_rx_descs``”h]”j )�”}”(hjn‘h]”hŒ num_rx_descs”…”�”}”(hjp‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M�hjh‘ubj)�”}”(hhh]”hÝ)�”}”(hŒnumber of rx descriptors”h]”hŒnumber of rx descriptors”…”�”}”(hj‡‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ-``scsi_sg_tablesize`` scsi host sg_tablesize ”h]”(j)�”}”(hŒ``scsi_sg_tablesize``”h]”j )�”}”(hj§‘h]”hŒscsi_sg_tablesize”…”�”}”(hj©‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M�hj¡‘ubj)�”}”(hhh]”hÝ)�”}”(hŒscsi host sg_tablesize”h]”hŒscsi host sg_tablesize”…”�”}”(hjÀ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ:``pages_per_mr`` maximum pages available for registration ”h]”(j)�”}”(hŒ``pages_per_mr``”h]”j )�”}”(hjà‘h]”hŒ pages_per_mr”…”�”}”(hjâ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M‘hjÚ‘ubj)�”}”(hhh]”hÝ)�”}”(hŒ(maximum pages available for registration”h]”hŒ(maximum pages available for registration”…”�”}”(hjù‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``snd_w_inv`` connection uses remote invalidation”h]”(j)�”}”(hŒ ``snd_w_inv``”h]”j )�”}”(hj’h]”hŒ snd_w_inv”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M‘hj’ubj)�”}”(hhh]”hÝ)�”}”(hŒ#connection uses remote invalidation”h]”hŒ#connection uses remote invalidation”…”�”}”(hj2’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiscsi_iser_task (C struct)”Œc.iscsi_iser_task”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiscsi_iser_task”h]”j")�”}”(hŒstruct iscsi_iser_task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjs’h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjo’h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjo’h²hh³j€’h´M˜ubjš)�”}”(hŒiscsi_iser_task”h]”jN)�”}”(hjm’h]”hŒiscsi_iser_task”…”�”}”(hj“’h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�’ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjo’h²hh³j€’h´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjk’h²hh³j€’h´M˜ubah}”(h]”jf’ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j€’h´M˜hjh’h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiser task context”h]”hŒiser task context”…”�”}”(hjµ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mªhj²’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjh’h²hh³j€’h´M˜ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjÍ’jÓjÍ’jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX**Definition**:: struct iscsi_iser_task { struct iser_tx_desc desc; struct iser_conn *iser_conn; enum iser_task_status status; struct scsi_cmnd *sc; int command_sent; int dir[ISER_DIRS_NUM]; struct iser_mem_reg rdma_reg[ISER_DIRS_NUM]; struct iser_data_buf data[ISER_DIRS_NUM]; struct iser_data_buf prot[ISER_DIRS_NUM]; }; **Members** ``desc`` TX descriptor ``iser_conn`` link to iser connection ``status`` current task status ``sc`` link to scsi command ``command_sent`` indicate if command was sent ``dir`` iser data direction ``rdma_reg`` task rdma registration desc ``data`` iser data buffer desc ``prot`` iser protection buffer desc”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M®hjÑ’ubj½y)�”}”(hX–struct iscsi_iser_task { struct iser_tx_desc desc; struct iser_conn *iser_conn; enum iser_task_status status; struct scsi_cmnd *sc; int command_sent; int dir[ISER_DIRS_NUM]; struct iser_mem_reg rdma_reg[ISER_DIRS_NUM]; struct iser_data_buf data[ISER_DIRS_NUM]; struct iser_data_buf prot[ISER_DIRS_NUM]; };”h]”hX–struct iscsi_iser_task { struct iser_tx_desc desc; struct iser_conn *iser_conn; enum iser_task_status status; struct scsi_cmnd *sc; int command_sent; int dir[ISER_DIRS_NUM]; struct iser_mem_reg rdma_reg[ISER_DIRS_NUM]; struct iser_data_buf data[ISER_DIRS_NUM]; struct iser_data_buf prot[ISER_DIRS_NUM]; };”…”�”}”hjò’sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M°hjÑ’ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M¼hjÑ’ubjø)�”}”(hhh]”(jý)�”}”(hŒ``desc`` TX descriptor ”h]”(j)�”}”(hŒ``desc``”h]”j )�”}”(hj"“h]”hŒdesc”…”�”}”(hj$“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj “ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M­hj“ubj)�”}”(hhh]”hÝ)�”}”(hŒ TX descriptor”h]”hŒ TX descriptor”…”�”}”(hj;“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ&``iser_conn`` link to iser connection ”h]”(j)�”}”(hŒ ``iser_conn``”h]”j )�”}”(hj[“h]”hŒ iser_conn”…”�”}”(hj]“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M®hjU“ubj)�”}”(hhh]”hÝ)�”}”(hŒlink to iser connection”h]”hŒlink to iser connection”…”�”}”(hjt“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``status`` current task status ”h]”(j)�”}”(hŒ ``status``”h]”j )�”}”(hj”“h]”hŒstatus”…”�”}”(hj–“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M¯hjŽ“ubj)�”}”(hhh]”hÝ)�”}”(hŒcurrent task status”h]”hŒcurrent task status”…”�”}”(hj­“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``sc`` link to scsi command ”h]”(j)�”}”(hŒ``sc``”h]”j )�”}”(hjÍ“h]”hŒsc”…”�”}”(hjÏ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M°hjÇ“ubj)�”}”(hhh]”hÝ)�”}”(hŒlink to scsi command”h]”hŒlink to scsi command”…”�”}”(hjæ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ.``command_sent`` indicate if command was sent ”h]”(j)�”}”(hŒ``command_sent``”h]”j )�”}”(hj”h]”hŒ command_sent”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M±hj”ubj)�”}”(hhh]”hÝ)�”}”(hŒindicate if command was sent”h]”hŒindicate if command was sent”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``dir`` iser data direction ”h]”(j)�”}”(hŒ``dir``”h]”j )�”}”(hj?”h]”hŒdir”…”�”}”(hjA”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M²hj9”ubj)�”}”(hhh]”hÝ)�”}”(hŒiser data direction”h]”hŒiser data direction”…”�”}”(hjX”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jT”h´M²hjU”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jT”h´M²hj“ubjý)�”}”(hŒ)``rdma_reg`` task rdma registration desc ”h]”(j)�”}”(hŒ ``rdma_reg``”h]”j )�”}”(hjx”h]”hŒrdma_reg”…”�”}”(hjz”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M³hjr”ubj)�”}”(hhh]”hÝ)�”}”(hŒtask rdma registration desc”h]”hŒtask rdma registration desc”…”�”}”(hj‘”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�”h´M³hjŽ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjr”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�”h´M³hj“ubjý)�”}”(hŒ``data`` iser data buffer desc ”h]”(j)�”}”(hŒ``data``”h]”j )�”}”(hj±”h]”hŒdata”…”�”}”(hj³”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M´hj«”ubj)�”}”(hhh]”hÝ)�”}”(hŒiser data buffer desc”h]”hŒiser data buffer desc”…”�”}”(hjÊ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ$``prot`` iser protection buffer desc”h]”(j)�”}”(hŒ``prot``”h]”j )�”}”(hjê”h]”hŒprot”…”�”}”(hjì”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjè”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M´hjä”ubj)�”}”(hhh]”hÝ)�”}”(hŒiser protection buffer desc”h]”hŒiser protection buffer desc”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_global (C struct)”Œ c.iser_global”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_global”h]”j")�”}”(hŒstruct iser_global”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjD•h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj@•h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj@•h²hh³jQ•h´M»ubjš)�”}”(hŒ iser_global”h]”jN)�”}”(hj>•h]”hŒ iser_global”…”�”}”(hjd•h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj`•ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj@•h²hh³jQ•h´M»ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj<•h²hh³jQ•h´M»ubah}”(h]”j7•ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jQ•h´M»hj9•h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiSER global context”h]”hŒiSER global context”…”�”}”(hj†•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÃhjƒ•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj9•h²hh³jQ•h´M»ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjž•jÓjž•jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hXÔ**Definition**:: struct iser_global { struct mutex device_list_mutex; struct list_head device_list; struct mutex connlist_mutex; struct list_head connlist; struct kmem_cache *desc_cache; }; **Members** ``device_list_mutex`` protects device_list ``device_list`` iser devices global list ``connlist_mutex`` protects connlist ``connlist`` iser connections global list ``desc_cache`` kmem cache for tx dataout”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÇhj¢•ubj½y)�”}”(hŒÌstruct iser_global { struct mutex device_list_mutex; struct list_head device_list; struct mutex connlist_mutex; struct list_head connlist; struct kmem_cache *desc_cache; };”h]”hŒÌstruct iser_global { struct mutex device_list_mutex; struct list_head device_list; struct mutex connlist_mutex; struct list_head connlist; struct kmem_cache *desc_cache; };”…”�”}”hjÕsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÉhj¢•ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÑhj¢•ubjø)�”}”(hhh]”(jý)�”}”(hŒ+``device_list_mutex`` protects device_list ”h]”(j)�”}”(hŒ``device_list_mutex``”h]”j )�”}”(hjó•h]”hŒdevice_list_mutex”…”�”}”(hjõ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÆhjí•ubj)�”}”(hhh]”hÝ)�”}”(hŒprotects device_list”h]”hŒprotects device_list”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ)``device_list`` iser devices global list ”h]”(j)�”}”(hŒ``device_list``”h]”j )�”}”(hj,–h]”hŒ device_list”…”�”}”(hj.–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÇhj&–ubj)�”}”(hhh]”hÝ)�”}”(hŒiser devices global list”h]”hŒiser devices global list”…”�”}”(hjE–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ%``connlist_mutex`` protects connlist ”h]”(j)�”}”(hŒ``connlist_mutex``”h]”j )�”}”(hje–h]”hŒconnlist_mutex”…”�”}”(hjg–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÈhj_–ubj)�”}”(hhh]”hÝ)�”}”(hŒprotects connlist”h]”hŒprotects connlist”…”�”}”(hj~–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ*``connlist`` iser connections global list ”h]”(j)�”}”(hŒ ``connlist``”h]”j )�”}”(hjž–h]”hŒconnlist”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÉhj˜–ubj)�”}”(hhh]”hÝ)�”}”(hŒiser connections global list”h]”hŒiser connections global list”…”�”}”(hj·–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ(``desc_cache`` kmem cache for tx dataout”h]”(j)�”}”(hŒ``desc_cache``”h]”j )�”}”(hj×–h]”hŒ desc_cache”…”�”}”(hjÙ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MÉhjÑ–ubj)�”}”(hhh]”hÝ)�”}”(hŒkmem cache for tx dataout”h]”hŒkmem cache for tx dataout”…”�”}”(hjð–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_pdu_alloc (C function)”Œc.iscsi_iser_pdu_alloc”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒBint iscsi_iser_pdu_alloc (struct iscsi_task *task, uint8_t opcode)”h]”j")�”}”(hŒAint iscsi_iser_pdu_alloc(struct iscsi_task *task, uint8_t opcode)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj1—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj-—h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj-—h²hh³j?—h´K§ubjš)�”}”(hŒiscsi_iser_pdu_alloc”h]”jN)�”}”(hŒiscsi_iser_pdu_alloc”h]”hŒiscsi_iser_pdu_alloc”…”�”}”(hjR—h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjN—ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj-—h²hh³j?—h´K§ubj·)�”}”(hŒ)(struct iscsi_task *task, uint8_t opcode)”h]”(j½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjn—h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjj—ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjj—ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hjŒ—h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‰—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŽ—Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjT—sbŒc.iscsi_iser_pdu_alloc”†”asbuh1hhjj—ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjj—ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjº—h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjj—ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjÇ—h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjj—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjf—ubj½)�”}”(hŒuint8_t opcode”h]”(h)�”}”(hhh]”jN)�”}”(hŒuint8_t”h]”hŒuint8_t”…”�”}”(hjã—h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjà—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jå—Œmodname”NŒ classname”Njkjn)�”}”jq]”j¨—Œc.iscsi_iser_pdu_alloc”†”asbuh1hhjÜ—ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÜ—ubjN)�”}”(hŒopcode”h]”hŒopcode”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÜ—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjf—ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj-—h²hh³j?—h´K§ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj)—h²hh³j?—h´K§ubah}”(h]”j$—ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j?—h´K§hj&—h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒallocate an iscsi-iser PDU”h]”hŒallocate an iscsi-iser PDU”…”�”}”(hj9˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K§hj6˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj&—h²hh³j?—h´K§ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjQ˜jÓjQ˜jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒÉ**Parameters** ``struct iscsi_task *task`` iscsi task ``uint8_t opcode`` iscsi command opcode **Description** Netes: This routine can't fail, just assign iscsi task hdr and max hdr size.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K«hjU˜ubjø)�”}”(hhh]”(jý)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hjz˜h]”hŒstruct iscsi_task *task”…”�”}”(hj|˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K¨hjt˜ubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hj“˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�˜h´K¨hj�˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�˜h´K¨hjq˜ubjý)�”}”(hŒ(``uint8_t opcode`` iscsi command opcode ”h]”(j)�”}”(hŒ``uint8_t opcode``”h]”j )�”}”(hj³˜h]”hŒuint8_t opcode”…”�”}”(hjµ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K©hj­˜ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi command opcode”h]”hŒiscsi command opcode”…”�”}”(hj̘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jȘh´K©hjɘubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jȘh´K©hjq˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjU˜ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjî˜h]”hŒ Description”…”�”}”(hjð˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjì˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K«hjU˜ubjø)�”}”(hhh]”jý)�”}”(hŒLNetes: This routine can't fail, just assign iscsi task hdr and max hdr size.”h]”(j)�”}”(hŒ6Netes: This routine can't fail, just assign iscsi task”h]”hŒ8Netes: This routine can’t fail, just assign iscsi task”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Kªhj™ubj)�”}”(hhh]”hÝ)�”}”(hŒhdr and max hdr size.”h]”hŒhdr and max hdr size.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.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÷hjU˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)iser_initialize_task_headers (C function)”Œc.iser_initialize_task_headers”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXint iser_initialize_task_headers (struct iscsi_task *task, struct iser_tx_desc *tx_desc)”h]”j")�”}”(hŒWint iser_initialize_task_headers(struct iscsi_task *task, struct iser_tx_desc *tx_desc)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj^™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjZ™h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZ™h²hh³jl™h´K¹ubjš)�”}”(hŒiser_initialize_task_headers”h]”jN)�”}”(hŒiser_initialize_task_headers”h]”hŒiser_initialize_task_headers”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj{™ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjZ™h²hh³jl™h´K¹ubj·)�”}”(hŒ7(struct iscsi_task *task, struct iser_tx_desc *tx_desc)”h]”(j½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj›™h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj—™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—™ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj¹™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¶™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j»™Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj�™sbŒc.iser_initialize_task_headers”†”asbuh1hhj—™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—™ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjç™h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj—™ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjô™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj—™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“™ubj½)�”}”(hŒstruct iser_tx_desc *tx_desc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj šubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj šubh)�”}”(hhh]”jN)�”}”(hŒ iser_tx_desc”h]”hŒ iser_tx_desc”…”�”}”(hj+šh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj(šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j-šŒmodname”NŒ classname”Njkjn)�”}”jq]”jÕ™Œc.iser_initialize_task_headers”†”asbuh1hhj šubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIšh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj šubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjWšh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj šubjN)�”}”(hŒtx_desc”h]”hŒtx_desc”…”�”}”(hjdšh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“™ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjZ™h²hh³jl™h´K¹ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjV™h²hh³jl™h´K¹ubah}”(h]”jQ™ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jl™h´K¹hjS™h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒInitialize task headers”h]”hŒInitialize task headers”…”�”}”(hjŽšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K¹hj‹šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjS™h²hh³jl™h´K¹ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¦šjÓj¦šjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hXA**Parameters** ``struct iscsi_task *task`` iscsi task ``struct iser_tx_desc *tx_desc`` iser tx descriptor **Notes** This routine may race with iser teardown flow for scsi error handling TMFs. So for TMF we should acquire the state mutex to avoid dereferencing the IB device which may have already been terminated.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj°šh]”hŒ Parameters”…”�”}”(hj²šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj®šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K½hjªšubjø)�”}”(hhh]”(jý)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hjÏšh]”hŒstruct iscsi_task *task”…”�”}”(hjÑšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍšubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´KºhjÉšubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hjèšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 iser_tx_desc *tx_desc`` iser tx descriptor ”h]”(j)�”}”(hŒ ``struct iser_tx_desc *tx_desc``”h]”j )�”}”(hj›h]”hŒstruct iser_tx_desc *tx_desc”…”�”}”(hj ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K»hj›ubj)�”}”(hhh]”hÝ)�”}”(hŒiser tx descriptor”h]”hŒiser tx descriptor”…”�”}”(hj!›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ªšubhÝ)�”}”(hŒ **Notes**”h]”jâ)�”}”(hjC›h]”hŒNotes”…”�”}”(hjE›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjA›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K½hjªšubhÝ)�”}”(hŒÅThis routine may race with iser teardown flow for scsi error handling TMFs. So for TMF we should acquire the state mutex to avoid dereferencing the IB device which may have already been terminated.”h]”hŒÅThis routine may race with iser teardown flow for scsi error handling TMFs. So for TMF we should acquire the state mutex to avoid dereferencing the IB device which may have already been terminated.”…”�”}”(hjY›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K½hjªšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_task_init (C function)”Œc.iscsi_iser_task_init”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2int iscsi_iser_task_init (struct iscsi_task *task)”h]”j")�”}”(hŒ1int iscsi_iser_task_init(struct iscsi_task *task)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjˆ›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj„›h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Káubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—›h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„›h²hh³j–›h´Káubjš)�”}”(hŒiscsi_iser_task_init”h]”jN)�”}”(hŒiscsi_iser_task_init”h]”hŒiscsi_iser_task_init”…”�”}”(hj©›h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¥›ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj„›h²hh³j–›h´Káubj·)�”}”(hŒ(struct iscsi_task *task)”h]”j½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÅ›h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÁ›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ›h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÁ›ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hjã›h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjà›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j囌modname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj«›sbŒc.iscsi_iser_task_init”†”asbuh1hhjÁ›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÁ›ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÁ›ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÁ›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj½›ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj„›h²hh³j–›h´Káubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj€›h²hh³j–›h´Káubah}”(h]”j{›ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j–›h´Káhj}›h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒInitialize iscsi-iser task”h]”hŒInitialize iscsi-iser task”…”�”}”(hjHœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´KáhjEœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj}›h²hh³j–›h´Káubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj`œjÓj`œjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒë**Parameters** ``struct iscsi_task *task`` iscsi task **Description** Initialize the task for the scsi command or mgmt command. **Return** Returns zero on success or -ENOMEM when failing to init task headers (dma mapping error).”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Kåhjdœubjø)�”}”(hhh]”jý)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hj‰œh]”hŒstruct iscsi_task *task”…”�”}”(hj‹œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡œubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Kâhjƒœubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hj¢œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjdœubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjÄœh]”hŒ Description”…”�”}”(hjÆœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´KähjdœubhÝ)�”}”(hŒ9Initialize the task for the scsi command or mgmt command.”h]”hŒ9Initialize the task for the scsi command or mgmt command.”…”�”}”(hjÚœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´KãhjdœubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´KåhjdœubhÝ)�”}”(hŒYReturns zero on success or -ENOMEM when failing to init task headers (dma mapping error).”h]”hŒYReturns zero on success or -ENOMEM when failing to init task headers (dma mapping error).”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Kæhjdœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iscsi_iser_mtask_xmit (C function)”Œc.iscsi_iser_mtask_xmit”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLint iscsi_iser_mtask_xmit (struct iscsi_conn *conn, struct iscsi_task *task)”h]”j")�”}”(hŒKint iscsi_iser_mtask_xmit(struct iscsi_conn *conn, struct iscsi_task *task)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj,�h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj,�h²hh³j>�h´Mubjš)�”}”(hŒiscsi_iser_mtask_xmit”h]”jN)�”}”(hŒiscsi_iser_mtask_xmit”h]”hŒiscsi_iser_mtask_xmit”…”�”}”(hjQ�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjM�ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj,�h²hh³j>�h´Mubj·)�”}”(hŒ2(struct iscsi_conn *conn, struct iscsi_task *task)”h]”(j½)�”}”(hŒstruct iscsi_conn *conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hji�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hji�ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjˆ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j��Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjS�sbŒc.iscsi_iser_mtask_xmit”†”asbuh1hhji�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hji�ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhji�ubjN)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjÆ�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhji�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hje�ubj½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjß�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÛ�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛ�ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjú�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÿ�Œmodname”NŒ classname”Njkjn)�”}”jq]”j§�Œc.iscsi_iser_mtask_xmit”†”asbuh1hhjÛ�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛ�ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj)žh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÛ�ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj6žh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hje�ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj,�h²hh³j>�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj(�h²hh³j>�h´Mubah}”(h]”j#�ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j>�h´Mhj%�h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ xmit management (immediate) task”h]”hŒ xmit management (immediate) task”…”�”}”(hj`žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj]žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj%�h²hh³j>�h´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjxžjÓjxžjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX**Parameters** ``struct iscsi_conn *conn`` iscsi connection ``struct iscsi_task *task`` task management task **Notes** The function can return -EAGAIN in which case caller must call it again later, or recover. '0' return code means successful xmit.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj‚žh]”hŒ Parameters”…”�”}”(hj„žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj€žubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj|žubjø)�”}”(hhh]”(jý)�”}”(hŒ-``struct iscsi_conn *conn`` iscsi connection ”h]”(j)�”}”(hŒ``struct iscsi_conn *conn``”h]”j )�”}”(hj¡žh]”hŒstruct iscsi_conn *conn”…”�”}”(hj£žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸžubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj›žubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection”h]”hŒiscsi connection”…”�”}”(hjºžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¶žh´Mhj·žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¶žh´Mhj˜žubjý)�”}”(hŒ1``struct iscsi_task *task`` task management task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hjÚžh]”hŒstruct iscsi_task *task”…”�”}”(hjÜžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØžubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MhjÔžubj)�”}”(hhh]”hÝ)�”}”(hŒtask management task”h]”hŒtask management task”…”�”}”(hjóžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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|žubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj|žubjYD)�”}”(hŒ�The function can return -EAGAIN in which case caller must call it again later, or recover. '0' return code means successful xmit.”h]”hÝ)�”}”(hŒ�The function can return -EAGAIN in which case caller must call it again later, or recover. '0' return code means successful xmit.”h]”hŒ…The function can return -EAGAIN in which case caller must call it again later, or recover. ‘0’ return code means successful xmit.”…”�”}”(hj/Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj+Ÿubah}”(h]”h ]”h"]”h$]”h&]”u•h1jXDh³j=Ÿh´Mhj|žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_task_xmit (C function)”Œc.iscsi_iser_task_xmit”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2int iscsi_iser_task_xmit (struct iscsi_task *task)”h]”j")�”}”(hŒ1int iscsi_iser_task_xmit(struct iscsi_task *task)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjdŸh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj`Ÿh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsŸh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj`Ÿh²hh³jrŸh´M7ubjš)�”}”(hŒiscsi_iser_task_xmit”h]”jN)�”}”(hŒiscsi_iser_task_xmit”h]”hŒiscsi_iser_task_xmit”…”�”}”(hj…Ÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Ÿubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj`Ÿh²hh³jrŸh´M7ubj·)�”}”(hŒ(struct iscsi_task *task)”h]”j½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¡Ÿh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�Ÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Ÿubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj¿Ÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¼Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÁŸŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj‡ŸsbŒc.iscsi_iser_task_xmit”†”asbuh1hhj�Ÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjߟh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Ÿubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjíŸh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�ŸubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjúŸh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj™Ÿubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj`Ÿh²hh³jrŸh´M7ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj\Ÿh²hh³jrŸh´M7ubah}”(h]”jWŸah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jrŸh´M7hjYŸh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒxmit iscsi-iser task”h]”hŒxmit iscsi-iser task”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M7hj! h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjYŸh²hh³jrŸh´M7ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj< jÓj< jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒu**Parameters** ``struct iscsi_task *task`` iscsi task **Return** zero on success or escalates $error on failure.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M;hj@ ubjø)�”}”(hhh]”jý)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hje h]”hŒstruct iscsi_task *task”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M8hj_ ubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jz h´M8hj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jz h´M8hj\ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj@ ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M:hj@ ubhÝ)�”}”(hŒ/zero on success or escalates $error on failure.”h]”hŒ/zero on success or escalates $error on failure.”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M:hj@ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$iscsi_iser_cleanup_task (C function)”Œc.iscsi_iser_cleanup_task”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ6void iscsi_iser_cleanup_task (struct iscsi_task *task)”h]”j")�”}”(hŒ5void iscsi_iser_cleanup_task(struct iscsi_task *task)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjá h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Maubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjá h²hh³jó h´Maubjš)�”}”(hŒiscsi_iser_cleanup_task”h]”jN)�”}”(hŒiscsi_iser_cleanup_task”h]”hŒiscsi_iser_cleanup_task”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¡ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjá h²hh³jó h´Maubj·)�”}”(hŒ(struct iscsi_task *task)”h]”j½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj"¡h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/¡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj@¡h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj=¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jB¡Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¡sbŒc.iscsi_iser_cleanup_task”†”asbuh1hhj¡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`¡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjn¡h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¡ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj{¡h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¡ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjá h²hh³jó h´Maubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÝ h²hh³jó h´Maubah}”(h]”jØ ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jó h´MahjÚ h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒcleanup an iscsi-iser task”h]”hŒcleanup an iscsi-iser task”…”�”}”(hj¥¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mahj¢¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÚ h²hh³jó h´Maubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj½¡jÓj½¡jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒÜ**Parameters** ``struct iscsi_task *task`` iscsi task **Notes** In case the RDMA device is already NULL (might have been removed in DEVICE_REMOVAL CM event it will bail-out without doing dma unmapping.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÇ¡h]”hŒ Parameters”…”�”}”(hjÉ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÅ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MehjÁ¡ubjø)�”}”(hhh]”jý)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hjæ¡h]”hŒstruct iscsi_task *task”…”�”}”(hjè¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mbhjà¡ubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hjÿ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Á¡ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MdhjÁ¡ubjø)�”}”(hhh]”jý)�”}”(hŒ‰In case the RDMA device is already NULL (might have been removed in DEVICE_REMOVAL CM event it will bail-out without doing dma unmapping.”h]”(j)�”}”(hŒ3In case the RDMA device is already NULL (might have”h]”hŒ3In case the RDMA device is already NULL (might have”…”�”}”(hj>¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mehj:¢ubj)�”}”(hhh]”hÝ)�”}”(hŒUbeen removed in DEVICE_REMOVAL CM event it will bail-out without doing dma unmapping.”h]”hŒUbeen removed in DEVICE_REMOVAL CM event it will bail-out without doing dma unmapping.”…”�”}”(hjP¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jL¢h´MehjM¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jL¢h´Mehj7¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÁ¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(iscsi_iser_check_protection (C function)”Œc.iscsi_iser_check_protection”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJu8 iscsi_iser_check_protection (struct iscsi_task *task, sector_t *sector)”h]”j")�”}”(hŒIu8 iscsi_iser_check_protection(struct iscsi_task *task, sector_t *sector)”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj“¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j•¢Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒiscsi_iser_check_protection”sbŒc.iscsi_iser_check_protection”†”asbuh1hhjŒ¢h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ¢h²hh³j´¢h´M„ubjš)�”}”(hŒiscsi_iser_check_protection”h]”jN)�”}”(hj±¢h]”hŒiscsi_iser_check_protection”…”�”}”(hjÇ¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjâubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjŒ¢h²hh³j´¢h´M„ubj·)�”}”(hŒ+(struct iscsi_task *task, sector_t *sector)”h]”(j½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjâ¢h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÞ¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ¢ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjý¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j£Œmodname”NŒ classname”Njkjn)�”}”jq]”j¯¢Œc.iscsi_iser_check_protection”†”asbuh1hhjÞ¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ¢ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj,£h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÞ¢ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj9£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÞ¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚ¢ubj½)�”}”(hŒsector_t *sector”h]”(h)�”}”(hhh]”jN)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjU£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjR£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jW£Œmodname”NŒ classname”Njkjn)�”}”jq]”j¯¢Œc.iscsi_iser_check_protection”†”asbuh1hhjN£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjN£ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj�£h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjN£ubjN)�”}”(hŒsector”h]”hŒsector”…”�”}”(hjŽ£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjN£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚ¢ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjŒ¢h²hh³j´¢h´M„ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjˆ¢h²hh³j´¢h´M„ubah}”(h]”jƒ¢ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j´¢h´M„hj…¢h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ,check protection information status of task.”h]”hŒ,check protection information status of task.”…”�”}”(hj¸£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M„hjµ£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj…¢h²hh³j´¢h´M„ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjУjÓjУjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX—**Parameters** ``struct iscsi_task *task`` iscsi task ``sector_t *sector`` error sector if exsists (output) **Return** zero if no data-integrity errors have occurred 0x1: data-integrity error occurred in the guard-block 0x2: data-integrity error occurred in the reference tag 0x3: data-integrity error occurred in the application tag **Description** In addition the error sector is marked.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÚ£h]”hŒ Parameters”…”�”}”(hjÜ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjØ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MˆhjÔ£ubjø)�”}”(hhh]”(jý)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hjù£h]”hŒstruct iscsi_task *task”…”�”}”(hjû£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M…hjó£ubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``sector_t *sector`` error sector if exsists (output) ”h]”(j)�”}”(hŒ``sector_t *sector``”h]”j )�”}”(hj2¤h]”hŒsector_t *sector”…”�”}”(hj4¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M†hj,¤ubj)�”}”(hhh]”hÝ)�”}”(hŒ error sector if exsists (output)”h]”hŒ error sector if exsists (output)”…”�”}”(hjK¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jG¤h´M†hjH¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jG¤h´M†hjð£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÔ£ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MˆhjÔ£ubhÝ)�”}”(hŒÖzero if no data-integrity errors have occurred 0x1: data-integrity error occurred in the guard-block 0x2: data-integrity error occurred in the reference tag 0x3: data-integrity error occurred in the application tag”h]”hŒÖzero if no data-integrity errors have occurred 0x1: data-integrity error occurred in the guard-block 0x2: data-integrity error occurred in the reference tag 0x3: data-integrity error occurred in the application tag”…”�”}”(hjƒ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MˆhjÔ£ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj”¤h]”hŒ Description”…”�”}”(hj–¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj’¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M�hjÔ£ubjYD)�”}”(hŒ'In addition the error sector is marked.”h]”hÝ)�”}”(hj¬¤h]”hŒ'In addition the error sector is marked.”…”�”}”(hj®¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MŒhjª¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXDh³j»¤h´MŒhjÔ£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#iscsi_iser_conn_create (C function)”Œc.iscsi_iser_conn_create”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒistruct iscsi_cls_conn * iscsi_iser_conn_create (struct iscsi_cls_session *cls_session, uint32_t conn_idx)”h]”j")�”}”(hŒgstruct iscsi_cls_conn *iscsi_iser_conn_create(struct iscsi_cls_session *cls_session, uint32_t conn_idx)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjâ¤h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÞ¤h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ¤h²hh³jï¤h´M™ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjþ¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¥Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒiscsi_iser_conn_create”sbŒc.iscsi_iser_conn_create”†”asbuh1hhjÞ¤h²hh³jï¤h´M™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ¤h²hh³jï¤h´M™ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj0¥h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÞ¤h²hh³jï¤h´M™ubjš)�”}”(hŒiscsi_iser_conn_create”h]”jN)�”}”(hj¥h]”hŒiscsi_iser_conn_create”…”�”}”(hjA¥h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj=¥ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÞ¤h²hh³jï¤h´M™ubj·)�”}”(hŒ:(struct iscsi_cls_session *cls_session, uint32_t conn_idx)”h]”(j½)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj\¥h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjX¥ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjX¥ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjz¥h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjw¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j|¥Œmodname”NŒ classname”Njkjn)�”}”jq]”j¥Œc.iscsi_iser_conn_create”†”asbuh1hhjX¥ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjX¥ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¦¥h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjX¥ubjN)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”}”(hj³¥h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjX¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjT¥ubj½)�”}”(hŒuint32_t conn_idx”h]”(h)�”}”(hhh]”jN)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hjÏ¥h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÌ¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÑ¥Œmodname”NŒ classname”Njkjn)�”}”jq]”j¥Œc.iscsi_iser_conn_create”†”asbuh1hhjÈ¥ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÈ¥ubjN)�”}”(hŒconn_idx”h]”hŒconn_idx”…”�”}”(hjû¥h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÈ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjT¥ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÞ¤h²hh³jï¤h´M™ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÚ¤h²hh³jï¤h´M™ubah}”(h]”jÕ¤ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jï¤h´M™hjפh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ"create a new iscsi-iser connection”h]”hŒ"create a new iscsi-iser connection”…”�”}”(hj%¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M™hj"¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjפh²hh³jï¤h´M™ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj=¦jÓj=¦jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒç**Parameters** ``struct iscsi_cls_session *cls_session`` iscsi class connection ``uint32_t conn_idx`` connection index within the session (for MCS) **Return** iscsi_cls_conn when iscsi_conn_setup succeeds or NULL otherwise.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M�hjA¦ubjø)�”}”(hhh]”(jý)�”}”(hŒA``struct iscsi_cls_session *cls_session`` iscsi class connection ”h]”(j)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j )�”}”(hjf¦h]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hjh¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mšhj`¦ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class connection”h]”hŒiscsi class connection”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``uint32_t conn_idx`` connection index within the session (for MCS) ”h]”(j)�”}”(hŒ``uint32_t conn_idx``”h]”j )�”}”(hjŸ¦h]”hŒuint32_t conn_idx”…”�”}”(hj¡¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M›hj™¦ubj)�”}”(hhh]”hÝ)�”}”(hŒ-connection index within the session (for MCS)”h]”hŒ-connection index within the session (for MCS)”…”�”}”(hj¸¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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¦ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M�hjA¦ubhÝ)�”}”(hŒ@iscsi_cls_conn when iscsi_conn_setup succeeds or NULL otherwise.”h]”hŒ@iscsi_cls_conn when iscsi_conn_setup succeeds or NULL otherwise.”…”�”}”(hjð¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M�hjA¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_conn_bind (C function)”Œc.iscsi_iser_conn_bind”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ‰int iscsi_iser_conn_bind (struct iscsi_cls_session *cls_session, struct iscsi_cls_conn *cls_conn, uint64_t transport_eph, int is_leading)”h]”j")�”}”(hŒˆint iscsi_iser_conn_bind(struct iscsi_cls_session *cls_session, struct iscsi_cls_conn *cls_conn, uint64_t transport_eph, int is_leading)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj§h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M¶ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj§h²hh³j-§h´M¶ubjš)�”}”(hŒiscsi_iser_conn_bind”h]”jN)�”}”(hŒiscsi_iser_conn_bind”h]”hŒiscsi_iser_conn_bind”…”�”}”(hj@§h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj<§ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj§h²hh³j-§h´M¶ubj·)�”}”(hŒp(struct iscsi_cls_session *cls_session, struct iscsi_cls_conn *cls_conn, uint64_t transport_eph, int is_leading)”h]”(j½)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj\§h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjX§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjX§ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjz§h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjw§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j|§Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjB§sbŒc.iscsi_iser_conn_bind”†”asbuh1hhjX§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjX§ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¨§h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjX§ubjN)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”}”(hjµ§h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjX§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjT§ubj½)�”}”(hŒstruct iscsi_cls_conn *cls_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjΧh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjʧubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjʧubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hjì§h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjé§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jî§Œmodname”NŒ classname”Njkjn)�”}”jq]”j–§Œc.iscsi_iser_conn_bind”†”asbuh1hhjʧubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjʧubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjʧubjN)�”}”(hŒcls_conn”h]”hŒcls_conn”…”�”}”(hj%¨h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjʧubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjT§ubj½)�”}”(hŒuint64_t transport_eph”h]”(h)�”}”(hhh]”jN)�”}”(hŒuint64_t”h]”hŒuint64_t”…”�”}”(hjA¨h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jC¨Œmodname”NŒ classname”Njkjn)�”}”jq]”j–§Œc.iscsi_iser_conn_bind”†”asbuh1hhj:¨ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_¨h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:¨ubjN)�”}”(hŒ transport_eph”h]”hŒ transport_eph”…”�”}”(hjm¨h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjT§ubj½)�”}”(hŒint is_leading”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj†¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‚¨ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”¨h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚¨ubjN)�”}”(hŒ is_leading”h]”hŒ is_leading”…”�”}”(hj¢¨h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‚¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjT§ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj§h²hh³j-§h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj§h²hh³j-§h´M¶ubah}”(h]”j§ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j-§h´M¶hj§h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ)bind iscsi and iser connection structures”h]”hŒ)bind iscsi and iser connection structures”…”�”}”(hj̨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M¶hjɨh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj§h²hh³j-§h´M¶ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjä¨jÓjä¨jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hXÇ**Parameters** ``struct iscsi_cls_session *cls_session`` iscsi class session ``struct iscsi_cls_conn *cls_conn`` iscsi class connection ``uint64_t transport_eph`` transport end-point handle ``int is_leading`` indicate if this is the session leading connection (MCS) **Return** zero on success, $error if iscsi_conn_bind fails and -EINVAL in case end-point doesn't exists anymore or iser connection state is not UP (teardown already started).”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjî¨h]”hŒ Parameters”…”�”}”(hjð¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjì¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mºhjè¨ubjø)�”}”(hhh]”(jý)�”}”(hŒ>``struct iscsi_cls_session *cls_session`` iscsi class session ”h]”(j)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j )�”}”(hj ©h]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M·hj©ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class session”h]”hŒiscsi class session”…”�”}”(hj&©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 iscsi_cls_conn *cls_conn`` iscsi class connection ”h]”(j)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j )�”}”(hjF©h]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hjH©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M¸hj@©ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class connection”h]”hŒiscsi class connection”…”�”}”(hj_©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``uint64_t transport_eph`` transport end-point handle ”h]”(j)�”}”(hŒ``uint64_t transport_eph``”h]”j )�”}”(hj©h]”hŒuint64_t transport_eph”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M¹hjy©ubj)�”}”(hhh]”hÝ)�”}”(hŒtransport end-point handle”h]”hŒtransport end-point handle”…”�”}”(hj˜©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”©h´M¹hj•©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”©h´M¹hj©ubjý)�”}”(hŒL``int is_leading`` indicate if this is the session leading connection (MCS) ”h]”(j)�”}”(hŒ``int is_leading``”h]”j )�”}”(hj¸©h]”hŒint is_leading”…”�”}”(hjº©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mºhj²©ubj)�”}”(hhh]”hÝ)�”}”(hŒ8indicate if this is the session leading connection (MCS)”h]”hŒ8indicate if this is the session leading connection (MCS)”…”�”}”(hjÑ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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è¨ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M¼hjè¨ubhÝ)�”}”(hŒ¤zero on success, $error if iscsi_conn_bind fails and -EINVAL in case end-point doesn't exists anymore or iser connection state is not UP (teardown already started).”h]”hŒ¦zero on success, $error if iscsi_conn_bind fails and -EINVAL in case end-point doesn’t exists anymore or iser connection state is not UP (teardown already started).”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M¼hjè¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iscsi_iser_conn_start (C function)”Œc.iscsi_iser_conn_start”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;int iscsi_iser_conn_start (struct iscsi_cls_conn *cls_conn)”h]”j")�”}”(hŒ:int iscsi_iser_conn_start(struct iscsi_cls_conn *cls_conn)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj8ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj4ªh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mòubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4ªh²hh³jFªh´Mòubjš)�”}”(hŒiscsi_iser_conn_start”h]”jN)�”}”(hŒiscsi_iser_conn_start”h]”hŒiscsi_iser_conn_start”…”�”}”(hjYªh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjUªubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj4ªh²hh³jFªh´Mòubj·)�”}”(hŒ!(struct iscsi_cls_conn *cls_conn)”h]”j½)�”}”(hŒstruct iscsi_cls_conn *cls_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjuªh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjqªubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqªubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hj“ªh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j•ªŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj[ªsbŒc.iscsi_iser_conn_start”†”asbuh1hhjqªubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqªubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÁªh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjqªubjN)�”}”(hŒcls_conn”h]”hŒcls_conn”…”�”}”(hjΪh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjqªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjmªubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj4ªh²hh³jFªh´Mòubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj0ªh²hh³jFªh´Mòubah}”(h]”j+ªah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jFªh´Mòhj-ªh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒstart iscsi-iser connection”h]”hŒstart iscsi-iser connection”…”�”}”(hjøªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mòhjõªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj-ªh²hh³jFªh´Mòubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj«jÓj«jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX **Parameters** ``struct iscsi_cls_conn *cls_conn`` iscsi class connection **Notes** Here iser intialize (or re-initialize) stop_completion as from this point iscsi must call conn_stop in session/connection teardown so iser transport must wait for it.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj«h]”hŒ Parameters”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Möhj«ubjø)�”}”(hhh]”jý)�”}”(hŒ;``struct iscsi_cls_conn *cls_conn`` iscsi class connection ”h]”(j)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j )�”}”(hj9«h]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hj;«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Móhj3«ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class connection”h]”hŒiscsi class connection”…”�”}”(hjR«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jN«h´MóhjO«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jN«h´Móhj0«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj«ubhÝ)�”}”(hŒ **Notes**”h]”jâ)�”}”(hjt«h]”hŒNotes”…”�”}”(hjv«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjr«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mõhj«ubjø)�”}”(hhh]”jý)�”}”(hŒ¦Here iser intialize (or re-initialize) stop_completion as from this point iscsi must call conn_stop in session/connection teardown so iser transport must wait for it.”h]”(j)�”}”(hŒ9Here iser intialize (or re-initialize) stop_completion as”h]”hŒ9Here iser intialize (or re-initialize) stop_completion as”…”�”}”(hj‘«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Möhj�«ubj)�”}”(hhh]”hÝ)�”}”(hŒlfrom this point iscsi must call conn_stop in session/connection teardown so iser transport must wait for it.”h]”hŒlfrom this point iscsi must call conn_stop in session/connection teardown so iser transport must wait for it.”…”�”}”(hj£«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_conn_stop (C function)”Œc.iscsi_iser_conn_stop”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEvoid iscsi_iser_conn_stop (struct iscsi_cls_conn *cls_conn, int flag)”h]”j")�”}”(hŒDvoid iscsi_iser_conn_stop(struct iscsi_cls_conn *cls_conn, int flag)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjã«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjß«h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß«h²hh³jñ«h´Mubjš)�”}”(hŒiscsi_iser_conn_stop”h]”jN)�”}”(hŒiscsi_iser_conn_stop”h]”hŒiscsi_iser_conn_stop”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¬ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjß«h²hh³jñ«h´Mubj·)�”}”(hŒ+(struct iscsi_cls_conn *cls_conn, int flag)”h]”(j½)�”}”(hŒstruct iscsi_cls_conn *cls_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hj>¬h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj;¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j@¬Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¬sbŒc.iscsi_iser_conn_stop”†”asbuh1hhj¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjl¬h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¬ubjN)�”}”(hŒcls_conn”h]”hŒcls_conn”…”�”}”(hjy¬h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¬ubj½)�”}”(hŒint flag”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj’¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjެubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjެubjN)�”}”(hŒflag”h]”hŒflag”…”�”}”(hj®¬h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjެubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjß«h²hh³jñ«h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÛ«h²hh³jñ«h´Mubah}”(h]”jÖ«ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jñ«h´MhjØ«h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒstop iscsi-iser connection”h]”hŒstop iscsi-iser connection”…”�”}”(hjجh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MhjÕ¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjØ«h²hh³jñ«h´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjð¬jÓjð¬jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX}**Parameters** ``struct iscsi_cls_conn *cls_conn`` iscsi class connection ``int flag`` indicate if recover or terminate (passed as is) **Notes** Calling iscsi_conn_stop might theoretically race with DEVICE_REMOVAL event and dereference a previously freed RDMA device handle, so we call it under iser the state lock to protect against this kind of race.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjú¬h]”hŒ Parameters”…”�”}”(hjü¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjø¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M hjô¬ubjø)�”}”(hhh]”(jý)�”}”(hŒ;``struct iscsi_cls_conn *cls_conn`` iscsi class connection ”h]”(j)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j )�”}”(hj­h]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj­ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class connection”h]”hŒiscsi class connection”…”�”}”(hj2­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j.­h´Mhj/­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j.­h´Mhj­ubjý)�”}”(hŒ=``int flag`` indicate if recover or terminate (passed as is) ”h]”(j)�”}”(hŒ ``int flag``”h]”j )�”}”(hjR­h]”hŒint flag”…”�”}”(hjT­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MhjL­ubj)�”}”(hhh]”hÝ)�”}”(hŒ/indicate if recover or terminate (passed as is)”h]”hŒ/indicate if recover or terminate (passed as is)”…”�”}”(hjk­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jg­h´Mhjh­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jg­h´Mhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjô¬ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M hjô¬ubjø)�”}”(hhh]”jý)�”}”(hŒÏCalling iscsi_conn_stop might theoretically race with DEVICE_REMOVAL event and dereference a previously freed RDMA device handle, so we call it under iser the state lock to protect against this kind of race.”h]”(j)�”}”(hŒ5Calling iscsi_conn_stop might theoretically race with”h]”hŒ5Calling iscsi_conn_stop might theoretically race with”…”�”}”(hjª­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M hj¦­ubj)�”}”(hhh]”hÝ)�”}”(hŒ™DEVICE_REMOVAL event and dereference a previously freed RDMA device handle, so we call it under iser the state lock to protect against this kind of race.”h]”hŒ™DEVICE_REMOVAL event and dereference a previously freed RDMA device handle, so we call it under iser the state lock to protect against this kind of race.”…”�”}”(hj¼­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'iscsi_iser_session_destroy (C function)”Œc.iscsi_iser_session_destroy”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGvoid iscsi_iser_session_destroy (struct iscsi_cls_session *cls_session)”h]”j")�”}”(hŒFvoid iscsi_iser_session_destroy(struct iscsi_cls_session *cls_session)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjý­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjù­h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M-ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjù­h²hh³j ®h´M-ubjš)�”}”(hŒiscsi_iser_session_destroy”h]”jN)�”}”(hŒiscsi_iser_session_destroy”h]”hŒiscsi_iser_session_destroy”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj®ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjù­h²hh³j ®h´M-ubj·)�”}”(hŒ'(struct iscsi_cls_session *cls_session)”h]”j½)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj:®h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj6®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6®ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjX®h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjU®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jZ®Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj ®sbŒc.iscsi_iser_session_destroy”†”asbuh1hhj6®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6®ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj†®h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj6®ubjN)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”}”(hj“®h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj2®ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjù­h²hh³j ®h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjõ­h²hh³j ®h´M-ubah}”(h]”jð­ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j ®h´M-hjò­h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒdestroy iscsi-iser session”h]”hŒdestroy iscsi-iser session”…”�”}”(hj½®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M-hjº®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjò­h²hh³j ®h´M-ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÕ®jÓjÕ®jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒ~**Parameters** ``struct iscsi_cls_session *cls_session`` iscsi class session **Description** Removes and free iscsi host.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjß®h]”hŒ Parameters”…”�”}”(hjá®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÝ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M1hjÙ®ubjø)�”}”(hhh]”jý)�”}”(hŒ>``struct iscsi_cls_session *cls_session`` iscsi class session ”h]”(j)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j )�”}”(hjþ®h]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M.hjø®ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class session”h]”hŒiscsi class session”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Ù®ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj9¯h]”hŒ Description”…”�”}”(hj;¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj7¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M0hjÙ®ubhÝ)�”}”(hŒRemoves and free iscsi host.”h]”hŒRemoves and free iscsi host.”…”�”}”(hjO¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M/hjÙ®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&iscsi_iser_session_create (C function)”Œc.iscsi_iser_session_create”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŒstruct iscsi_cls_session * iscsi_iser_session_create (struct iscsi_endpoint *ep, uint16_t cmds_max, uint16_t qdepth, uint32_t initial_cmdsn)”h]”j")�”}”(hŒŠstruct iscsi_cls_session *iscsi_iser_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max, uint16_t qdepth, uint32_t initial_cmdsn)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj~¯h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjz¯h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjz¯h²hh³j‹¯h´MNubh)�”}”(hhh]”jN)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj�¯h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjš¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŸ¯Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒiscsi_iser_session_create”sbŒc.iscsi_iser_session_create”†”asbuh1hhjz¯h²hh³j‹¯h´MNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjz¯h²hh³j‹¯h´MNubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj̯h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjz¯h²hh³j‹¯h´MNubjš)�”}”(hŒiscsi_iser_session_create”h]”jN)�”}”(hj»¯h]”hŒiscsi_iser_session_create”…”�”}”(hjݯh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÙ¯ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjz¯h²hh³j‹¯h´MNubj·)�”}”(hŒW(struct iscsi_endpoint *ep, uint16_t cmds_max, uint16_t qdepth, uint32_t initial_cmdsn)”h]”(j½)�”}”(hŒstruct iscsi_endpoint *ep”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjø¯h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjô¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjô¯ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_endpoint”h]”hŒiscsi_endpoint”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j°Œmodname”NŒ classname”Njkjn)�”}”jq]”j¹¯Œc.iscsi_iser_session_create”†”asbuh1hhjô¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4°h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjô¯ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjB°h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjô¯ubjN)�”}”(hŒep”h]”hŒep”…”�”}”(hjO°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjô¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjð¯ubj½)�”}”(hŒuint16_t cmds_max”h]”(h)�”}”(hhh]”jN)�”}”(hŒuint16_t”h]”hŒuint16_t”…”�”}”(hjk°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjh°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jm°Œmodname”NŒ classname”Njkjn)�”}”jq]”j¹¯Œc.iscsi_iser_session_create”†”asbuh1hhjd°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰°h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjd°ubjN)�”}”(hŒcmds_max”h]”hŒcmds_max”…”�”}”(hj—°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjd°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjð¯ubj½)�”}”(hŒuint16_t qdepth”h]”(h)�”}”(hhh]”jN)�”}”(hŒuint16_t”h]”hŒuint16_t”…”�”}”(hj³°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj°°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jµ°Œmodname”NŒ classname”Njkjn)�”}”jq]”j¹¯Œc.iscsi_iser_session_create”†”asbuh1hhj¬°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjѰh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬°ubjN)�”}”(hŒqdepth”h]”hŒqdepth”…”�”}”(hjß°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¬°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjð¯ubj½)�”}”(hŒuint32_t initial_cmdsn”h]”(h)�”}”(hhh]”jN)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hjû°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjø°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jý°Œmodname”NŒ classname”Njkjn)�”}”jq]”j¹¯Œc.iscsi_iser_session_create”†”asbuh1hhjô°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjô°ubjN)�”}”(hŒ initial_cmdsn”h]”hŒ initial_cmdsn”…”�”}”(hj'±h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjô°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjð¯ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjz¯h²hh³j‹¯h´MNubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjv¯h²hh³j‹¯h´MNubah}”(h]”jq¯ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‹¯h´MNhjs¯h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒcreate an iscsi-iser session”h]”hŒcreate an iscsi-iser session”…”�”}”(hjQ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MNhjN±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjs¯h²hh³j‹¯h´MNubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒji±jÓji±jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX`**Parameters** ``struct iscsi_endpoint *ep`` iscsi end-point handle ``uint16_t cmds_max`` maximum commands in this session ``uint16_t qdepth`` session command queue depth ``uint32_t initial_cmdsn`` initiator command sequnce number **Description** Allocates and adds a scsi host, expose DIF supprot if exists, and sets up an iscsi session.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MRhjm±ubjø)�”}”(hhh]”(jý)�”}”(hŒ5``struct iscsi_endpoint *ep`` iscsi end-point handle ”h]”(j)�”}”(hŒ``struct iscsi_endpoint *ep``”h]”j )�”}”(hj’±h]”hŒstruct iscsi_endpoint *ep”…”�”}”(hj”±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MOhjŒ±ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi end-point handle”h]”hŒiscsi end-point handle”…”�”}”(hj«±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j§±h´MOhj¨±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j§±h´MOhj‰±ubjý)�”}”(hŒ7``uint16_t cmds_max`` maximum commands in this session ”h]”(j)�”}”(hŒ``uint16_t cmds_max``”h]”j )�”}”(hj˱h]”hŒuint16_t cmds_max”…”�”}”(hjͱh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjɱubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MPhjűubj)�”}”(hhh]”hÝ)�”}”(hŒ maximum commands in this session”h]”hŒ maximum commands in this session”…”�”}”(hjä±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jà±h´MPhjá±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjűubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jà±h´MPhj‰±ubjý)�”}”(hŒ0``uint16_t qdepth`` session command queue depth ”h]”(j)�”}”(hŒ``uint16_t qdepth``”h]”j )�”}”(hj²h]”hŒuint16_t qdepth”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MQhjþ±ubj)�”}”(hhh]”hÝ)�”}”(hŒsession command queue depth”h]”hŒsession command queue depth”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j²h´MQhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j²h´MQhj‰±ubjý)�”}”(hŒ<``uint32_t initial_cmdsn`` initiator command sequnce number ”h]”(j)�”}”(hŒ``uint32_t initial_cmdsn``”h]”j )�”}”(hj=²h]”hŒuint32_t initial_cmdsn”…”�”}”(hj?²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MRhj7²ubj)�”}”(hhh]”hÝ)�”}”(hŒ initiator command sequnce number”h]”hŒ initiator command sequnce number”…”�”}”(hjV²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jR²h´MRhjS²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jR²h´MRhj‰±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjm±ubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MThjm±ubhÝ)�”}”(hŒ[Allocates and adds a scsi host, expose DIF supprot if exists, and sets up an iscsi session.”h]”hŒ[Allocates and adds a scsi host, expose DIF supprot if exists, and sets up an iscsi session.”…”�”}”(hj޲h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MShjm±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iscsi_iser_ep_connect (C function)”Œc.iscsi_iser_ep_connect”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒtstruct iscsi_endpoint * iscsi_iser_ep_connect (struct Scsi_Host *shost, struct sockaddr *dst_addr, int non_blocking)”h]”j")�”}”(hŒrstruct iscsi_endpoint *iscsi_iser_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, int non_blocking)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj½²h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¹²h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˲h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¹²h²hh³jʲh´M ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_endpoint”h]”hŒiscsi_endpoint”…”�”}”(hjܲh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÙ²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÞ²Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒiscsi_iser_ep_connect”sbŒc.iscsi_iser_ep_connect”†”asbuh1hhj¹²h²hh³jʲh´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý²h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¹²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 ubjš)�”}”(hŒiscsi_iser_ep_connect”h]”jN)�”}”(hjú²h]”hŒiscsi_iser_ep_connect”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¹²h²hh³jʲh´M ubj·)�”}”(hŒF(struct Scsi_Host *shost, struct sockaddr *dst_addr, int non_blocking)”h]”(j½)�”}”(hŒstruct Scsi_Host *shost”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj7³h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj3³ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD³h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj3³ubh)�”}”(hhh]”jN)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjU³h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjR³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jW³Œmodname”NŒ classname”Njkjn)�”}”jq]”jø²Œc.iscsi_iser_ep_connect”†”asbuh1hhj3³ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs³h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj3³ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj�³h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj3³ubjN)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj޳h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj3³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj/³ubj½)�”}”(hŒstruct sockaddr *dst_addr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj§³h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj£³ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´³h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj£³ubh)�”}”(hhh]”jN)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hjųh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jdzŒmodname”NŒ classname”Njkjn)�”}”jq]”jø²Œc.iscsi_iser_ep_connect”†”asbuh1hhj£³ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã³h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj£³ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjñ³h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj£³ubjN)�”}”(hŒdst_addr”h]”hŒdst_addr”…”�”}”(hjþ³h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj£³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj/³ubj½)�”}”(hŒint non_blocking”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj´ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%´h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj´ubjN)�”}”(hŒ non_blocking”h]”hŒ non_blocking”…”�”}”(hj3´h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj/³ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¹²h²hh³jʲh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjµ²h²hh³jʲh´M ubah}”(h]”j°²ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jʲh´M hj²²h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ&Initiate iSER connection establishment”h]”hŒ&Initiate iSER connection establishment”…”�”}”(hj]´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M hjZ´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj²²h²hh³jʲh´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒju´jÓju´jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX6**Parameters** ``struct Scsi_Host *shost`` scsi_host ``struct sockaddr *dst_addr`` destination address ``int non_blocking`` indicate if routine can block **Description** Allocate an iscsi endpoint, an iser_conn structure and bind them. After that start RDMA connection establishment via rdma_cm. We don't allocate iser_conn embedded in iscsi_endpoint since in teardown the endpoint will be destroyed at ep_disconnect while iser_conn will cleanup its resources asynchronuously. **Return** iscsi_endpoint created by iscsi layer or ERR_PTR(error) if fails.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj´h]”hŒ Parameters”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj}´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhjy´ubjø)�”}”(hhh]”(jý)�”}”(hŒ&``struct Scsi_Host *shost`` scsi_host ”•-h]”(j)�”}”(hŒ``struct Scsi_Host *shost``”h]”j )�”}”(hjž´h]”hŒstruct Scsi_Host *shost”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M hj˜´ubj)�”}”(hhh]”hÝ)�”}”(hŒ scsi_host”h]”hŒ scsi_host”…”�”}”(hj·´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``struct sockaddr *dst_addr`` destination address ”h]”(j)�”}”(hŒ``struct sockaddr *dst_addr``”h]”j )�”}”(hj×´h]”hŒstruct sockaddr *dst_addr”…”�”}”(hjÙ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M hjÑ´ubj)�”}”(hhh]”hÝ)�”}”(hŒdestination address”h]”hŒdestination address”…”�”}”(hjð´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``int non_blocking`` indicate if routine can block ”h]”(j)�”}”(hŒ``int non_blocking``”h]”j )�”}”(hjµh]”hŒint non_blocking”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj µubj)�”}”(hhh]”hÝ)�”}”(hŒindicate if routine can block”h]”hŒindicate if routine can block”…”�”}”(hj)µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjy´ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjKµh]”hŒ Description”…”�”}”(hjMµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjIµubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhjy´ubhÝ)�”}”(hX2Allocate an iscsi endpoint, an iser_conn structure and bind them. After that start RDMA connection establishment via rdma_cm. We don't allocate iser_conn embedded in iscsi_endpoint since in teardown the endpoint will be destroyed at ep_disconnect while iser_conn will cleanup its resources asynchronuously.”h]”hX4Allocate an iscsi endpoint, an iser_conn structure and bind them. After that start RDMA connection establishment via rdma_cm. We don’t allocate iser_conn embedded in iscsi_endpoint since in teardown the endpoint will be destroyed at ep_disconnect while iser_conn will cleanup its resources asynchronuously.”…”�”}”(hjaµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhjy´ubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hjrµh]”hŒReturn”…”�”}”(hjtµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjpµubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhjy´ubhÝ)�”}”(hŒAiscsi_endpoint created by iscsi layer or ERR_PTR(error) if fails.”h]”hŒAiscsi_endpoint created by iscsi layer or ERR_PTR(error) if fails.”…”�”}”(hjˆµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhjy´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiscsi_iser_ep_poll (C function)”Œc.iscsi_iser_ep_poll”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒBint iscsi_iser_ep_poll (struct iscsi_endpoint *ep, int timeout_ms)”h]”j")�”}”(hŒAint iscsi_iser_ep_poll(struct iscsi_endpoint *ep, int timeout_ms)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj·µh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj³µh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƵh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³µh²hh³jŵh´M:ubjš)�”}”(hŒiscsi_iser_ep_poll”h]”jN)�”}”(hŒiscsi_iser_ep_poll”h]”hŒiscsi_iser_ep_poll”…”�”}”(hjصh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÔµubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj³µh²hh³jŵh´M:ubj·)�”}”(hŒ+(struct iscsi_endpoint *ep, int timeout_ms)”h]”(j½)�”}”(hŒstruct iscsi_endpoint *ep”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjôµh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjðµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðµubh)�”}”(hhh]”jN)�”}”(hŒiscsi_endpoint”h]”hŒiscsi_endpoint”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¶Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÚµsbŒc.iscsi_iser_ep_poll”†”asbuh1hhjðµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2¶h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðµubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj@¶h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjðµubjN)�”}”(hŒep”h]”hŒep”…”�”}”(hjM¶h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjðµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìµubj½)�”}”(hŒint timeout_ms”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjf¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjb¶ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt¶h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjb¶ubjN)�”}”(hŒ timeout_ms”h]”hŒ timeout_ms”…”�”}”(hj‚¶h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjb¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjìµubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj³µh²hh³jŵh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¯µh²hh³jŵh´M:ubah}”(h]”jªµah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jŵh´M:hj¬µh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ2poll for iser connection establishment to complete”h]”hŒ2poll for iser connection establishment to complete”…”�”}”(hj¬¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M:hj©¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¬µh²hh³jŵh´M:ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjĶjÓjĶjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hXí**Parameters** ``struct iscsi_endpoint *ep`` iscsi endpoint (created at ep_connect) ``int timeout_ms`` polling timeout allowed in ms. **Description** This routine boils down to waiting for up_completion signaling that cma_id got CONNECTED event. **Return** 1 if succeeded in connection establishment, 0 if timeout expired (libiscsi will retry will kick in) or -1 if interrupted by signal or more likely iser connection state transitioned to TEMINATING or DOWN during the wait period.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjζh]”hŒ Parameters”…”�”}”(hjжh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj̶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M>hjȶubjø)�”}”(hhh]”(jý)�”}”(hŒE``struct iscsi_endpoint *ep`` iscsi endpoint (created at ep_connect) ”h]”(j)�”}”(hŒ``struct iscsi_endpoint *ep``”h]”j )�”}”(hjí¶h]”hŒstruct iscsi_endpoint *ep”…”�”}”(hjï¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M;hjç¶ubj)�”}”(hhh]”hÝ)�”}”(hŒ&iscsi endpoint (created at ep_connect)”h]”hŒ&iscsi endpoint (created at ep_connect)”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``int timeout_ms`` polling timeout allowed in ms. ”h]”(j)�”}”(hŒ``int timeout_ms``”h]”j )�”}”(hj&·h]”hŒint timeout_ms”…”�”}”(hj(·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M<hj ·ubj)�”}”(hhh]”hÝ)�”}”(hŒpolling timeout allowed in ms.”h]”hŒpolling timeout allowed in ms.”…”�”}”(hj?·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ȶubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M>hjȶubhÝ)�”}”(hŒ_This routine boils down to waiting for up_completion signaling that cma_id got CONNECTED event.”h]”hŒ_This routine boils down to waiting for up_completion signaling that cma_id got CONNECTED event.”…”�”}”(hjw·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M=hjȶubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M@hjȶubhÝ)�”}”(hŒâ1 if succeeded in connection establishment, 0 if timeout expired (libiscsi will retry will kick in) or -1 if interrupted by signal or more likely iser connection state transitioned to TEMINATING or DOWN during the wait period.”h]”hŒâ1 if succeeded in connection establishment, 0 if timeout expired (libiscsi will retry will kick in) or -1 if interrupted by signal or more likely iser connection state transitioned to TEMINATING or DOWN during the wait period.”…”�”}”(hjž·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MAhjȶubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%iscsi_iser_ep_disconnect (C function)”Œc.iscsi_iser_ep_disconnect”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9void iscsi_iser_ep_disconnect (struct iscsi_endpoint *ep)”h]”j")�”}”(hŒ8void iscsi_iser_ep_disconnect(struct iscsi_endpoint *ep)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍ·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÉ·h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Maubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉ·h²hh³jÛ·h´Maubjš)�”}”(hŒiscsi_iser_ep_disconnect”h]”jN)�”}”(hŒiscsi_iser_ep_disconnect”h]”hŒiscsi_iser_ep_disconnect”…”�”}”(hjî·h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjê·ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÉ·h²hh³jÛ·h´Maubj·)�”}”(hŒ(struct iscsi_endpoint *ep)”h]”j½)�”}”(hŒstruct iscsi_endpoint *ep”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¸ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_endpoint”h]”hŒiscsi_endpoint”…”�”}”(hj(¸h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj%¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j*¸Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjð·sbŒc.iscsi_iser_ep_disconnect”†”asbuh1hhj¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¸ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjV¸h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¸ubjN)�”}”(hŒep”h]”hŒep”…”�”}”(hjc¸h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÉ·h²hh³jÛ·h´Maubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÅ·h²hh³jÛ·h´Maubah}”(h]”jÀ·ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÛ·h´Mahj·h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$Initiate connection teardown process”h]”hŒ$Initiate connection teardown process”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MahjЏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj·h²hh³jÛ·h´Maubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¥¸jÓj¥¸jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hXJ**Parameters** ``struct iscsi_endpoint *ep`` iscsi endpoint handle **Description** This routine is not blocked by iser and RDMA termination process completion as we queue a deffered work for iser/RDMA destruction and cleanup or actually call it immediately in case we didn't pass iscsi conn bind/start stage, thus it is safe.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¯¸h]”hŒ Parameters”…”�”}”(hj±¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj­¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mehj©¸ubjø)�”}”(hhh]”jý)�”}”(hŒ4``struct iscsi_endpoint *ep`` iscsi endpoint handle ”h]”(j)�”}”(hŒ``struct iscsi_endpoint *ep``”h]”j )�”}”(hjθh]”hŒstruct iscsi_endpoint *ep”…”�”}”(hjиh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj̸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mbhjȸubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi endpoint handle”h]”hŒiscsi endpoint handle”…”�”}”(hjç¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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©¸ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj ¹h]”hŒ Description”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mdhj©¸ubhÝ)�”}”(hŒòThis routine is not blocked by iser and RDMA termination process completion as we queue a deffered work for iser/RDMA destruction and cleanup or actually call it immediately in case we didn't pass iscsi conn bind/start stage, thus it is safe.”h]”hŒôThis routine is not blocked by iser and RDMA termination process completion as we queue a deffered work for iser/RDMA destruction and cleanup or actually call it immediately in case we didn’t pass iscsi conn bind/start stage, thus it is safe.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mchj©¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_send_command (C function)”Œc.iser_send_command”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒHint iser_send_command (struct iscsi_conn *conn, struct iscsi_task *task)”h]”j")�”}”(hŒGint iser_send_command(struct iscsi_conn *conn, struct iscsi_task *task)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjN¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjJ¹h²hh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´MQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]¹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJ¹h²hh³j\¹h´MQubjš)�”}”(hŒiser_send_command”h]”jN)�”}”(hŒiser_send_command”h]”hŒiser_send_command”…”�”}”(hjo¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjk¹ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjJ¹h²hh³j\¹h´MQubj·)�”}”(hŒ2(struct iscsi_conn *conn, struct iscsi_task *task)”h]”(j½)�”}”(hŒstruct iscsi_conn *conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‹¹h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‡¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜¹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡¹ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj©¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¦¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j«¹Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjq¹sbŒc.iser_send_command”†”asbuh1hhj‡¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɹh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡¹ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj×¹h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡¹ubjN)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjä¹h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjƒ¹ubj½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjý¹h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjù¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjù¹ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jºŒmodname”NŒ classname”Njkjn)�”}”jq]”jŹŒc.iser_send_command”†”asbuh1hhjù¹ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9ºh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjù¹ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjGºh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjù¹ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjTºh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjù¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjƒ¹ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjJ¹h²hh³j\¹h´MQubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjF¹h²hh³j\¹h´MQubah}”(h]”jA¹ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j\¹h´MQhjC¹h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒsend command PDU”h]”hŒsend command PDU”…”�”}”(hj~ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´MQhj{ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjC¹h²hh³j\¹h´MQubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj–ºjÓj–ºjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒ€**Parameters** ``struct iscsi_conn *conn`` link to matching iscsi connection ``struct iscsi_task *task`` SCSI command task”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj ºh]”hŒ Parameters”…”�”}”(hj¢ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjžºubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´MUhjšºubjø)�”}”(hhh]”(jý)�”}”(hŒ>``struct iscsi_conn *conn`` link to matching iscsi connection ”h]”(j)�”}”(hŒ``struct iscsi_conn *conn``”h]”j )�”}”(hj¿ºh]”hŒstruct iscsi_conn *conn”…”�”}”(hjÁºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´MRhj¹ºubj)�”}”(hhh]”hÝ)�”}”(hŒ!link to matching iscsi connection”h]”hŒ!link to matching iscsi connection”…”�”}”(hjغh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÔºh´MRhjÕºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÔºh´MRhj¶ºubjý)�”}”(hŒ-``struct iscsi_task *task`` SCSI command task”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hjøºh]”hŒstruct iscsi_task *task”…”�”}”(hjúºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöºubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´MThjòºubj)�”}”(hhh]”hÝ)�”}”(hŒSCSI command task”h]”hŒSCSI command task”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_send_data_out (C function)”Œc.iser_send_data_out”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒaint iser_send_data_out (struct iscsi_conn *conn, struct iscsi_task *task, struct iscsi_data *hdr)”h]”j")�”}”(hŒ`int iser_send_data_out(struct iscsi_conn *conn, struct iscsi_task *task, struct iscsi_data *hdr)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjR»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjN»h²hh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´M–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjN»h²hh³j`»h´M–ubjš)�”}”(hŒiser_send_data_out”h]”jN)�”}”(hŒiser_send_data_out”h]”hŒiser_send_data_out”…”�”}”(hjs»h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjo»ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjN»h²hh³j`»h´M–ubj·)�”}”(hŒJ(struct iscsi_conn *conn, struct iscsi_task *task, struct iscsi_data *hdr)”h]”(j½)�”}”(hŒstruct iscsi_conn *conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‹»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‹»ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj­»h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjª»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¯»Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgju»sbŒc.iser_send_data_out”†”asbuh1hhj‹»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‹»ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÛ»h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‹»ubjN)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjè»h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‹»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‡»ubj½)�”}”(hŒstruct iscsi_task *task”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjý»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjý»ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j!¼Œmodname”NŒ classname”Njkjn)�”}”jq]”jÉ»Œc.iser_send_data_out”†”asbuh1hhjý»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjý»ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjK¼h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjý»ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjX¼h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjý»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‡»ubj½)�”}”(hŒstruct iscsi_data *hdr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjq¼h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjm¼ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm¼ubh)�”}”(hhh]”jN)�”}”(hŒ iscsi_data”h]”hŒ iscsi_data”…”�”}”(hj�¼h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŒ¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j‘¼Œmodname”NŒ classname”Njkjn)�”}”jq]”jÉ»Œc.iser_send_data_out”†”asbuh1hhjm¼ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm¼ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj»¼h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjm¼ubjN)�”}”(hŒhdr”h]”hŒhdr”…”�”}”(hjȼh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjm¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‡»ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjN»h²hh³j`»h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjJ»h²hh³j`»h´M–ubah}”(h]”jE»ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j`»h´M–hjG»h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒsend data out PDU”h]”hŒsend data out PDU”…”�”}”(hjò¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´M–hjï¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjG»h²hh³j`»h´M–ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj ½jÓj ½jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒÈ**Parameters** ``struct iscsi_conn *conn`` link to matching iscsi connection ``struct iscsi_task *task`` SCSI command task ``struct iscsi_data *hdr`` pointer to the LLD's iSCSI message header”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´Mšhj½ubjø)�”}”(hhh]”(jý)�”}”(hŒ>``struct iscsi_conn *conn`` link to matching iscsi connection ”h]”(j)�”}”(hŒ``struct iscsi_conn *conn``”h]”j )�”}”(hj3½h]”hŒstruct iscsi_conn *conn”…”�”}”(hj5½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´M—hj-½ubj)�”}”(hhh]”hÝ)�”}”(hŒ!link to matching iscsi connection”h]”hŒ!link to matching iscsi connection”…”�”}”(hjL½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ.``struct iscsi_task *task`` SCSI command task ”h]”(j)�”}”(hŒ``struct iscsi_task *task``”h]”j )�”}”(hjl½h]”hŒstruct iscsi_task *task”…”�”}”(hjn½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´M˜hjf½ubj)�”}”(hhh]”hÝ)�”}”(hŒSCSI command task”h]”hŒSCSI command task”…”�”}”(hj…½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒD``struct iscsi_data *hdr`` pointer to the LLD's iSCSI message header”h]”(j)�”}”(hŒ``struct iscsi_data *hdr``”h]”j )�”}”(hj¥½h]”hŒstruct iscsi_data *hdr”…”�”}”(hj§½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.c”h´MšhjŸ½ubj)�”}”(hhh]”hÝ)�”}”(hŒ)pointer to the LLD's iSCSI message header”h]”hŒ+pointer to the LLD’s iSCSI message header”…”�”}”(hj¾½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œr/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:89: ./drivers/infiniband/ulp/iser/iser_initiator.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$iser_alloc_fastreg_pool (C function)”Œc.iser_alloc_fastreg_pool”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[int iser_alloc_fastreg_pool (struct ib_conn *ib_conn, unsigned cmds_max, unsigned int size)”h]”j")�”}”(hŒZint iser_alloc_fastreg_pool(struct ib_conn *ib_conn, unsigned cmds_max, unsigned int size)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjû½h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´Kœubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjû½h²hh³j ¾h´Kœubjš)�”}”(hŒiser_alloc_fastreg_pool”h]”jN)�”}”(hŒiser_alloc_fastreg_pool”h]”hŒiser_alloc_fastreg_pool”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¾ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjû½h²hh³j ¾h´Kœubj·)�”}”(hŒ?(struct ib_conn *ib_conn, unsigned cmds_max, unsigned int size)”h]”(j½)�”}”(hŒstruct ib_conn *ib_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj<¾h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj8¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj8¾ubh)�”}”(hhh]”jN)�”}”(hŒib_conn”h]”hŒib_conn”…”�”}”(hjZ¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjW¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j\¾Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj"¾sbŒc.iser_alloc_fastreg_pool”†”asbuh1hhj8¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj8¾ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjˆ¾h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj8¾ubjN)�”}”(hŒib_conn”h]”hŒib_conn”…”�”}”(hj•¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj8¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4¾ubj½)�”}”(hŒunsigned cmds_max”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj®¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjª¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjª¾ubjN)�”}”(hŒcmds_max”h]”hŒcmds_max”…”�”}”(hjʾh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjª¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4¾ubj½)�”}”(hŒunsigned int size”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjã¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjß¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß¾ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjß¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß¾ubjN)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjß¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj4¾ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjû½h²hh³j ¾h´Kœubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj÷½h²hh³j ¾h´Kœubah}”(h]”jò½ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j ¾h´Kœhjô½h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒICreates pool of fast_reg descriptors for fast registration work requests.”h]”hŒICreates pool of fast_reg descriptors for fast registration work requests.”…”�”}”(hjE¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KœhjB¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjô½h²hh³j ¾h´Kœubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj]¿jÓj]¿jÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_conn *ib_conn`` connection RDMA resources ``unsigned cmds_max`` max number of SCSI commands for this connection ``unsigned int size`` max number of pages per map request **Return** 0 on success, or errno code on failure”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´K hja¿ubjø)�”}”(hhh]”(jý)�”}”(hŒ6``struct ib_conn *ib_conn`` connection RDMA resources ”h]”(j)�”}”(hŒ``struct ib_conn *ib_conn``”h]”j )�”}”(hj†¿h]”hŒstruct ib_conn *ib_conn”…”�”}”(hjˆ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´Kžhj€¿ubj)�”}”(hhh]”hÝ)�”}”(hŒconnection RDMA resources”h]”hŒconnection RDMA resources”…”�”}”(hjŸ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒF``unsigned cmds_max`` max number of SCSI commands for this connection ”h]”(j)�”}”(hŒ``unsigned cmds_max``”h]”j )�”}”(hj¿¿h]”hŒunsigned cmds_max”…”�”}”(hjÁ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KŸhj¹¿ubj)�”}”(hhh]”hÝ)�”}”(hŒ/max number of SCSI commands for this connection”h]”hŒ/max number of SCSI commands for this connection”…”�”}”(hjØ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 size`` max number of pages per map request ”h]”(j)�”}”(hŒ``unsigned int size``”h]”j )�”}”(hjø¿h]”hŒunsigned int size”…”�”}”(hjú¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´K hjò¿ubj)�”}”(hhh]”hÝ)�”}”(hŒ#max number of pages per map request”h]”hŒ#max number of pages per map request”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hja¿ubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hj3Àh]”hŒReturn”…”�”}”(hj5Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj1Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´K¢hja¿ubhÝ)�”}”(hŒ&0 on success, or errno code on failure”h]”hŒ&0 on success, or errno code on failure”…”�”}”(hjIÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´K¢hja¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#iser_free_fastreg_pool (C function)”Œc.iser_free_fastreg_pool”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5void iser_free_fastreg_pool (struct ib_conn *ib_conn)”h]”j")�”}”(hŒ4void iser_free_fastreg_pool(struct ib_conn *ib_conn)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjxÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjtÀh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KÆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Àh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjtÀh²hh³j†Àh´KÆubjš)�”}”(hŒiser_free_fastreg_pool”h]”jN)�”}”(hŒiser_free_fastreg_pool”h]”hŒiser_free_fastreg_pool”…”�”}”(hj™Àh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj•Àubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjtÀh²hh³j†Àh´KÆubj·)�”}”(hŒ(struct ib_conn *ib_conn)”h]”j½)�”}”(hŒstruct ib_conn *ib_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjµÀh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj±Àubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÀh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj±Àubh)�”}”(hhh]”jN)�”}”(hŒib_conn”h]”hŒib_conn”…”�”}”(hjÓÀh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÐÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÕÀŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj›ÀsbŒc.iser_free_fastreg_pool”†”asbuh1hhj±Àubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóÀh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj±Àubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj±ÀubjN)�”}”(hŒib_conn”h]”hŒib_conn”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj±Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj­Àubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjtÀh²hh³j†Àh´KÆubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjpÀh²hh³j†Àh´KÆubah}”(h]”jkÀah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j†Àh´KÆhjmÀh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ)releases the pool of fast_reg descriptors”h]”hŒ)releases the pool of fast_reg descriptors”…”�”}”(hj8Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KÆhj5Áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjmÀh²hh³j†Àh´KÆubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjPÁjÓjPÁjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒG**Parameters** ``struct ib_conn *ib_conn`` connection RDMA resources”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KÊhjTÁubjø)�”}”(hhh]”jý)�”}”(hŒ5``struct ib_conn *ib_conn`` connection RDMA resources”h]”(j)�”}”(hŒ``struct ib_conn *ib_conn``”h]”j )�”}”(hjyÁh]”hŒstruct ib_conn *ib_conn”…”�”}”(hj{Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KÌhjsÁubj)�”}”(hhh]”hÝ)�”}”(hŒconnection RDMA resources”h]”hŒconnection RDMA resources”…”�”}”(hj’Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KÇhj�Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŽÁh´KÌhjpÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjTÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iser_free_ib_conn_res (C function)”Œc.iser_free_ib_conn_res”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFvoid iser_free_ib_conn_res (struct iser_conn *iser_conn, bool destroy)”h]”j")�”}”(hŒEvoid iser_free_ib_conn_res(struct iser_conn *iser_conn, bool destroy)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÏÁh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´Miubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏÁh²hh³jáÁh´Miubjš)�”}”(hŒiser_free_ib_conn_res”h]”jN)�”}”(hŒiser_free_ib_conn_res”h]”hŒiser_free_ib_conn_res”…”�”}”(hjôÁh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjðÁubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÏÁh²hh³jáÁh´Miubj·)�”}”(hŒ+(struct iser_conn *iser_conn, bool destroy)”h]”(j½)�”}”(hŒstruct iser_conn *iser_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Âubh)�”}”(hhh]”jN)�”}”(hŒ iser_conn”h]”hŒ iser_conn”…”�”}”(hj.Âh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj+Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j0ÂŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjöÁsbŒc.iser_free_ib_conn_res”†”asbuh1hhj Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Âubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj\Âh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj ÂubjN)�”}”(hŒ iser_conn”h]”hŒ iser_conn”…”�”}”(hjiÂh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÂubj½)�”}”(hŒ bool destroy”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hj‚Âh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj~Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~ÂubjN)�”}”(hŒdestroy”h]”hŒdestroy”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj~Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÂubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÏÁh²hh³jáÁh´Miubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjËÁh²hh³jáÁh´Miubah}”(h]”jÆÁah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jáÁh´MihjÈÁh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒrelease IB related resources”h]”hŒrelease IB related resources”…”�”}”(hjÇÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MihjÄÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÈÁh²hh³jáÁh´Miubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjßÂjÓjßÂjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hX}**Parameters** ``struct iser_conn *iser_conn`` iser connection struct ``bool destroy`` indicator if we need to try to release the iser device and memory regoins pool (only iscsi shutdown and DEVICE_REMOVAL will use this). **Description** This routine is called with the iser state mutex held so the cm_id removal is out of here. It is Safe to be invoked multiple times.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjéÂh]”hŒ Parameters”…”�”}”(hjëÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjçÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MmhjãÂubjø)�”}”(hhh]”(jý)�”}”(hŒ7``struct iser_conn *iser_conn`` iser connection struct ”h]”(j)�”}”(hŒ``struct iser_conn *iser_conn``”h]”j )�”}”(hjÃh]”hŒstruct iser_conn *iser_conn”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MjhjÃubj)�”}”(hhh]”hÝ)�”}”(hŒiser connection struct”h]”hŒiser connection struct”…”�”}”(hj!Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÃh´MjhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÃh´MjhjÿÂubjý)�”}”(hŒ˜``bool destroy`` indicator if we need to try to release the iser device and memory regoins pool (only iscsi shutdown and DEVICE_REMOVAL will use this). ”h]”(j)�”}”(hŒ``bool destroy``”h]”j )�”}”(hjAÃh]”hŒ bool destroy”…”�”}”(hjCÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´Mmhj;Ãubj)�”}”(hhh]”hÝ)�”}”(hŒ†indicator if we need to try to release the iser device and memory regoins pool (only iscsi shutdown and DEVICE_REMOVAL will use this).”h]”hŒ†indicator if we need to try to release the iser device and memory regoins pool (only iscsi shutdown and DEVICE_REMOVAL will use this).”…”�”}”(hjZÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MkhjWÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jVÃh´MmhjÿÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjãÂubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj}Ãh]”hŒ Description”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj{Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MohjãÂubhÝ)�”}”(hŒƒThis routine is called with the iser state mutex held so the cm_id removal is out of here. It is Safe to be invoked multiple times.”h]”hŒƒThis routine is called with the iser state mutex held so the cm_id removal is out of here. It is Safe to be invoked multiple times.”…”�”}”(hj“Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MnhjãÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_conn_release (C function)”Œc.iser_conn_release”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void iser_conn_release (struct iser_conn *iser_conn)”h]”j")�”}”(hŒ3void iser_conn_release(struct iser_conn *iser_conn)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÂÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¾Ãh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑÃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾Ãh²hh³jÐÃh´M�ubjš)�”}”(hŒiser_conn_release”h]”jN)�”}”(hŒiser_conn_release”h]”hŒiser_conn_release”…”�”}”(hjãÃh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjßÃubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¾Ãh²hh³jÐÃh´M�ubj·)�”}”(hŒ(struct iser_conn *iser_conn)”h]”j½)�”}”(hŒstruct iser_conn *iser_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÿÃh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjûÃubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûÃubh)�”}”(hhh]”jN)�”}”(hŒ iser_conn”h]”hŒ iser_conn”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÄŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjåÃsbŒc.iser_conn_release”†”asbuh1hhjûÃubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûÃubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjKÄh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjûÃubjN)�”}”(hŒ iser_conn”h]”hŒ iser_conn”…”�”}”(hjXÄh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjûÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj÷Ãubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¾Ãh²hh³jÐÃh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjºÃh²hh³jÐÃh´M�ubah}”(h]”jµÃah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÐÃh´M�hj·Ãh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ3Frees all conn objects and deallocs conn descriptor”h]”hŒ3Frees all conn objects and deallocs conn descriptor”…”�”}”(hj‚Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M�hjÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj·Ãh²hh³jÐÃh´M�ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjšÄjÓjšÄjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒI**Parameters** ``struct iser_conn *iser_conn`` iSER connection context”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¤Äh]”hŒ Parameters”…”�”}”(hj¦Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¢Äubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M‘hjžÄubjø)�”}”(hhh]”jý)�”}”(hŒ7``struct iser_conn *iser_conn`` iSER connection context”h]”(j)�”}”(hŒ``struct iser_conn *iser_conn``”h]”j )�”}”(hjÃÄh]”hŒstruct iser_conn *iser_conn”…”�”}”(hjÅÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M“hj½Äubj)�”}”(hhh]”hÝ)�”}”(hŒiSER connection context”h]”hŒiSER connection context”…”�”}”(hjÜÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.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×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ iser_conn_terminate (C function)”Œc.iser_conn_terminate”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5int iser_conn_terminate (struct iser_conn *iser_conn)”h]”j")�”}”(hŒ4int iser_conn_terminate(struct iser_conn *iser_conn)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÅh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Åh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÅh²hh³j+Åh´M°ubjš)�”}”(hŒiser_conn_terminate”h]”jN)�”}”(hŒiser_conn_terminate”h]”hŒiser_conn_terminate”…”�”}”(hj>Åh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:Åubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÅh²hh³j+Åh´M°ubj·)�”}”(hŒ(struct iser_conn *iser_conn)”h]”j½)�”}”(hŒstruct iser_conn *iser_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjZÅh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjVÅubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgÅh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjVÅubh)�”}”(hhh]”jN)�”}”(hŒ iser_conn”h]”hŒ iser_conn”…”�”}”(hjxÅh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjuÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jzÅŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj@ÅsbŒc.iser_conn_terminate”†”asbuh1hhjVÅubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Åh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjVÅubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¦Åh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjVÅubjN)�”}”(hŒ iser_conn”h]”hŒ iser_conn”…”�”}”(hj³Åh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjVÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjRÅubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÅh²hh³j+Åh´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÅh²hh³j+Åh´M°ubah}”(h]”jÅah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j+Åh´M°hjÅh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒItriggers start of the disconnect procedures and waits for them to be done”h]”hŒItriggers start of the disconnect procedures and waits for them to be done”…”�”}”(hjÝÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M°hjÚÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÅh²hh³j+Åh´M°ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjõÅjÓjõÅjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒx**Parameters** ``struct iser_conn *iser_conn`` iSER connection context **Description** Called with state mutex held”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÿÅh]”hŒ Parameters”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjýÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M´hjùÅubjø)�”}”(hhh]”jý)�”}”(hŒ8``struct iser_conn *iser_conn`` iSER connection context ”h]”(j)�”}”(hŒ``struct iser_conn *iser_conn``”h]”j )�”}”(hjÆh]”hŒstruct iser_conn *iser_conn”…”�”}”(hj Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M²hjÆubj)�”}”(hhh]”hÝ)�”}”(hŒiSER connection context”h]”hŒiSER connection context”…”�”}”(hj7Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j3Æh´M²hj4Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j3Æh´M²hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjùÅubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M´hjùÅubhÝ)�”}”(hŒCalled with state mutex held”h]”hŒCalled with state mutex held”…”�”}”(hjoÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´M³hjùÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_post_send (C function)”Œc.iser_post_send”hNt”auh1jhjyh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJint iser_post_send (struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc)”h]”j")�”}”(hŒIint iser_post_send(struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjžÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjšÆh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Æh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjšÆh²hh³j¬Æh´MRubjš)�”}”(hŒiser_post_send”h]”jN)�”}”(hŒiser_post_send”h]”hŒiser_post_send”…”�”}”(hj¿Æh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj»Æubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjšÆh²hh³j¬Æh´MRubj·)�”}”(hŒ7(struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc)”h]”(j½)�”}”(hŒstruct ib_conn *ib_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÛÆh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjׯubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjׯubh)�”}”(hhh]”jN)�”}”(hŒib_conn”h]”hŒib_conn”…”�”}”(hjùÆh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjöÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jûÆŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÁÆsbŒc.iser_post_send”†”asbuh1hhjׯubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjׯubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj'Çh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjׯubjN)�”}”(hŒib_conn”h]”hŒib_conn”…”�”}”(hj4Çh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjׯubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÓÆubj½)�”}”(hŒstruct iser_tx_desc *tx_desc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjMÇh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjIÇubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÇh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIÇubh)�”}”(hhh]”jN)�”}”(hŒ iser_tx_desc”h]”hŒ iser_tx_desc”…”�”}”(hjkÇh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjhÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jmÇŒmodname”NŒ classname”Njkjn)�”}”jq]”jÇŒc.iser_post_send”†”asbuh1hhjIÇubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Çh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIÇubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj—Çh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjIÇubjN)�”}”(hŒtx_desc”h]”hŒtx_desc”…”�”}”(hj¤Çh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjIÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÓÆubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjšÆh²hh³j¬Æh´MRubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj–Æh²hh³j¬Æh´MRubah}”(h]”j‘Æah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¬Æh´MRhj“Æh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒInitiate a Send DTO operation”h]”hŒInitiate a Send DTO operation”…”�”}”(hjÎÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MRhjËÇh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj“Æh²hh³j¬Æh´MRubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjæÇjÓjæÇjÔ‰jÕ‰jÖ‰uh1jh²hhjyh³Nh´NubjØ)�”}”(hŒ§**Parameters** ``struct ib_conn *ib_conn`` connection RDMA resources ``struct iser_tx_desc *tx_desc`` iSER TX descriptor **Return** 0 on success, -1 on failure”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjðÇh]”hŒ Parameters”…”�”}”(hjòÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjîÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MVhjêÇubjø)�”}”(hhh]”(jý)�”}”(hŒ6``struct ib_conn *ib_conn`` connection RDMA resources ”h]”(j)�”}”(hŒ``struct ib_conn *ib_conn``”h]”j )�”}”(hjÈh]”hŒstruct ib_conn *ib_conn”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MShj Èubj)�”}”(hhh]”hÝ)�”}”(hŒconnection RDMA resources”h]”hŒconnection RDMA resources”…”�”}”(hj(Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j$Èh´MShj%Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j$Èh´MShjÈubjý)�”}”(hŒ4``struct iser_tx_desc *tx_desc`` iSER TX descriptor ”h]”(j)�”}”(hŒ ``struct iser_tx_desc *tx_desc``”h]”j )�”}”(hjHÈh]”hŒstruct iser_tx_desc *tx_desc”…”�”}”(hjJÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MThjBÈubj)�”}”(hhh]”hÝ)�”}”(hŒiSER TX descriptor”h]”hŒiSER TX descriptor”…”�”}”(hjaÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j]Èh´MThj^Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j]Èh´MThjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjêÇubhÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MVhjêÇubhÝ)�”}”(hŒ0 on success, -1 on failure”h]”hŒ0 on success, -1 on failure”…”�”}”(hj™Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MVhjêÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjyh²hh³Nh´Nubeh}”(h]”Œiscsi-extensions-for-rdma-iser”ah ]”h"]”Œ iscsi extensions for rdma (iser)”ah$]”h&]”uh1hµhjyh²hh³hÊh´KJubh¶)�”}”(hhh]”(h»)�”}”(hŒ,InfiniBand SCSI RDMA protocol target support”h]”hŒ,InfiniBand SCSI RDMA protocol target support”…”�”}”(hjºÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj·Èh²hh³hÊh´K`ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_command_state (C enum)”Œc.srpt_command_state”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒsrpt_command_state”h]”j")�”}”(hŒenum srpt_command_state”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjáÈh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÝÈh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÈh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÝÈh²hh³jîÈh´Kubjš)�”}”(hŒsrpt_command_state”h]”jN)�”}”(hjÛÈh]”hŒsrpt_command_state”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjýÈubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÝÈh²hh³jîÈh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÙÈh²hh³jîÈh´Kubah}”(h]”jÔÈah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jîÈh´KhjÖÈh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ"SCSI command state managed by SRPT”h]”hŒ"SCSI command state managed by SRPT”…”�”}”(hj#Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KŠhj Éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÖÈh²hh³jîÈh´Kubeh}”(h]”h ]”(jeŒenum”eh"]”h$]”h&]”jÑjejÒj;ÉjÓj;ÉjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXb**Constants** ``SRPT_STATE_NEW`` New command arrived and is being processed. ``SRPT_STATE_NEED_DATA`` Processing a write or bidir command and waiting for data arrival. ``SRPT_STATE_DATA_IN`` Data for the write or bidir command arrived and is being processed. ``SRPT_STATE_CMD_RSP_SENT`` SRP_RSP for SRP_CMD has been sent. ``SRPT_STATE_MGMT`` Processing a SCSI task management command. ``SRPT_STATE_MGMT_RSP_SENT`` SRP_RSP for SRP_TSK_MGMT has been sent. ``SRPT_STATE_DONE`` Command processing finished successfully, command processing has been aborted or command processing failed.”h]”(hÝ)�”}”(hŒ **Constants**”h]”jâ)�”}”(hjEÉh]”hŒ Constants”…”�”}”(hjGÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjCÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KŽhj?Éubjø)�”}”(hhh]”(jý)�”}”(hŒ?``SRPT_STATE_NEW`` New command arrived and is being processed. ”h]”(j)�”}”(hŒ``SRPT_STATE_NEW``”h]”j )�”}”(hjdÉh]”hŒSRPT_STATE_NEW”…”�”}”(hjfÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K‘hj^Éubj)�”}”(hhh]”hÝ)�”}”(hŒ+New command arrived and is being processed.”h]”hŒ+New command arrived and is being processed.”…”�”}”(hj}Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jyÉh´K‘hjzÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jyÉh´K‘hj[Éubjý)�”}”(hŒ[``SRPT_STATE_NEED_DATA`` Processing a write or bidir command and waiting for data arrival. ”h]”(j)�”}”(hŒ``SRPT_STATE_NEED_DATA``”h]”j )�”}”(hj�Éh]”hŒSRPT_STATE_NEED_DATA”…”�”}”(hjŸÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K•hj—Éubj)�”}”(hhh]”hÝ)�”}”(hŒAProcessing a write or bidir command and waiting for data arrival.”h]”hŒAProcessing a write or bidir command and waiting for data arrival.”…”�”•}”(hj¶Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.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Œ[``SRPT_STATE_DATA_IN`` Data for the write or bidir command arrived and is being processed. ”h]”(j)�”}”(hŒ``SRPT_STATE_DATA_IN``”h]”j )�”}”(hj×Éh]”hŒSRPT_STATE_DATA_IN”…”�”}”(hjÙÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K™hjÑÉubj)�”}”(hhh]”hÝ)�”}”(hŒCData for the write or bidir command arrived and is being processed.”h]”hŒCData for the write or bidir command arrived and is being processed.”…”�”}”(hjðÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.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Œ?``SRPT_STATE_CMD_RSP_SENT`` SRP_RSP for SRP_CMD has been sent. ”h]”(j)�”}”(hŒ``SRPT_STATE_CMD_RSP_SENT``”h]”j )�”}”(hjÊh]”hŒSRPT_STATE_CMD_RSP_SENT”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kœhj Êubj)�”}”(hhh]”hÝ)�”}”(hŒ"SRP_RSP for SRP_CMD has been sent.”h]”hŒ"SRP_RSP for SRP_CMD has been sent.”…”�”}”(hj*Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ?``SRPT_STATE_MGMT`` Processing a SCSI task management command. ”h]”(j)�”}”(hŒ``SRPT_STATE_MGMT``”h]”j )�”}”(hjJÊh]”hŒSRPT_STATE_MGMT”…”�”}”(hjLÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KŸhjDÊubj)�”}”(hhh]”hÝ)�”}”(hŒ*Processing a SCSI task management command.”h]”hŒ*Processing a SCSI task management command.”…”�”}”(hjcÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒE``SRPT_STATE_MGMT_RSP_SENT`` SRP_RSP for SRP_TSK_MGMT has been sent. ”h]”(j)�”}”(hŒ``SRPT_STATE_MGMT_RSP_SENT``”h]”j )�”}”(hjƒÊh]”hŒSRPT_STATE_MGMT_RSP_SENT”…”�”}”(hj…Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¢hj}Êubj)�”}”(hhh]”hÝ)�”}”(hŒ'SRP_RSP for SRP_TSK_MGMT has been sent.”h]”hŒ'SRP_RSP for SRP_TSK_MGMT has been sent.”…”�”}”(hjœÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``SRPT_STATE_DONE`` Command processing finished successfully, command processing has been aborted or command processing failed.”h]”(j)�”}”(hŒ``SRPT_STATE_DONE``”h]”j )�”}”(hj¼Êh]”hŒSRPT_STATE_DONE”…”�”}”(hj¾Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¦hj¶Êubj)�”}”(hhh]”hÝ)�”}”(hŒkCommand processing finished successfully, command processing has been aborted or command processing failed.”h]”hŒkCommand processing finished successfully, command processing has been aborted or command processing failed.”…”�”}”(hjÕÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_ioctx (C struct)”Œ c.srpt_ioctx”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ srpt_ioctx”h]”j")�”}”(hŒstruct srpt_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjËh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Ëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjËh²hh³j#Ëh´K¬ubjš)�”}”(hŒ srpt_ioctx”h]”jN)�”}”(hjËh]”hŒ srpt_ioctx”…”�”}”(hj6Ëh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj2Ëubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjËh²hh³j#Ëh´K¬ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjËh²hh³j#Ëh´K¬ubah}”(h]”j Ëah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j#Ëh´K¬hj Ëh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ#shared SRPT I/O context information”h]”hŒ#shared SRPT I/O context information”…”�”}”(hjXËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¢hjUËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj Ëh²hh³j#Ëh´K¬ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjpËjÓjpËjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX±**Definition**:: struct srpt_ioctx { struct ib_cqe cqe; void *buf; dma_addr_t dma; uint32_t offset; uint32_t index; }; **Members** ``cqe`` Completion queue element. ``buf`` Pointer to the buffer. ``dma`` DMA address of the buffer. ``offset`` Offset of the first byte in **buf** and **dma** that is actually used. ``index`` Index of the I/O context in its ioctx_ring array.”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(jâ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj|Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjxËubhŒ:”…”�”}”(hjxËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¦hjtËubj½y)�”}”(hŒƒstruct srpt_ioctx { struct ib_cqe cqe; void *buf; dma_addr_t dma; uint32_t offset; uint32_t index; };”h]”hŒƒstruct srpt_ioctx { struct ib_cqe cqe; void *buf; dma_addr_t dma; uint32_t offset; uint32_t index; };”…”�”}”hj•Ësbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¨hjtËubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K°hjtËubjø)�”}”(hhh]”(jý)�”}”(hŒ"``cqe`` Completion queue element. ”h]”(j)�”}”(hŒ``cqe``”h]”j )�”}”(hjÅËh]”hŒcqe”…”�”}”(hjÇËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃËubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¤hj¿Ëubj)�”}”(hhh]”hÝ)�”}”(hŒCompletion queue element.”h]”hŒCompletion queue element.”…”�”}”(hjÞËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``buf`` Pointer to the buffer. ”h]”(j)�”}”(hŒ``buf``”h]”j )�”}”(hjþËh]”hŒbuf”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüËubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¥hjøËubj)�”}”(hhh]”hÝ)�”}”(hŒPointer to the buffer.”h]”hŒPointer to the buffer.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ#``dma`` DMA address of the buffer. ”h]”(j)�”}”(hŒ``dma``”h]”j )�”}”(hj7Ìh]”hŒdma”…”�”}”(hj9Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¦hj1Ìubj)�”}”(hhh]”hÝ)�”}”(hŒDMA address of the buffer.”h]”hŒDMA address of the buffer.”…”�”}”(hjPÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jLÌh´K¦hjMÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jLÌh´K¦hj¼Ëubjý)�”}”(hŒR``offset`` Offset of the first byte in **buf** and **dma** that is actually used. ”h]”(j)�”}”(hŒ ``offset``”h]”j )�”}”(hjpÌh]”hŒoffset”…”�”}”(hjrÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K§hjjÌubj)�”}”(hhh]”hÝ)�”}”(hŒFOffset of the first byte in **buf** and **dma** that is actually used.”h]”(hŒOffset of the first byte in ”…”�”}”(hj‰Ìh²hh³Nh´Nubjâ)�”}”(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Œ**dma**”h]”hŒdma”…”�”}”(hj£Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj‰ÌubhŒ that is actually used.”…”�”}”(hj‰Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j…Ìh´K§hj†Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j…Ìh´K§hj¼Ëubjý)�”}”(hŒ;``index`` Index of the I/O context in its ioctx_ring array.”h]”(j)�”}”(hŒ ``index``”h]”j )�”}”(hjÍÌh]”hŒindex”…”�”}”(hjÏÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K§hjÇÌubj)�”}”(hhh]”hÝ)�”}”(hŒ1Index of the I/O context in its ioctx_ring array.”h]”hŒ1Index of the I/O context in its ioctx_ring array.”…”�”}”(hjæÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.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÷hjtËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_recv_ioctx (C struct)”Œc.srpt_recv_ioctx”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒsrpt_recv_ioctx”h]”j")�”}”(hŒstruct srpt_recv_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj'Íh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj#Íh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#Íh²hh³j4Íh´K®ubjš)�”}”(hŒsrpt_recv_ioctx”h]”jN)�”}”(hj!Íh]”hŒsrpt_recv_ioctx”…”�”}”(hjGÍh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjCÍubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj#Íh²hh³j4Íh´K®ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÍh²hh³j4Íh´K®ubah}”(h]”jÍah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j4Íh´K®hjÍh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSRPT receive I/O context”h]”hŒSRPT receive I/O context”…”�”}”(hjiÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K²hjfÍh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÍh²hh³j4Íh´K®ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj�ÍjÓj�ÍjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX-**Definition**:: struct srpt_recv_ioctx { struct srpt_ioctx ioctx; struct list_head wait_list; int byte_len; }; **Members** ``ioctx`` See above. ``wait_list`` Node for insertion in srpt_rdma_ch.cmd_wait_list. ``byte_len`` Number of bytes in **ioctx.buf**.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¶hj…Íubj½y)�”}”(hŒwstruct srpt_recv_ioctx { struct srpt_ioctx ioctx; struct list_head wait_list; int byte_len; };”h]”hŒwstruct srpt_recv_ioctx { struct srpt_ioctx ioctx; struct list_head wait_list; int byte_len; };”…”�”}”hj¦Ísbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¸hj…ÍubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¾hj…Íubjø)�”}”(hhh]”(jý)�”}”(hŒ``ioctx`` See above. ”h]”(j)�”}”(hŒ ``ioctx``”h]”j )�”}”(hjÖÍh]”hŒioctx”…”�”}”(hjØÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K´hjÐÍubj)�”}”(hhh]”hÝ)�”}”(hŒ See above.”h]”hŒ See above.”…”�”}”(hjïÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ@``wait_list`` Node for insertion in srpt_rdma_ch.cmd_wait_list. ”h]”(j)�”}”(hŒ ``wait_list``”h]”j )�”}”(hjÎh]”hŒ wait_list”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kµhj Îubj)�”}”(hhh]”hÝ)�”}”(hŒ1Node for insertion in srpt_rdma_ch.cmd_wait_list.”h]”hŒ1Node for insertion in srpt_rdma_ch.cmd_wait_list.”…”�”}”(hj(Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ.``byte_len`` Number of bytes in **ioctx.buf**.”h]”(j)�”}”(hŒ ``byte_len``”h]”j )�”}”(hjHÎh]”hŒbyte_len”…”�”}”(hjJÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KµhjBÎubj)�”}”(hhh]”hÝ)�”}”(hŒ!Number of bytes in **ioctx.buf**.”h]”(hŒNumber of bytes in ”…”�”}”(hjaÎh²hh³Nh´Nubjâ)�”}”(hŒ **ioctx.buf**”h]”hŒ ioctx.buf”…”�”}”(hjiÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjaÎubhŒ.”…”�”}”(hjaÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¶hj^Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBÎ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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_send_ioctx (C struct)”Œc.srpt_send_ioctx”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒsrpt_send_ioctx”h]”j")�”}”(hŒstruct srpt_send_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj´Îh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj°Îh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K¼ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÎh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj°Îh²hh³jÁÎh´K¼ubjš)�”}”(hŒsrpt_send_ioctx”h]”jN)�”}”(hj®Îh]”hŒsrpt_send_ioctx”…”�”}”(hjÔÎh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÐÎubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj°Îh²hh³jÁÎh´K¼ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¬Îh²hh³jÁÎh´K¼ubah}”(h]”j§Îah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÁÎh´K¼hj©Îh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSRPT send I/O context”h]”hŒSRPT send I/O context”…”�”}”(hjöÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÄhjóÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj©Îh²hh³jÁÎh´K¼ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjÏjÓjÏjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXÆ**Definition**:: struct srpt_send_ioctx { struct srpt_ioctx ioctx; struct srpt_rdma_ch *ch; struct srpt_recv_ioctx *recv_ioctx; struct srpt_rw_ctx s_rw_ctx; struct srpt_rw_ctx *rw_ctxs; struct scatterlist imm_sg; struct ib_cqe rdma_cqe; enum srpt_command_state state; struct se_cmd cmd; u8 n_rdma; u8 n_rw_ctx; bool queue_status_only; u8 sense_data[TRANSPORT_SENSE_BUFFER]; }; **Members** ``ioctx`` See above. ``ch`` Channel pointer. ``recv_ioctx`` Receive I/O context associated with this send I/O context. Only used for processing immediate data. ``s_rw_ctx`` **rw_ctxs** points here if only a single rw_ctx is needed. ``rw_ctxs`` RDMA read/write contexts. ``imm_sg`` Scatterlist for immediate data. ``rdma_cqe`` RDMA completion queue element. ``state`` I/O context state. ``cmd`` Target core command data structure. ``n_rdma`` Number of work requests needed to transfer this ioctx. ``n_rw_ctx`` Size of rw_ctxs array. ``queue_status_only`` Send a SCSI status back to the initiator but no data. ``sense_data`` Sense data to be sent to the initiator.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÈhjÏubj½y)�”}”(hXÉstruct srpt_send_ioctx { struct srpt_ioctx ioctx; struct srpt_rdma_ch *ch; struct srpt_recv_ioctx *recv_ioctx; struct srpt_rw_ctx s_rw_ctx; struct srpt_rw_ctx *rw_ctxs; struct scatterlist imm_sg; struct ib_cqe rdma_cqe; enum srpt_command_state state; struct se_cmd cmd; u8 n_rdma; u8 n_rw_ctx; bool queue_status_only; u8 sense_data[TRANSPORT_SENSE_BUFFER]; };”h]”hXÉstruct srpt_send_ioctx { struct srpt_ioctx ioctx; struct srpt_rdma_ch *ch; struct srpt_recv_ioctx *recv_ioctx; struct srpt_rw_ctx s_rw_ctx; struct srpt_rw_ctx *rw_ctxs; struct scatterlist imm_sg; struct ib_cqe rdma_cqe; enum srpt_command_state state; struct se_cmd cmd; u8 n_rdma; u8 n_rw_ctx; bool queue_status_only; u8 sense_data[TRANSPORT_SENSE_BUFFER]; };”…”�”}”hj3Ïsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÊhjÏubhÝ)�”}”(hŒ **Members**”h]”jâ)�”}”(hjDÏh]”hŒMembers”…”�”}”(hjFÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjBÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÚhjÏubjø)�”}”(hhh]”(jý)�”}”(hŒ``ioctx`` See above. ”h]”(j)�”}”(hŒ ``ioctx``”h]”j )�”}”(hjcÏh]”hŒioctx”…”�”}”(hjeÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÆhj]Ïubj)�”}”(hhh]”hÝ)�”}”(hŒ See above.”h]”hŒ See above.”…”�”}”(hj|Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jxÏh´KÆhjyÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jxÏh´KÆhjZÏubjý)�”}”(hŒ``ch`` Channel pointer. ”h]”(j)�”}”(hŒ``ch``”h]”j )�”}”(hjœÏh]”hŒch”…”�”}”(hjžÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÇhj–Ïubj)�”}”(hhh]”hÝ)�”}”(hŒChannel pointer.”h]”hŒChannel pointer.”…”�”}”(hjµÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j±Ïh´KÇhj²Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j±Ïh´KÇhjZÏubjý)�”}”(hŒs``recv_ioctx`` Receive I/O context associated with this send I/O context. Only used for processing immediate data. ”h]”(j)�”}”(hŒ``recv_ioctx``”h]”j )�”}”(hjÕÏh]”hŒ recv_ioctx”…”�”}”(hj×Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÉhjÏÏubj)�”}”(hhh]”hÝ)�”}”(hŒcReceive I/O context associated with this send I/O context. Only used for processing immediate data.”h]”hŒcReceive I/O context associated with this send I/O context. Only used for processing immediate data.”…”�”}”(hjîÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÈhjëÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jêÏh´KÉhjZÏubjý)�”}”(hŒH``s_rw_ctx`` **rw_ctxs** points here if only a single rw_ctx is needed. ”h]”(j)�”}”(hŒ ``s_rw_ctx``”h]”j )�”}”(hjÐh]”hŒs_rw_ctx”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÊhj Ðubj)�”}”(hhh]”hÝ)�”}”(hŒ:**rw_ctxs** points here if only a single rw_ctx is needed.”h]”(jâ)�”}”(hŒ **rw_ctxs**”h]”hŒrw_ctxs”…”�”}”(hj,Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj(ÐubhŒ/ points here if only a single rw_ctx is needed.”…”�”}”(hj(Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j$Ðh´KÊhj%Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j$Ðh´KÊhjZÏubjý)�”}”(hŒ&``rw_ctxs`` RDMA read/write contexts. ”h]”(j)�”}”(hŒ ``rw_ctxs``”h]”j )�”}”(hjVÐh]”hŒrw_ctxs”…”�”}”(hjXÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KËhjPÐubj)�”}”(hhh]”hÝ)�”}”(hŒRDMA read/write contexts.”h]”hŒRDMA read/write contexts.”…”�”}”(hjoÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jkÐh´KËhjlÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jkÐh´KËhjZÏubjý)�”}”(hŒ+``imm_sg`` Scatterlist for immediate data. ”h]”(j)�”}”(hŒ ``imm_sg``”h]”j )�”}”(hj�Ðh]”hŒimm_sg”…”�”}”(hj‘Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÌhj‰Ðubj)�”}”(hhh]”hÝ)�”}”(hŒScatterlist for immediate data.”h]”hŒScatterlist for immediate data.”…”�”}”(hj¨Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¤Ðh´KÌhj¥Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¤Ðh´KÌhjZÏubjý)�”}”(hŒ,``rdma_cqe`` RDMA completion queue element. ”h]”(j)�”}”(hŒ ``rdma_cqe``”h]”j )�”}”(hjÈÐh]”hŒrdma_cqe”…”�”}”(hjÊÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÍhjÂÐubj)�”}”(hhh]”hÝ)�”}”(hŒRDMA completion queue element.”h]”hŒRDMA completion queue element.”…”�”}”(hjáÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÝÐh´KÍhjÞÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÝÐh´KÍhjZÏubjý)�”}”(hŒ``state`` I/O context state. ”h]”(j)�”}”(hŒ ``state``”h]”j )�”}”(hjÑh]”hŒstate”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÎhjûÐubj)�”}”(hhh]”hÝ)�”}”(hŒI/O context state.”h]”hŒI/O context state.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÑh´KÎhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÑh´KÎhjZÏubjý)�”}”(hŒ,``cmd`` Target core command data structure. ”h]”(j)�”}”(hŒ``cmd``”h]”j )�”}”(hj:Ñh]”hŒcmd”…”�”}”(hj<Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÏhj4Ñubj)�”}”(hhh]”hÝ)�”}”(hŒ#Target core command data structure.”h]”hŒ#Target core command data structure.”…”�”}”(hjSÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jOÑh´KÏhjPÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jOÑh´KÏhjZÏubjý)�”}”(hŒB``n_rdma`` Number of work requests needed to transfer this ioctx. ”h]”(j)�”}”(hŒ ``n_rdma``”h]”j )�”}”(hjsÑh]”hŒn_rdma”…”�”}”(hjuÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÑhjmÑubj)�”}”(hhh]”hÝ)�”}”(hŒ6Number of work requests needed to transfer this ioctx.”h]”hŒ6Number of work requests needed to transfer this ioctx.”…”�”}”(hjŒÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jˆÑh´KÑhj‰Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jˆÑh´KÑhjZÏubjý)�”}”(hŒ$``n_rw_ctx`` Size of rw_ctxs array. ”h]”(j)�”}”(hŒ ``n_rw_ctx``”h]”j )�”}”(hj¬Ñh]”hŒn_rw_ctx”…”�”}”(hj®Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÒhj¦Ñubj)�”}”(hhh]”hÝ)�”}”(hŒSize of rw_ctxs array.”h]”hŒSize of rw_ctxs array.”…”�”}”(hjÅÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÁÑh´KÒhjÂÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÁÑh´KÒhjZÏubjý)�”}”(hŒL``queue_status_only`` Send a SCSI status back to the initiator but no data. ”h]”(j)�”}”(hŒ``queue_status_only``”h]”j )�”}”(hjåÑh]”hŒqueue_status_only”…”�”}”(hjçÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÓhjßÑubj)�”}”(hhh]”hÝ)�”}”(hŒ5Send a SCSI status back to the initiator but no data.”h]”hŒ5Send a SCSI status back to the initiator but no data.”…”�”}”(hjþÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³júÑh´KÓhjûÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³júÑh´KÓhjZÏubjý)�”}”(hŒ6``sense_data`` Sense data to be sent to the initiator.”h]”(j)�”}”(hŒ``sense_data``”h]”j )�”}”(hjÒh]”hŒ sense_data”…”�”}”(hj Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÓhjÒubj)�”}”(hhh]”hÝ)�”}”(hŒ'Sense data to be sent to the initiator.”h]”hŒ'Sense data to be sent to the initiator.”…”�”}”(hj7Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÔhj4Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j3Òh´KÓhjZÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrdma_ch_state (C enum)”Œc.rdma_ch_state”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ rdma_ch_state”h]”j")�”}”(hŒenum rdma_ch_state”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjxÒh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjtÒh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Òh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjtÒh²hh³j…Òh´KÚubjš)�”}”(hŒ rdma_ch_state”h]”jN)�”}”(hjrÒh]”hŒ rdma_ch_state”…”�”}”(hj˜Òh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj”Òubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjtÒh²hh³j…Òh´KÚubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjpÒh²hh³j…Òh´KÚubah}”(h]”jkÒah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j…Òh´KÚhjmÒh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSRP channel state”h]”hŒSRP channel state”…”�”}”(hjºÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kéhj·Òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjmÒh²hh³j…Òh´KÚubeh}”(h]”h ]”(jeŒenum”eh"]”h$]”h&]”jÑjejÒjÒÒjÓjÒÒjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXr**Constants** ``CH_CONNECTING`` QP is in RTR state; waiting for RTU. ``CH_LIVE`` QP is in RTS state. ``CH_DISCONNECTING`` DREQ has been sent and waiting for DREP or DREQ has been received. ``CH_DRAINING`` DREP has been received or waiting for DREP timed out and last work request has been queued. ``CH_DISCONNECTED`` Last completion has been received.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KíhjÖÒubjø)�”}”(hhh]”(jý)�”}”(hŒ7``CH_CONNECTING`` QP is in RTR state; waiting for RTU. ”h]”(j)�”}”(hŒ``CH_CONNECTING``”h]”j )�”}”(hjûÒh]”hŒ CH_CONNECTING”…”�”}”(hjýÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KðhjõÒubj)�”}”(hhh]”hÝ)�”}”(hŒ$QP is in RTR state; waiting for RTU.”h]”hŒ$QP is in RTR state; waiting for RTU.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ ``CH_LIVE`` QP is in RTS state. ”h]”(j)�”}”(hŒ ``CH_LIVE``”h]”j )�”}”(hj4Óh]”hŒCH_LIVE”…”�”}”(hj6Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kóhj.Óubj)�”}”(hhh]”hÝ)�”}”(hŒQP is in RTS state.”h]”hŒQP is in RTS state.”…”�”}”(hjMÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒX``CH_DISCONNECTING`` DREQ has been sent and waiting for DREP or DREQ has been received. ”h]”(j)�”}”(hŒ``CH_DISCONNECTING``”h]”j )�”}”(hjmÓh]”hŒCH_DISCONNECTING”…”�”}”(hjoÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´K÷hjgÓubj)�”}”(hhh]”hÝ)�”}”(hŒBDREQ has been sent and waiting for DREP or DREQ has been received.”h]”hŒBDREQ has been sent and waiting for DREP or DREQ has been received.”…”�”}”(hj†Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KöhjƒÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‚Óh´K÷hjòÒubjý)�”}”(hŒl``CH_DRAINING`` DREP has been received or waiting for DREP timed out and last work request has been queued. ”h]”(j)�”}”(hŒ``CH_DRAINING``”h]”j )�”}”(hj§Óh]”hŒ CH_DRAINING”…”�”}”(hj©Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kûhj¡Óubj)�”}”(hhh]”hÝ)�”}”(hŒ[DREP has been received or waiting for DREP timed out and last work request has been queued.”h]”hŒ[DREP has been received or waiting for DREP timed out and last work request has been queued.”…”�”}”(hjÀÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.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Œ6``CH_DISCONNECTED`` Last completion has been received.”h]”(j)�”}”(hŒ``CH_DISCONNECTED``”h]”j )�”}”(hjáÓh]”hŒCH_DISCONNECTED”…”�”}”(hjãÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KýhjÛÓubj)�”}”(hhh]”hÝ)�”}”(hŒ"Last completion has been received.”h]”hŒ"Last completion has been received.”…”�”}”(hjúÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_rdma_ch (C struct)”Œc.srpt_rdma_ch”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ srpt_rdma_ch”h]”j")�”}”(hŒstruct srpt_rdma_ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj;Ôh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj7Ôh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7Ôh²hh³jHÔh´Mubjš)�”}”(hŒ srpt_rdma_ch”h]”jN)�”}”(hj5Ôh]”hŒ srpt_rdma_ch”…”�”}”(hj[Ôh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjWÔubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj7Ôh²hh³jHÔh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj3Ôh²hh³jHÔh´Mubah}”(h]”j.Ôah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jHÔh´Mhj0Ôh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ RDMA channel”h]”hŒ RDMA channel”…”�”}”(hj}Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KûhjzÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj0Ôh²hh³jHÔh´Mubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj•ÔjÓj•ÔjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXL **Definition**:: struct srpt_rdma_ch { struct srpt_nexus *nexus; struct ib_qp *qp; union { struct { struct ib_cm_id *cm_id; } ib_cm; struct { struct rdma_cm_id *cm_id; } rdma_cm; }; struct ib_cq *cq; u32 cq_size; struct ib_cqe zw_cqe; struct rcu_head rcu; struct kref kref; struct completion *closed; int rq_size; u32 max_rsp_size; atomic_t sq_wr_avail; struct srpt_port *sport; int max_ti_iu_len; atomic_t req_lim; atomic_t req_lim_delta; u16 imm_data_offset; spinlock_t spinlock; enum rdma_ch_state state; struct kmem_cache *rsp_buf_cache; struct srpt_send_ioctx **ioctx_ring; struct kmem_cache *req_buf_cache; struct srpt_recv_ioctx **ioctx_recv_ring; struct list_head list; struct list_head cmd_wait_list; uint16_t pkey; bool using_rdma_cm; bool processing_wait_list; struct se_session *sess; u8 sess_name[40]; struct work_struct release_work; }; **Members** ``nexus`` I_T nexus this channel is associated with. ``qp`` IB queue pair used for communicating over this channel. ``{unnamed_union}`` anonymous ``ib_cm`` See below. ``ib_cm.cm_id`` IB CM ID associated with the channel. ``rdma_cm`` See below. ``rdma_cm.cm_id`` RDMA CM ID associated with the channel. ``cq`` IB completion queue for this channel. ``cq_size`` Number of CQEs in **cq**. ``zw_cqe`` Zero-length write CQE. ``rcu`` RCU head. ``kref`` kref for this channel. ``closed`` Completion object that will be signaled as soon as a new channel object with the same identity can be created. ``rq_size`` IB receive queue size. ``max_rsp_size`` Maximum size of an RSP response message in bytes. ``sq_wr_avail`` number of work requests available in the send queue. ``sport`` pointer to the information of the HCA port used by this channel. ``max_ti_iu_len`` maximum target-to-initiator information unit length. ``req_lim`` request limit: maximum number of requests that may be sent by the initiator without having received a response. ``req_lim_delta`` Number of credits not yet sent back to the initiator. ``imm_data_offset`` Offset from start of SRP_CMD for immediate data. ``spinlock`` Protects free_list and state. ``state`` channel state. See also enum rdma_ch_state. ``rsp_buf_cache`` kmem_cache for **ioctx_ring**. ``ioctx_ring`` Send ring. ``req_buf_cache`` kmem_cache for **ioctx_recv_ring**. ``ioctx_recv_ring`` Receive I/O context ring. ``list`` Node in srpt_nexus.ch_list. ``cmd_wait_list`` List of SCSI commands that arrived before the RTU event. This list contains struct srpt_ioctx elements and is protected against concurrent modification by the cm_id spinlock. ``pkey`` P_Key of the IB partition for this SRP channel. ``using_rdma_cm`` Whether the RDMA/CM or IB/CM is used for this channel. ``processing_wait_list`` Whether or not cmd_wait_list is being processed. ``sess`` Session information associated with this SRP channel. ``sess_name`` Session name. ``release_work`` Allows scheduling of srpt_release_channel().”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kÿhj™Ôubj½y)�”}”(hXzstruct srpt_rdma_ch { struct srpt_nexus *nexus; struct ib_qp *qp; union { struct { struct ib_cm_id *cm_id; } ib_cm; struct { struct rdma_cm_id *cm_id; } rdma_cm; }; struct ib_cq *cq; u32 cq_size; struct ib_cqe zw_cqe; struct rcu_head rcu; struct kref kref; struct completion *closed; int rq_size; u32 max_rsp_size; atomic_t sq_wr_avail; struct srpt_port *sport; int max_ti_iu_len; atomic_t req_lim; atomic_t req_lim_delta; u16 imm_data_offset; spinlock_t spinlock; enum rdma_ch_state state; struct kmem_cache *rsp_buf_cache; struct srpt_send_ioctx **ioctx_ring; struct kmem_cache *req_buf_cache; struct srpt_recv_ioctx **ioctx_recv_ring; struct list_head list; struct list_head cmd_wait_list; uint16_t pkey; bool using_rdma_cm; bool processing_wait_list; struct se_session *sess; u8 sess_name[40]; struct work_struct release_work; };”h]”hXzstruct srpt_rdma_ch { struct srpt_nexus *nexus; struct ib_qp *qp; union { struct { struct ib_cm_id *cm_id; } ib_cm; struct { struct rdma_cm_id *cm_id; } rdma_cm; }; struct ib_cq *cq; u32 cq_size; struct ib_cqe zw_cqe; struct rcu_head rcu; struct kref kref; struct completion *closed; int rq_size; u32 max_rsp_size; atomic_t sq_wr_avail; struct srpt_port *sport; int max_ti_iu_len; atomic_t req_lim; atomic_t req_lim_delta; u16 imm_data_offset; spinlock_t spinlock; enum rdma_ch_state state; struct kmem_cache *rsp_buf_cache; struct srpt_send_ioctx **ioctx_ring; struct kmem_cache *req_buf_cache; struct srpt_recv_ioctx **ioctx_recv_ring; struct list_head list; struct list_head cmd_wait_list; uint16_t pkey; bool using_rdma_cm; bool processing_wait_list; struct se_session *sess; u8 sess_name[40]; struct work_struct release_work; };”…”�”}”hjºÔsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj™ÔubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M*hj™Ôubjø)�”}”(hhh]”(jý)�”}”(hŒ5``nexus`` I_T nexus this channel is associated with. ”h]”(j)�”}”(hŒ ``nexus``”h]”j )�”}”(hjêÔh]”hŒnexus”…”�”}”(hjìÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KýhjäÔubj)�”}”(hhh]”hÝ)�”}”(hŒ*I_T nexus this channel is associated with.”h]”hŒ*I_T nexus this channel is associated with.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ?``qp`` IB queue pair used for communicating over this channel. ”h]”(j)�”}”(hŒ``qp``”h]”j )�”}”(hj#Õh]”hŒqp”…”�”}”(hj%Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KþhjÕubj)�”}”(hhh]”hÝ)�”}”(hŒ7IB queue pair used for communicating over this channel.”h]”hŒ7IB queue pair used for communicating over this channel.”…”�”}”(hj<Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``{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&]”uh1jhjZÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´KhjVÕubj)�”}”(hhh]”hÝ)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjuÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jqÕh´KhjrÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jqÕh´KhjáÔubjý)�”}”(hŒ``ib_cm`` See below. ”h]”(j)�”}”(hŒ ``ib_cm``”h]”j )�”}”(hj•Õh]”hŒib_cm”…”�”}”(hj—Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Kÿhj�Õubj)�”}”(hhh]”hÝ)�”}”(hŒ See below.”h]”hŒ See below.”…”�”}”(hj®Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ6``ib_cm.cm_id`` IB CM ID associated with the channel. ”h]”(j)�”}”(hŒ``ib_cm.cm_id``”h]”j )�”}”(hjÎÕh]”hŒ ib_cm.cm_id”…”�”}”(hjÐÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÈÕubj)�”}”(hhh]”hÝ)�”}”(hŒ%IB CM ID associated with the channel.”h]”hŒ%IB CM ID associated with the channel.”…”�”}”(hjçÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jãÕh´MhjäÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jãÕh´MhjáÔubjý)�”}”(hŒ``rdma_cm`` See below. ”h]”(j)�”}”(hŒ ``rdma_cm``”h]”j )�”}”(hjÖh]”hŒrdma_cm”…”�”}”(hj Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÖubj)�”}”(hhh]”hÝ)�”}”(hŒ See below.”h]”hŒ See below.”…”�”}”(hj Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÖh´MhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÖh´MhjáÔubjý)�”}”(hŒ:``rdma_cm.cm_id`` RDMA CM ID associated with the channel. ”h]”(j)�”}”(hŒ``rdma_cm.cm_id``”h]”j )�”}”(hj@Öh]”hŒ rdma_cm.cm_id”…”�”}”(hjBÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj:Öubj)�”}”(hhh]”hÝ)�”}”(hŒ'RDMA CM ID associated with the channel.”h]”hŒ'RDMA CM ID associated with the channel.”…”�”}”(hjYÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jUÖh´MhjVÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jUÖh´MhjáÔubjý)�”}”(hŒ-``cq`` IB completion queue for this channel. ”h]”(j)�”}”(hŒ``cq``”h]”j )�”}”(hjyÖh]”hŒcq”…”�”}”(hj{Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjsÖubj)�”}”(hhh]”hÝ)�”}”(hŒ%IB completion queue for this channel.”h]”hŒ%IB completion queue for this channel.”…”�”}”(hj’Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŽÖh´Mhj�Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŽÖh´MhjáÔubjý)�”}”(hŒ&``cq_size`` Number of CQEs in **cq**. ”h]”(j)�”}”(hŒ ``cq_size``”h]”j )�”}”(hj²Öh]”hŒcq_size”…”�”}”(hj´Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj¬Öubj)�”}”(hhh]”hÝ)�”}”(hŒNumber of CQEs in **cq**.”h]”(hŒNumber of CQEs in ”…”�”}”(hjËÖh²hh³Nh´Nubjâ)�”}”(hŒ**cq**”h]”hŒcq”…”�”}”(hjÓÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjËÖubhŒ.”…”�”}”(hjËÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÇÖh´MhjÈÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÇÖh´MhjáÔubjý)�”}”(hŒ"``zw_cqe`` Zero-length write CQE. ”h]”(j)�”}”(hŒ ``zw_cqe``”h]”j )�”}”(hjýÖh]”hŒzw_cqe”…”�”}”(hjÿÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj÷Öubj)�”}”(hhh]”hÝ)�”}”(hŒZero-length write CQE.”h]”hŒZero-length write CQE.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j×h´Mhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j×h´MhjáÔubjý)�”}”(hŒ``rcu`` RCU head. ”h]”(j)�”}”(hŒ``rcu``”h]”j )�”}”(hj6×h]”hŒrcu”…”�”}”(hj8×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj0×ubj)�”}”(hhh]”hÝ)�”}”(hŒ RCU head.”h]”hŒ RCU head.”…”�”}”(hjO×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jK×h´MhjL×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jK×h´MhjáÔubjý)�”}”(hŒ ``kref`` kref for this channel. ”h]”(j)�”}”(hŒ``kref``”h]”j )�”}”(hjo×h]”hŒkref”…”�”}”(hjq×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjm×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhji×ubj)�”}”(hhh]”hÝ)�”}”(hŒkref for this channel.”h]”hŒkref for this channel.”…”�”}”(hjˆ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j„×h´Mhj…×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j„×h´MhjáÔubjý)�”}”(hŒz``closed`` Completion object that will be signaled as soon as a new channel object with the same identity can be created. ”h]”(j)�”}”(hŒ ``closed``”h]”j )�”}”(hj¨×h]”hŒclosed”…”�”}”(hjª×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M hj¢×ubj)�”}”(hhh]”hÝ)�”}”(hŒnCompletion object that will be signaled as soon as a new channel object with the same identity can be created.”h]”hŒnCompletion object that will be signaled as soon as a new channel object with the same identity can be created.”…”�”}”(hjÁ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj¾×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j½×h´M hjáÔubjý)�”}”(hŒ#``rq_size`` IB receive queue size. ”h]”(j)�”}”(hŒ ``rq_size``”h]”j )�”}”(hjâ×h]”hŒrq_size”…”�”}”(hjä×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjà×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M hjÜ×ubj)�”}”(hhh]”hÝ)�”}”(hŒIB receive queue size.”h]”hŒIB receive queue size.”…”�”}”(hjû×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``max_rsp_size`` Maximum size of an RSP response message in bytes. ”h]”(j)�”}”(hŒ``max_rsp_size``”h]”j )�”}”(hjØh]”hŒ max_rsp_size”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M hjØubj)�”}”(hhh]”hÝ)�”}”(hŒ1Maximum size of an RSP response message in bytes.”h]”hŒ1Maximum size of an RSP response message in bytes.”…”�”}”(hj4Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j0Øh´M hj1Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j0Øh´M hjáÔubjý)�”}”(hŒE``sq_wr_avail`` number of work requests available in the send queue. ”h]”(j)�”}”(hŒ``sq_wr_avail``”h]”j )�”}”(hjTØh]”hŒ sq_wr_avail”…”�”}”(hjVØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRØubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M hjNØubj)�”}”(hhh]”hÝ)�”}”(hŒ4number of work requests available in the send queue.”h]”hŒ4number of work requests available in the send queue.”…”�”}”(hjmØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jiØh´M hjjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jiØh´M hjáÔubjý)�”}”(hŒK``sport`` pointer to the information of the HCA port used by this channel. ”h]”(j)�”}”(hŒ ``sport``”h]”j )�”}”(hj�Øh]”hŒsport”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj‡Øubj)�”}”(hhh]”hÝ)�”}”(hŒ@pointer to the information of the HCA port used by this channel.”h]”hŒ@pointer to the information of the HCA port used by this channel.”…”�”}”(hj¦Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M hj£Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¢Øh´MhjáÔubjý)�”}”(hŒG``max_ti_iu_len`` maximum target-to-initiator information unit length. ”h]”(j)�”}”(hŒ``max_ti_iu_len``”h]”j )�”}”(hjÇØh]”hŒ max_ti_iu_len”…”�”}”(hjÉØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅØubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÁØubj)�”}”(hhh]”hÝ)�”}”(hŒ4maximum target-to-initiator information unit length.”h]”hŒ4maximum target-to-initiator information unit length.”…”�”}”(hjàØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÜØh´MhjÝØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÜØh´MhjáÔubjý)�”}”(hŒ|``req_lim`` request limit: maximum number of requests that may be sent by the initiator without having received a response. ”h]”(j)�”}”(hŒ ``req_lim``”h]”j )�”}”(hjÙh]”hŒreq_lim”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþØubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjúØubj)�”}”(hhh]”hÝ)�”}”(hŒorequest limit: maximum number of requests that may be sent by the initiator without having received a response.”h]”hŒorequest limit: maximum number of requests that may be sent by the initiator without having received a response.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÙh´MhjáÔubjý)�”}”(hŒH``req_lim_delta`` Number of credits not yet sent back to the initiator. ”h]”(j)�”}”(hŒ``req_lim_delta``”h]”j )�”}”(hj:Ùh]”hŒ req_lim_delta”…”�”}”(hj<Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj4Ùubj)�”}”(hhh]”hÝ)�”}”(hŒ5Number of credits not yet sent back to the initiator.”h]”hŒ5Number of credits not yet sent back to the initiator.”…”�”}”(hjSÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jOÙh´MhjPÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jOÙh´MhjáÔubjý)�”}”(hŒE``imm_data_offset`` Offset from start of SRP_CMD for immediate data. ”h]”(j)�”}”(hŒ``imm_data_offset``”h]”j )�”}”(hjsÙh]”hŒimm_data_offset”…”�”}”(hjuÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjmÙubj)�”}”(hhh]”hÝ)�”}”(hŒ0Offset from start of SRP_CMD for immediate data.”h]”hŒ0Offset from start of SRP_CMD for immediate data.”…”�”}”(hjŒÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jˆÙh´Mhj‰Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jˆÙh´MhjáÔubjý)�”}”(hŒ+``spinlock`` Protects free_list and state. ”h]”(j)�”}”(hŒ ``spinlock``”h]”j )�”}”(hj¬Ùh]”hŒspinlock”…”�”}”(hj®Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj¦Ùubj)�”}”(hhh]”hÝ)�”}”(hŒProtects free_list and state.”h]”hŒProtects free_list and state.”…”�”}”(hjÅÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÁÙh´MhjÂÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÁÙh´MhjáÔubjý)�”}”(hŒ6``state`` channel state. See also enum rdma_ch_state. ”h]”(j)�”}”(hŒ ``state``”h]”j )�”}”(hjåÙh]”hŒstate”…”�”}”(hjçÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjßÙubj)�”}”(hhh]”hÝ)�”}”(hŒ+channel state. See also enum rdma_ch_state.”h]”hŒ+channel state. See also enum rdma_ch_state.”…”�”}”(hjþÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³júÙh´MhjûÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³júÙh´MhjáÔubjý)�”}”(hŒ1``rsp_buf_cache`` kmem_cache for **ioctx_ring**. ”h]”(j)�”}”(hŒ``rsp_buf_cache``”h]”j )�”}”(hjÚh]”hŒ rsp_buf_cache”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÚubj)�”}”(hhh]”hÝ)�”}”(hŒkmem_cache for **ioctx_ring**.”h]”(hŒkmem_cache for ”…”�”}”(hj7Úh²hh³Nh´Nubjâ)�”}”(hŒ**ioctx_ring**”h]”hŒ ioctx_ring”…”�”}”(hj?Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj7ÚubhŒ.”…”�”}”(hj7Úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j3Úh´Mhj4Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j3Úh´MhjáÔubjý)�”}”(hŒ``ioctx_ring`` Send ring. ”h]”(j)�”}”(hŒ``ioctx_ring``”h]”j )�”}”(hjiÚh]”hŒ ioctx_ring”…”�”}”(hjkÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjcÚubj)�”}”(hhh]”hÝ)�”}”(hŒ Send ring.”h]”hŒ Send ring.”…”�”}”(hj‚Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j~Úh´MhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j~Úh´MhjáÔubjý)�”}”(hŒ6``req_buf_cache`` kmem_cache for **ioctx_recv_ring**. ”h]”(j)�”}”(hŒ``req_buf_cache``”h]”j )�”}”(hj¢Úh]”hŒ req_buf_cache”…”�”}”(hj¤Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjœÚubj)�”}”(hhh]”hÝ)�”}”(hŒ#kmem_cache for **ioctx_recv_ring**.”h]”(hŒkmem_cache for ”…”�”}”(hj»Úh²hh³Nh´Nubjâ)�”}”(hŒ**ioctx_recv_ring**”h]”hŒioctx_recv_ring”…”�”}”(hjÃÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj»ÚubhŒ.”…”�”}”(hj»Úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j·Úh´Mhj¸Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j·Úh´MhjáÔubjý)�”}”(hŒ.``ioctx_recv_ring`` Receive I/O context ring. ”h]”(j)�”}”(hŒ``ioctx_recv_ring``”h]”j )�”}”(hjíÚh]”hŒioctx_recv_ring”…”�”}”(hjïÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjçÚubj)�”}”(hhh]”hÝ)�”}”(hŒReceive I/O context ring.”h]”hŒReceive I/O context ring.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÛh´MhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÛh´MhjáÔubjý)�”}”(hŒ%``list`` Node in srpt_nexus.ch_list. ”h]”(j)�”}”(hŒ``list``”h]”j )�”}”(hj&Ûh]”hŒlist”…”�”}”(hj(Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj Ûubj)�”}”(hhh]”hÝ)�”}”(hŒNode in srpt_nexus.ch_list.”h]”hŒNode in srpt_nexus.ch_list.”…”�”}”(hj?Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j;Ûh´Mhj<Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j;Ûh´MhjáÔubjý)�”}”(hŒÁ``cmd_wait_list`` List of SCSI commands that arrived before the RTU event. This list contains struct srpt_ioctx elements and is protected against concurrent modification by the cm_id spinlock. ”h]”(j)�”}”(hŒ``cmd_wait_list``”h]”j )�”}”(hj_Ûh]”hŒ cmd_wait_list”…”�”}”(hjaÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjYÛubj)�”}”(hhh]”hÝ)�”}”(hŒ®List of SCSI commands that arrived before the RTU event. This list contains struct srpt_ioctx elements and is protected against concurrent modification by the cm_id spinlock.”h]”hŒ®List of SCSI commands that arrived before the RTU event. This list contains struct srpt_ioctx elements and is protected against concurrent modification by the cm_id spinlock.”…”�”}”(hjxÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjuÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jtÛh´MhjáÔubjý)�”}”(hŒ9``pkey`` P_Key of the IB partition for this SRP channel. ”h]”(j)�”}”(hŒ``pkey``”h]”j )�”}”(hj™Ûh]”hŒpkey”…”�”}”(hj›Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M hj“Ûubj)�”}”(hhh]”hÝ)�”}”(hŒ/P_Key of the IB partition for this SRP channel.”h]”hŒ/P_Key of the IB partition for this SRP channel.”…”�”}”(hj²Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``using_rdma_cm`` Whether the RDMA/CM or IB/CM is used for this channel. ”h]”(j)�”}”(hŒ``using_rdma_cm``”h]”j )�”}”(hjÒÛh]”hŒ using_rdma_cm”…”�”}”(hjÔÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÌÛubj)�”}”(hhh]”hÝ)�”}”(hŒ6Whether the RDMA/CM or IB/CM is used for this channel.”h]”hŒ6Whether the RDMA/CM or IB/CM is used for this channel.”…”�”}”(hjëÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jçÛh´MhjèÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j•�hjÌÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jçÛh´MhjáÔubjý)�”}”(hŒJ``processing_wait_list`` Whether or not cmd_wait_list is being processed. ”h]”(j)�”}”(hŒ``processing_wait_list``”h]”j )�”}”(hj Üh]”hŒprocessing_wait_list”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÜubj)�”}”(hhh]”hÝ)�”}”(hŒ0Whether or not cmd_wait_list is being processed.”h]”hŒ0Whether or not cmd_wait_list is being processed.”…”�”}”(hj$Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j Üh´Mhj!Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j Üh´MhjáÔubjý)�”}”(hŒ?``sess`` Session information associated with this SRP channel. ”h]”(j)�”}”(hŒ``sess``”h]”j )�”}”(hjDÜh]”hŒsess”…”�”}”(hjFÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M!hj>Üubj)�”}”(hhh]”hÝ)�”}”(hŒ5Session information associated with this SRP channel.”h]”hŒ5Session information associated with this SRP channel.”…”�”}”(hj]Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``sess_name`` Session name. ”h]”(j)�”}”(hŒ ``sess_name``”h]”j )�”}”(hj}Üh]”hŒ sess_name”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M"hjwÜubj)�”}”(hhh]”hÝ)�”}”(hŒ Session name.”h]”hŒ Session name.”…”�”}”(hj–Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ=``release_work`` Allows scheduling of srpt_release_channel().”h]”(j)�”}”(hŒ``release_work``”h]”j )�”}”(hj¶Üh]”hŒ release_work”…”�”}”(hj¸Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M"hj°Üubj)�”}”(hhh]”hÝ)�”}”(hŒ,Allows scheduling of srpt_release_channel().”h]”hŒ,Allows scheduling of srpt_release_channel().”…”�”}”(hjÏÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_nexus (C struct)”Œ c.srpt_nexus”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ srpt_nexus”h]”j")�”}”(hŒstruct srpt_nexus”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Ýh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Ýh²hh³jÝh´M)ubjš)�”}”(hŒ srpt_nexus”h]”jN)�”}”(hj Ýh]”hŒ srpt_nexus”…”�”}”(hj0Ýh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj,Ýubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj Ýh²hh³jÝh´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÝh²hh³jÝh´M)ubah}”(h]”jÝah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÝh´M)hjÝh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ I_T nexus”h]”hŒ I_T nexus”…”�”}”(hjRÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MNhjOÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÝh²hh³jÝh´M)ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjjÝjÓjjÝjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Definition**:: struct srpt_nexus { struct rcu_head rcu; struct list_head entry; struct list_head ch_list; u8 i_port_id[16]; u8 t_port_id[16]; }; **Members** ``rcu`` RCU head for this data structure. ``entry`` srpt_port.nexus_list list node. ``ch_list`` struct srpt_rdma_ch list. Protected by srpt_port.mutex. ``i_port_id`` 128-bit initiator port identifier copied from SRP_LOGIN_REQ. ``t_port_id`` 128-bit target port identifier copied from SRP_LOGIN_REQ.”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(jâ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjvÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjrÝubhŒ:”…”�”}”(hjrÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MRhjnÝubj½y)�”}”(hŒ«struct srpt_nexus { struct rcu_head rcu; struct list_head entry; struct list_head ch_list; u8 i_port_id[16]; u8 t_port_id[16]; };”h]”hŒ«struct srpt_nexus { struct rcu_head rcu; struct list_head entry; struct list_head ch_list; u8 i_port_id[16]; u8 t_port_id[16]; };”…”�”}”hj�Ýsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MThjnÝubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M\hjnÝubjø)�”}”(hhh]”(jý)�”}”(hŒ*``rcu`` RCU head for this data structure. ”h]”(j)�”}”(hŒ``rcu``”h]”j )�”}”(hj¿Ýh]”hŒrcu”…”�”}”(hjÁÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MPhj¹Ýubj)�”}”(hhh]”hÝ)�”}”(hŒ!RCU head for this data structure.”h]”hŒ!RCU head for this data structure.”…”�”}”(hjØÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÔÝh´MPhjÕÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÔÝh´MPhj¶Ýubjý)�”}”(hŒ*``entry`` srpt_port.nexus_list list node. ”h]”(j)�”}”(hŒ ``entry``”h]”j )�”}”(hjøÝh]”hŒentry”…”�”}”(hjúÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MQhjòÝubj)�”}”(hhh]”hÝ)�”}”(hŒsrpt_port.nexus_list list node.”h]”hŒsrpt_port.nexus_list list node.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j Þh´MQhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j Þh´MQhj¶Ýubjý)�”}”(hŒD``ch_list`` struct srpt_rdma_ch list. Protected by srpt_port.mutex. ”h]”(j)�”}”(hŒ ``ch_list``”h]”j )�”}”(hj1Þh]”hŒch_list”…”�”}”(hj3Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MRhj+Þubj)�”}”(hhh]”hÝ)�”}”(hŒ7struct srpt_rdma_ch list. Protected by srpt_port.mutex.”h]”hŒ7struct srpt_rdma_ch list. Protected by srpt_port.mutex.”…”�”}”(hjJÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jFÞh´MRhjGÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jFÞh´MRhj¶Ýubjý)�”}”(hŒK``i_port_id`` 128-bit initiator port identifier copied from SRP_LOGIN_REQ. ”h]”(j)�”}”(hŒ ``i_port_id``”h]”j )�”}”(hjjÞh]”hŒ i_port_id”…”�”}”(hjlÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MShjdÞubj)�”}”(hhh]”hÝ)�”}”(hŒ<128-bit initiator port identifier copied from SRP_LOGIN_REQ.”h]”hŒ<128-bit initiator port identifier copied from SRP_LOGIN_REQ.”…”�”}”(hjƒÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÞh´MShj€Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÞh´MShj¶Ýubjý)�”}”(hŒG``t_port_id`` 128-bit target port identifier copied from SRP_LOGIN_REQ.”h]”(j)�”}”(hŒ ``t_port_id``”h]”j )�”}”(hj£Þh]”hŒ t_port_id”…”�”}”(hj¥Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MShj�Þubj)�”}”(hhh]”hÝ)�”}”(hŒ9128-bit target port identifier copied from SRP_LOGIN_REQ.”h]”hŒ9128-bit target port identifier copied from SRP_LOGIN_REQ.”…”�”}”(hj¼Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MThj¹Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¸Þh´MShj¶Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjnÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_port_attrib (C struct)”Œc.srpt_port_attrib”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒsrpt_port_attrib”h]”j")�”}”(hŒstruct srpt_port_attrib”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjýÞh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjùÞh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjùÞh²hh³j ßh´MZubjš)�”}”(hŒsrpt_port_attrib”h]”jN)�”}”(hj÷Þh]”hŒsrpt_port_attrib”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjßubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjùÞh²hh³j ßh´MZubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjõÞh²hh³j ßh´MZubah}”(h]”jðÞah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j ßh´MZhjòÞh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒattributes for SRPT port”h]”hŒattributes for SRPT port”…”�”}”(hj?ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M^hj<ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjòÞh²hh³j ßh´MZubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjWßjÓjWßjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXš**Definition**:: struct srpt_port_attrib { u32 srp_max_rdma_size; u32 srp_max_rsp_size; u32 srp_sq_size; bool use_srq; }; **Members** ``srp_max_rdma_size`` Maximum size of SRP RDMA transfers for new connections. ``srp_max_rsp_size`` Maximum size of SRP response messages in bytes. ``srp_sq_size`` Shared receive queue (SRQ) size. ``use_srq`` Whether or not to use SRQ.”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(jâ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjcßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj_ßubhŒ:”…”�”}”(hj_ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mbhj[ßubj½y)�”}”(hŒxstruct srpt_port_attrib { u32 srp_max_rdma_size; u32 srp_max_rsp_size; u32 srp_sq_size; bool use_srq; };”h]”hŒxstruct srpt_port_attrib { u32 srp_max_rdma_size; u32 srp_max_rsp_size; u32 srp_sq_size; bool use_srq; };”…”�”}”hj|ßsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mdhj[ßubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mkhj[ßubjø)�”}”(hhh]”(jý)�”}”(hŒN``srp_max_rdma_size`` Maximum size of SRP RDMA transfers for new connections. ”h]”(j)�”}”(hŒ``srp_max_rdma_size``”h]”j )�”}”(hj¬ßh]”hŒsrp_max_rdma_size”…”�”}”(hj®ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªßubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M`hj¦ßubj)�”}”(hhh]”hÝ)�”}”(hŒ7Maximum size of SRP RDMA transfers for new connections.”h]”hŒ7Maximum size of SRP RDMA transfers for new connections.”…”�”}”(hjÅßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``srp_max_rsp_size`` Maximum size of SRP response messages in bytes. ”h]”(j)�”}”(hŒ``srp_max_rsp_size``”h]”j )�”}”(hjåßh]”hŒsrp_max_rsp_size”…”�”}”(hjçßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãßubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mahjßßubj)�”}”(hhh]”hÝ)�”}”(hŒ/Maximum size of SRP response messages in bytes.”h]”hŒ/Maximum size of SRP response messages in bytes.”…”�”}”(hjþßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³júßh´Mahjûßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³júßh´Mahj£ßubjý)�”}”(hŒ1``srp_sq_size`` Shared receive queue (SRQ) size. ”h]”(j)�”}”(hŒ``srp_sq_size``”h]”j )�”}”(hjàh]”hŒ srp_sq_size”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mbhjàubj)�”}”(hhh]”hÝ)�”}”(hŒ Shared receive queue (SRQ) size.”h]”hŒ Shared receive queue (SRQ) size.”…”�”}”(hj7àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j3àh´Mbhj4àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j3àh´Mbhj£ßubjý)�”}”(hŒ&``use_srq`` Whether or not to use SRQ.”h]”(j)�”}”(hŒ ``use_srq``”h]”j )�”}”(hjWàh]”hŒuse_srq”…”�”}”(hjYàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUàubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MbhjQàubj)�”}”(hhh]”hÝ)�”}”(hŒWhether or not to use SRQ.”h]”hŒWhether or not to use SRQ.”…”�”}”(hjpàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mchjmàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jlàh´Mbhj£ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj[ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_tpg (C struct)”Œ c.srpt_tpg”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒsrpt_tpg”h]”j")�”}”(hŒstruct srpt_tpg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj±àh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj­àh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Miubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿àh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­àh²hh³j¾àh´Miubjš)�”}”(hŒsrpt_tpg”h]”jN)�”}”(hj«àh]”hŒsrpt_tpg”…”�”}”(hjÑàh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÍàubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj­àh²hh³j¾àh´Miubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj©àh²hh³j¾àh´Miubah}”(h]”j¤àah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¾àh´Mihj¦àh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ0information about a single "target portal group"”h]”hŒ4information about a single “target portal groupâ€�”…”�”}”(hjóàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mlhjðàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¦àh²hh³j¾àh´Miubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj ájÓj ájÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX0**Definition**:: struct srpt_tpg { struct list_head entry; struct srpt_port_id *sport_id; struct se_portal_group tpg; }; **Members** ``entry`` Entry in **sport_id->tpg_list**. ``sport_id`` Port name this TPG is associated with. ``tpg`` LIO TPG data structure.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mphjáubj½y)�”}”(hŒstruct srpt_tpg { struct list_head entry; struct srpt_port_id *sport_id; struct se_portal_group tpg; };”h]”hŒstruct srpt_tpg { struct list_head entry; struct srpt_port_id *sport_id; struct se_portal_group tpg; };”…”�”}”hj0ásbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MrhjáubhÝ)�”}”(hŒ **Members**”h]”jâ)�”}”(hjAáh]”hŒMembers”…”�”}”(hjCáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj?áubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mxhjáubjø)�”}”(hhh]”(jý)�”}”(hŒ+``entry`` Entry in **sport_id->tpg_list**. ”h]”(j)�”}”(hŒ ``entry``”h]”j )�”}”(hj`áh]”hŒentry”…”�”}”(hjbáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^áubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MnhjZáubj)�”}”(hhh]”hÝ)�”}”(hŒ Entry in **sport_id->tpg_list**.”h]”(hŒ Entry in ”…”�”}”(hjyáh²hh³Nh´Nubjâ)�”}”(hŒ**sport_id->tpg_list**”h]”hŒsport_id->tpg_list”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjyáubhŒ.”…”�”}”(hjyáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³juáh´Mnhjváubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³juáh´MnhjWáubjý)�”}”(hŒ4``sport_id`` Port name this TPG is associated with. ”h]”(j)�”}”(hŒ ``sport_id``”h]”j )�”}”(hj«áh]”hŒsport_id”…”�”}”(hj­áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©áubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mohj¥áubj)�”}”(hhh]”hÝ)�”}”(hŒ&Port name this TPG is associated with.”h]”hŒ&Port name this TPG is associated with.”…”�”}”(hjÄáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÀáh´MohjÁáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÀáh´MohjWáubjý)�”}”(hŒ``tpg`` LIO TPG data structure.”h]”(j)�”}”(hŒ``tpg``”h]”j )�”}”(hjäáh]”hŒtpg”…”�”}”(hjæáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâáubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MohjÞáubj)�”}”(hhh]”hÝ)�”}”(hŒLIO TPG data structure.”h]”hŒLIO TPG data structure.”…”�”}”(hjýáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mphjúáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jùáh´MohjWáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´NubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj'âh]”hŒ Description”…”�”}”(hj)âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj%âubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mshj·Èh²hubhÝ)�”}”(hŒ}Zero or more target portal groups are associated with each port name (srpt_port_id). With each TPG an ACL list is associated.”h]”hŒ}Zero or more target portal groups are associated with each port name (srpt_port_id). With each TPG an ACL list is associated.”…”�”}”(hj=âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mphj·Èh²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_port_id (C struct)”Œc.srpt_port_id”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ srpt_port_id”h]”j")�”}”(hŒstruct srpt_port_id”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjeâh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjaâh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsâh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaâh²hh³jrâh´Mvubjš)�”}”(hŒ srpt_port_id”h]”jN)�”}”(hj_âh]”hŒ srpt_port_id”…”�”}”(hj…âh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�âubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjaâh²hh³jrâh´Mvubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj]âh²hh³jrâh´Mvubah}”(h]”jXâah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jrâh´MvhjZâh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒLIO RDMA port information”h]”hŒLIO RDMA port information”…”�”}”(hj§âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M{hj¤âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjZâh²hh³jrâh´Mvubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj¿âjÓj¿âjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX‹**Definition**:: struct srpt_port_id { struct mutex mutex; struct list_head tpg_list; struct se_wwn wwn; char name[64]; }; **Members** ``mutex`` Protects **tpg_list** changes. ``tpg_list`` TPGs associated with the RDMA port name. ``wwn`` WWN associated with the RDMA port name. ``name`` ASCII representation of the port name.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjÃâubj½y)�”}”(hŒ•struct srpt_port_id { struct mutex mutex; struct list_head tpg_list; struct se_wwn wwn; char name[64]; };”h]”hŒ•struct srpt_port_id { struct mutex mutex; struct list_head tpg_list; struct se_wwn wwn; char name[64]; };”…”�”}”hjäâsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M�hjÃâubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MˆhjÃâubjø)�”}”(hhh]”(jý)�”}”(hŒ)``mutex`` Protects **tpg_list** changes. ”h]”(j)�”}”(hŒ ``mutex``”h]”j )�”}”(hjãh]”hŒmutex”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M}hjãubj)�”}”(hhh]”hÝ)�”}”(hŒProtects **tpg_list** changes.”h]”(hŒ Protects ”…”�”}”(hj-ãh²hh³Nh´Nubjâ)�”}”(hŒ **tpg_list**”h]”hŒtpg_list”…”�”}”(hj5ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj-ãubhŒ changes.”…”�”}”(hj-ãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``tpg_list`` TPGs associated with the RDMA port name. ”h]”(j)�”}”(hŒ ``tpg_list``”h]”j )�”}”(hj_ãh]”hŒtpg_list”…”�”}”(hjaãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M~hjYãubj)�”}”(hhh]”hÝ)�”}”(hŒ(TPGs associated with the RDMA port name.”h]”hŒ(TPGs associated with the RDMA port name.”…”�”}”(hjxãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ0``wwn`` WWN associated with the RDMA port name. ”h]”(j)�”}”(hŒ``wwn``”h]”j )�”}”(hj˜ãh]”hŒwwn”…”�”}”(hjšãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mhj’ãubj)�”}”(hhh]”hÝ)�”}”(hŒ'WWN associated with the RDMA port name.”h]”hŒ'WWN associated with the RDMA port name.”…”�”}”(hj±ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j­ãh´Mhj®ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j­ãh´Mhj ãubjý)�”}”(hŒ/``name`` ASCII representation of the port name.”h]”(j)�”}”(hŒ``name``”h]”j )�”}”(hjÑãh]”hŒname”…”�”}”(hjÓãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏãubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MhjËãubj)�”}”(hhh]”hÝ)�”}”(hŒ&ASCII representation of the port name.”h]”hŒ&ASCII representation of the port name.”…”�”}”(hjêãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”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Ý)�”}”(hŒ**Description**”h]”jâ)�”}”(hjäh]”hŒ Description”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´Mƒhj·Èh²hubhÝ)�”}”(hŒ€Multiple sysfs directories can be associated with a single RDMA port. This data structure represents a single (port, name) pair.”h]”hŒ€Multiple sysfs directories can be associated with a single RDMA port. This data structure represents a single (port, name) pair.”…”�”}”(hj*äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M€hj·Èh²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_port (C struct)”Œ c.srpt_port”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ srpt_port”h]”j")�”}”(hŒstruct srpt_port”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjRäh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjNäh²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M†ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjNäh²hh³j_äh´M†ubjš)�”}”(hŒ srpt_port”h]”jN)�”}”(hjLäh]”hŒ srpt_port”…”�”}”(hjräh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjnäubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjNäh²hh³j_äh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjJäh²hh³j_äh´M†ubah}”(h]”jEäah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j_äh´M†hjGäh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA port information”h]”hŒSRPT RDMA port information”…”�”}”(hj”äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MŒhj‘äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjGäh²hh³j_äh´M†ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj¬äjÓj¬äjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Definition**:: struct srpt_port { struct srpt_device *sdev; struct ib_mad_agent *mad_agent; bool enabled; u8 port; u32 sm_lid; u32 lid; union ib_gid gid; struct work_struct work; char guid_name[64]; struct srpt_port_id *guid_id; char gid_name[64]; struct srpt_port_id *gid_id; struct srpt_port_attrib port_attrib; atomic_t refcount; struct completion *freed_channels; struct mutex mutex; struct list_head nexus_list; }; **Members** ``sdev`` backpointer to the HCA information. ``mad_agent`` per-port management datagram processing information. ``enabled`` Whether or not this target port is enabled. ``port`` one-based port number. ``sm_lid`` cached value of the port's sm_lid. ``lid`` cached value of the port's lid. ``gid`` cached value of the port's gid. ``work`` work structure for refreshing the aforementioned cached values. ``guid_name`` port name in GUID format. ``guid_id`` LIO target port information for the port name in GUID format. ``gid_name`` port name in GID format. ``gid_id`` LIO target port information for the port name in GID format. ``port_attrib`` Port attributes that can be accessed through configfs. ``refcount`` Number of objects associated with this port. ``freed_channels`` Completion that will be signaled once **refcount** becomes 0. ``mutex`` Protects nexus_list. ``nexus_list`` Nexus list. See also srpt_nexus.entry.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M�hj°äubj½y)�”}”(hXstruct srpt_port { struct srpt_device *sdev; struct ib_mad_agent *mad_agent; bool enabled; u8 port; u32 sm_lid; u32 lid; union ib_gid gid; struct work_struct work; char guid_name[64]; struct srpt_port_id *guid_id; char gid_name[64]; struct srpt_port_id *gid_id; struct srpt_port_attrib port_attrib; atomic_t refcount; struct completion *freed_channels; struct mutex mutex; struct list_head nexus_list; };”h]”hXstruct srpt_port { struct srpt_device *sdev; struct ib_mad_agent *mad_agent; bool enabled; u8 port; u32 sm_lid; u32 lid; union ib_gid gid; struct work_struct work; char guid_name[64]; struct srpt_port_id *guid_id; char gid_name[64]; struct srpt_port_id *gid_id; struct srpt_port_attrib port_attrib; atomic_t refcount; struct completion *freed_channels; struct mutex mutex; struct list_head nexus_list; };”…”�”}”hjÑäsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¼yh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M’hj°äubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M¦hj°äubjø)�”}”(hhh]”(jý)�”}”(hŒ-``sdev`` backpointer to the HCA information. ”h]”(j)�”}”(hŒ``sdev``”h]”j )�”}”(hjåh]”hŒsdev”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿäubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´MŽhjûäubj)�”}”(hhh]”hÝ)�”}”(hŒ#backpointer to the HCA information.”h]”hŒ#backpointer to the HCA information.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``mad_agent`` per-port management datagram processing information. ”h]”(j)�”}”(hŒ ``mad_agent``”h]”j )�”}”(hj:åh]”hŒ mad_agent”…”�”}”(hj<åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M�hj4åubj)�”}”(hhh]”hÝ)�”}”(hŒ4per-port management datagram processing information.”h]”hŒ4per-port management datagram processing information.”…”�”}”(hjSåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ8``enabled`` Whether or not this target port is enabled. ”h]”(j)�”}”(hŒ ``enabled``”h]”j )�”}”(hjsåh]”hŒenabled”…”�”}”(hjuåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqåubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M�hjmåubj)�”}”(hhh]”hÝ)�”}”(hŒ+Whether or not this target port is enabled.”h]”hŒ+Whether or not this target port is enabled.”…”�”}”(hjŒåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ ``port`` one-based port number. ”h]”(j)�”}”(hŒ``port``”h]”j )�”}”(hj¬åh]”hŒport”…”�”}”(hj®åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªåubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M‘hj¦åubj)�”}”(hhh]”hÝ)�”}”(hŒone-based port number.”h]”hŒone-based port number.”…”�”}”(hjÅåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ.``sm_lid`` cached value of the port's sm_lid. ”h]”(j)�”}”(hŒ ``sm_lid``”h]”j )�”}”(hjååh]”hŒsm_lid”…”�”}”(hjçåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjãåubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M’hjßåubj)�”}”(hhh]”hÝ)�”}”(hŒ"cached value of the port's sm_lid.”h]”hŒ$cached value of the port’s sm_lid.”…”�”}”(hjþåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ(``lid`` cached value of the port's lid. ”h]”(j)�”}”(hŒ``lid``”h]”j )�”}”(hjæh]”hŒlid”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M“hjæubj)�”}”(hhh]”hÝ)�”}”(hŒcached value of the port's lid.”h]”hŒ!cached value of the port’s lid.”…”�”}”(hj7æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ(``gid`` cached value of the port's gid. ”h]”(j)�”}”(hŒ``gid``”h]”j )�”}”(hjWæh]”hŒgid”…”�”}”(hjYæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUæubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M”hjQæubj)�”}”(hhh]”hÝ)�”}”(hŒcached value of the port's gid.”h]”hŒ!cached value of the port’s gid.”…”�”}”(hjpæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒI``work`` work structure for refreshing the aforementioned cached values. ”h]”(j)�”}”(hŒ``work``”h]”j )�”}”(hj�æh]”hŒwork”…”�”}”(hj’æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽæubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M•hjŠæubj)�”}”(hhh]”hÝ)�”}”(hŒ?work structure for refreshing the aforementioned cached values.”h]”hŒ?work structure for refreshing the aforementioned cached values.”…”�”}”(hj©æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ(``guid_name`` port name in GUID format. ”h]”(j)�”}”(hŒ ``guid_name``”h]”j )�”}”(hjÉæh]”hŒ guid_name”…”�”}”(hjËæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇæubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M–hjÃæubj)�”}”(hhh]”hÝ)�”}”(hŒport name in GUID format.”h]”hŒport name in GUID format.”…”�”}”(hjâæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``guid_id`` LIO target port information for the port name in GUID format. ”h]”(j)�”}”(hŒ ``guid_id``”h]”j )�”}”(hjçh]”hŒguid_id”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M—hjüæubj)�”}”(hhh]”hÝ)�”}”(hŒ=LIO target port information for the port name in GUID format.”h]”hŒ=LIO target port information for the port name in GUID format.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ&``gid_name`` port name in GID format. ”h]”(j)�”}”(hŒ ``gid_name``”h]”j )�”}”(hj;çh]”hŒgid_name”…”�”}”(hj=çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9çubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M˜hj5çubj)�”}”(hhh]”hÝ)�”}”(hŒport name in GID format.”h]”hŒport name in GID format.”…”�”}”(hjTçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPçh´M˜hjQçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jPçh´M˜hjøäubjý)�”}”(hŒH``gid_id`` LIO target port information for the port name in GID format. ”h]”(j)�”}”(hŒ ``gid_id``”h]”j )�”}”(hjtçh]”hŒgid_id”…”�”}”(hjvçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrçubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:98: ./drivers/infiniband/ulp/srpt/ib_srpt.h”h´M™hjnçubj)�”}”(hhh]”hÝ)�”}”(hŒòubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj:òubj)�”}”(hhh]”hÝ)�”}”(hŒ'Description of the event that occurred.”h]”hŒ'Description of the event that occurred.”…”�”}”(hjYòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jUòh´MhjVòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jUòh´Mhj7òubjý)�”}”(hŒ ``void *ptr`` SRPT RDMA channel.”h]”(j)�”}”(hŒ ``void *ptr``”h]”j )�”}”(hjyòh]”hŒ void *ptr”…”�”}”(hj{òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwòubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjsòubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hj’òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj�òubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŽòh´Mhj7òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_set_ioc (C function)”Œc.srpt_set_ioc”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2void srpt_set_ioc (u8 *c_list, u32 slot, u8 value)”h]”j")�”}”(hŒ1void srpt_set_ioc(u8 *c_list, u32 slot, u8 value)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓòh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÏòh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâòh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏòh²hh³jáòh´M2ubjš)�”}”(hŒ srpt_set_ioc”h]”jN)�”}”(hŒ srpt_set_ioc”h]”hŒ srpt_set_ioc”…”�”}”(hjôòh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjðòubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÏòh²hh³jáòh´M2ubj·)�”}”(hŒ (u8 *c_list, u32 slot, u8 value)”h]”(j½)�”}”(hŒ u8 *c_list”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jóŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjöòsbŒc.srpt_set_ioc”†”asbuh1hhj óubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3óh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj óubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjAóh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj óubjN)�”}”(hŒc_list”h]”hŒc_list”…”�”}”(hjNóh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjóubj½)�”}”(hŒu32 slot”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjjóh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjgóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jlóŒmodname”NŒ classname”Njkjn)�”}”jq]”j/óŒc.srpt_set_ioc”†”asbuh1hhjcóubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆóh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjcóubjN)�”}”(hŒslot”h]”hŒslot”…”�”}”(hj–óh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjcóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjóubj½)�”}”(hŒu8 value”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj²óh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¯óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j´óŒmodname”NŒ classname”Njkjn)�”}”jq]”j/óŒc.srpt_set_ioc”†”asbuh1hhj«óubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐóh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj«óubjN)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjÞóh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj«óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjóubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÏòh²hh³jáòh´M2ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjËòh²hh³jáòh´M2ubah}”(h]”jÆòah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jáòh´M2hjÈòh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!initialize a IOUnitInfo structure”h]”hŒ!initialize a IOUnitInfo structure”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M2hjôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÈòh²hh³jáòh´M2ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj ôjÓj ôjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Parameters** ``u8 *c_list`` controller list. ``u32 slot`` one-based slot number. ``u8 value`` four-bit value. **Description** Copies the lowest four bits of value in element slot of the array of four bit elements called c_list (controller list). The index slot is one-based.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj*ôh]”hŒ Parameters”…”�”}”(hj,ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj(ôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M6hj$ôubjø)�”}”(hhh]”(jý)�”}”(hŒ ``u8 *c_list`` controller list. ”h]”(j)�”}”(hŒ``u8 *c_list``”h]”j )�”}”(hjIôh]”hŒ u8 *c_list”…”�”}”(hjKôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGôubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M3hjCôubj)�”}”(hhh]”hÝ)�”}”(hŒcontroller list.”h]”hŒcontroller list.”…”�”}”(hjbôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^ôh´M3hj_ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j^ôh´M3hj@ôubjý)�”}”(hŒ$``u32 slot`` one-based slot number. ”h]”(j)�”}”(hŒ ``u32 slot``”h]”j )�”}”(hj‚ôh]”hŒu32 slot”…”�”}”(hj„ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M4hj|ôubj)�”}”(hhh]”hÝ)�”}”(hŒone-based slot number.”h]”hŒone-based slot number.”…”�”}”(hj›ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j—ôh´M4hj˜ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j—ôh´M4hj@ôubjý)�”}”(hŒ``u8 value`` four-bit value. ”h]”(j)�”}”(hŒ ``u8 value``”h]”j )�”}”(hj»ôh]”hŒu8 value”…”�”}”(hj½ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M5hjµôubj)�”}”(hhh]”hÝ)�”}”(hŒfour-bit value.”h]”hŒfour-bit value.”…”�”}”(hjÔôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÐôh´M5hjÑôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÐôh´M5hj@ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj$ôubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjöôh]”hŒ Description”…”�”}”(hjøôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjôôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M7hj$ôubhÝ)�”}”(hŒ”Copies the lowest four bits of value in element slot of the array of four bit elements called c_list (controller list). The index slot is one-based.”h]”hŒ”Copies the lowest four bits of value in element slot of the array of four bit elements called c_list (controller list). The index slot is one-based.”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M6hj$ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%srpt_get_class_port_info (C function)”Œc.srpt_get_class_port_info”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5void srpt_get_class_port_info (struct ib_dm_mad *mad)”h]”j")�”}”(hŒ4void srpt_get_class_port_info(struct ib_dm_mad *mad)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj7õh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MJubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJõh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7õh²hh³jIõh´MJubjš)�”}”(hŒsrpt_get_class_port_info”h]”jN)�”}”(hŒsrpt_get_class_port_info”h]”hŒsrpt_get_class_port_info”…”�”}”(hj\õh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjXõubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj7õh²hh³jIõh´MJubj·)�”}”(hŒ(struct ib_dm_mad *mad)”h]”j½)�”}”(hŒstruct ib_dm_mad *mad”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjxõh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjtõubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…õh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjtõubh)�”}”(hhh]”jN)�”}”(hŒ ib_dm_mad”h]”hŒ ib_dm_mad”…”�”}”(hj–õh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj“õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j˜õŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj^õsbŒc.srpt_get_class_port_info”†”asbuh1hhjtõubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶õh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjtõubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÄõh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjtõubjN)�”}”(hŒmad”h]”hŒmad”…”�”}”(hjÑõh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjtõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjpõubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj7õh²hh³jIõh´MJubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj3õh²hh³jIõh´MJubah}”(h]”j.õah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jIõh´MJhj0õh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ+copy ClassPortInfo to a management datagram”h]”hŒ+copy ClassPortInfo to a management datagram”…”�”}”(hjûõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MJhjøõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj0õh²hh³jIõh´MJubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjöjÓjöjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒÖ**Parameters** ``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_CLASS_PORT_INFO. **Description** See also section 16.3.3.1 ClassPortInfo in the InfiniBand Architecture Specification.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjöh]”hŒ Parameters”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MNhjöubjø)�”}”(hhh]”jý)�”}”(hŒ]``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_CLASS_PORT_INFO. ”h]”(j)�”}”(hŒ``struct ib_dm_mad *mad``”h]”j )�”}”(hj<öh]”hŒstruct ib_dm_mad *mad”…”�”}”(hj>öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:öubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MKhj6öubj)�”}”(hhh]”hÝ)�”}”(hŒBDatagram that will be sent as response to DM_ATTR_CLASS_PORT_INFO.”h]”hŒBDatagram that will be sent as response to DM_ATTR_CLASS_PORT_INFO.”…”�”}”(hjUöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQöh´MKhjRöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQöh´MKhj3öubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjöubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MMhjöubhÝ)�”}”(hŒUSee also section 16.3.3.1 ClassPortInfo in the InfiniBand Architecture Specification.”h]”hŒUSee also section 16.3.3.1 ClassPortInfo in the InfiniBand Architecture Specification.”…”�”}”(hj�öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MLhjöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_get_iou (C function)”Œc.srpt_get_iou”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void srpt_get_iou (struct ib_dm_mad *mad)”h]”j")�”}”(hŒ(void srpt_get_iou(struct ib_dm_mad *mad)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¸öh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËöh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¸öh²hh³jÊöh´M^ubjš)�”}”(hŒ srpt_get_iou”h]”jN)�”}”(hŒ srpt_get_iou”h]”hŒ srpt_get_iou”…”�”}”(hjÝöh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÙöubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¸öh²hh³jÊöh´M^ubj·)�”}”(hŒ(struct ib_dm_mad *mad)”h]”j½)�”}”(hŒstruct ib_dm_mad *mad”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjùöh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjõöubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõöubh)�”}”(hhh]”jN)�”}”(hŒ ib_dm_mad”h]”hŒ ib_dm_mad”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j÷Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjßösbŒc.srpt_get_iou”†”asbuh1hhjõöubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõöubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjE÷h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjõöubjN)�”}”(hŒmad”h]”hŒmad”…”�”}”(hjR÷h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjõöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjñöubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¸öh²hh³jÊöh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj´öh²hh³jÊöh´M^ubah}”(h]”j¯öah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÊöh´M^hj±öh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ)write IOUnitInfo to a management datagram”h]”hŒ)write IOUnitInfo to a management datagram”…”�”}”(hj|÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M^hjy÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj±öh²hh³jÊöh´M^ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj”÷jÓj”÷jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Parameters** ``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_IOU_INFO. **Description** See also section 16.3.3.3 IOUnitInfo in the InfiniBand Architecture Specification. See also section B.7, table B.6 in the SRP r16a document.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjž÷h]”hŒ Parameters”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjœ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mbhj˜÷ubjø)�”}”(hhh]”jý)�”}”(hŒV``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_IOU_INFO. ”h]”(j)�”}”(hŒ``struct ib_dm_mad *mad``”h]”j )�”}”(hj½÷h]”hŒstruct ib_dm_mad *mad”…”�”}”(hj¿÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M_hj·÷ubj)�”}”(hhh]”hÝ)�”}”(hŒ;Datagram that will be sent as response to DM_ATTR_IOU_INFO.”h]”hŒ;Datagram that will be sent as response to DM_ATTR_IOU_INFO.”…”�”}”(hjÖ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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˜÷ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjø÷h]”hŒ Description”…”�”}”(hjú÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjö÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mahj˜÷ubhÝ)�”}”(hŒŒSee also section 16.3.3.3 IOUnitInfo in the InfiniBand Architecture Specification. See also section B.7, table B.6 in the SRP r16a document.”h]”hŒŒSee also section 16.3.3.3 IOUnitInfo in the InfiniBand Architecture Specification. See also section B.7, table B.6 in the SRP r16a document.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M`hj˜÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_get_ioc (C function)”Œc.srpt_get_ioc”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLvoid srpt_get_ioc (struct srpt_port *sport, u32 slot, struct ib_dm_mad *mad)”h]”j")�”}”(hŒKvoid srpt_get_ioc(struct srpt_port *sport, u32 slot, struct ib_dm_mad *mad)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj=øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj9øh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLøh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9øh²hh³jKøh´Mwubjš)�”}”(hŒ srpt_get_ioc”h]”jN)�”}”(hŒ srpt_get_ioc”h]”hŒ srpt_get_ioc”…”�”}”(hj^øh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZøubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj9øh²hh³jKøh´Mwubj·)�”}”(hŒ:(struct srpt_port *sport, u32 slot, struct ib_dm_mad *mad)”h]”(j½)�”}”(hŒstruct srpt_port *sport”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjzøh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjvøubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡øh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjvøubh)�”}”(hhh]”jN)�”}”(hŒ srpt_port”h]”hŒ srpt_port”…”�”}”(hj˜øh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj•øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jšøŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj`øsbŒc.srpt_get_ioc”†”asbuh1hhjvøubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸øh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjvøubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÆøh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjvøubjN)�”}”(hŒsport”h]”hŒsport”…”�”}”(hjÓøh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjvøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjrøubj½)�”}”(hŒu32 slot”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjïøh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjìøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jñøŒmodname”NŒ classname”Njkjn)�”}”jq]”j´øŒc.srpt_get_ioc”†”asbuh1hhjèøubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjèøubjN)�”}”(hŒslot”h]”hŒslot”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjèøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjrøubj½)�”}”(hŒstruct ib_dm_mad *mad”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj4ùh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj0ùubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj0ùubh)�”}”(hhh]”jN)�”}”(hŒ ib_dm_mad”h]”hŒ ib_dm_mad”…”�”}”(hjRùh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjOùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jTùŒmodname”NŒ classname”Njkjn)�”}”jq]”j´øŒc.srpt_get_ioc”†”asbuh1hhj0ùubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj0ùubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj~ùh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj0ùubjN)�”}”(hŒmad”h]”hŒmad”…”�”}”(hj‹ùh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj0ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjrøubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj9øh²hh³jKøh´Mwubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj5øh²hh³jKøh´Mwubah}”(h]”j0øah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jKøh´Mwhj2øh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ2write IOControllerprofile to a management datagram”h]”hŒ2write IOControllerprofile to a management datagram”…”�”}”(hjµùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mwhj²ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj2øh²hh³jKøh´Mwubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÍùjÓjÍùjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX§**Parameters** ``struct srpt_port *sport`` HCA port through which the MAD has been received. ``u32 slot`` Slot number specified in DM_ATTR_IOC_PROFILE query. ``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_IOC_PROFILE. **Description** See also section 16.3.3.4 IOControllerProfile in the InfiniBand Architecture Specification. See also section B.7, table B.7 in the SRP r16a document.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj×ùh]”hŒ Parameters”…”�”}”(hjÙùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÕùubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M{hjÑùubjø)�”}”(hhh]”(jý)�”}”(hŒN``struct srpt_port *sport`` HCA port through which the MAD has been received. ”h]”(j)�”}”(hŒ``struct srpt_port *sport``”h]”j )�”}”(hjöùh]”hŒstruct srpt_port *sport”…”�”}”(hjøùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôùubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mxhjðùubj)�”}”(hhh]”hÝ)�”}”(hŒ1HCA port through which the MAD has been received.”h]”hŒ1HCA port through which the MAD has been received.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j úh´Mxhj úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j úh´Mxhjíùubjý)�”}”(hŒA``u32 slot`` Slot number specified in DM_ATTR_IOC_PROFILE query. ”h]”(j)�”}”(hŒ ``u32 slot``”h]”j )�”}”(hj/úh]”hŒu32 slot”…”�”}”(hj1úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-úubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Myhj)úubj)�”}”(hhh]”hÝ)�”}”(hŒ3Slot number specified in DM_ATTR_IOC_PROFILE query.”h]”hŒ3Slot number specified in DM_ATTR_IOC_PROFILE query.”…”�”}”(hjHúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jDúh´MyhjEúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jDúh´Myhjíùubjý)�”}”(hŒY``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_IOC_PROFILE. ”h]”(j)�”}”(hŒ``struct ib_dm_mad *mad``”h]”j )�”}”(hjhúh]”hŒstruct ib_dm_mad *mad”…”�”}”(hjjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfúubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mzhjbúubj)�”}”(hhh]”hÝ)�”}”(hŒ>Datagram that will be sent as response to DM_ATTR_IOC_PROFILE.”h]”hŒ>Datagram that will be sent as response to DM_ATTR_IOC_PROFILE.”…”�”}”(hj�úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j}úh´Mzhj~úubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j}úh´Mzhjíùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÑùubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj£úh]”hŒ Description”…”�”}”(hj¥úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¡úubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M|hjÑùubhÝ)�”}”(hŒ•See also section 16.3.3.4 IOControllerProfile in the InfiniBand Architecture Specification. See also section B.7, table B.7 in the SRP r16a document.”h]”hŒ•See also section 16.3.3.4 IOControllerProfile in the InfiniBand Architecture Specification. See also section B.7, table B.7 in the SRP r16a document.”…”�”}”(hj¹úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M{hjÑùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!srpt_get_svc_entries (C function)”Œc.srpt_get_svc_entries”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒWvoid srpt_get_svc_entries (u64 ioc_guid, u16 slot, u8 hi, u8 lo, struct ib_dm_mad *mad)”h]”j")�”}”(hŒVvoid srpt_get_svc_entries(u64 ioc_guid, u16 slot, u8 hi, u8 lo, struct ib_dm_mad *mad)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjäúh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M³ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷úh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäúh²hh³jöúh´M³ubjš)�”}”(hŒsrpt_get_svc_entries”h]”jN)�”}”(hŒsrpt_get_svc_entries”h]”hŒsrpt_get_svc_entries”…”�”}”(hj ûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjûubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjäúh²hh³jöúh´M³ubj·)�”}”(hŒ=(u64 ioc_guid, u16 slot, u8 hi, u8 lo, struct ib_dm_mad *mad)”h]”(j½)�”}”(hŒ u64 ioc_guid”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj(ûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj%ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j*ûŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj ûsbŒc.srpt_get_svc_entries”†”asbuh1hhj!ûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHûh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ûubjN)�”}”(hŒioc_guid”h]”hŒioc_guid”…”�”}”(hjVûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj!ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjûubj½)�”}”(hŒu16 slot”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjrûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjoûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jtûŒmodname”NŒ classname”Njkjn)�”}”jq]”jDûŒc.srpt_get_svc_entries”†”asbuh1hhjkûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkûubjN)�”}”(hŒslot”h]”hŒslot”…”�”}”(hjžûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjkûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjûubj½)�”}”(hŒu8 hi”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjºûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj·ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¼ûŒmodname”NŒ classname”Njkjn)�”}”jq]”jDûŒc.srpt_get_svc_entries”†”asbuh1hhj³ûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØûh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³ûubjN)�”}”(hŒhi”h]”hŒhi”…”�”}”(hjæûh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj³ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjûubj½)�”}”(hŒu8 lo”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jüŒmodname”NŒ classname”Njkjn)�”}”jq]”jDûŒc.srpt_get_svc_entries”†”asbuh1hhjûûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj üh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûûubjN)�”}”(hŒlo”h]”hŒlo”…”�”}”(hj.üh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjûûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjûubj½)�”}”(hŒstruct ib_dm_mad *mad”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjGüh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjCüubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTüh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCüubh)�”}”(hhh]”jN)�”}”(hŒ ib_dm_mad”h]”hŒ ib_dm_mad”…”�”}”(hjeüh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jgüŒmodname”NŒ classname”Njkjn)�”}”jq]”jDûŒc.srpt_get_svc_entries”†”asbuh1hhjCüubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒüh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCüubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‘üh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjCüubjN)�”}”(hŒmad”h]”hŒmad”…”�”}”(hjžüh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjCüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjûubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjäúh²hh³jöúh´M³ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjàúh²hh³jöúh´M³ubah}”(h]”jÛúah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jöúh´M³hjÝúh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ-write ServiceEntries to a management datagram”h]”hŒ-write ServiceEntries to a management datagram”…”�”}”(hjÈüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M³hjÅüh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÝúh²hh³jöúh´M³ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjàüjÓjàüjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Parameters** ``u64 ioc_guid`` I/O controller GUID to use in reply. ``u16 slot`` I/O controller number. ``u8 hi`` End of the range of service entries to be specified in the reply. ``u8 lo`` Start of the range of service entries to be specified in the reply.. ``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_SVC_ENTRIES. **Description** See also section 16.3.3.5 ServiceEntries in the InfiniBand Architecture Specification. See also section B.7, table B.8 in the SRP r16a document.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjêüh]”hŒ Parameters”…”�”}”(hjìüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjèüubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M·hjäüubjø)�”}”(hhh]”(jý)�”}”(hŒ6``u64 ioc_guid`` I/O controller GUID to use in reply. ”h]”(j)�”}”(hŒ``u64 ioc_guid``”h]”j )�”}”(hj ýh]”hŒ u64 ioc_guid”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M´hjýubj)�”}”(hhh]”hÝ)�”}”(hŒ$I/O controller GUID to use in reply.”h]”hŒ$I/O controller GUID to use in reply.”…”�”}”(hj"ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 slot`` I/O controller number. ”h]”(j)�”}”(hŒ ``u16 slot``”h]”j )�”}”(hjBýh]”hŒu16 slot”…”�”}”(hjDýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mµhj<ýubj)�”}”(hhh]”hÝ)�”}”(hŒI/O controller number.”h]”hŒI/O controller number.”…”�”}”(hj[ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒL``u8 hi`` End of the range of service entries to be specified in the reply. ”h]”(j)�”}”(hŒ ``u8 hi``”h]”j )�”}”(hj{ýh]”hŒu8 hi”…”�”}”(hj}ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¶hjuýubj)�”}”(hhh]”hÝ)�”}”(hŒAEnd of the range of service entries to be specified in the reply.”h]”hŒAEnd of the range of service entries to be specified in the reply.”…”�”}”(hj”ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�ýh´M¶hj‘ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�ýh´M¶hjýubjý)�”}”(hŒO``u8 lo`` Start of the range of service entries to be specified in the reply.. ”h]”(j)�”}”(hŒ ``u8 lo``”h]”j )�”}”(hj´ýh]”hŒu8 lo”…”�”}”(hj¶ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M·hj®ýubj)�”}”(hhh]”hÝ)�”}”(hŒDStart of the range of service entries to be specified in the reply..”h]”hŒDStart of the range of service entries to be specified in the reply..”…”�”}”(hjÍýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``struct ib_dm_mad *mad`` Datagram that will be sent as response to DM_ATTR_SVC_ENTRIES. ”h]”(j)�”}”(hŒ``struct ib_dm_mad *mad``”h]”j )�”}”(hjíýh]”hŒstruct ib_dm_mad *mad”…”�”}”(hjïýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¸hjçýubj)�”}”(hhh]”hÝ)�”}”(hŒ>Datagram that will be sent as response to DM_ATTR_SVC_ENTRIES.”h]”hŒ>Datagram that will be sent as response to DM_ATTR_SVC_ENTRIES.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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äüubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj(þh]”hŒ Description”…”�”}”(hj*þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj&þubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MºhjäüubhÝ)�”}”(hŒ�See also section 16.3.3.5 ServiceEntries in the InfiniBand Architecture Specification. See also section B.7, table B.8 in the SRP r16a document.”h]”hŒ�See also section 16.3.3.5 ServiceEntries in the InfiniBand Architecture Specification. See also section B.7, table B.8 in the SRP r16a document.”…”�”}”(hj>þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¹hjäüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!srpt_mgmt_method_get (C function)”Œc.srpt_mgmt_method_get”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbvoid srpt_mgmt_method_get (struct srpt_port *sp, struct ib_mad *rq_mad, struct ib_dm_mad *rsp_mad)”h]”j")�”}”(hŒavoid srpt_mgmt_method_get(struct srpt_port *sp, struct ib_mad *rq_mad, struct ib_dm_mad *rsp_mad)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjmþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjiþh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÝubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|þh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjiþh²hh³j{þh´MÝubjš)�”}”(hŒsrpt_mgmt_method_get”h]”jN)�”}”(hŒsrpt_mgmt_method_get”h]”hŒsrpt_mgmt_method_get”…”�”}”(hjŽþh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŠþubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjiþh²hh³j{þh´MÝubj·)�”}”(hŒH(struct srpt_port *sp, struct ib_mad *rq_mad, struct ib_dm_mad *rsp_mad)”h]”(j½)�”}”(hŒstruct srpt_port *sp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjªþh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¦þubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·þh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦þubh)�”}”(hhh]”jN)�”}”(hŒ srpt_port”h]”hŒ srpt_port”…”�”}”(hjÈþh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÅþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÊþŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj�þsbŒc.srpt_mgmt_method_get”†”asbuh1hhj¦þubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèþh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦þubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjöþh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¦þubjN)�”}”(hŒsp”h]”hŒsp”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¦þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¢þubj½)�”}”(hŒstruct ib_mad *rq_mad”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿubh)�”}”(hhh]”jN)�”}”(hŒib_mad”h]”hŒib_mad”…”�”}”(hj:ÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj7ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j<ÿŒmodname”NŒ classname”Njkjn)�”}”jq]”jäþŒc.srpt_mgmt_method_get”†”asbuh1hhjÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjfÿh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÿubjN)�”}”(hŒrq_mad”h]”hŒrq_mad”…”�”}”(hjsÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¢þubj½)�”}”(hŒstruct ib_dm_mad *rsp_mad”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŒÿh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjˆÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆÿubh)�”}”(hhh]”jN)�”}”(hŒ ib_dm_mad”h]”hŒ ib_dm_mad”…”�”}”(hjªÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj§ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¬ÿŒmodname”NŒ classname”Njkjn)�”}”jq]”jäþŒc.srpt_mgmt_method_get”†”asbuh1hhjˆÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆÿubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÖÿh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjˆÿubjN)�”}”(hŒrsp_mad”h]”hŒrsp_mad”…”�”}”(hjãÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjˆÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¢þubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjiþh²hh³j{þh´MÝubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjeþh²hh³j{þh´MÝubah}”(h]”j`þah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j{þh´MÝhjbþh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ&process a received management datagram”h]”hŒ&process a received management datagram”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÝhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjbþh²hh³j{þh´MÝubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj%jÓj%jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ¶**Parameters** ``struct srpt_port *sp`` HCA port through which the MAD has been received. ``struct ib_mad *rq_mad`` received MAD. ``struct ib_dm_mad *rsp_mad`` response MAD.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj/h]”hŒ Parameters”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Máhj)ubjø)�”}”(hhh]”(jý)�”}”(hŒK``struct srpt_port *sp`` HCA port through which the MAD has been received. ”h]”(j)�”}”(hŒ``struct srpt_port *sp``”h]”j )�”}”(hjNh]”hŒstruct srpt_port *sp”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÞhjHubj)�”}”(hhh]”hÝ)�”}”(hŒ1HCA port through which the MAD has been received.”h]”hŒ1HCA port through which the MAD has been received.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jch´MÞhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jch´MÞhjEubjý)�”}”(hŒ(``struct ib_mad *rq_mad`` received MAD. ”h]”(j)�”}”(hŒ``struct ib_mad *rq_mad``”h]”j )�”}”(hj‡h]”hŒstruct ib_mad *rq_mad”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mßhj�ubj)�”}”(hhh]”hÝ)�”}”(hŒ received MAD.”h]”hŒ received MAD.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœh´Mßhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jœh´MßhjEubjý)�”}”(hŒ+``struct ib_dm_mad *rsp_mad`` response MAD.”h]”(j)�”}”(hŒ``struct ib_dm_mad *rsp_mad``”h]”j )�”}”(hjÀh]”hŒstruct ib_dm_mad *rsp_mad”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Máhjºubj)�”}”(hhh]”hÝ)�”}”(hŒ response MAD.”h]”hŒ response MAD.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MàhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÕh´MáhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"srpt_mad_send_handler (C function)”Œc.srpt_mad_send_handler”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒZvoid srpt_mad_send_handler (struct ib_mad_agent *mad_agent, struct ib_mad_send_wc *mad_wc)”h]”j")�”}”(hŒYvoid srpt_mad_send_handler(struct ib_mad_agent *mad_agent, struct ib_mad_send_wc *mad_wc)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³j(h´Mubjš)�”}”(hŒsrpt_mad_send_handler”h]”jN)�”}”(hŒsrpt_mad_send_handler”h]”hŒsrpt_mad_send_handler”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj7ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh²hh³j(h´Mubj·)�”}”(hŒ?(struct ib_mad_agent *mad_agent, struct ib_mad_send_wc *mad_wc)”h]”(j½)�”}”(hŒstruct ib_mad_agent *mad_agent”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjSubh)�”}”(hhh]”jN)�”}”(hŒ ib_mad_agent”h]”hŒ ib_mad_agent”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jwŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj=sbŒc.srpt_mad_send_handler”†”asbuh1hhjSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjSubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjSubjN)�”}”(hŒ mad_agent”h]”hŒ mad_agent”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjOubj½)�”}”(hŒstruct ib_mad_send_wc *mad_wc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÅubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÅubh)�”}”(hhh]”jN)�”}”(hŒib_mad_send_wc”h]”hŒib_mad_send_wc”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jéŒmodname”NŒ classname”Njkjn)�”}”jq]”j‘Œc.srpt_mad_send_handler”†”asbuh1hhjÅubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÅubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÅubjN)�”}”(hŒmad_wc”h]”hŒmad_wc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjOubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjh²hh³j(h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh²hh³j(h´Mubah}”(h]”j ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j(h´Mhjh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒMAD send completion callback”h]”hŒMAD send completion callback”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MhjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjh²hh³j(h´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjbjÓjbjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ¸**Parameters** ``struct ib_mad_agent *mad_agent`` Return value of ib_register_mad_agent(). ``struct ib_mad_send_wc *mad_wc`` Work completion reporting that the MAD has been sent.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjlh]”hŒ Parameters”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hjfubjø)�”}”(hhh]”(jý)�”}”(hŒL``struct ib_mad_agent *mad_agent`` Return value of ib_register_mad_agent(). ”h]”(j)�”}”(hŒ"``struct ib_mad_agent *mad_agent``”h]”j )�”}”(hj‹h]”hŒstruct ib_mad_agent *mad_agent”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj…ubj)�”}”(hhh]”hÝ)�”}”(hŒ(Return value of ib_register_mad_agent().”h]”hŒ(Return value of ib_register_mad_agent().”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´Mhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j h´Mhj‚ubjý)�”}”(hŒW``struct ib_mad_send_wc *mad_wc`` Work completion reporting that the MAD has been sent.”h]”(j)�”}”(hŒ!``struct ib_mad_send_wc *mad_wc``”h]”j )�”}”(hjÄh]”hŒstruct ib_mad_send_wc *mad_wc”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj¾ubj)�”}”(hhh]”hÝ)�”}”(hŒ5Work completion reporting that the MAD has been sent.”h]”hŒ5Work completion reporting that the MAD has been sent.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.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÷hjfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"srpt_mad_recv_handler (C function)”Œc.srpt_mad_recv_handler”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ|void srpt_mad_recv_handler (struct ib_mad_agent *mad_agent, struct ib_mad_send_buf *send_buf, struct ib_mad_recv_wc *mad_wc)”h]”j")�”}”(hŒ{void srpt_mad_recv_handler(struct ib_mad_agent *mad_agent, struct ib_mad_send_buf *send_buf, struct ib_mad_recv_wc *mad_wc)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³j,h´Mubjš)�”}”(hŒsrpt_mad_recv_handler”h]”jN)�”}”(hŒsrpt_mad_recv_handler”h]”hŒsrpt_mad_recv_handler”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj;ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh²hh³j,h´Mubj·)�”}”(hŒa(struct ib_mad_agent *mad_agent, struct ib_mad_send_buf *send_buf, struct ib_mad_recv_wc *mad_wc)”h]”(j½)�”}”(hŒstruct ib_mad_agent *mad_agent”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWubh)�”}”(hhh]”jN)�”}”(hŒ ib_mad_agent”h]”hŒ ib_mad_agent”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j{Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjAsbŒc.srpt_mad_recv_handler”†”asbuh1hhjWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjWubjN)�”}”(hŒ mad_agent”h]”hŒ mad_agent”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjSubj½)�”}”(hŒ struct ib_mad_send_buf *send_buf”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÉubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉubh)�”}”(hhh]”jN)�”}”(hŒib_mad_send_buf”h]”hŒib_mad_send_buf”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jíŒmodname”NŒ classname”Njkjn)�”}”jq]”j•Œc.srpt_mad_recv_handler”†”asbuh1hhjÉubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÉubjN)�”}”(hŒsend_buf”h]”hŒsend_buf”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjSubj½)�”}”(hŒstruct ib_mad_recv_wc *mad_wc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9ubh)�”}”(hhh]”jN)�”}”(hŒib_mad_recv_wc”h]”hŒib_mad_recv_wc”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j]Œmodname”NŒ classname”Njkjn)�”}”jq]”j•Œc.srpt_mad_recv_handler”†”asbuh1hhj9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj9ubjN)�”}”(hŒmad_wc”h]”hŒmad_wc”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjSubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjh²hh³j,h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh²hh³j,h´Mubah}”(h]”jah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j,h´Mhjh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒMAD reception callback function”h]”hŒMAD reception callback function”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjh²hh³j,h´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÖjÓjÖjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒì**Parameters** ``struct ib_mad_agent *mad_agent`` Return value of ib_register_mad_agent(). ``struct ib_mad_send_buf *send_buf`` Not used. ``struct ib_mad_recv_wc *mad_wc`` Work completion reporting that a MAD has been received.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjàh]”hŒ Parameters”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MhjÚubjø)�”}”(hhh]”(jý)�”}”(hŒL``struct ib_mad_agent *mad_agent`` Return value of ib_register_mad_agent(). ”h]”(j)�”}”(hŒ"``struct ib_mad_agent *mad_agent``”h]”j )�”}”(hjÿh]”hŒstruct ib_mad_agent *mad_agent”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjùubj)�”}”(hhh]”hÝ)�”}”(hŒ(Return value of ib_register_mad_agent().”h]”hŒ(Return value of ib_register_mad_agent().”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´Mhjöubjý)�”}”(hŒ/``struct ib_mad_send_buf *send_buf`` Not used. ”h]”(j)�”}”(hŒ$``struct ib_mad_send_buf *send_buf``”h]”j )�”}”(hj8h]”hŒ struct ib_mad_send_buf *send_buf”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”•h´Mhj2ubj)�”}”(hhh]”hÝ)�”}”(hŒ Not used.”h]”hŒ Not used.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jMh´MhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jMh´Mhjöubjý)�”}”(hŒY``struct ib_mad_recv_wc *mad_wc`` Work completion reporting that a MAD has been received.”h]”(j)�”}”(hŒ!``struct ib_mad_recv_wc *mad_wc``”h]”j )�”}”(hjqh]”hŒstruct ib_mad_recv_wc *mad_wc”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjkubj)�”}”(hhh]”hÝ)�”}”(hŒ7Work completion reporting that a MAD has been received.”h]”hŒ7Work completion reporting that a MAD has been received.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkubeh}”(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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_refresh_port (C function)”Œc.srpt_refresh_port”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/int srpt_refresh_port (struct srpt_port *sport)”h]”j")�”}”(hŒ.int srpt_refresh_port(struct srpt_port *sport)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÇh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇh²hh³jÙh´M^ubjš)�”}”(hŒsrpt_refresh_port”h]”jN)�”}”(hŒsrpt_refresh_port”h]”hŒsrpt_refresh_port”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjèubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÇh²hh³jÙh´M^ubj·)�”}”(hŒ(struct srpt_port *sport)”h]”j½)�”}”(hŒstruct srpt_port *sport”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubh)�”}”(hhh]”jN)�”}”(hŒ srpt_port”h]”hŒ srpt_port”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j(Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjîsbŒc.srpt_refresh_port”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubjN)�”}”(hŒsport”h]”hŒsport”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÇh²hh³jÙh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÃh²hh³jÙh´M^ubah}”(h]”j¾ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÙh´M^hjÀh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒconfigure a HCA port”h]”hŒconfigure a HCA port”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M^hjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÀh²hh³jÙh´M^ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj£jÓj£jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXH**Parameters** ``struct srpt_port *sport`` SRPT HCA port. **Description** Enable InfiniBand management datagram processing, update the cached sm_lid, lid and gid values, and register a callback function for processing MADs on the specified port. **Note** It is safe to call this function more than once for the same port.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj­h]”hŒ Parameters”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mbhj§ubjø)�”}”(hhh]”jý)�”}”(hŒ+``struct srpt_port *sport`` SRPT HCA port. ”h]”(j)�”}”(hŒ``struct srpt_port *sport``”h]”j )�”}”(hjÌh]”hŒstruct srpt_port *sport”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M_hjÆubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA port.”h]”hŒSRPT HCA port.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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§ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mahj§ubhÝ)�”}”(hŒ«Enable InfiniBand management datagram processing, update the cached sm_lid, lid and gid values, and register a callback function for processing MADs on the specified port.”h]”hŒ«Enable InfiniBand management datagram processing, update the cached sm_lid, lid and gid values, and register a callback function for processing MADs on the specified port.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M`hj§ubhÝ)�”}”(hŒ**Note**”h]”jâ)�”}”(hj.h]”hŒNote”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mdhj§ubhÝ)�”}”(hŒBIt is safe to call this function more than once for the same port.”h]”hŒBIt is safe to call this function more than once for the same port.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mehj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&srpt_unregister_mad_agent (C function)”Œc.srpt_unregister_mad_agent”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGvoid srpt_unregister_mad_agent (struct srpt_device *sdev, int port_cnt)”h]”j")�”}”(hŒFvoid srpt_unregister_mad_agent(struct srpt_device *sdev, int port_cnt)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjoh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjoh²hh³j�h´M°ubjš)�”}”(hŒsrpt_unregister_mad_agent”h]”jN)�”}”(hŒsrpt_unregister_mad_agent”h]”hŒsrpt_unregister_mad_agent”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjoh²hh³j�h´M°ubj·)�”}”(hŒ((struct srpt_device *sdev, int port_cnt)”h]”(j½)�”}”(hŒstruct srpt_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÐŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj–sbŒc.srpt_unregister_mad_agent”†”asbuh1hhj¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¬ubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¨ubj½)�”}”(hŒ int port_cnt”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒport_cnt”h]”hŒport_cnt”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjoh²hh³j�h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjkh²hh³j�h´M°ubah}”(h]”jfah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j�h´M°hjhh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!unregister MAD callback functions”h]”hŒ!unregister MAD callback functions”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M°hjeh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjhh²hh³j�h´M°ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj€jÓj€jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒÈ**Parameters** ``struct srpt_device *sdev`` SRPT HCA pointer. ``int port_cnt`` number of ports with registered MAD **Note** It is safe to call this function more than once for the same device.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjŠh]”hŒ Parameters”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M´hj„ubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct srpt_device *sdev`` SRPT HCA pointer. ”h]”(j)�”}”(hŒ``struct srpt_device *sdev``”h]”j )�”}”(hj©h]”hŒstruct srpt_device *sdev”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M±hj£ubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA pointer.”h]”hŒSRPT HCA pointer.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``int port_cnt`` number of ports with registered MAD ”h]”(j)�”}”(hŒ``int port_cnt``”h]”j )�”}”(hjâh]”hŒ int port_cnt”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M²hjÜubj)�”}”(hhh]”hÝ)�”}”(hŒ#number of ports with registered MAD”h]”hŒ#number of ports with registered MAD”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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„ubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M´hj„ubhÝ)�”}”(hŒDIt is safe to call this function more than once for the same device.”h]”hŒDIt is safe to call this function more than once for the same device.”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M´hj„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_alloc_ioctx (C function)”Œc.srpt_alloc_ioctx”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŠstruct srpt_ioctx * srpt_alloc_ioctx (struct srpt_device *sdev, int ioctx_size, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”j")�”}”(hŒˆstruct srpt_ioctx *srpt_alloc_ioctx(struct srpt_device *sdev, int ioctx_size, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj^ h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÊubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^ h²hh³jo h´MÊubh)�”}”(hhh]”jN)�”}”(hŒ srpt_ioctx”h]”hŒ srpt_ioctx”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj~ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jƒ Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒsrpt_alloc_ioctx”sbŒc.srpt_alloc_ioctx”†”asbuh1hhj^ h²hh³jo h´MÊubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^ h²hh³jo h´MÊubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj^ h²hh³jo h´MÊubjš)�”}”(hŒsrpt_alloc_ioctx”h]”jN)�”}”(hjŸ h]”hŒsrpt_alloc_ioctx”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj½ ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj^ h²hh³jo h´MÊubj·)�”}”(hŒe(struct srpt_device *sdev, int ioctx_size, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct srpt_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjØ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jü Œmodname”NŒ classname”Njkjn)�”}”jq]”j� Œc.srpt_alloc_ioctx”†”asbuh1hhjØ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjØ ubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÔ ubj½)�”}”(hŒint ioctx_size”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjH ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjH ubjN)�”}”(hŒ ioctx_size”h]”hŒ ioctx_size”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjH ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÔ ubj½)�”}”(hŒstruct kmem_cache *buf_cache”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj} ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj} ubh)�”}”(hhh]”jN)�”}”(hŒ kmem_cache”h]”hŒ kmem_cache”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjœ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¡ Œmodname”NŒ classname”Njkjn)�”}”jq]”j� Œc.srpt_alloc_ioctx”†”asbuh1hhj} ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj} ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj} ubjN)�”}”(hŒ buf_cache”h]”hŒ buf_cache”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj} ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÔ ubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjí ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjí ubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j Œmodname”NŒ classname”Njkjn)�”}”jq]”j� Œc.srpt_alloc_ioctx”†”asbuh1hhjí ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjí ubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjí ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÔ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj^ h²hh³jo h´MÊubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjZ h²hh³jo h´MÊubah}”(h]”jU ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jo h´MÊhjW h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ%allocate a SRPT I/O context structure”h]”hŒ%allocate a SRPT I/O context structure”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÊhjb h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjW h²hh³jo h´MÊubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj} jÓj} jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒÕ**Parameters** ``struct srpt_device *sdev`` SRPT HCA pointer. ``int ioctx_size`` I/O context size. ``struct kmem_cache *buf_cache`` I/O buffer cache. ``enum dma_data_direction dir`` DMA data direction.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj‡ h]”hŒ Parameters”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÎhj� ubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct srpt_device *sdev`` SRPT HCA pointer. ”h]”(j)�”}”(hŒ``struct srpt_device *sdev``”h]”j )�”}”(hj¦ h]”hŒstruct srpt_device *sdev”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MËhj  ubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA pointer.”h]”hŒSRPT HCA pointer.”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ioctx_size`` I/O context size. ”h]”(j)�”}”(hŒ``int ioctx_size``”h]”j )�”}”(hjß h]”hŒint ioctx_size”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÌhjÙ ubj)�”}”(hhh]”hÝ)�”}”(hŒI/O context size.”h]”hŒI/O context size.”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``struct kmem_cache *buf_cache`` I/O buffer cache. ”h]”(j)�”}”(hŒ ``struct kmem_cache *buf_cache``”h]”j )�”}”(hj h]”hŒstruct kmem_cache *buf_cache”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÍhj ubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``enum dma_data_direction dir`` DMA data direction.”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hjQ h]”hŒenum dma_data_direction dir”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÏhjK ubj)�”}”(hhh]”hÝ)�”}”(hŒDMA data direction.”h]”hŒDMA data direction.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÎhjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jf h´MÏhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj� ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_free_ioctx (C function)”Œc.srpt_free_ioctx”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ„void srpt_free_ioctx (struct srpt_device *sdev, struct srpt_ioctx *ioctx, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”j")�”}”(hŒƒvoid srpt_free_ioctx(struct srpt_device *sdev, struct srpt_ioctx *ioctx, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj§ h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mïubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj§ h²hh³j¹ h´Mïubjš)�”}”(hŒsrpt_free_ioctx”h]”jN)�”}”(hŒsrpt_free_ioctx”h]”hŒsrpt_free_ioctx”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÈ ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj§ h²hh³j¹ h´Mïubj·)�”}”(hŒo(struct srpt_device *sdev, struct srpt_ioctx *ioctx, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct srpt_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjä ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÎ sbŒc.srpt_free_ioctx”†”asbuh1hhjä ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjä ubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjä ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjà ubj½)�”}”(hŒstruct srpt_ioctx *ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjV ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_ioctx”h]”hŒ srpt_ioctx”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhju ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jz Œmodname”NŒ classname”Njkjn)�”}”jq]”j" Œc.srpt_free_ioctx”†”asbuh1hhjV ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjV ubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjV ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjà ubj½)�”}”(hŒstruct kmem_cache *buf_cache”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÆ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÆ ubh)�”}”(hhh]”jN)�”}”(hŒ kmem_cache”h]”hŒ kmem_cache”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjå ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jê Œmodname”NŒ classname”Njkjn)�”}”jq]”j" Œc.srpt_free_ioctx”†”asbuh1hhjÆ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÆ ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÆ ubjN)�”}”(hŒ buf_cache”h]”hŒ buf_cache”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÆ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjà ubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6ubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jZŒmodname”NŒ classname”Njkjn)�”}”jq]”j" Œc.srpt_free_ioctx”†”asbuh1hhj6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6ubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjà ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj§ h²hh³j¹ h´Mïubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj£ h²hh³j¹ h´Mïubah}”(h]”jž ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¹ h´Mïhj  h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!free a SRPT I/O context structure”h]”hŒ!free a SRPT I/O context structure”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mïhj«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj  h²hh³j¹ h´Mïubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÆjÓjÆjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒâ**Parameters** ``struct srpt_device *sdev`` SRPT HCA pointer. ``struct srpt_ioctx *ioctx`` I/O context pointer. ``struct kmem_cache *buf_cache`` I/O buffer cache. ``enum dma_data_direction dir`` DMA data direction.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÐh]”hŒ Parameters”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MóhjÊubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct srpt_device *sdev`` SRPT HCA pointer. ”h]”(j)�”}”(hŒ``struct srpt_device *sdev``”h]”j )�”}”(hjïh]”hŒstruct srpt_device *sdev”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mðhjéubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA pointer.”h]”hŒSRPT HCA pointer.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mðhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´Mðhjæubjý)�”}”(hŒ2``struct srpt_ioctx *ioctx`` I/O context pointer. ”h]”(j)�”}”(hŒ``struct srpt_ioctx *ioctx``”h]”j )�”}”(hj(h]”hŒstruct srpt_ioctx *ioctx”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mñhj"ubj)�”}”(hhh]”hÝ)�”}”(hŒI/O context pointer.”h]”hŒI/O context pointer.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``struct kmem_cache *buf_cache`` I/O buffer cache. ”h]”(j)�”}”(hŒ ``struct kmem_cache *buf_cache``”h]”j )�”}”(hjah]”hŒstruct kmem_cache *buf_cache”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mòhj[ubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jvh´Mòhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jvh´Mòhjæubjý)�”}”(hŒ3``enum dma_data_direction dir`` DMA data direction.”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hjšh]”hŒenum dma_data_direction dir”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Môhj”ubj)�”}”(hhh]”hÝ)�”}”(hŒDMA data direction.”h]”hŒDMA data direction.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"srpt_alloc_ioctx_ring (C function)”Œc.srpt_alloc_ioctx_ring”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒµstruct srpt_ioctx ** srpt_alloc_ioctx_ring (struct srpt_device *sdev, int ring_size, int ioctx_size, struct kmem_cache *buf_cache, int alignment_offset, enum dma_data_direction dir)”h]”j")�”}”(hŒ³struct srpt_ioctx **srpt_alloc_ioctx_ring(struct srpt_device *sdev, int ring_size, int ioctx_size, struct kmem_cache *buf_cache, int alignment_offset, enum dma_data_direction dir)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjðh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðh²hh³jh´Mubh)�”}”(hhh]”jN)�”}”(hŒ srpt_ioctx”h]”hŒ srpt_ioctx”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒsrpt_alloc_ioctx_ring”sbŒc.srpt_alloc_ioctx_ring”†”asbuh1hhjðh²hh³jh´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðh²hh³jh´Mubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjðh²hh³jh´Mubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjðh²hh³jh´Mubjš)�”}”(hŒsrpt_alloc_ioctx_ring”h]”jN)�”}”(hj1h]”hŒsrpt_alloc_ioctx_ring”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj\ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjðh²hh³jh´Mubj·)�”}”(hŒŠ(struct srpt_device *sdev, int ring_size, int ioctx_size, struct kmem_cache *buf_cache, int alignment_offset, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct srpt_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j›Œmodname”NŒ classname”Njkjn)�”}”jq]”j/Œc.srpt_alloc_ioctx_ring”†”asbuh1hhjwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjwubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjsubj½)�”}”(hŒ int ring_size”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjçubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçubjN)�”}”(hŒ ring_size”h]”hŒ ring_size”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjsubj½)�”}”(hŒint ioctx_size”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒ ioctx_size”h]”hŒ ioctx_size”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjsubj½)�”}”(hŒstruct kmem_cache *buf_cache”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubh)�”}”(hhh]”jN)�”}”(hŒ kmem_cache”h]”hŒ kmem_cache”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”juŒmodname”NŒ classname”Njkjn)�”}”jq]”j/Œc.srpt_alloc_ioctx_ring”†”asbuh1hhjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjQubjN)�”}”(hŒ buf_cache”h]”hŒ buf_cache”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjsubj½)�”}”(hŒint alignment_offset”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÁubjN)�”}”(hŒalignment_offset”h]”hŒalignment_offset”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjsubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjöubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjöubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”j/Œc.srpt_alloc_ioctx_ring”†”asbuh1hhjöubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjöubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjsubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjðh²hh³jh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjìh²hh³jh´Mubah}”(h]”jçah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jh´Mhjéh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ.allocate a ring of SRPT I/O context structures”h]”hŒ.allocate a ring of SRPT I/O context structures”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjéh²hh³jh´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj†jÓj†jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX”**Parameters** ``struct srpt_device *sdev`` Device to allocate the I/O context ring for. ``int ring_size`` Number of elements in the I/O context ring. ``int ioctx_size`` I/O context size. ``struct kmem_cache *buf_cache`` I/O buffer cache. ``int alignment_offset`` Offset in each ring buffer at which the SRP information unit starts. ``enum dma_data_direction dir`` DMA data direction.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MhjŠubjø)�”}”(hhh]”(jý)�”}”(hŒJ``struct srpt_device *sdev`` Device to allocate the I/O context ring for. ”h]”(j)�”}”(hŒ``struct srpt_device *sdev``”h]”j )�”}”(hj¯h]”hŒstruct srpt_device *sdev”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj©ubj)�”}”(hhh]”hÝ)�”}”(hŒ,Device to allocate the I/O context ring for.”h]”hŒ,Device to allocate the I/O context ring for.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÄh´MhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÄh´Mhj¦ubjý)�”}”(hŒ>``int ring_size`` Number of elements in the I/O context ring. ”h]”(j)�”}”(hŒ``int ring_size``”h]”j )�”}”(hjèh]”hŒ int ring_size”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjâubj)�”}”(hhh]”hÝ)�”}”(hŒ+Number of elements in the I/O context ring.”h]”hŒ+Number of elements in the I/O context ring.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jýh´Mhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jýh´Mhj¦ubjý)�”}”(hŒ%``int ioctx_size`` I/O context size. ”h]”(j)�”}”(hŒ``int ioctx_size``”h]”j )�”}”(hj!h]”hŒint ioctx_size”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjubj)�”}”(hhh]”hÝ)�”}”(hŒI/O context size.”h]”hŒI/O context size.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j6h´Mhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j6h´Mhj¦ubjý)�”}”(hŒ3``struct kmem_cache *buf_cache`` I/O buffer cache. ”h]”(j)�”}”(hŒ ``struct kmem_cache *buf_cache``”h]”j )�”}”(hjZh]”hŒstruct kmem_cache *buf_cache”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MhjTubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³joh´Mhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³joh´Mhj¦ubjý)�”}”(hŒ^``int alignment_offset`` Offset in each ring buffer at which the SRP information unit starts. ”h]”(j)�”}”(hŒ``int alignment_offset``”h]”j )�”}”(hj“h]”hŒint alignment_offset”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hj�ubj)�”}”(hhh]”hÝ)�”}”(hŒDOffset in each ring buffer at which the SRP information unit starts.”h]”hŒDOffset in each ring buffer at which the SRP information unit starts.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¨h´M hj¦ubjý)�”}”(hŒ3``enum dma_data_direction dir`` DMA data direction.”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hjÍh]”hŒenum dma_data_direction dir”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hjÇubj)�”}”(hhh]”hÝ)�”}”(hŒDMA data direction.”h]”hŒDMA data direction.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!srpt_free_ioctx_ring (C function)”Œc.srpt_free_ioctx_ring”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒžvoid srpt_free_ioctx_ring (struct srpt_ioctx **ioctx_ring, struct srpt_device *sdev, int ring_size, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”j")�”}”(hŒ�void srpt_free_ioctx_ring(struct srpt_ioctx **ioctx_ring, struct srpt_device *sdev, int ring_size, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj#h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#h²hh³j5h´M.ubjš)�”}”(hŒsrpt_free_ioctx_ring”h]”jN)�”}”(hŒsrpt_free_ioctx_ring”h]”hŒsrpt_free_ioctx_ring”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjDubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj#h²hh³j5h´M.ubj·)�”}”(hŒ„(struct srpt_ioctx **ioctx_ring, struct srpt_device *sdev, int ring_size, struct kmem_cache *buf_cache, enum dma_data_direction dir)”h]”(j½)�”}”(hŒstruct srpt_ioctx **ioctx_ring”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj`ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_ioctx”h]”hŒ srpt_ioctx”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j„Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjJsbŒc.srpt_free_ioctx_ring”†”asbuh1hhj`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj`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`ubjN)�”}”(hŒ ioctx_ring”h]”hŒ ioctx_ring”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj\ubj½)�”}”(hŒstruct srpt_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”jžŒc.srpt_free_ioctx_ring”†”asbuh1hhjßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjßubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjßubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj\ubj½)�”}”(hŒ int ring_size”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjOubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjOubjN)�”}”(hŒ ring_size”h]”hŒ ring_size”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj\ubj½)�”}”(hŒstruct kmem_cache *buf_cache”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„ubh)�”}”(hhh]”jN)�”}”(hŒ kmem_cache”h]”hŒ kmem_cache”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¨Œmodname”NŒ classname”Njkjn)�”}”jq]”jžŒc.srpt_free_ioctx_ring”†”asbuh1hhj„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj„ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj„ubjN)�”}”(hŒ buf_cache”h]”hŒ buf_cache”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj\ubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjôubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”jžŒc.srpt_free_ioctx_ring”†”asbuh1hhjôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjôubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj\ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj#h²hh³j5h´M.ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh²hh³j5h´M.ubah}”(h]”jah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j5h´M.hjh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ,free the ring of SRPT I/O context structures”h]”hŒ,free the ring of SRPT I/O context structures”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M.hjih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjh²hh³j5h´M.ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj„jÓj„jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Parameters** ``struct srpt_ioctx **ioctx_ring`` I/O context ring to be freed. ``struct srpt_device *sdev`` SRPT HCA pointer. ``int ring_size`` Number of ring elements. ``struct kmem_cache *buf_cache`` I/O buffer cache. ``enum dma_data_direction dir`` DMA data direction.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjŽh]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M2hjˆubjø)�”}”(hhh]”(jý)�”}”(hŒA``struct srpt_ioctx **ioctx_ring`` I/O context ring to be freed. ”h]”(j)�”}”(hŒ"``struct srpt_ioctx **ioctx_ring``”h]”j )�”}”(hj­h]”hŒstruct srpt_ioctx **ioctx_ring”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M/hj§ubj)�”}”(hhh]”hÝ)�”}”(hŒI/O context ring to be freed.”h]”hŒI/O context ring to be freed.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 srpt_device *sdev`` SRPT HCA pointer. ”h]”(j)�”}”(hŒ``struct srpt_device *sdev``”h]”j )�”}”(hjæh]”hŒstruct srpt_device *sdev”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M0hjàubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA pointer.”h]”hŒSRPT HCA pointer.”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jûh´M0hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jûh´M0hj¤ubjý)�”}”(hŒ+``int ring_size`` Number of ring elements. ”h]”(j)�”}”(hŒ``int ring_size``”h]”j )�”}”(hjh]”hŒ int ring_size”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M1hjubj)�”}”(hhh]”hÝ)�”}”(hŒNumber of ring elements.”h]”hŒNumber of ring elements.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j4h´M1hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j4h´M1hj¤ubjý)�”}”(hŒ3``struct kmem_cache *buf_cache`` I/O buffer cache. ”h]”(j)�”}”(hŒ ``struct kmem_cache *buf_cache``”h]”j )�”}”(hjXh]”hŒstruct kmem_cache *buf_cache”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M2hjRubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jmh´M2hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jmh´M2hj¤ubjý)�”}”(hŒ3``enum dma_data_direction dir`` DMA data direction.”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hj‘h]”hŒenum dma_data_direction dir”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M4hj‹ubj)�”}”(hhh]”hÝ)�”}”(hŒDMA data direction.”h]”hŒDMA data direction.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M3hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¦h´M4hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_set_cmd_state (C function)”Œc.srpt_set_cmd_state”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒgenum srpt_command_state srpt_set_cmd_state (struct srpt_send_ioctx *ioctx, enum srpt_command_state new)”h]”j")�”}”(hŒfenum srpt_command_state srpt_set_cmd_state(struct srpt_send_ioctx *ioctx, enum srpt_command_state new)”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjçh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçh²hh³jøh´MEubh)�”}”(hhh]”jN)�”}”(hŒsrpt_command_state”h]”hŒsrpt_command_state”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒsrpt_set_cmd_state”sbŒc.srpt_set_cmd_state”†”asbuh1hhjçh²hh³jøh´MEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçh²hh³jøh´MEubjš)�”}”(hŒsrpt_set_cmd_state”h]”jN)�”}”(hj(h]”hŒsrpt_set_cmd_state”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjçh²hh³jøh´MEubj·)�”}”(hŒ<(struct srpt_send_ioctx *ioctx, enum srpt_command_state new)”h]”(j½)�”}”(hŒstruct srpt_send_ioctx *ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jxŒmodname”NŒ classname”Njkjn)�”}”jq]”j&Œc.srpt_set_cmd_state”†”asbuh1hhjTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjTubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjPubj½)�”}”(hŒenum srpt_command_state new”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÄubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄubh)�”}”(hhh]”jN)�”}”(hŒsrpt_command_state”h]”hŒsrpt_command_state”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jèŒmodname”NŒ classname”Njkjn)�”}”jq]”j&Œc.srpt_set_cmd_state”†”asbuh1hhjÄubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄubjN)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjPubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjçh²hh³jøh´MEubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjãh²hh³jøh´MEubah}”(h]”jÞah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jøh´MEhjàh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒset the state of a SCSI command”h]”hŒset the state of a SCSI command”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MEhj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjàh²hh³jøh´MEubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjTjÓjTjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒä**Parameters** ``struct srpt_send_ioctx *ioctx`` Send I/O context. ``enum srpt_command_state new`` New I/O context state. **Description** Does not modify the state of aborted commands. Returns the previous command state.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj^h]”hŒ Parameters”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MIhjXubjø)�”}”(hhh]”(jý)�”}”(hŒ4``struct srpt_send_ioctx *ioctx`` Send I/O context. ”h]”(j)�”}”(hŒ!``struct srpt_send_ioctx *ioctx``”h]”j )�”}”(hj}h]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MFhjwubj)�”}”(hhh]”hÝ)�”}”(hŒSend I/O context.”h]”hŒSend I/O context.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j’h´MFhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j’h´MFhjtubjý)�”}”(hŒ7``enum srpt_command_state new`` New I/O context state. ”h]”(j)�”}”(hŒ``enum srpt_command_state new``”h]”j )�”}”(hj¶h]”hŒenum srpt_command_state new”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MGhj°ubj)�”}”(hhh]”hÝ)�”}”(hŒNew I/O context state.”h]”hŒNew I/O context state.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jËh´MGhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jËh´MGhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjXubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjñh]”hŒ Description”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MIhjXubhÝ)�”}”(hŒRDoes not modify the state of aborted commands. Returns the previous command state.”h]”hŒRDoes not modify the state of aborted commands. Returns the previous command state.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MHhjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(srpt_test_and_set_cmd_state (C function)”Œc.srpt_test_and_set_cmd_state”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒzbool srpt_test_and_set_cmd_state (struct srpt_send_ioctx *ioctx, enum srpt_command_state old, enum srpt_command_state new)”h]”j")�”}”(hŒybool srpt_test_and_set_cmd_state(struct srpt_send_ioctx *ioctx, enum srpt_command_state old, enum srpt_command_state new)”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj2h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MYubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2h²hh³jCh´MYubjš)�”}”(hŒsrpt_test_and_set_cmd_state”h]”jN)�”}”(hŒsrpt_test_and_set_cmd_state”h]”hŒsrpt_test_and_set_cmd_state”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjRubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj2h²hh³jCh´MYubj·)�”}”(hŒY(struct srpt_send_ioctx *ioctx, enum srpt_command_state old, enum srpt_command_state new)”h]”(j½)�”}”(hŒstruct srpt_send_ioctx *ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjnubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjnubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j’Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjXsbŒc.srpt_test_and_set_cmd_state”†”asbuh1hhjnubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjnubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjnubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjjubj½)�”}”(hŒenum srpt_command_state old”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjàubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàubh)�”}”(hhh]”jN)�”}”(hŒsrpt_command_state”h]”hŒsrpt_command_state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒmodname”NŒ classname”Njkjn)�”}”jq]”j¬Œc.srpt_test_and_set_cmd_state”†”asbuh1hhjàubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàubjN)�”}”(hŒold”h]”hŒold”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjjubj½)�”}”(hŒenum srpt_command_state new”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjCubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCubh)�”}”(hhh]”jN)�”}”(hŒsrpt_command_state”h]”hŒsrpt_command_state”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jgŒmodname”NŒ classname”Njkjn)�”}”jq]”j¬Œc.srpt_test_and_set_cmd_state”†”asbuh1hhjCubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCubjN)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj2h²hh³jCh´MYubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj.h²hh³jCh´MYubah}”(h]”j)ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jCh´MYhj+h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ#test and set the state of a command”h]”hŒ#test and set the state of a command”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MYhj¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj+h²hh³jCh´MYubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÓjÓjÓjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Parameters** ``struct srpt_send_ioctx *ioctx`` Send I/O context. ``enum srpt_command_state old`` Current I/O context state. ``enum srpt_command_state new`` New I/O context state. **Description** Returns true if and only if the previous command state was equal to 'old'.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÝh]”hŒ Parameters”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M]hj×ubjø)�”}”(hhh]”(jý)�”}”(hŒ4``struct srpt_send_ioctx *ioctx`` Send I/O context. ”h]”(j)�”}”(hŒ!``struct srpt_send_ioctx *ioctx``”h]”j )�”}”(hjüh]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MZhjöubj)�”}”(hhh]”hÝ)�”}”(hŒSend I/O context.”h]”hŒSend I/O context.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´MZhjubah•}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´MZhjóubjý)�”}”(hŒ;``enum srpt_command_state old`` Current I/O context state. ”h]”(j)�”}”(hŒ``enum srpt_command_state old``”h]”j )�”}”(hj5h]”hŒenum srpt_command_state old”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M[hj/ubj)�”}”(hhh]”hÝ)�”}”(hŒCurrent I/O context state.”h]”hŒCurrent I/O context state.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jJh´M[hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jJh´M[hjóubjý)�”}”(hŒ7``enum srpt_command_state new`` New I/O context state. ”h]”(j)�”}”(hŒ``enum srpt_command_state new``”h]”j )�”}”(hjnh]”hŒenum srpt_command_state new”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M\hjhubj)�”}”(hhh]”hÝ)�”}”(hŒNew I/O context state.”h]”hŒNew I/O context state.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jƒh´M\hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jƒh´M\hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj×ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj©h]”hŒ Description”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M^hj×ubhÝ)�”}”(hŒJReturns true if and only if the previous command state was equal to 'old'.”h]”hŒNReturns true if and only if the previous command state was equal to ‘old’.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M]hj×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_post_recv (C function)”Œc.srpt_post_recv”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒeint srpt_post_recv (struct srpt_device *sdev, struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *ioctx)”h]”j")�”}”(hŒdint srpt_post_recv(struct srpt_device *sdev, struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *ioctx)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjêh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mrubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjêh²hh³jüh´Mrubjš)�”}”(hŒsrpt_post_recv”h]”jN)�”}”(hŒsrpt_post_recv”h]”hŒsrpt_post_recv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjêh²hh³jüh´Mrubj·)�”}”(hŒR(struct srpt_device *sdev, struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *ioctx)”h]”(j½)�”}”(hŒstruct srpt_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jKŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjsbŒc.srpt_post_recv”†”asbuh1hhj'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj'ubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubj½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j½Œmodname”NŒ classname”Njkjn)�”}”jq]”jeŒc.srpt_post_recv”†”asbuh1hhj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj™ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubj½)�”}”(hŒstruct srpt_recv_ioctx *ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j-Œmodname”NŒ classname”Njkjn)�”}”jq]”jeŒc.srpt_post_recv”†”asbuh1hhj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj ubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj#ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjêh²hh³jüh´Mrubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjæh²hh³jüh´Mrubah}”(h]”jáah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jüh´Mrhjãh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒpost an IB receive request”h]”hŒpost an IB receive request”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mrhj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjãh²hh³jüh´Mrubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¦jÓj¦jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ´**Parameters** ``struct srpt_device *sdev`` SRPT HCA pointer. ``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ``struct srpt_recv_ioctx *ioctx`` Receive I/O context pointer.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj°h]”hŒ Parameters”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mvhjªubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct srpt_device *sdev`` SRPT HCA pointer. ”h]”(j)�”}”(hŒ``struct srpt_device *sdev``”h]”j )�”}”(hjÏh]”hŒstruct srpt_device *sdev”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MshjÉubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA pointer.”h]”hŒSRPT HCA pointer.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jäh´Mshjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jäh´MshjÆubjý)�”}”(hŒ/``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hjh]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mthjubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mthjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´MthjÆubjý)�”}”(hŒ>``struct srpt_recv_ioctx *ioctx`` Receive I/O context pointer.”h]”(j)�”}”(hŒ!``struct srpt_recv_ioctx *ioctx``”h]”j )�”}”(hjAh]”hŒstruct srpt_recv_ioctx *ioctx”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mvhj;ubj)�”}”(hhh]”hÝ)�”}”(hŒReceive I/O context pointer.”h]”hŒReceive I/O context pointer.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MuhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jVh´MvhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"srpt_zerolength_write (C function)”Œc.srpt_zerolength_write”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3int srpt_zerolength_write (struct srpt_rdma_ch *ch)”h]”j")�”}”(hŒ2int srpt_zerolength_write(struct srpt_rdma_ch *ch)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj—h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—h²hh³j©h´M�ubjš)�”}”(hŒsrpt_zerolength_write”h]”jN)�”}”(hŒsrpt_zerolength_write”h]”hŒsrpt_zerolength_write”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¸ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj—h²hh³j©h´M�ubj·)�”}”(hŒ(struct srpt_rdma_ch *ch)”h]”j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jøŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¾sbŒc.srpt_zerolength_write”†”asbuh1hhjÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÔubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÐubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj—h²hh³j©h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj“h²hh³j©h´M�ubah}”(h]”jŽah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j©h´M�hj�h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ perform a zero-length RDMA write”h]”hŒ perform a zero-length RDMA write”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M�hjX h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj�h²hh³j©h´M�ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjs jÓjs jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX<**Parameters** ``struct srpt_rdma_ch *ch`` SRPT RDMA channel. **Description** A quote from the InfiniBand specification: C9-88: For an HCA responder using Reliable Connection service, for each zero-length RDMA READ or WRITE request, the R_Key shall not be validated, even if the request includes Immediate data.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj} h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M“hjw ubjø)�”}”(hhh]”jý)�”}”(hŒ/``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hjœ h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M�hj– ubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj× h]”hŒ Description”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÕ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M’hjw ubhÝ)�”}”(hŒéA quote from the InfiniBand specification: C9-88: For an HCA responder using Reliable Connection service, for each zero-length RDMA READ or WRITE request, the R_Key shall not be validated, even if the request includes Immediate data.”h]”hŒéA quote from the InfiniBand specification: C9-88: For an HCA responder using Reliable Connection service, for each zero-length RDMA READ or WRITE request, the R_Key shall not be validated, even if the request includes Immediate data.”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M‘hjw ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_get_desc_tbl (C function)”Œc.srpt_get_desc_tbl”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒãint srpt_get_desc_tbl (struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *ioctx, struct srp_cmd *srp_cmd, enum dma_data_direction *dir, struct scatterlist **sg, unsigned int *sg_cnt, u64 *data_len, u16 imm_data_offset)”h]”j")�”}”(hŒâint srpt_get_desc_tbl(struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *ioctx, struct srp_cmd *srp_cmd, enum dma_data_direction *dir, struct scatterlist **sg, unsigned int *sg_cnt, u64 *data_len, u16 imm_data_offset)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj!h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!h²hh³j*!h´M)ubjš)�”}”(hŒsrpt_get_desc_tbl”h]”jN)�”}”(hŒsrpt_get_desc_tbl”h]”hŒsrpt_get_desc_tbl”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9!ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj!h²hh³j*!h´M)ubj·)�”}”(hŒÍ(struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *ioctx, struct srp_cmd *srp_cmd, enum dma_data_direction *dir, struct scatterlist **sg, unsigned int *sg_cnt, u64 *data_len, u16 imm_data_offset)”h]”(j½)�”}”(hŒ"struct srpt_recv_ioctx *recv_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjY!h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjU!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjU!ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(hjw!h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjt!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jy!Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj?!sbŒc.srpt_get_desc_tbl”†”asbuh1hhjU!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjU!ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¥!h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjU!ubjN)�”}”(hŒ recv_ioctx”h]”hŒ recv_ioctx”…”�”}”(hj²!h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjU!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubj½)�”}”(hŒstruct srpt_send_ioctx *ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjË!h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÇ!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇ!ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hjé!h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjæ!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jë!Œmodname”NŒ classname”Njkjn)�”}”jq]”j“!Œc.srpt_get_desc_tbl”†”asbuh1hhjÇ!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇ!ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÇ!ubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hj""h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÇ!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubj½)�”}”(hŒstruct srp_cmd *srp_cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj;"h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj7"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7"ubh)�”}”(hhh]”jN)�”}”(hŒsrp_cmd”h]”hŒsrp_cmd”…”�”}”(hjY"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjV"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j["Œmodname”NŒ classname”Njkjn)�”}”jq]”j“!Œc.srpt_get_desc_tbl”†”asbuh1hhj7"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7"ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj…"h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj7"ubjN)�”}”(hŒsrp_cmd”h]”hŒsrp_cmd”…”�”}”(hj’"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj7"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubj½)�”}”(hŒenum dma_data_direction *dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hj«"h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj§"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj§"ubh)�”}”(hhh]”jN)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjÉ"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÆ"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jË"Œmodname”NŒ classname”Njkjn)�”}”jq]”j“!Œc.srpt_get_desc_tbl”†”asbuh1hhj§"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj§"ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjõ"h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj§"ubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj§"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubj½)�”}”(hŒstruct scatterlist **sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#ubh)�”}”(hhh]”jN)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj9#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j;#Œmodname”NŒ classname”Njkjn)�”}”jq]”j“!Œc.srpt_get_desc_tbl”†”asbuh1hhj#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#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#ubjN)�”}”(hŒsg”h]”hŒsg”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubj½)�”}”(hŒunsigned int *sg_cnt”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj˜#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj”#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj”#ubjý)�”}”(hŒint”h]”hŒint”…”�”}”(hj´#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj”#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj”#ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÐ#h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj”#ubjN)�”}”(hŒsg_cnt”h]”hŒsg_cnt”…”�”}”(hjÝ#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj”#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubj½)�”}”(hŒ u64 *data_len”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjù#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjö#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jû#Œmodname”NŒ classname”Njkjn)�”}”jq]”j“!Œc.srpt_get_desc_tbl”†”asbuh1hhjò#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjò#ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjò#ubjN)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hj2$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjò#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubj½)�”}”(hŒu16 imm_data_offset”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjN$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjK$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jP$Œmodname”NŒ classname”Njkjn)�”}”jq]”j“!Œc.srpt_get_desc_tbl”†”asbuh1hhjG$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjG$ubjN)�”}”(hŒimm_data_offset”h]”hŒimm_data_offset”…”�”}”(hjz$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjG$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQ!ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj!h²hh³j*!h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj!h²hh³j*!h´M)ubah}”(h]”j!ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j*!h´M)hj!h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ/parse the data descriptors of a SRP_CMD request”h]”hŒ/parse the data descriptors of a SRP_CMD request”…”�”}”(hj¤$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M)hj¡$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj!h²hh³j*!h´M)ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¼$jÓj¼$jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXÅ**Parameters** ``struct srpt_recv_ioctx *recv_ioctx`` I/O context associated with the received command **srp_cmd**. ``struct srpt_send_ioctx *ioctx`` I/O context that will be used for responding to the initiator. ``struct srp_cmd *srp_cmd`` Pointer to the SRP_CMD request data. ``enum dma_data_direction *dir`` Pointer to the variable to which the transfer direction will be written. ``struct scatterlist **sg`` [out] scatterlist for the parsed SRP_CMD. ``unsigned int *sg_cnt`` [out] length of **sg**. ``u64 *data_len`` Pointer to the variable to which the total data length of all descriptors in the SRP_CMD request will be written. ``u16 imm_data_offset`` [in] Offset in SRP_CMD requests at which immediate data starts. **Description** This function initializes ioctx->nrbuf and ioctx->r_bufs. Returns -EINVAL when the SRP_CMD request contains inconsistent descriptors; -ENOMEM when memory allocation fails and zero upon success.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÆ$h]”hŒ Parameters”…”�”}”(hjÈ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÄ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M-hjÀ$ubjø)�”}”(hhh]”(jý)�”}”(hŒe``struct srpt_recv_ioctx *recv_ioctx`` I/O context associated with the received command **srp_cmd**. ”h]”(j)�”}”(hŒ&``struct srpt_recv_ioctx *recv_ioctx``”h]”j )�”}”(hjå$h]”hŒ"struct srpt_recv_ioctx *recv_ioctx”…”�”}”(hjç$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjã$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M*hjß$ubj)�”}”(hhh]”hÝ)�”}”(hŒ=I/O context associated with the received command **srp_cmd**.”h]”(hŒ1I/O context associated with the received command ”…”�”}”(hjþ$h²hh³Nh´Nubjâ)�”}”(hŒ **srp_cmd**”h]”hŒsrp_cmd”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjþ$ubhŒ.”…”�”}”(hjþ$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 srpt_send_ioctx *ioctx`` I/O context that will be used for responding to the initiator. ”h]”(j)�”}”(hŒ!``struct srpt_send_ioctx *ioctx``”h]”j )�”}”(hj0%h]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hj2%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M+hj*%ubj)�”}”(hhh]”hÝ)�”}”(hŒ>I/O context that will be used for responding to the initiator.”h]”hŒ>I/O context that will be used for responding to the initiator.”…”�”}”(hjI%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ŒA``struct srp_cmd *srp_cmd`` Pointer to the SRP_CMD request data. ”h]”(j)�”}”(hŒ``struct srp_cmd *srp_cmd``”h]”j )�”}”(hji%h]”hŒstruct srp_cmd *srp_cmd”…”�”}”(hjk%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M,hjc%ubj)�”}”(hhh]”hÝ)�”}”(hŒ$Pointer to the SRP_CMD request data.”h]”hŒ$Pointer to the SRP_CMD request data.”…”�”}”(hj‚%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œj``enum dma_data_direction *dir`` Pointer to the variable to which the transfer direction will be written. ”h]”(j)�”}”(hŒ ``enum dma_data_direction *dir``”h]”j )�”}”(hj¢%h]”hŒenum dma_data_direction *dir”…”�”}”(hj¤%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M.hjœ%ubj)�”}”(hhh]”hÝ)�”}”(hŒHPointer to the variable to which the transfer direction will be written.”h]”hŒHPointer to the variable to which the transfer direction will be written.”…”�”}”(hj»%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.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ŒF``struct scatterlist **sg`` [out] scatterlist for the parsed SRP_CMD. ”h]”(j)�”}”(hŒ``struct scatterlist **sg``”h]”j )�”}”(hjÜ%h]”hŒstruct scatterlist **sg”…”�”}”(hjÞ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M/hjÖ%ubj)�”}”(hhh]”hÝ)�”}”(hŒ)[out] scatterlist for the parsed SRP_CMD.”h]”hŒ)[out] scatterlist for the parsed SRP_CMD.”…”�”}”(hjõ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 *sg_cnt`` [out] length of **sg**. ”h]”(j)�”}”(hŒ``unsigned int *sg_cnt``”h]”j )�”}”(hj&h]”hŒunsigned int *sg_cnt”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M0hj&ubj)�”}”(hhh]”hÝ)�”}”(hŒ[out] length of **sg**.”h]”(hŒ[out] length of ”…”�”}”(hj.&h²hh³Nh´Nubjâ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hj6&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj.&ubhŒ.”…”�”}”(hj.&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j*&h´M0hj+&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j*&h´M0hjÜ$ubjý)�”}”(hŒ„``u64 *data_len`` Pointer to the variable to which the total data length of all descriptors in the SRP_CMD request will be written. ”h]”(j)�”}”(hŒ``u64 *data_len``”h]”j )�”}”(hj`&h]”hŒ u64 *data_len”…”�”}”(hjb&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M2hjZ&ubj)�”}”(hhh]”hÝ)�”}”(hŒqPointer to the variable to which the total data length of all descriptors in the SRP_CMD request will be written.”h]”hŒqPointer to the variable to which the total data length of all descriptors in the SRP_CMD request will be written.”…”�”}”(hjy&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M1hjv&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³ju&h´M2hjÜ$ubjý)�”}”(hŒX``u16 imm_data_offset`` [in] Offset in SRP_CMD requests at which immediate data starts. ”h]”(j)�”}”(hŒ``u16 imm_data_offset``”h]”j )�”}”(hjš&h]”hŒu16 imm_data_offset”…”�”}”(hjœ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M4hj”&ubj)�”}”(hhh]”hÝ)�”}”(hŒ?[in] Offset in SRP_CMD requests at which immediate data starts.”h]”hŒ?[in] Offset in SRP_CMD requests at which immediate data starts.”…”�”}”(hj³&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M3hj°&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¯&h´M4hjÜ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÀ$ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjÖ&h]”hŒ Description”…”�”}”(hjØ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÔ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M6hjÀ$ubhÝ)�”}”(hŒ9This function initializes ioctx->nrbuf and ioctx->r_bufs.”h]”hŒ9This function initializes ioctx->nrbuf and ioctx->r_bufs.”…”�”}”(hjì&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M5hjÀ$ubhÝ)�”}”(hŒ‡Returns -EINVAL when the SRP_CMD request contains inconsistent descriptors; -ENOMEM when memory allocation fails and zero upon success.”h]”hŒ‡Returns -EINVAL when the SRP_CMD request contains inconsistent descriptors; -ENOMEM when memory allocation fails and zero upon success.”…”�”}”(hjû&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M7hjÀ$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_init_ch_qp (C function)”Œc.srpt_init_ch_qp”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?int srpt_init_ch_qp (struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”j")�”}”(hŒ>int srpt_init_ch_qp(struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj*'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj&'h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&'h²hh³j8'h´M˜ubjš)�”}”(hŒsrpt_init_ch_qp”h]”jN)�”}”(hŒsrpt_init_ch_qp”h]”hŒsrpt_init_ch_qp”…”�”}”(hjK'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjG'ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj&'h²hh³j8'h´M˜ubj·)�”}”(hŒ+(struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjg'h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjc'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjc'ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hj…'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‚'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j‡'Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjM'sbŒc.srpt_init_ch_qp”†”asbuh1hhjc'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjc'ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj³'h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjc'ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjÀ'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjc'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj_'ubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÙ'h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÕ'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÕ'ubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjô'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jù'Œmodname”NŒ classname”Njkjn)�”}”jq]”j¡'Œc.srpt_init_ch_qp”†”asbuh1hhjÕ'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÕ'ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj#(h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÕ'ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj0(h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÕ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj_'ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj&'h²hh³j8'h´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj"'h²hh³j8'h´M˜ubah}”(h]”j'ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j8'h´M˜hj'h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ initialize queue pair attributes”h]”hŒ initialize queue pair attributes”…”�”}”(hjZ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M˜hjW(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj'h²hh³j8'h´M˜ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjr(jÓjr(jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Parameters** ``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ``struct ib_qp *qp`` Queue pair pointer. **Description** Initialized the attributes of queue pair 'qp' by allowing local write, remote read and remote write. Also transitions 'qp' to state IB_QPS_INIT.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mœhjv(ubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hj›(h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M™hj•(ubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hj´(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 ib_qp *qp`` Queue pair pointer. ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjÔ(h]”hŒstruct ib_qp *qp”…”�”}”(hjÖ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MšhjÎ(ubj)�”}”(hhh]”hÝ)�”}”(hŒQueue pair pointer.”h]”hŒQueue pair pointer.”…”�”}”(hjí(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjv(ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj)h]”hŒ Description”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj )ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mœhjv(ubhÝ)�”}”(hŒ�Initialized the attributes of queue pair 'qp' by allowing local write, remote read and remote write. Also transitions 'qp' to state IB_QPS_INIT.”h]”hŒ˜Initialized the attributes of queue pair ‘qp’ by allowing local write, remote read and remote write. Also transitions ‘qp’ to state IB_QPS_INIT.”…”�”}”(hj%)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M›hjv(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_ch_qp_rtr (C function)”Œc.srpt_ch_qp_rtr”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ>int srpt_ch_qp_rtr (struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”j")�”}”(hŒ=int srpt_ch_qp_rtr(struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjT)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjP)h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M½ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjP)h²hh³jb)h´M½ubjš)�”}”(hŒsrpt_ch_qp_rtr”h]”jN)�”}”(hŒsrpt_ch_qp_rtr”h]”hŒsrpt_ch_qp_rtr”…”�”}”(hju)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjq)ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjP)h²hh³jb)h´M½ubj·)�”}”(hŒ+(struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‘)h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�)ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hj¯)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¬)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j±)Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjw)sbŒc.srpt_ch_qp_rtr”†”asbuh1hhj�)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�)ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÝ)h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�)ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjê)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‰)ubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÿ)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿ)ubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hj!*h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j#*Œmodname”NŒ classname”Njkjn)�”}”jq]”jË)Œc.srpt_ch_qp_rtr”†”asbuh1hhjÿ)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿ)ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjM*h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÿ)ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjZ*h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‰)ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjP)h²hh³jb)h´M½ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjL)h²hh³jb)h´M½ubah}”(h]”jG)ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jb)h´M½hjI)h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ9change the state of a channel to 'ready to receive' (RTR)”h]”hŒ=change the state of a channel to ‘ready to receive’ (RTR)”…”�”}”(hj„*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M½hj�*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjI)h²hh³jb)h´M½ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjœ*jÓjœ*jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX�**Parameters** ``struct srpt_rdma_ch *ch`` channel of the queue pair. ``struct ib_qp *qp`` queue pair to change the state of. **Description** Returns zero upon success and a negative value upon failure. **Note** currently a struct ib_qp_attr takes 136 bytes on a 64-bit system. If this structure ever becomes larger, it might be necessary to allocate it dynamically instead of on the stack.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¦*h]”hŒ Parameters”…”�”}”(hj¨*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¤*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÁhj *ubjø)�”}”(hhh]”(jý)�”}”(hŒ7``struct srpt_rdma_ch *ch`` channel of the queue pair. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hjÅ*h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hjÇ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¾hj¿*ubj)�”}”(hhh]”hÝ)�”}”(hŒchannel of the queue pair.”h]”hŒchannel of the queue pair.”…”�”}”(hjÞ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``struct ib_qp *qp`` queue pair to change the state of. ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjþ*h]”hŒstruct ib_qp *qp”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¿hjø*ubj)�”}”(hhh]”hÝ)�”}”(hŒ"queue pair to change the state of.”h]”hŒ"queue pair to change the state of.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 *ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj9+h]”hŒ Description”…”�”}”(hj;+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj7+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÁhj *ubhÝ)�”}”(hŒint srpt_ch_qp_rts (struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”j")�”}”(hŒ=int srpt_ch_qp_rts(struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¡+h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÝubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´+h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡+h²hh³j³+h´MÝubjš)�”}”(hŒsrpt_ch_qp_rts”h]”jN)�”}”(hŒsrpt_ch_qp_rts”h]”hŒsrpt_ch_qp_rts”…”�”}”(hjÆ+h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÂ+ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj¡+h²hh³j³+h´MÝubj·)�”}”(hŒ+(struct srpt_rdma_ch *ch, struct ib_qp *qp)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjâ+h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÞ+ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï+h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ+ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjý+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j,Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÈ+sbŒc.srpt_ch_qp_rts”†”asbuh1hhjÞ+ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ+ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj.,h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÞ+ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hj;,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÞ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚ+ubj½)�”}”(hŒstruct ib_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjT,h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjP,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjP,ubh)�”}”(hhh]”jN)�”}”(hŒib_qp”h]”hŒib_qp”…”�”}”(hjr,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjo,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jt,Œmodname”NŒ classname”Njkjn)�”}”jq]”j,Œc.srpt_ch_qp_rts”†”asbuh1hhjP,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjP,ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjž,h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjP,ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj«,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjP,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÚ+ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj¡+h²hh³j³+h´MÝubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj�+h²hh³j³+h´MÝubah}”(h]”j˜+ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j³+h´MÝhjš+h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ6change the state of a channel to 'ready to send' (RTS)”h]”hŒ:change the state of a channel to ‘ready to send’ (RTS)”…”�”}”(hjÕ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÝhjÒ,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjš+h²hh³j³+h´MÝubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjí,jÓjí,jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX�**Parameters** ``struct srpt_rdma_ch *ch`` channel of the queue pair. ``struct ib_qp *qp`` queue pair to change the state of. **Description** Returns zero upon success and a negative value upon failure. **Note** currently a struct ib_qp_attr takes 136 bytes on a 64-bit system. If this structure ever becomes larger, it might be necessary to allocate it dynamically instead of on the stack.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj÷,h]”hŒ Parameters”…”�”}”(hjù,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjõ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Máhjñ,ubjø)�”}”(hhh]”(jý)�”}”(hŒ7``struct srpt_rdma_ch *ch`` channel of the queue pair. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hj-h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÞhj-ubj)�”}”(hhh]”hÝ)�”}”(hŒchannel of the queue pair.”h]”hŒchannel of the queue pair.”…”�”}”(hj/-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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``struct ib_qp *qp`` queue pair to change the state of. ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjO-h]”hŒstruct ib_qp *qp”…”�”}”(hjQ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MßhjI-ubj)�”}”(hhh]”hÝ)�”}”(hŒ"queue pair to change the state of.”h]”hŒ"queue pair to change the state of.”…”�”}”(hjh-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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ñ,ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjŠ-h]”hŒ Description”…”�”}”(hjŒ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjˆ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Máhjñ,ubhÝ)�”}”(hŒ2h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mkubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>2h²hh³jP2h´Mkubjš)�”}”(hŒsrpt_rdma_read_done”h]”jN)�”}”(hŒsrpt_rdma_read_done”h]”hŒsrpt_rdma_read_done”…”�”}”(hjc2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj_2ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj>2h²hh³jP2h´Mkubj·)�”}”(hŒ$(struct ib_cq *cq, struct ib_wc *wc)”h]”(j½)�”}”(hŒstruct ib_cq *cq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj{2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{2ubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjš2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŸ2Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgje2sbŒc.srpt_rdma_read_done”†”asbuh1hhj{2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{2ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjË2h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj{2ubjN)�”}”(hŒcq”h]”hŒcq”…”�”}”(hjØ2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj{2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjw2ubj½)�”}”(hŒstruct ib_wc *wc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjñ2h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjí2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjí2ubh)�”}”(hhh]”jN)�”}”(hŒib_wc”h]”hŒib_wc”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj 3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j3Œmodname”NŒ classname”Njkjn)�”}”jq]”j¹2Œc.srpt_rdma_read_done”†”asbuh1hhjí2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjí2ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj;3h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjí2ubjN)�”}”(hŒwc”h]”hŒwc”…”�”}”(hjH3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjí2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjw2ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj>2h²hh³jP2h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj:2h²hh³jP2h´Mkubah}”(h]”j52ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jP2h´Mkhj72h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒRDMA read completion callback”h]”hŒRDMA read completion callback”…”�”}”(hjr3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mkhjo3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj72h²hh³jP2h´Mkubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjŠ3jÓjŠ3jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXf**Parameters** ``struct ib_cq *cq`` Completion queue. ``struct ib_wc *wc`` Work completion. **Description** XXX: what is now target_execute_cmd used to be asynchronous, and unmapping the data that has been transferred via IB RDMA had to be postponed until the check_stop_free() callback. None of this is necessary anymore and needs to be cleaned up.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MohjŽ3ubjø)�”}”(hhh]”(jý)�”}”(hŒ'``struct ib_cq *cq`` Completion queue. ”h]”(j)�”}”(hŒ``struct ib_cq *cq``”h]”j )�”}”(hj³3h]”hŒstruct ib_cq *cq”…”�”}”(hjµ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mlhj­3ubj)�”}”(hhh]”hÝ)�”}”(hŒCompletion queue.”h]”hŒCompletion queue.”…”�”}”(hjÌ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÈ3h´MlhjÉ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÈ3h´Mlhjª3ubjý)�”}”(hŒ&``struct ib_wc *wc`` Work completion. ”h]”(j)�”}”(hŒ``struct ib_wc *wc``”h]”j )�”}”(hjì3h]”hŒstruct ib_wc *wc”…”�”}”(hjî3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjê3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mmhjæ3ubj)�”}”(hhh]”hÝ)�”}”(hŒWork completion.”h]”hŒWork completion.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j4h´Mmhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j4h´Mmhjª3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŽ3ubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MohjŽ3ubhÝ)�”}”(hŒòXXX: what is now target_execute_cmd used to be asynchronous, and unmapping the data that has been transferred via IB RDMA had to be postponed until the check_stop_free() callback. None of this is necessary anymore and needs to be cleaned up.”h]”hŒòXXX: what is now target_execute_cmd used to be asynchronous, and unmapping the data that has been transferred via IB RDMA had to be postponed until the check_stop_free() callback. None of this is necessary anymore and needs to be cleaned up.”…”�”}”(hj=4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MnhjŽ3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_build_cmd_rsp (C function)”Œc.srpt_build_cmd_rsp”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdint srpt_build_cmd_rsp (struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, u64 tag, int status)”h]”j")�”}”(hŒcint srpt_build_cmd_rsp(struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, u64 tag, int status)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjl4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjh4h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MŽubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh4h²hh³jz4h´MŽubjš)�”}”(hŒsrpt_build_cmd_rsp”h]”jN)�”}”(hŒsrpt_build_cmd_rsp”h]”hŒsrpt_build_cmd_rsp”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‰4ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh4h²hh³jz4h´MŽubj·)�”}”(hŒM(struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, u64 tag, int status)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj©4h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¥4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥4ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hjÇ4h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÄ4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÉ4Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj�4sbŒc.srpt_build_cmd_rsp”†”asbuh1hhj¥4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥4ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjõ4h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¥4ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¥4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¡4ubj½)�”}”(hŒstruct srpt_send_ioctx *ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hj95h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj65ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j;5Œmodname”NŒ classname”Njkjn)�”}”jq]”jã4Œc.srpt_build_cmd_rsp”†”asbuh1hhj5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hje5h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj5ubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hjr5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¡4ubj½)�”}”(hŒu64 tag”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjŽ5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‹5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�5Œmodname”NŒ classname”Njkjn)�”}”jq]”jã4Œc.srpt_build_cmd_rsp”†”asbuh1hhj‡5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡5ubjN)�”}”(hŒtag”h]”hŒtag”…”�”}”(hjº5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¡4ubj½)�”}”(hŒ int status”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓ5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÏ5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏ5ubjN)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hjï5h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÏ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¡4ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjh4h²hh³jz4h´MŽubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjd4h²hh³jz4h´MŽubah}”(h]”j_4ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jz4h´MŽhja4h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒbuild a SRP_RSP response”h]”hŒbuild a SRP_RSP response”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MŽhj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hja4h²hh³jz4h´MŽubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj16jÓj16jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXå**Parameters** ``struct srpt_rdma_ch *ch`` RDMA channel through which the request has been received. ``struct srpt_send_ioctx *ioctx`` I/O context associated with the SRP_CMD request. The response will be built in the buffer ioctx->buf points at and hence this function will overwrite the request data. ``u64 tag`` tag of the request for which this response is being generated. ``int status`` value for the STATUS field of the SRP_RSP information unit. **Description** Returns the size in bytes of the SRP_RSP response. An SRP_RSP response contains a SCSI status or service response. See also section 6.9 in the SRP r16a document for the format of an SRP_RSP response. See also SPC-2 for more information about sense data.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj;6h]”hŒ Parameters”…”�”}”(hj=6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj96ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M’hj56ubjø)�”}”(hhh]”(jý)�”}”(hŒV``struct srpt_rdma_ch *ch`` RDMA channel through which the request has been received. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hjZ6h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj\6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M�hjT6ubj)�”}”(hhh]”hÝ)�”}”(hŒ9RDMA channel through which the request has been received.”h]”hŒ9RDMA channel through which the request has been received.”…”�”}”(hjs6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jo6h´M�hjp6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jo6h´M�hjQ6ubjý)�”}”(hŒÊ``struct srpt_send_ioctx *ioctx`` I/O context associated with the SRP_CMD request. The response will be built in the buffer ioctx->buf points at and hence this function will overwrite the request data. ”h]”(j)�”}”(hŒ!``struct srpt_send_ioctx *ioctx``”h]”j )�”}”(hj“6h]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hj•6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M’hj�6ubj)�”}”(hhh]”hÝ)�”}”(hŒ§I/O context associated with the SRP_CMD request. The response will be built in the buffer ioctx->buf points at and hence this function will overwrite the request data.”h]”hŒ§I/O context associated with the SRP_CMD request. The response will be built in the buffer ioctx->buf points at and hence this function will overwrite the request data.”…”�”}”(hj¬6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M�hj©6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¨6h´M’hjQ6ubjý)�”}”(hŒK``u64 tag`` tag of the request for which this response is being generated. ”h]”(j)�”}”(hŒ ``u64 tag``”h]”j )�”}”(hjÍ6h]”hŒu64 tag”…”�”}”(hjÏ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M“hjÇ6ubj)�”}”(hhh]”hÝ)�”}”(hŒ>tag of the request for which this response is being generated.”h]”hŒ>tag of the request for which this response is being generated.”…”�”}”(hjæ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jâ6h´M“hjã6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jâ6h´M“hjQ6ubjý)�”}”(hŒK``int status`` value for the STATUS field of the SRP_RSP information unit. ”h]”(j)�”}”(hŒ``int status``”h]”j )�”}”(hj7h]”hŒ int status”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M”hj7ubj)�”}”(hhh]”hÝ)�”}”(hŒ;value for the STATUS field of the SRP_RSP information unit.”h]”hŒ;value for the STATUS field of the SRP_RSP information unit.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7h´M”hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j7h´M”hjQ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj56ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjA7h]”hŒ Description”…”�”}”(hjC7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj?7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M–hj56ubhÝ)�”}”(hŒ2Returns the size in bytes of the SRP_RSP response.”h]”hŒ2Returns the size in bytes of the SRP_RSP response.”…”�”}”(hjW7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M•hj56ubhÝ)�”}”(hŒÊAn SRP_RSP response contains a SCSI status or service response. See also section 6.9 in the SRP r16a document for the format of an SRP_RSP response. See also SPC-2 for more information about sense data.”h]”hŒÊAn SRP_RSP response contains a SCSI status or service response. See also section 6.9 in the SRP r16a document for the format of an SRP_RSP response. See also SPC-2 for more information about sense data.”…”�”}”(hjf7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M—hj56ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#srpt_build_tskmgmt_rsp (C function)”Œc.srpt_build_tskmgmt_rsp”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiint srpt_build_tskmgmt_rsp (struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, u8 rsp_code, u64 tag)”h]”j")�”}”(hŒhint srpt_build_tskmgmt_rsp(struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, u8 rsp_code, u64 tag)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj•7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj‘7h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘7h²hh³j£7h´Mâubjš)�”}”(hŒsrpt_build_tskmgmt_rsp”h]”jN)�”}”(hŒsrpt_build_tskmgmt_rsp”h]”hŒsrpt_build_tskmgmt_rsp”…”�”}”(hj¶7h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj²7ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj‘7h²hh³j£7h´Mâubj·)�”}”(hŒN(struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, u8 rsp_code, u64 tag)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÒ7h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÎ7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÎ7ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hjð7h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjí7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jò7Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¸7sbŒc.srpt_build_tskmgmt_rsp”†”asbuh1hhjÎ7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÎ7ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÎ7ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hj+8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÎ7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÊ7ubj½)�”}”(hŒstruct srpt_send_ioctx *ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjD8h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj@8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj@8ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hjb8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj_8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jd8Œmodname”NŒ classname”Njkjn)�”}”jq]”j 8Œc.srpt_build_tskmgmt_rsp”†”asbuh1hhj@8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj@8ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjŽ8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj@8ubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hj›8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj@8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÊ7ubj½)�”}”(hŒ u8 rsp_code”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj·8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj´8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¹8Œmodname”NŒ classname”Njkjn)�”}”jq]”j 8Œc.srpt_build_tskmgmt_rsp”†”asbuh1hhj°8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj°8ubjN)�”}”(hŒrsp_code”h]”hŒrsp_code”…”�”}”(hjã8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj°8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÊ7ubj½)�”}”(hŒu64 tag”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÿ8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjü8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j9Œmodname”NŒ classname”Njkjn)�”}”jq]”j 8Œc.srpt_build_tskmgmt_rsp”†”asbuh1hhjø8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjø8ubjN)�”}”(hŒtag”h]”hŒtag”…”�”}”(hj+9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjø8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÊ7ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj‘7h²hh³j£7h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj�7h²hh³j£7h´Mâubah}”(h]”jˆ7ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j£7h´MâhjŠ7h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ build a task management response”h]”hŒ build a task management response”…”�”}”(hjU9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MâhjR9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjŠ7h²hh³j£7h´Mâubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjm9jÓjm9jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX/**Parameters** ``struct srpt_rdma_ch *ch`` RDMA channel through which the request has been received. ``struct srpt_send_ioctx *ioctx`` I/O context in which the SRP_RSP response will be built. ``u8 rsp_code`` RSP_CODE that will be stored in the response. ``u64 tag`` Tag of the request for which this response is being generated. **Description** Returns the size in bytes of the SRP_RSP response. An SRP_RSP response contains a SCSI status or service response. See also section 6.9 in the SRP r16a document for the format of an SRP_RSP response.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjw9h]”hŒ Parameters”…”�”}”(hjy9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhju9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mæhjq9ubjø)�”}”(hhh]”(jý)�”}”(hŒV``struct srpt_rdma_ch *ch`` RDMA channel through which the request has been received. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hj–9h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj˜9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mãhj�9ubj)�”}”(hhh]”hÝ)�”}”(hŒ9RDMA channel through which the request has been received.”h]”hŒ9RDMA channel through which the request has been received.”…”�”}”(hj¯9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j«9h´Mãhj¬9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j«9h´Mãhj�9ubjý)�”}”(hŒ[``struct srpt_send_ioctx *ioctx`` I/O context in which the SRP_RSP response will be built. ”h]”(j)�”}”(hŒ!``struct srpt_send_ioctx *ioctx``”h]”j )�”}”(hjÏ9h]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hjÑ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MähjÉ9ubj)�”}”(hhh]”hÝ)�”}”(hŒ8I/O context in which the SRP_RSP response will be built.”h]”hŒ8I/O context in which the SRP_RSP response will be built.”…”�”}”(hjè9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jä9h´Mähjå9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jä9h´Mähj�9ubjý)�”}”(hŒ>``u8 rsp_code`` RSP_CODE that will be stored in the response. ”h]”(j)�”}”(hŒ``u8 rsp_code``”h]”j )�”}”(hj:h]”hŒ u8 rsp_code”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Måhj:ubj)�”}”(hhh]”hÝ)�”}”(hŒ-RSP_CODE that will be stored in the response.”h]”hŒ-RSP_CODE that will be stored in the response.”…”�”}”(hj!:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j:h´Måhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j:h´Måhj�9ubjý)�”}”(hŒK``u64 tag`` Tag of the request for which this response is being generated. ”h]”(j)�”}”(hŒ ``u64 tag``”h]”j )�”}”(hjA:h]”hŒu64 tag”…”�”}”(hjC:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mæhj;:ubj)�”}”(hhh]”hÝ)�”}”(hŒ>Tag of the request for which this response is being generated.”h]”hŒ>Tag of the request for which this response is being generated.”…”�”}”(hjZ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jV:h´MæhjW:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jV:h´Mæhj�9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjq9ubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mèhjq9ubhÝ)�”}”(hŒ2Returns the size in bytes of the SRP_RSP response.”h]”hŒ2Returns the size in bytes of the SRP_RSP response.”…”�”}”(hj’:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mçhjq9ubhÝ)�”}”(hŒ”An SRP_RSP response contains a SCSI status or service response. See also section 6.9 in the SRP r16a document for the format of an SRP_RSP response.”h]”hŒ”An SRP_RSP response contains a SCSI status or service response. See also section 6.9 in the SRP r16a document for the format of an SRP_RSP response.”…”�”}”(hj¡:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Méhjq9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_handle_cmd (C function)”Œc.srpt_handle_cmd”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvvoid srpt_handle_cmd (struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *send_ioctx)”h]”j")�”}”(hŒuvoid srpt_handle_cmd(struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *send_ioctx)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÐ:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÌ:h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÌ:h²hh³jÞ:h´Mubjš)�”}”(hŒsrpt_handle_cmd”h]”jN)�”}”(hŒsrpt_handle_cmd”h]”hŒsrpt_handle_cmd”…”�”}”(hjñ:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjí:ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÌ:h²hh³jÞ:h´Mubj·)�”}”(hŒa(struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *send_ioctx)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj ;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ;ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hj+;h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj(;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j-;Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjó:sbŒc.srpt_handle_cmd”†”asbuh1hhj ;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ;ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjY;h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj ;ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjf;h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj;ubj½)�”}”(hŒ"struct srpt_recv_ioctx *recv_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj{;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{;ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjš;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŸ;Œmodname”NŒ classname”Njkjn)�”}”jq]”jG;Œc.srpt_handle_cmd”†”asbuh1hhj{;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{;ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÉ;h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj{;ubjN)�”}”(hŒ recv_ioctx”h]”hŒ recv_ioctx”…”�”}”(hjÖ;h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj{;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj;ubj½)�”}”(hŒ"struct srpt_send_ioctx *send_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjï;h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjë;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjë;ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj <ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j<Œmodname”NŒ classname”Njkjn)�”}”jq]”jG;Œc.srpt_handle_cmd”†”asbuh1hhjë;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjë;ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj9<h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjë;ubjN)�”}”(hŒ send_ioctx”h]”hŒ send_ioctx”…”�”}”(hjF<h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjë;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj;ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÌ:h²hh³jÞ:h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÈ:h²hh³jÞ:h´Mubah}”(h]”jÃ:ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÞ:h´MhjÅ:h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ"process a SRP_CMD information unit”h]”hŒ"process a SRP_CMD information unit”…”�”}”(hjp<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjm<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÅ:h²hh³jÞ:h´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjˆ<jÓjˆ<jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ»**Parameters** ``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ``struct srpt_recv_ioctx *recv_ioctx`` Receive I/O context. ``struct srpt_send_ioctx *send_ioctx`` Send I/O context.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj’<h]”hŒ Parameters”…”�”}”(hj”<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj�<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MhjŒ<ubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hj±<h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj³<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj«<ubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hjÊ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÆ<h´MhjÇ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÆ<h´Mhj¨<ubjý)�”}”(hŒ<``struct srpt_recv_ioctx *recv_ioctx`` Receive I/O context. ”h]”(j)�”}”(hŒ&``struct srpt_recv_ioctx *recv_ioctx``”h]”j )�”}”(hjê<h]”hŒ"struct srpt_recv_ioctx *recv_ioctx”…”�”}”(hjì<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjè<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhjä<ubj)�”}”(hhh]”hÝ)�”}”(hŒReceive I/O context.”h]”hŒReceive I/O context.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÿ<h´Mhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÿ<h´Mhj¨<ubjý)�”}”(hŒ8``struct srpt_send_ioctx *send_ioctx`` Send I/O context.”h]”(j)�”}”(hŒ&``struct srpt_send_ioctx *send_ioctx``”h]”j )�”}”(hj#=h]”hŒ"struct srpt_send_ioctx *send_ioctx”…”�”}”(hj%=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj=ubj)�”}”(hhh]”hÝ)�”}”(hŒSend I/O context.”h]”hŒSend I/O context.”…”�”}”(hj<=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj9=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j8=h´Mhj¨<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŒ<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!srpt_handle_tsk_mgmt (C function)”Œc.srpt_handle_tsk_mgmt”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ{void srpt_handle_tsk_mgmt (struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *send_ioctx)”h]”j")�”}”(hŒzvoid srpt_handle_tsk_mgmt(struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *send_ioctx)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjy=h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy=h²hh³j‹=h´Mjubjš)�”}”(hŒsrpt_handle_tsk_mgmt”h]”jN)�”}”(hŒsrpt_handle_tsk_mgmt”h]”hŒsrpt_handle_tsk_mgmt”…”�”}”(hjž=h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjš=ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjy=h²hh³j‹=h´Mjubj·)�”}”(hŒa(struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx, struct srpt_send_ioctx *send_ioctx)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjº=h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¶=ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶=ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hjØ=h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÕ=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÚ=Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj =sbŒc.srpt_handle_tsk_mgmt”†”asbuh1hhj¶=ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶=ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¶=ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¶=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj²=ubj½)�”}”(hŒ"struct srpt_recv_ioctx *recv_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj,>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj(>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj(>ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(hjJ>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjG>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jL>Œmodname”NŒ classname”Njkjn)�”}”jq]”jô=Œc.srpt_handle_tsk_mgmt”†”asbuh1hhj(>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj(>ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjv>h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj(>ubjN)�”}”(hŒ recv_ioctx”h]”hŒ recv_ioctx”…”�”}”(hjƒ>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj(>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj²=ubj½)�”}”(hŒ"struct srpt_send_ioctx *send_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjœ>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj˜>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜>ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hjº>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj·>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¼>Œmodname”NŒ classname”Njkjn)�”}”jq]”jô=Œc.srpt_handle_tsk_mgmt”†”asbuh1hhj˜>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜>ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjæ>h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜>ubjN)�”}”(hŒ send_ioctx”h]”hŒ send_ioctx”…”�”}”(hjó>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj˜>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj²=ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjy=h²hh³j‹=h´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hju=h²hh³j‹=h´Mjubah}”(h]”jp=ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‹=h´Mjhjr=h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ'process a SRP_TSK_MGMT information unit”h]”hŒ'process a SRP_TSK_MGMT information unit”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mjhj?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjr=h²hh³j‹=h´Mjubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj5?jÓj5?jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXƒ**Parameters** ``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ``struct srpt_recv_ioctx *recv_ioctx`` Receive I/O context. ``struct srpt_send_ioctx *send_ioctx`` Send I/O context. **Description** Returns 0 if and only if the request will be processed by the target core. For more information about SRP_TSK_MGMT information units, see also section 6.7 in the SRP r16a document.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mnhj9?ubjø)�”}”(hhh]”(jý)�”}”(hŒ/``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hj^?h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj`?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MkhjX?ubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hjw?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³js?h´Mkhjt?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³js?h´MkhjU?ubjý)�”}”(hŒ<``struct srpt_recv_ioctx *recv_ioctx`` Receive I/O context. ”h]”(j)�”}”(hŒ&``struct srpt_recv_ioctx *recv_ioctx``”h]”j )�”}”(hj—?h]”hŒ"struct srpt_recv_ioctx *recv_ioctx”…”�”}”(hj™?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mlhj‘?ubj)�”}”(hhh]”hÝ)�”}”(hŒReceive I/O context.”h]”hŒReceive I/O context.”…”�”}”(hj°?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¬?h´Mlhj­?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¬?h´MlhjU?ubjý)�”}”(hŒ9``struct srpt_send_ioctx *send_ioctx`` Send I/O context. ”h]”(j)�”}”(hŒ&``struct srpt_send_ioctx *send_ioctx``”h]”j )�”}”(hjÐ?h]”hŒ"struct srpt_send_ioctx *send_ioctx”…”�”}”(hjÒ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MmhjÊ?ubj)�”}”(hhh]”hÝ)�”}”(hŒSend I/O context.”h]”hŒSend I/O context.”…”�”}”(hjé?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jå?h´Mmhjæ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jå?h´MmhjU?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj9?ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj @h]”hŒ Description”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj @ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mohj9?ubhÝ)�”}”(hŒJReturns 0 if and only if the request will be processed by the target core.”h]”hŒJReturns 0 if and only if the request will be processed by the target core.”…”�”}”(hj!@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mnhj9?ubhÝ)�”}”(hŒiFor more information about SRP_TSK_MGMT information units, see also section 6.7 in the SRP r16a document.”h]”hŒiFor more information about SRP_TSK_MGMT information units, see also section 6.7 in the SRP r16a document.”…”�”}”(hj0@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mphj9?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_handle_new_iu (C function)”Œc.srpt_handle_new_iu”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒUbool srpt_handle_new_iu (struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx)”h]”j")�”}”(hŒTbool srpt_handle_new_iu(struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx)”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hj_@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj[@h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M–ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[@h²hh³jl@h´M–ubjš)�”}”(hŒsrpt_handle_new_iu”h]”jN)�”}”(hŒsrpt_handle_new_iu”h]”hŒsrpt_handle_new_iu”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj{@ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj[@h²hh³jl@h´M–ubj·)�”}”(hŒ=(struct srpt_rdma_ch *ch, struct srpt_recv_ioctx *recv_ioctx)”h]”(j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj›@h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj—@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—@ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hj¹@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¶@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j»@Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj�@sbŒc.srpt_handle_new_iu”†”asbuh1hhj—@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—@ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjç@h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj—@ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjô@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj—@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“@ubj½)�”}”(hŒ"struct srpt_recv_ioctx *recv_ioctx”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Aubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Aubh)�”}”(hhh]”jN)�”}”(hŒsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(hj+Ah²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj(Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j-AŒmodname”NŒ classname”Njkjn)�”}”jq]”jÕ@Œc.srpt_handle_new_iu”†”asbuh1hhj Aubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIAh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Aubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjWAh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj AubjN)�”}”(hŒ recv_ioctx”h]”hŒ recv_ioctx”…”�”}”(hjdAh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj“@ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj[@h²hh³jl@h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjW@h²hh³jl@h´M–ubah}”(h]”jR@ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jl@h´M–hjT@h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ)process a newly received information unit”h]”hŒ)process a newly received information unit”…”�”}”(hjŽAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M–hj‹Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjT@h²hh³jl@h´M–ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¦AjÓj¦AjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒÔ**Parameters** ``struct srpt_rdma_ch *ch`` RDMA channel through which the information unit has been received. ``struct srpt_recv_ioctx *recv_ioctx`` Receive I/O context associated with the information unit.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MšhjªAubjø)�”}”(hhh]”(jý)�”}”(hŒ_``struct srpt_rdma_ch *ch`` RDMA channel through which the information unit has been received. ”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hjÏAh]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hjÑAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M—hjÉAubj)�”}”(hhh]”hÝ)�”}”(hŒBRDMA channel through which the information unit has been received.”h]”hŒBRDMA channel through which the information unit has been received.”…”�”}”(hjèAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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 srpt_recv_ioctx *recv_ioctx`` Receive I/O context associated with the information unit.”h]”(j)�”}”(hŒ&``struct srpt_recv_ioctx *recv_ioctx``”h]”j )�”}”(hjBh]”hŒ"struct srpt_recv_ioctx *recv_ioctx”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M™hjBubj)�”}”(hhh]”hÝ)�”}”(hŒ9Receive I/O context associated with the information unit.”h]”hŒ9Receive I/O context associated with the information unit.”…”�”}”(hj!Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M˜hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jBh´M™hjÆAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjªAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_send_done (C function)”Œc.srpt_send_done”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8void srpt_send_done (struct ib_cq *cq, struct ib_wc *wc)”h]”j")�”}”(hŒ7void srpt_send_done(struct ib_cq *cq, struct ib_wc *wc)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjbBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj^Bh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqBh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^Bh²hh³jpBh´Mubjš)�”}”(hŒsrpt_send_done”h]”jN)�”}”(hŒsrpt_send_done”h]”hŒsrpt_send_done”…”�”}”(hjƒBh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjBubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj^Bh²hh³jpBh´Mubj·)�”}”(hŒ$(struct ib_cq *cq, struct ib_wc *wc)”h]”(j½)�”}”(hŒstruct ib_cq *cq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŸBh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj›Bubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Bh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj›Bubh)�”}”(hhh]”jN)�”}”(hŒib_cq”h]”hŒib_cq”…”�”}”(hj½Bh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjºBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j¿BŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj…BsbŒc.srpt_send_done”†”asbuh1hhj›Bubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝBh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj›Bubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjëBh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj›BubjN)�”}”(hŒcq”h]”hŒcq”…”�”}”(hjøBh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj›Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj—Bubj½)�”}”(hŒstruct ib_wc *wc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Cubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Cubh)�”}”(hhh]”jN)�”}”(hŒib_wc”h]”hŒib_wc”…”�”}”(hj/Ch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj,Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j1CŒmodname”NŒ classname”Njkjn)�”}”jq]”jÙBŒc.srpt_send_done”†”asbuh1hhj Cubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Cubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj[Ch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj CubjN)�”}”(hŒwc”h]”hŒwc”…”�”}”(hjhCh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj—Bubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj^Bh²hh³jpBh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjZBh²hh³jpBh´Mubah}”(h]”jUBah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jpBh´MhjWBh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒsend completion callback”h]”hŒsend completion callback”…”�”}”(hj’Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj�Ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjWBh²hh³jpBh´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjªCjÓjªCjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXI**Parameters** ``struct ib_cq *cq`` Completion queue. ``struct ib_wc *wc`` Work completion. **Note** Although this has not yet been observed during tests, at least in theory it is possible that the srpt_get_send_ioctx() call invoked by srpt_handle_new_iu() fails. This is possible because the req_lim_delta value in each response is set to one, and it is possible that this response makes the initiator send a new request before the send completion for that response has been processed. This could e.g. happen if the call to srpt_put_send_iotcx() is delayed because of a higher priority interrupt or if IB retransmission causes generation of the send completion to be delayed. Incoming information units for which srpt_get_send_ioctx() fails are queued on cmd_wait_list. The code below processes these delayed requests one at a time.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj®Cubjø)�”}”(hhh]”(jý)�”}”(hŒ'``struct ib_cq *cq`` Completion queue. ”h]”(j)�”}”(hŒ``struct ib_cq *cq``”h]”j )�”}”(hjÓCh]”hŒstruct ib_cq *cq”…”�”}”(hjÕCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑCubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MhjÍCubj)�”}”(hhh]”hÝ)�”}”(hŒCompletion queue.”h]”hŒCompletion queue.”…”�”}”(hjìCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jèCh´MhjéCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jèCh´MhjÊCubjý)�”}”(hŒ&``struct ib_wc *wc`` Work completion. ”h]”(j)�”}”(hŒ``struct ib_wc *wc``”h]”j )�”}”(hj Dh]”hŒstruct ib_wc *wc”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MhjDubj)�”}”(hhh]”hÝ)�”}”(hŒWork completion.”h]”hŒWork completion.”…”�”}”(hj%Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j!Dh´Mhj"Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j!Dh´MhjÊCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj®CubhÝ)�”}”(hŒ**Note**”h]”jâ)�”}”(hjGDh]”hŒNote”…”�”}”(hjIDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjEDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj®CubhÝ)�”}”(hXÜAlthough this has not yet been observed during tests, at least in theory it is possible that the srpt_get_send_ioctx() call invoked by srpt_handle_new_iu() fails. This is possible because the req_lim_delta value in each response is set to one, and it is possible that this response makes the initiator send a new request before the send completion for that response has been processed. This could e.g. happen if the call to srpt_put_send_iotcx() is delayed because of a higher priority interrupt or if IB retransmission causes generation of the send completion to be delayed. Incoming information units for which srpt_get_send_ioctx() fails are queued on cmd_wait_list. The code below processes these delayed requests one at a time.”h]”hXÜAlthough this has not yet been observed during tests, at least in theory it is possible that the srpt_get_send_ioctx() call invoked by srpt_handle_new_iu() fails. This is possible because the req_lim_delta value in each response is set to one, and it is possible that this response makes the initiator send a new request before the send completion for that response has been processed. This could e.g. happen if the call to srpt_put_send_iotcx() is delayed because of a higher priority interrupt or if IB retransmission causes generation of the send completion to be delayed. Incoming information units for which srpt_get_send_ioctx() fails are queued on cmd_wait_list. The code below processes these delayed requests one at a time.”…”�”}”(hj]Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mhj®Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_create_ch_ib (C function)”Œc.srpt_create_ch_ib”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/int srpt_create_ch_ib (struct srpt_rdma_ch *ch)”h]”j")�”}”(hŒ.int srpt_create_ch_ib(struct srpt_rdma_ch *ch)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjˆDh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Dh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆDh²hh³jšDh´M;ubjš)�”}”(hŒsrpt_create_ch_ib”h]”jN)�”}”(hŒsrpt_create_ch_ib”h]”hŒsrpt_create_ch_ib”…”�”}”(hj­Dh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj©Dubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjˆDh²hh³jšDh´M;ubj·)�”}”(hŒ(struct srpt_rdma_ch *ch)”h]”j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÉDh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÅDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖDh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÅDubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hjçDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjäDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jéDŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj¯DsbŒc.srpt_create_ch_ib”†”asbuh1hhjÅDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÅDubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÅDubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hj"Eh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÅDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÁDubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjˆDh²hh³jšDh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj„Dh²hh³jšDh´M;ubah}”(h]”jDah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jšDh´M;hj�Dh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ)create receive and send completion queues”h]”hŒ)create receive and send completion queues”…”�”}”(hjLEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M;hjIEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj�Dh²hh³jšDh´M;ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjdEjÓjdEjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ@**Parameters** ``struct srpt_rdma_ch *ch`` SRPT RDMA channel.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjnEh]”hŒ Parameters”…”�”}”(hjpEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjlEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M?hjhEubjø)�”}”(hhh]”jý)�”}”(hŒ.``struct srpt_rdma_ch *ch`` SRPT RDMA channel.”h]”(j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hj�Eh]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MAhj‡Eubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hj¦Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M<hj£Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¢Eh´MAhj„Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_close_ch (C function)”Œc.srpt_close_ch”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,bool srpt_close_ch (struct srpt_rdma_ch *ch)”h]”j")�”}”(hŒ+bool srpt_close_ch(struct srpt_rdma_ch *ch)”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hjçEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjãEh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¨ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõEh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjãEh²hh³jôEh´M¨ubjš)�”}”(hŒ srpt_close_ch”h]”jN)�”}”(hŒ srpt_close_ch”h]”hŒ srpt_close_ch”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjFubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjãEh²hh³jôEh´M¨ubj·)�”}”(hŒ(struct srpt_rdma_ch *ch)”h]”j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj#Fh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjFubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Fh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjFubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hjAFh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jCFŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj FsbŒc.srpt_close_ch”†”asbuh1hhjFubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaFh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjFubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjoFh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjFubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hj|Fh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjFubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjãEh²hh³jôEh´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjßEh²hh³jôEh´M¨ubah}”(h]”jÚEah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jôEh´M¨hjÜEh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒclose a RDMA channel”h]”hŒclose a RDMA channel”…”�”}”(hj¦Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¨hj£Fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÜEh²hh³jôEh´M¨ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¾FjÓj¾FjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX**Parameters** ``struct srpt_rdma_ch *ch`` SRPT RDMA channel. **Description** Make sure all resources associated with the channel will be deallocated at an appropriate time. Returns true if and only if the channel state has been modified into CH_DRAINING.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¬hjÂFubjø)�”}”(hhh]”jý)�”}”(hŒ/``struct srpt_rdma_ch *ch`` SRPT RDMA channel. ”h]”(•j)�”}”(hŒ``struct srpt_rdma_ch *ch``”h]”j )�”}”(hjçFh]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hjéFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåFubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M©hjáFubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT RDMA channel.”h]”hŒSRPT RDMA channel.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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÷hjÂFubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M«hjÂFubhÝ)�”}”(hŒ_Make sure all resources associated with the channel will be deallocated at an appropriate time.”h]”hŒ_Make sure all resources associated with the channel will be deallocated at an appropriate time.”…”�”}”(hj8Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MªhjÂFubhÝ)�”}”(hŒQReturns true if and only if the channel state has been modified into CH_DRAINING.”h]”hŒQReturns true if and only if the channel state has been modified into CH_DRAINING.”…”�”}”(hjGGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M­hjÂFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_cm_req_recv (C function)”Œc.srpt_cm_req_recv”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒÀint srpt_cm_req_recv (struct srpt_device *const sdev, struct ib_cm_id *ib_cm_id, struct rdma_cm_id *rdma_cm_id, u8 port_num, __be16 pkey, const struct srp_login_req *req, const char *src_addr)”h]”j")�”}”(hŒ¿int srpt_cm_req_recv(struct srpt_device *const sdev, struct ib_cm_id *ib_cm_id, struct rdma_cm_id *rdma_cm_id, u8 port_num, __be16 pkey, const struct srp_login_req *req, const char *src_addr)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjvGh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjrGh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M˜ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Gh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjrGh²hh³j„Gh´M˜ubjš)�”}”(hŒsrpt_cm_req_recv”h]”jN)�”}”(hŒsrpt_cm_req_recv”h]”hŒsrpt_cm_req_recv”…”�”}”(hj—Gh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj“Gubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjrGh²hh³j„Gh´M˜ubj·)�”}”(hŒ«(struct srpt_device *const sdev, struct ib_cm_id *ib_cm_id, struct rdma_cm_id *rdma_cm_id, u8 port_num, __be16 pkey, const struct srp_login_req *req, const char *src_addr)”h]”(j½)�”}”(hŒstruct srpt_device *const sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj³Gh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¯Gubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯Gubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hjÑGh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÎGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÓGŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj™GsbŒc.srpt_cm_req_recv”†”asbuh1hhj¯Gubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯Gubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÿGh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¯Gubj()�”}”(hjÁh]”hŒconst”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¯Gubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯GubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj'Hh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¯Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj«Gubj½)�”}”(hŒstruct ib_cm_id *ib_cm_id”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj@Hh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hj:Lubj)�”}”(hhh]”hÝ)�”}”(hŒQGID (IB/CM) or IP address (RDMA/CM) of the port that submitted the login request.”h]”hŒQGID (IB/CM) or IP address (RDMA/CM) of the port that submitted the login request.”…”�”}”(hjYLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MŸhjVLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jULh´M hjáJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÅJubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj|Lh]”hŒ Description”…”�”}”(hj~Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjzLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¢hjÅJubhÝ)�”}”(hŒ‹Ownership of the cm_id is transferred to the target session if this function returns zero. Otherwise the caller remains the owner of cm_id.”h]”hŒ‹Ownership of the cm_id is transferred to the target session if this function returns zero. Otherwise the caller remains the owner of cm_id.”…”�”}”(hj’Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M¡hjÅJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_cm_rtu_recv (C function)”Œc.srpt_cm_rtu_recv”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/void srpt_cm_rtu_recv (struct srpt_rdma_ch *ch)”h]”j")�”}”(hŒ.void srpt_cm_rtu_recv(struct srpt_rdma_ch *ch)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÁLh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj½Lh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mi ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½Lh²hh³jÏLh´Mi ubjš)�”}”(hŒsrpt_cm_rtu_recv”h]”jN)�”}”(hŒsrpt_cm_rtu_recv”h]”hŒsrpt_cm_rtu_recv”…”�”}”(hjâLh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÞLubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj½Lh²hh³jÏLh´Mi ubj·)�”}”(hŒ(struct srpt_rdma_ch *ch)”h]”j½)�”}”(hŒstruct srpt_rdma_ch *ch”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjþLh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjúLubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjúLubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jMŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjäLsbŒc.srpt_cm_rtu_recv”†”asbuh1hhjúLubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MŒ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>Nh²hh³jPNh´MŒ ubjš)�”}”(hŒsrpt_cm_handler”h]”jN)�”}”(hŒsrpt_cm_handler”h]”hŒsrpt_cm_handler”…”�”}”(hjcNh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj_Nubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj>Nh²hh³jPNh´MŒ ubj·)�”}”(hŒ9(struct ib_cm_id *cm_id, const struct ib_cm_event *event)”h]”(j½)�”}”(hŒstruct ib_cm_id *cm_id”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj{Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{Nubh)�”}”(hhh]”jN)�”}”(hŒib_cm_id”h]”hŒib_cm_id”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjšNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŸNŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjeNsbŒc.srpt_cm_handler”†”asbuh1hhj{Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{Nubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjËNh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj{NubjN)�”}”(hŒcm_id”h]”hŒcm_id”…”�”}”(hjØNh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj{Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjwNubj½)�”}”(hŒconst struct ib_cm_event *event”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjñNh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjíNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjíNubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjíNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjíNubh)�”}”(hhh]”jN)�”}”(hŒ ib_cm_event”h]”hŒ ib_cm_event”…”�”}”(hj*Oh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj'Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j,OŒmodname”NŒ classname”Njkjn)�”}”jq]”j¹NŒc.srpt_cm_handler”†”asbuh1hhjíNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHOh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjíNubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjVOh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjíNubjN)�”}”(hŒevent”h]”hŒevent”…”�”}”(hjcOh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjíNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjwNubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj>Nh²hh³jPNh´MŒ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj:Nh²hh³jPNh´MŒ ubah}”(h]”j5Nah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jPNh´MŒ hj7Nh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ'IB connection manager callback function”h]”hŒ'IB connection manager callback function”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MŒ hjŠOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj7Nh²hh³jPNh´MŒ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj¥OjÓj¥OjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hXà**Parameters** ``struct ib_cm_id *cm_id`` IB/CM connection identifier. ``const struct ib_cm_event *event`` IB/CM event. **Description** A non-zero return value will cause the caller destroy the CM ID. **Note** srpt_cm_handler() must only return a non-zero value when transferring ownership of the cm_id to a channel by srpt_cm_req_recv() failed. Returning a non-zero value in any other case will trigger a race with the ib_destroy_cm_id() call in srpt_release_channel().”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M� hj©Oubjø)�”}”(hhh]”(jý)�”}”(hŒ8``struct ib_cm_id *cm_id`` IB/CM connection identifier. ”h]”(j)�”}”(hŒ``struct ib_cm_id *cm_id``”h]”j )�”}”(hjÎOh]”hŒstruct ib_cm_id *cm_id”…”�”}”(hjÐOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌOubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M� hjÈOubj)�”}”(hhh]”hÝ)�”}”(hŒIB/CM connection identifier.”h]”hŒIB/CM connection identifier.”…”�”}”(hjçOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jãOh´M� hjäOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jãOh´M� hjÅOubjý)�”}”(hŒ1``const struct ib_cm_event *event`` IB/CM event. ”h]”(j)�”}”(hŒ#``const struct ib_cm_event *event``”h]”j )�”}”(hjPh]”hŒconst struct ib_cm_event *event”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MŽ hjPubj)�”}”(hhh]”hÝ)�”}”(hŒ IB/CM event.”h]”hŒ IB/CM event.”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPh´MŽ hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jPh´MŽ hjÅOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj©OubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjBPh]”hŒ Description”…”�”}”(hjDPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj@Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M� hj©OubhÝ)�”}”(hŒ@A non-zero return value will cause the caller destroy the CM ID.”h]”hŒ@A non-zero return value will cause the caller destroy the CM ID.”…”�”}”(hjXPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M� hj©OubhÝ)�”}”(hŒ**Note**”h]”jâ)�”}”(hjiPh]”hŒNote”…”�”}”(hjkPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjgPubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M‘ hj©OubhÝ)�”}”(hXsrpt_cm_handler() must only return a non-zero value when transferring ownership of the cm_id to a channel by srpt_cm_req_recv() failed. Returning a non-zero value in any other case will trigger a race with the ib_destroy_cm_id() call in srpt_release_channel().”h]”hXsrpt_cm_handler() must only return a non-zero value when transferring ownership of the cm_id to a channel by srpt_cm_req_recv() failed. Returning a non-zero value in any other case will trigger a race with the ib_destroy_cm_id() call in srpt_release_channel().”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M’ hj©Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ srpt_queue_response (C function)”Œc.srpt_queue_response”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void srpt_queue_response (struct se_cmd *cmd)”h]”j")�”}”(hŒ,void srpt_queue_response(struct se_cmd *cmd)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjªPh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M6 ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Ph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjªPh²hh³j¼Ph´M6 ubjš)�”}”(hŒsrpt_queue_response”h]”jN)�”}”(hŒsrpt_queue_response”h]”hŒsrpt_queue_response”…”�”}”(hjÏPh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjËPubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjªPh²hh³j¼Ph´M6 ubj·)�”}”(hŒ(struct se_cmd *cmd)”h]”j½)�”}”(hŒstruct se_cmd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjëPh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjçPubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøPh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçPubh)�”}”(hhh]”jN)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j QŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÑPsbŒc.srpt_queue_response”†”asbuh1hhjçPubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçPubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj7Qh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjçPubjN)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjDQh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjçPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjãPubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjªPh²hh³j¼Ph´M6 ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¦Ph²hh³j¼Ph´M6 ubah}”(h]”j¡Pah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¼Ph´M6 hj£Ph²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ'transmit the response to a SCSI command”h]”hŒ'transmit the response to a SCSI command”…”�”}”(hjnQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M6 hjkQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj£Ph²hh³j¼Ph´M6 ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj†QjÓj†QjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒÍ**Parameters** ``struct se_cmd *cmd`` SCSI target command. **Description** Callback function called by the TCM core. Must not block since it can be invoked on the context of the IB completion handler.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M: hjŠQubjø)�”}”(hhh]”jý)�”}”(hŒ,``struct se_cmd *cmd`` SCSI target command. ”h]”(j)�”}”(hŒ``struct se_cmd *cmd``”h]”j )�”}”(hj¯Qh]”hŒstruct se_cmd *cmd”…”�”}”(hj±Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M7 hj©Qubj)�”}”(hhh]”hÝ)�”}”(hŒSCSI target command.”h]”hŒSCSI target command.”…”�”}”(hjÈQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÄQh´M7 hjÅQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÄQh´M7 hj¦Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŠQubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M9 hjŠQubhÝ)�”}”(hŒ}Callback function called by the TCM core. Must not block since it can be invoked on the context of the IB completion handler.”h]”hŒ}Callback function called by the TCM core. Must not block since it can be invoked on the context of the IB completion handler.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M8 hjŠQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_release_sport (C function)”Œc.srpt_release_sport”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0int srpt_release_sport (struct srpt_port *sport)”h]”j")�”}”(hŒ/int srpt_release_sport(struct srpt_port *sport)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj/Rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj+Rh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÈ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Rh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj+Rh²hh³j=Rh´MÈ ubjš)�”}”(hŒsrpt_release_sport”h]”jN)�”}”(hŒsrpt_release_sport”h]”hŒsrpt_release_sport”…”�”}”(hjPRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjLRubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj+Rh²hh³j=Rh´MÈ ubj·)�”}”(hŒ(struct srpt_port *sport)”h]”j½)�”}”(hŒstruct srpt_port *sport”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjlRh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjhRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjhRubh)�”}”(hhh]”jN)�”}”(hŒ srpt_port”h]”hŒ srpt_port”…”�”}”(hjŠRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‡Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jŒRŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjRRsbŒc.srpt_release_sport”†”asbuh1hhjhRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjhRubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¸Rh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjhRubjN)�”}”(hŒsport”h]”hŒsport”…”�”}”(hjÅRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjhRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjdRubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj+Rh²hh³j=Rh´MÈ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj'Rh²hh³j=Rh´MÈ ubah}”(h]”j"Rah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j=Rh´MÈ hj$Rh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ.disable login and wait for associated channels”h]”hŒ.disable login and wait for associated channels”…”�”}”(hjïRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÈ hjìRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj$Rh²hh³j=Rh´MÈ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjSjÓjSjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ<**Parameters** ``struct srpt_port *sport`` SRPT HCA port.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÌ hj Subjø)�”}”(hhh]”jý)�”}”(hŒ*``struct srpt_port *sport`` SRPT HCA port.”h]”(j)�”}”(hŒ``struct srpt_port *sport``”h]”j )�”}”(hj0Sh]”hŒstruct srpt_port *sport”…”�”}”(hj2Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.Subah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÎ hj*Subj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA port.”h]”hŒSRPT HCA port.”…”�”}”(hjISh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÉ hjFSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jESh´MÎ hj'Subah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_lookup_port (C function)”Œc.srpt_lookup_port”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;struct port_and_port_id srpt_lookup_port (const char *name)”h]”j")�”}”(hŒ:struct port_and_port_id srpt_lookup_port(const char *name)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŠSh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj†Sh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†Sh²hh³j—Sh´M ubh)�”}”(hhh]”jN)�”}”(hŒport_and_port_id”h]”hŒport_and_port_id”…”�”}”(hj©Sh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¦Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j«SŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒsrpt_lookup_port”sbŒc.srpt_lookup_port”†”asbuh1hhj†Sh²hh³j—Sh´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊSh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†Sh²hh³j—Sh´M ubjš)�”}”(hŒsrpt_lookup_port”h]”jN)�”}”(hjÇSh]”hŒsrpt_lookup_port”…”�”}”(hjÜSh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjØSubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj†Sh²hh³j—Sh´M ubj·)�”}”(hŒ(const char *name)”h]”j½)�”}”(hŒconst char *name”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj÷Sh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjóSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjóSubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjóSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjóSubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj.Th²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjóSubjN)�”}”(hŒname”h]”hŒname”…”�”}”(hj;Th²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjóSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjïSubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj†Sh²hh³j—Sh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj‚Sh²hh³j—Sh´M ubah}”(h]”j}Sah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j—Sh´M hjSh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒLook up an RDMA port by name”h]”hŒLook up an RDMA port by name”…”�”}”(hjeTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hjbTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjSh²hh³j—Sh´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj}TjÓj}TjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒà**Parameters** ``const char *name`` ASCII port name **Description** Increments the RDMA port reference count if an RDMA port pointer is returned. The caller must drop that reference count by calling srpt_port_put_ref().”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hj�Tubjø)�”}”(hhh]”jý)�”}”(hŒ%``const char *name`` ASCII port name ”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hj¦Th]”hŒconst char *name”…”�”}”(hj¨Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hj Tubj)�”}”(hhh]”hÝ)�”}”(hŒASCII port name”h]”hŒASCII port name”…”�”}”(hj¿Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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�TubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hj�TubhÝ)�”}”(hŒ—Increments the RDMA port reference count if an RDMA port pointer is returned. The caller must drop that reference count by calling srpt_port_put_ref().”h]”hŒ—Increments the RDMA port reference count if an RDMA port pointer is returned. The caller must drop that reference count by calling srpt_port_put_ref().”…”�”}”(hj÷Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hj�Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_add_one (C function)”Œc.srpt_add_one”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+int srpt_add_one (struct ib_device *device)”h]”j")�”}”(hŒ*int srpt_add_one(struct ib_device *device)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj&Uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj"Uh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M‡ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Uh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"Uh²hh³j4Uh´M‡ ubjš)�”}”(hŒ srpt_add_one”h]”jN)�”}”(hŒ srpt_add_one”h]”hŒ srpt_add_one”…”�”}”(hjGUh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjCUubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj"Uh²hh³j4Uh´M‡ ubj·)�”}”(hŒ(struct ib_device *device)”h]”j½)�”}”(hŒstruct ib_device *device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjcUh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj_Uubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj_Uubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj�Uh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj~Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jƒUŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjIUsbŒc.srpt_add_one”†”asbuh1hhj_Uubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Uh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj_Uubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¯Uh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj_UubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¼Uh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj_Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj[Uubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj"Uh²hh³j4Uh´M‡ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjUh²hh³j4Uh´M‡ ubah}”(h]”jUah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j4Uh´M‡ hjUh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ,InfiniBand device addition callback function”h]”hŒ,InfiniBand device addition callback function”…”�”}”(hjæUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M‡ hjãUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjUh²hh³j4Uh´M‡ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjþUjÓjþUjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ?**Parameters** ``struct ib_device *device`` Describes a HCA.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjVh]”hŒ Parameters”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M‹ hjVubjø)�”}”(hhh]”jý)�”}”(hŒ-``struct ib_device *device`` Describes a HCA.”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj'Vh]”hŒstruct ib_device *device”…”�”}”(hj)Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M� hj!Vubj)�”}”(hhh]”hÝ)�”}”(hŒDescribes a HCA.”h]”hŒDescribes a HCA.”…”�”}”(hj@Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mˆ hj=Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj,Wubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjLWh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj,WubjN)�”}”(hŒ client_data”h]”hŒ client_data”…”�”}”(hjYWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj,Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¶Vubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj}Vh²hh³j�Vh´M÷ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjyVh²hh³j�Vh´M÷ ubah}”(h]”jtVah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j�Vh´M÷ hjvVh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ+InfiniBand device removal callback function”h]”hŒ+InfiniBand device removal callback function”…”�”}”(hjƒWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M÷ hj€Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjvVh²hh³j�Vh´M÷ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj›WjÓj›WjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ˜**Parameters** ``struct ib_device *device`` Describes a HCA. ``void *client_data`` The value passed as the third argument to ib_set_client_data().”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mû hjŸWubjø)�”}”(hhh]”(jý)�”}”(hŒ.``struct ib_device *device`` Describes a HCA. ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjÄWh]”hŒstruct ib_device *device”…”�”}”(hjÆWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂWubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mø hj¾Wubj)�”}”(hhh]”hÝ)�”}”(hŒDescribes a HCA.”h]”hŒDescribes a HCA.”…”�”}”(hjÝWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÙWh´Mø hjÚWubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÙWh´Mø hj»Wubjý)�”}”(hŒU``void *client_data`` The value passed as the third argument to ib_set_client_data().”h]”(j)�”}”(hŒ``void *client_data``”h]”j )�”}”(hjýWh]”hŒvoid *client_data”…”�”}”(hjÿWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûWubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mú hj÷Wubj)�”}”(hhh]”hÝ)�”}”(hŒ?The value passed as the third argument to ib_set_client_data().”h]”hŒ?The value passed as the third argument to ib_set_client_data().”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mù hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jXh´Mú hj»Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸWubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_close_session (C function)”Œc.srpt_close_session”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void srpt_close_session (struct se_session *se_sess)”h]”j")�”}”(hŒ3void srpt_close_session(struct se_session *se_sess)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjWXh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjSXh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Ma ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfXh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjSXh²hh³jeXh´Ma ubjš)�”}”(hŒsrpt_close_session”h]”jN)�”}”(hŒsrpt_close_session”h]”hŒsrpt_close_session”…”�”}”(hjxXh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjtXubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjSXh²hh³jeXh´Ma ubj·)�”}”(hŒ(struct se_session *se_sess)”h]”j½)�”}”(hŒstruct se_session *se_sess”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj”Xh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�Xubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Xh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Xubh)�”}”(hhh]”jN)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hj²Xh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¯Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j´XŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjzXsbŒc.srpt_close_session”†”asbuh1hhj�Xubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒXh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Xubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjàXh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�XubjN)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hjíXh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjŒXubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjSXh²hh³jeXh´Ma ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjOXh²hh³jeXh´Ma ubah}”(h]”jJXah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jeXh´Ma hjLXh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒforcibly close a session”h]”hŒforcibly close a session”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Ma hjYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjLXh²hh³jeXh´Ma ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj/YjÓj/YjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX **Parameters** ``struct se_session *se_sess`` SCSI target session. **Description** Callback function invoked by the TCM core to clean up sessions associated with a node ACL when the user invokes rmdir /sys/kernel/config/target/$driver/$port/$tpg/acls/$i_port_id”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj9Yh]”hŒ Parameters”…”�”}”(hj;Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj7Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Me hj3Yubjø)�”}”(hhh]”jý)�”}”(hŒ4``struct se_session *se_sess`` SCSI target session. ”h]”(j)�”}”(hŒ``struct se_session *se_sess``”h]”j )�”}”(hjXYh]”hŒstruct se_session *se_sess”…”�”}”(hjZYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mb hjRYubj)�”}”(hhh]”hÝ)�”}”(hŒSCSI target session.”h]”hŒSCSI target session.”…”�”}”(hjqYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jmYh´Mb hjnYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jmYh´Mb hjOYubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj3YubhÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Md hj3YubhÝ)�”}”(hŒ²Callback function invoked by the TCM core to clean up sessions associated with a node ACL when the user invokes rmdir /sys/kernel/config/target/$driver/$port/$tpg/acls/$i_port_id”h]”hŒ²Callback function invoked by the TCM core to clean up sessions associated with a node ACL when the user invokes rmdir /sys/kernel/config/target/$driver/$port/$tpg/acls/$i_port_id”…”�”}”(hj©Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mc hj3Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!srpt_parse_i_port_id (C function)”Œc.srpt_parse_i_port_id”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=int srpt_parse_i_port_id (u8 i_port_id[16], const char *name)”h]”j")�”}”(hŒ\ubj½)�”}”(hŒconst char *name”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj¶\h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj²\ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ\h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²\ubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÑ\h²•–hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj²\ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß\h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²\ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjí\h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj²\ubjN)�”}”(hŒname”h]”hŒname”…”�”}”(hjú\h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj²\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj>\ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÈ[h²hh³jÙ[h´MËubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÄ[h²hh³jÙ[h´MËubah}”(h]”j¿[ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÙ[h´MËhjÁ[h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒPconfigfs callback invoked for mkdir /sys/kernel/config/target/$driver/$port/$tpg”h]”hŒPconfigfs callback invoked for mkdir /sys/kernel/config/target/$driver/$port/$tpg”…”�”}”(hj$]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MËhj!]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÁ[h²hh³jÙ[h´MËubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj<]jÓj<]jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒd**Parameters** ``struct se_wwn *wwn`` Corresponds to $driver/$port. ``const char *name`` $tpg.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÏhj@]ubjø)�”}”(hhh]”(jý)�”}”(hŒ5``struct se_wwn *wwn`` Corresponds to $driver/$port. ”h]”(j)�”}”(hŒ``struct se_wwn *wwn``”h]”j )�”}”(hje]h]”hŒstruct se_wwn *wwn”…”�”}”(hjg]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÌhj_]ubj)�”}”(hhh]”hÝ)�”}”(hŒCorresponds to $driver/$port.”h]”hŒCorresponds to $driver/$port.”…”�”}”(hj~]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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Œ``const char *name`` $tpg.”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hjž]h]”hŒconst char *name”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÎhj˜]ubj)�”}”(hhh]”hÝ)�”}”(hŒ$tpg.”h]”hŒ$tpg.”…”�”}”(hj·]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_drop_tpg (C function)”Œc.srpt_drop_tpg”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void srpt_drop_tpg (struct se_portal_group *tpg)”h]”j")�”}”(hŒ/void srpt_drop_tpg(struct se_portal_group *tpg)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjø]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjô]h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mèubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjô]h²hh³j^h´Mèubjš)�”}”(hŒ srpt_drop_tpg”h]”jN)�”}”(hŒ srpt_drop_tpg”h]”hŒ srpt_drop_tpg”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj^ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjô]h²hh³j^h´Mèubj·)�”}”(hŒ(struct se_portal_group *tpg)”h]”j½)�”}”(hŒstruct se_portal_group *tpg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj5^h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj1^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB^h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1^ubh)�”}”(hhh]”jN)�”}”(hŒse_portal_group”h]”hŒse_portal_group”…”�”}”(hjS^h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjP^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jU^Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj^sbŒc.srpt_drop_tpg”†”asbuh1hhj1^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs^h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1^ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj�^h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj1^ubjN)�”}”(hŒtpg”h]”hŒtpg”…”�”}”(hjŽ^h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj1^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj-^ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjô]h²hh³j^h´Mèubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjð]h²hh³j^h´Mèubah}”(h]”jë]ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j^h´Mèhjí]h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒPconfigfs callback invoked for rmdir /sys/kernel/config/target/$driver/$port/$tpg”h]”hŒPconfigfs callback invoked for rmdir /sys/kernel/config/target/$driver/$port/$tpg”…”�”}”(hj¸^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mèhjµ^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjí]h²hh³j^h´Mèubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÐ^jÓjÐ^jÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒT**Parameters** ``struct se_portal_group *tpg`` Target portal group to deregister.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjÚ^h]”hŒ Parameters”…”�”}”(hjÜ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjØ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MìhjÔ^ubjø)�”}”(hhh]”jý)�”}”(hŒB``struct se_portal_group *tpg`` Target portal group to deregister.”h]”(j)�”}”(hŒ``struct se_portal_group *tpg``”h]”j )�”}”(hjù^h]”hŒstruct se_portal_group *tpg”…”�”}”(hjû^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mîhjó^ubj)�”}”(hhh]”hÝ)�”}”(hŒ"Target portal group to deregister.”h]”hŒ"Target portal group to deregister.”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.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´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_make_tport (C function)”Œc.srpt_make_tport”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqstruct se_wwn * srpt_make_tport (struct target_fabric_configfs *tf, struct config_group *group, const char *name)”h]”j")�”}”(hŒostruct se_wwn *srpt_make_tport(struct target_fabric_configfs *tf, struct config_group *group, const char *name)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjS_h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjO_h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjO_h²hh³j`_h´Mûubh)�”}”(hhh]”jN)�”}”(hŒse_wwn”h]”hŒse_wwn”…”�”}”(hjr_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjo_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jt_Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒsrpt_make_tport”sbŒc.srpt_make_tport”†”asbuh1hhjO_h²hh³j`_h´Mûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjO_h²hh³j`_h´Mûubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¡_h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjO_h²hh³j`_h´Mûubjš)�”}”(hŒsrpt_make_tport”h]”jN)�”}”(hj�_h]”hŒsrpt_make_tport”…”�”}”(hj²_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj®_ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjO_h²hh³j`_h´Mûubj·)�”}”(hŒQ(struct target_fabric_configfs *tf, struct config_group *group, const char *name)”h]”(j½)�”}”(hŒ!struct target_fabric_configfs *tf”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÍ_h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÉ_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ_h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉ_ubh)�”}”(hhh]”jN)�”}”(hŒtarget_fabric_configfs”h]”hŒtarget_fabric_configfs”…”�”}”(hjë_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjè_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jí_Œmodname”NŒ classname”Njkjn)�”}”jq]”jŽ_Œc.srpt_make_tport”†”asbuh1hhjÉ_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉ_ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÉ_ubjN)�”}”(hŒtf”h]”hŒtf”…”�”}”(hj$`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÉ_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÅ_ubj½)�”}”(hŒstruct config_group *group”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj=`h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj9`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9`ubh)�”}”(hhh]”jN)�”}”(hŒ config_group”h]”hŒ config_group”…”�”}”(hj[`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjX`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j]`Œmodname”NŒ classname”Njkjn)�”}”jq]”jŽ_Œc.srpt_make_tport”†”asbuh1hhj9`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9`ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj‡`h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj9`ubjN)�”}”(hŒgroup”h]”hŒgroup”…”�”}”(hj”`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÅ_ubj½)�”}”(hŒconst char *name”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hj­`h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj©`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj©`ubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÈ`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj©`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj©`ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjä`h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj©`ubjN)�”}”(hŒname”h]”hŒname”…”�”}”(hjñ`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj©`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÅ_ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjO_h²hh³j`_h´Mûubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjK_h²hh³j`_h´Mûubah}”(h]”jF_ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j`_h´MûhjH_h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒKconfigfs callback invoked for mkdir /sys/kernel/config/target/$driver/$port”h]”hŒKconfigfs callback invoked for mkdir /sys/kernel/config/target/$driver/$port”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mûhjah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjH_h²hh³j`_h´Mûubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj3ajÓj3ajÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒŒ**Parameters** ``struct target_fabric_configfs *tf`` Not used. ``struct config_group *group`` Not used. ``const char *name`` $port.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mÿhj7aubjø)�”}”(hhh]”(jý)�”}”(hŒ0``struct target_fabric_configfs *tf`` Not used. ”h]”(j)�”}”(hŒ%``struct target_fabric_configfs *tf``”h]”j )�”}”(hj\ah]”hŒ!struct target_fabric_configfs *tf”…”�”}”(hj^ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZaubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MühjVaubj)�”}”(hhh]”hÝ)�”}”(hŒ Not used.”h]”hŒ Not used.”…”�”}”(hjuah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jqah´Mühjraubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jqah´MühjSaubjý)�”}”(hŒ)``struct config_group *group`` Not used. ”h]”(j)�”}”(hŒ``struct config_group *group``”h]”j )�”}”(hj•ah]”hŒstruct config_group *group”…”�”}”(hj—ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“aubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mýhj�aubj)�”}”(hhh]”hÝ)�”}”(hŒ Not used.”h]”hŒ Not used.”…”�”}”(hj®ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jªah´Mýhj«aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jªah´MýhjSaubjý)�”}”(hŒ``const char *name`` $port.”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hjÎah]”hŒconst char *name”…”�”}”(hjÐah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌaubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MÿhjÈaubj)�”}”(hhh]”hÝ)�”}”(hŒ$port.”h]”hŒ$port.”…”�”}”(hjçah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mþhjäaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jãah´MÿhjSaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj7aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_drop_tport (C function)”Œc.srpt_drop_tport”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void srpt_drop_tport (struct se_wwn *wwn)”h]”j")�”}”(hŒ(void srpt_drop_tport(struct se_wwn *wwn)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj$bh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7bh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$bh²hh³j6bh´M ubjš)�”}”(hŒsrpt_drop_tport”h]”jN)�”}”(hŒsrpt_drop_tport”h]”hŒsrpt_drop_tport”…”�”}”(hjIbh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjEbubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj$bh²hh³j6bh´M ubj·)�”}”(hŒ(struct se_wwn *wwn)”h]”j½)�”}”(hŒstruct se_wwn *wwn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjebh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjabubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjabubh)�”}”(hhh]”jN)�”}”(hŒse_wwn”h]”hŒse_wwn”…”�”}”(hjƒbh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj€bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j…bŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjKbsbŒc.srpt_drop_tport”†”asbuh1hhjabubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£bh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjabubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj±bh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjabubjN)�”}”(hŒwwn”h]”hŒwwn”…”�”}”(hj¾bh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjabubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj]bubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj$bh²hh³j6bh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj bh²hh³j6bh´M ubah}”(h]”jbah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j6bh´M hjbh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒKconfigfs callback invoked for rmdir /sys/kernel/config/target/$driver/$port”h]”hŒKconfigfs callback invoked for rmdir /sys/kernel/config/target/$driver/$port”…”�”}”(hjèbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M hjåbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjbh²hh³j6bh´M ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjcjÓjcjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hŒ/**Parameters** ``struct se_wwn *wwn`` $port.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj ch]”hŒ Parameters”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M$hjcubjø)�”}”(hhh]”jý)�”}”(hŒ``struct se_wwn *wwn`` $port.”h]”(j)�”}”(hŒ``struct se_wwn *wwn``”h]”j )�”}”(hj)ch]”hŒstruct se_wwn *wwn”…”�”}”(hj+ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M&hj#cubj)�”}”(hhh]”hÝ)�”}”(hŒ$port.”h]”hŒ$port.”…”�”}”(hjBch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´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÷hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_init_module (C function)”Œc.srpt_init_module”hNt”auh1jhj·Èh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒint srpt_init_module (void)”h]”j")�”}”(hŒint srpt_init_module(void)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjch²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Meubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’ch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjch²hh³j‘ch´Meubjš)�”}”(hŒsrpt_init_module”h]”jN)�”}”(hŒsrpt_init_module”h]”hŒsrpt_init_module”…”�”}”(hj¤ch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj cubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjch²hh³j‘ch´Meubj·)�”}”(hŒ(void)”h]”j½)�”}”(hŒvoid”h]”jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj¼cubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¸cubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjch²hh³j‘ch´Meubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj{ch²hh³j‘ch´Meubah}”(h]”jvcah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‘ch´Mehjxch²hubj±)�”}”(hhh]”hÝ)�”}”(hŒkernel module initialization”h]”hŒkernel module initialization”…”�”}”(hjêch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mehjçch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjxch²hh³j‘ch´Meubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjdjÓjdjÔ‰jÕ‰jÖ‰uh1jh²hhj·Èh³Nh´NubjØ)�”}”(hX'**Parameters** ``void`` no arguments **Note** Since ib_register_client() registers callback functions, and since at least one of these callback functions (srpt_add_one()) calls target core functions, this driver must be registered with the target core before ib_register_client() is called.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj dh]”hŒ Parameters”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj dubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mihjdubjø)�”}”(hhh]”jý)�”}”(hŒ``void`` no arguments ”h]”(j)�”}”(hŒ``void``”h]”j )�”}”(hj+dh]”hŒvoid”…”�”}”(hj-dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)dubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Khj%dubj)�”}”(hhh]”hÝ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjDdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j@dh´KhjAdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j@dh´Khj"dubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjdubhÝ)�”}”(hŒ**Note**”h]”jâ)�”}”(hjfdh]”hŒNote”…”�”}”(hjhdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjddubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´KhjdubhÝ)�”}”(hŒôSince ib_register_client() registers callback functions, and since at least one of these callback functions (srpt_add_one()) calls target core functions, this driver must be registered with the target core before ib_register_client() is called.”h]”hŒôSince ib_register_client() registers callback functions, and since at least one of these callback functions (srpt_add_one()) calls target core functions, this driver must be registered with the target core before ib_register_client() is called.”…”�”}”(hj|dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mghjdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj·Èh²hh³Nh´Nubeh}”(h]”Œ,infiniband-scsi-rdma-protocol-target-support”ah ]”h"]”Œ,infiniband scsi rdma protocol target support”ah$]”h&]”uh1hµhjyh²hh³hÊh´K`ubh¶)�”}”(hhh]”(h»)�”}”(hŒ/iSCSI Extensions for RDMA (iSER) target support”h]”hŒ/iSCSI Extensions for RDMA (iSER) target support”…”�”}”(hj�dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjšdh²hh³hÊh´Kiubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!isert_conn_terminate (C function)”Œc.isert_conn_terminate”hNt”auh1jhjšdh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9void isert_conn_terminate (struct isert_conn *isert_conn)”h]”j")�”}”(hŒ8void isert_conn_terminate(struct isert_conn *isert_conn)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÄdh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjÀdh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:107: ./drivers/infiniband/ulp/isert/ib_isert.c”h´M=ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀdh²hh³jÒdh´M=ubjš)�”}”(hŒisert_conn_terminate”h]”jN)�”}”(hŒisert_conn_terminate”h]”hŒisert_conn_terminate”…”�”}”(hjådh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjádubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjÀdh²hh³jÒdh´M=ubj·)�”}”(hŒ(struct isert_conn *isert_conn)”h]”j½)�”}”(hŒstruct isert_conn *isert_conn”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjýdubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjýdubh)�”}”(hhh]”jN)�”}”(hŒ isert_conn”h]”hŒ isert_conn”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j!eŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjçdsbŒc.isert_conn_terminate”†”asbuh1hhjýdubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?eh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjýdubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjMeh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjýdubjN)�”}”(hŒ isert_conn”h]”hŒ isert_conn”…”�”}”(hjZeh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjýdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjùdubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjÀdh²hh³jÒdh´M=ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj¼dh²hh³jÒdh´M=ubah}”(h]”j·dah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÒdh´M=hj¹dh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒInitiate connection termination”h]”hŒInitiate connection termination”…”�”}”(hj„eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:107: ./drivers/infiniband/ulp/isert/ib_isert.c”h´M=hj�eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¹dh²hh³jÒdh´M=ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjœejÓjœejÔ‰jÕ‰jÖ‰uh1jh²hhjšdh³Nh´NubjØ)�”}”(hXX**Parameters** ``struct isert_conn *isert_conn`` isert connection struct **Notes** In case the connection state is BOUND, move state to TEMINATING and start teardown sequence (rdma_disconnect). In case the connection state is UP, complete flush as well. This routine must be called with mutex held. Thus it is safe to call multiple times.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:107: ./drivers/infiniband/ulp/isert/ib_isert.c”h´MAhj eubjø)�”}”(hhh]”jý)�”}”(hŒ:``struct isert_conn *isert_conn`` isert connection struct ”h]”(j)�”}”(hŒ!``struct isert_conn *isert_conn``”h]”j )�”}”(hjÅeh]”hŒstruct isert_conn *isert_conn”…”�”}”(hjÇeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃeubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:107: ./drivers/infiniband/ulp/isert/ib_isert.c”h´M>hj¿eubj)�”}”(hhh]”hÝ)�”}”(hŒisert connection struct”h]”hŒisert connection struct”…”�”}”(hjÞeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÚeh´M>hjÛeubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÚeh´M>hj¼eubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj eubhÝ)�”}”(hŒ **Notes**”h]”jâ)�”}”(hjfh]”hŒNotes”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjþeubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:107: ./drivers/infiniband/ulp/isert/ib_isert.c”h´M@hj eubhÝ)�”}”(hŒªIn case the connection state is BOUND, move state to TEMINATING and start teardown sequence (rdma_disconnect). In case the connection state is UP, complete flush as well.”h]”hŒªIn case the connection state is BOUND, move state to TEMINATING and start teardown sequence (rdma_disconnect). In case the connection state is UP, complete flush as well.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:107: ./drivers/infiniband/ulp/isert/ib_isert.c”h´M@hj eubhÝ)�”}”(hŒTThis routine must be called with mutex held. Thus it is safe to call multiple times.”h]”hŒTThis routine must be called with mutex held. Thus it is safe to call multiple times.”…”�”}”(hj%fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:107: ./drivers/infiniband/ulp/isert/ib_isert.c”h´MDhj eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjšdh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)isert_put_unsol_pending_cmds (C function)”Œc.isert_put_unsol_pending_cmds”hNt”auh1jhjšdh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,jC,j™-jž-j 1j%1j3j 3já4jæ4j°7jµ7jò=j÷=jCEjHEj×LjÜLjWQj\QjœUj¡UjZjZj_j_j³dj¸djmgjrgj¸jj½jjmjmj³nj¸nj4pj9pj­rj²rj.tj3tjhvjmvj]yjbyjüzj{j›|j |j-~j2~j½jÂj>�jC�j΂jÓ‚js…jx…jô†jù†juˆjzˆj2‹j7‹jì�jñ�j~�jƒ�jÖ’jÛ’jç•jì•j£˜j¨˜já›jæ›jŸjŸjì¡jñ¡j ¦j¦jö¨jû¨j «j%«j@­jE­j†¯j‹¯j±±j¶±j—´jœ´j¦·j«·j¼j¼j˜½j�½jPÁjUÁj!Æj&Æj>ÉjCÉjÌjÌjÖÎjÛÎj¾ÑjÃÑjÂÓjÇÓj(Öj-Öj,Øj1ØjÉÝjÎÝj$âj)âj7çj<çjôèjùèj±êj¶êj_ìjdìjïj ïjcðjhðjƒójˆój£öj¨öj’øj—øjªüj¯üj×jÜj j jÏjÔjïjôj¦j«j”j™j„j‰jƒ"jˆ"j&j&jv*j{*jÑ+jÖ+jû-j.jo1jt1jv5j{5jüxjô8j9j9j*<j/<j,>j1>jõBjúBj7Gj