€•Œ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Ø™ub•j:)�”}”(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µuh1•j¼hjȯubj½)�”}”(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&]”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´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Ø)�”}”(hXp**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 registration 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 registration 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 registration 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&]”u•h1jh³Œ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 ]”jFah"]”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´MFubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯h²hh³jÀh´MFubh)�”}”(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´MFubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯h²hh³jÀh´MFubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¯h²hh³jÀh´MFubjš)�”}”(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´MFubj·)�”}”(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´MFubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj«h²hh³jÀh´MFubah}”(h]”j¦ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÀh´MFhj¨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´MFhjkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¨h²hh³jÀh´MFubeh}”(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´MJhjŠ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´MGhj©ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(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¦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´MHhjâ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´MHhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jýh´MHhj¦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´MIhjubj)�”}”(hhh]”hÝ)�”}”(hŒIB access flags.”h]”hŒIB access flags.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j6h´MIhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j6h´MIhj¦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´MKhjŠ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´MKhjŠ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ˆh²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´Mhj@ 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´MJubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ"h²hh³j�"h´MJubh)�”}”(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´MJubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ"h²hh³j�"h´MJubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÞ"h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjŒ"h²hh³j�"h´MJubjš)�”}”(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´MJubj·)�”}”(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´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Œ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´MJhj�$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj…"h²hh³j�"h´MJubeh}”(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). ``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. The buffer is mapped DMA_FROM_DEVICE: the NIC writes CQEs into it and the CPU only reads. **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´MNhj¯$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´MKhjÎ$ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(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Œ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´MLhj%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´MLhj#%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j"%h´MLhjË$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´MMhj@%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´MMhj\%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j[%h´MMhjË$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´MNhjy%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´MNhj•%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”%h´MNhjË$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´MPhj¯$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´MOhj¯$ubhÝ)�”}”(hŒYThe buffer is mapped DMA_FROM_DEVICE: the NIC writes CQEs into it and the CPU only reads.”h]”hŒYThe buffer is mapped DMA_FROM_DEVICE: the NIC writes CQEs into it and the CPU only reads.”…”�”}”(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´MThj¯$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´MWhj¯$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´MXhj¯$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”…”�”}”(hj5&h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj1&h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1&h²hh³jB&h´Mgubh)�”}”(hhh]”jN)�”}”(hŒib_umem”h]”hŒib_umem”…”�”}”(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)�”}”jgŒib_umem_get_cq_buf_or_va”sbŒc.ib_umem_get_cq_buf_or_va”†”asbuh1hhj1&h²hh³jB&h´Mgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju&h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1&h²hh³jB&h´Mgubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjƒ&h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj1&h²hh³jB&h´Mgubjš)�”}”(hŒib_umem_get_cq_buf_or_va”h]”jN)�”}”(hjr&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™hj1&h²hh³jB&h´Mgubj·)�”}”(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]”jp&Œ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Œ ”…”�”}”(hjG'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'ubh)�”}”(hhh]”jN)�”}”(hŒuverbs_attr_bundle”h]”hŒuverbs_attr_bundle”…”�”}”(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]”jp&Œc.ib_umem_get_cq_buf_or_va”†”asbuh1hhj'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv'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¼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]”jp&Œ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]”jp&Œ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ühj6(ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6(ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hjV(h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj§&ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj1&h²hh³jB&h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj-&h²hh³jB&h´Mgubah}”(h]”j(&ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jB&h´Mghj*&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.”…”�”}”(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´Mghj}(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj*&h²hh³jB&h´Mgubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj˜(jÓj˜(jÔ‰jÕ‰jÖ‰uh1jh²hhhôh³Nh´NubjØ)�”}”(hXv**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. The buffer is mapped DMA_FROM_DEVICE: the NIC writes CQEs into it and the CPU only reads. 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´Mkhjœ(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´Mhhj»(ubj)�”}”(hhh]”hÝ)�”}”(hŒ IB device.”h]”hŒ IB device.”…”�”}”(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´Mhhj¸(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´Mihjô(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´Mihj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjô(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j)h´Mihj¸(ubjý)�”}”(hŒE``u64 addr`` UHW user VA used when no per-command attribute matched. ”h]”(j)�”}”(hŒ ``u64 addr``”h]”j )�”}”(hj3)h]”hŒu64 addr”…”�”}”(hj5)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mjhj-)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.”…”�”}”(hjL)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jH)h´MjhjI)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jH)h´Mjhj¸(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 )�”}”(hjl)h]”hŒ size_t size”…”�”}”(hjn)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mlhjf)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.”…”�”}”(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´Mkhj‚)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�)h´Mlhj¸(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´Mmhj )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´Mmhj¼)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj )ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j»)h´Mmhj¸(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjœ(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´Mohjœ(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´Mnhjœ(ubhÝ)�”}”(hŒYThe buffer is mapped DMA_FROM_DEVICE: the NIC writes CQEs into it and the CPU only reads.”h]”hŒYThe buffer is mapped DMA_FROM_DEVICE: the NIC writes CQEs into it and the CPU only reads.”…”�”}”(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´Mqhjœ(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 ”…”�”}”(hj9*h²hh³Nh´Nubjâ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hjA*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj9*ubhŒ’s dual role and the migration path for drivers that would distinguish a user-supplied length from a driver-computed minimum.”…”�”}”(hj9*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´Mthjœ(ubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hj\*h]”hŒReturn”…”�”}”(hj^*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjZ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:40: ./drivers/infiniband/core/umem.c”h´Mxhjœ(ubhÝ)�”}”(hŒ4caller-owned umem on success, ERR_PTR(...) on error.”h]”hŒ4caller-owned umem on success, ERR_PTR(...) on error.”…”�”}”(hjr*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´Myhjœ(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´M‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�*h²hh³j¯*h´M‡ubjš)�”}”(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´M‡ubj·)�”}”(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”…”�”}”(hj7+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Œrelease pinned memory”h]”hŒrelease pinned memory”…”�”}”(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^+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj–*h²hh³j¯*h´M‡ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjy+jÓjy+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â)�”}”(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´M‹hj}+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´M�hjœ+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´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×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Œ*”…”�”}”(hjJ,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)�”}”(hj9,h]”hŒib_umem_odp_alloc_implicit”…”�”}”(hj[,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjW,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”…”�”}”(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_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]”j7,Œc.ib_umem_odp_alloc_implicit”†”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Œdevice”h]”hŒdevice”…”�”}”(hjÍ,h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjr,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjn,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¼hjn,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ÒjD-jÓjD-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â)�”}”(hjN-h]”hŒ Parameters”…”�”}”(hjP-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjL-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�hjH-ubjø)�”}”(hhh]”(jý)�”}”(hŒ6``struct ib_device *device`` IB device to create UMEM ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hjm-h]”hŒstruct ib_device *device”…”�”}”(hjo-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk-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ƒhjg-ubj)�”}”(hhh]”hÝ)�”}”(hŒIB device to create UMEM”h]”hŒIB device to create UMEM”…”�”}”(hj†-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‚-h´Kƒhjƒ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‚-h´Kƒhjd-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„hjd-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjH-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†hjH-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~hjH-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Œ ”…”�”}”(hj4.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj".h²hh³j3.h´KŸubh)�”}”(hhh]”jN)�”}”(hŒ ib_umem_odp”h]”hŒ ib_umem_odp”…”�”}”(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_odp_alloc_child”sbŒc.ib_umem_odp_alloc_child”†”asbuh1hhj".h²hh³j3.h´KŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj".h²hh³j3.h´KŸubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjt.h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj".h²hh³j3.h´KŸubjš)�”}”(hŒib_umem_odp_alloc_child”h]”jN)�”}”(hjc.h]”hŒib_umem_odp_alloc_child”…”�”}”(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´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]”ja.Œ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¼hj˜.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”…”�”}”(hjH/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”…”�”}”(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]”ja.Œc.ib_umem_odp_alloc_child”†”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Œ+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]”ja.Œc.ib_umem_odp_alloc_child”†”asbuh1hhj¥/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥/ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¥/ubjN)�”}”(hŒops”h]”hŒops”…”�”}”(hj0h²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´KŸubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj.h²hh³j3.h´KŸubah}”(h]”j.ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j3.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”…”�”}”(hjE0h²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ŸhjB0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj.h²hh³j3.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â)�”}”(hjg0h]”hŒ Parameters”…”�”}”(hji0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhje0ubah}”(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£hja0ubjø)�”}”(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 )�”}”(hj†0h]”hŒstruct ib_umem_odp *root”…”�”}”(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 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&]”uh1jhj€0ubeh}”(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”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j1h´K¥hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j1h´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 )�”}”(hj21h]”hŒ+const struct mmu_interval_notifier_ops *ops”…”�”}”(hj41h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj01ubah}”(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,1ubj)�”}”(hhh]”hÝ)�”}”(hŒ/MMU interval ops, currently only **invalidate**”h]”(hŒ!MMU interval ops, currently only ”…”�”}”(hjK1h²hh³Nh´Nubjâ)�”}”(hŒ**invalidate**”h]”hŒ invalidate”…”�”}”(hjS1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjK1ubeh}”(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¦hjH1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jG1h´K§hj}0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hja0ubeh}”(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'hj–1h²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&]”uh1j9hj–1h²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”†”asbuh1hhj–1h²hh³j§1h´KÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj–1h²hh³j§1h´KÞubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjè1h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj–1h²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™hj–1h²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”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2ubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hj22h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj/2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j42Œmodname”NŒ classname”Njkjn)�”}”jq]”jÕ1Œc.ib_umem_odp_get”†”asbuh1hhj2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj^2h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj2ubjN)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjk2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj 2ubj½)�”}”(hŒunsigned long addr”h]”(jý)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj„2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj€2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€2ubjý)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj€2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€2ubjN)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj¼2h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj€2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj 2ubj½)�”}”(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”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÑ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj 2ubj½)�”}”(hŒ int access”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj3ubjN)�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hj93h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj 2ubj½)�”}”(hŒ+const struct mmu_interval_notifier_ops *ops”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjR3h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjN3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjN3ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjm3h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjN3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjN3ubh)�”}”(hhh]”jN)�”}”(hŒmmu_interval_notifier_ops”h]”hŒmmu_interval_notifier_ops”…”�”}”(hj‹3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjˆ3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�3Œmodname”NŒ classname”Njkjn)�”}”jq]”jÕ1Œc.ib_umem_odp_get”†”asbuh1hhjN3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjN3ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj·3h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjN3ubjN)�”}”(hŒops”h]”hŒops”…”�”}”(hjÄ3h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjN3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj 2ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj–1h²hh³j§1h´KÞubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj’1h²hh³j§1h´KÞubah}”(h]”j�1ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j§1h´KÞhj�1h²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°hj�1h²hh³j§1h´KÞubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj4jÓj4jÔ‰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â)�”}”(hj4h]”hŒ Parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj4ubah}”(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 4ubjø)�”}”(hhh]”(jý)�”}”(hŒ:``struct ib_device *device`` IB device struct to get UMEM ”h]”(j)�”}”(hŒ``struct ib_device *device``”h]”j )�”}”(hj/4h]”hŒstruct ib_device *device”…”�”}”(hj14h²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 device struct to get UMEM”h]”hŒIB device struct to get UMEM”…”�”}”(hjH4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jD4h´KàhjE4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jD4h´Kàhj&4ubjý)�”}”(hŒ=``unsigned long addr`` userspace virtual address to start at ”h]”(j)�”}”(hŒ``unsigned long addr``”h]”j )�”}”(hjh4h]”hŒunsigned long addr”…”�”}”(hjj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf4ubah}”(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áhjb4ubj)�”}”(hhh]”hÝ)�”}”(hŒ%userspace virtual address to start at”h]”hŒ%userspace virtual address to start at”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j}4h´Káhj~4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j}4h´Káhj&4ubjý)�”}”(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âhj&4ubjý)�”}”(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ãhj&4ubjý)�”}”(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 )�”}”(hj5h]”hŒ+const struct mmu_interval_notifier_ops *ops”…”�”}”(hj5h²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:43: ./drivers/infiniband/core/umem_odp.c”h´Kähj 5ubj)�”}”(hhh]”hÝ)�”}”(hŒ/MMU interval ops, currently only **invalidate**”h]”(hŒ!MMU interval ops, currently only ”…”�”}”(hj,5h²hh³Nh´Nubjâ)�”}”(hŒ**invalidate**”h]”hŒ invalidate”…”�”}”(hj45h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj,5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j(5h´Kähj)5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j(5h´Kähj&4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj 4ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj\5h]”hŒ Description”…”�”}”(hj^5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjZ5ubah}”(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 4ubhÝ)�”}”(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.”…”�”}”(hjr5h²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 4ubeh}”(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ühj�5h²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&]”uh1j9hj�5h²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™hj�5h²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Œ ”…”�”}”(hj6h²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”…”�”}”(hj76h²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”…”�”}”(hjS6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjP6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jU6Œmodname”NŒ classname”Njkjn)�”}”jq]”j6Œc.ib_umem_odp_map_dma_and_lock”†”asbuh1hhjL6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjL6ubjN)�”}”(hŒ user_virt”h]”hŒ user_virt”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjL6ubeh}”(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&]”uh1jMhj˜6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j�6Œmodname”NŒ classname”Njkjn)�”}”jq]”j6Œ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Œbcnt”h]”hŒbcnt”…”�”}”(hjÇ6h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj”6ubeh}”(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]”j6Œc.ib_umem_odp_map_dma_and_lock”†”asbuh1hhjÜ6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÜ6ubjN)�”}”(hŒ access_mask”h]”hŒ access_mask”…”�”}”(hj7h²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ühj$7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj57h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$7ubjN)�”}”(hŒfault”h]”hŒfault”…”�”}”(hjC7h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÖ5ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj�5h²hh³j¯5h´M2ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj™5h²hh³j¯5h´M2ubah}”(h]”j”5ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¯5h´M2hj–5h²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.”…”�”}”(hjm7h²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´M2hjj7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj–5h²hh³j¯5h´M2ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj…7jÓj…7jÔ‰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â)�”}”(hj�7h]”hŒ Parameters”…”�”}”(hj‘7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj�7ubah}”(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´M6hj‰7ubjø)�”}”(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.”…”�”}”(hj8h²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 )�”}”(hj 8h]”hŒu64 bcnt”…”�”}”(hj"8h²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?hj8ubj)�”}”(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.”…”�”}”(hj98h²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<hj68ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j58h´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 )�”}”(hjZ8h]”hŒu64 access_mask”…”�”}”(hj\8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:43: ./drivers/infiniband/core/umem_odp.c”h´MAhjT8ubj)�”}”(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.”…”�”}”(hjs8h²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@hjp8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jo8h´MAhj¥7ubjý)�”}”(hŒ8``bool fault`` is faulting required for the given range ”h]”(j)�”}”(hŒ``bool fault``”h]”j )�”}”(hj”8h]”hŒ bool fault”…”�”}”(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´MBhjŽ8ubj)�”}”(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&]”uh1jhjŽ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j©8h´MBhj¥7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj‰7ubhÝ)�”}”(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´MDhj‰7ubhÝ)�”}”(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´M3hj‰7ubhÝ)�”}”(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´M7hj‰7ubeh}”(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”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj9h²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”auh1jhj9h²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”…”�”}”(hj<9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj89h²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´Mcubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj89h²hh³jJ9h´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&]”uh1jMhjY9ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj89h²hh³jJ9h´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”…”�”}”(hjy9h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hju9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hju9ubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(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]”jt)�”}”jgj_9sbŒc.rvt_fast_reg_mr”†”asbuh1hhju9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hju9ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÅ9h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhju9ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjÒ9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhju9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjq9ubj½)�”}”(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 :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³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Œ*”…”�”}”(hj5:h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjç9ubjN)�”}”(hŒibmr”h]”hŒibmr”…”�”}”(hjB:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjç9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjq9ubj½)�”}”(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”j`:Œmodname”NŒ classname”Njkjn)�”}”jq]”j³9Œc.rvt_fast_reg_mr”†”asbuh1hhjW:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjW:ubjN)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjŠ:h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjW:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjq9ubj½)�”}”(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¼hjq9ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj89h²hh³jJ9h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj49h²hh³jJ9h´Mcubah}”(h]”j/9ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jJ9h´Mchj19h²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°hj19h²hh³jJ9h´Mcubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj;jÓj;jÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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”…”�”}”(hjC;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 )�”}”(hjc;h]”hŒstruct ib_mr *ibmr”…”�”}”(hje;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja;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³jx;h´Mehjy;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj];ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jx;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´Mfhj–;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&]”uh1jhj–;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×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ rvt_invalidate_rkey (C function)”Œc.rvt_invalidate_rkey”hNt”auh1jhj9h²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”…”�”}”(hjU<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjQ<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Œ ”…”�”}”(hjd<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQ<h²hh³jc<h´M†ubjš)�”}”(hŒrvt_invalidate_rkey”h]”jN)�”}”(hŒrvt_invalidate_rkey”h]”hŒrvt_invalidate_rkey”…”�”}”(hjv<h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjr<ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjQ<h²hh³jc<h´M†ubj·)�”}”(hŒ(struct rvt_qp *qp, u32 rkey)”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)�”}”jgjx<sbŒc.rvt_invalidate_rkey”†”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¼hjŠ<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”…”�”}”(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¶hjQ<h²hh³jc<h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjM<h²hh³jc<h´M†ubah}”(h]”jH<ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jc<h´M†hjJ<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†hjZ=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjJ<h²hh³jc<h´M†ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒju=jÓju=jÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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â)�”}”(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´MŠhjy=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‡hj˜=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&]”uh1jhj˜=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j³=h´M‡hj•=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ˆhj•=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjy=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Šhjy=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‰hjy=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_lkey_ok (C function)”Œ c.rvt_lkey_ok”hNt”auh1jhj9h²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”…”�”}”(hjW>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjS>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&]”uh1j9hjS>h²hh³je>h´MÂubjš)�”}”(hŒ rvt_lkey_ok”h]”jN)�”}”(hŒ rvt_lkey_ok”h]”hŒ rvt_lkey_ok”…”�”}”(hjx>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjt>ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjS>h²hh³je>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”…”�”}”(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_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)�”}”jgjz>sbŒ 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Œrkt”h]”hŒrkt”…”�”}”(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 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Œ ”…”�”}”(hjB?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj?ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjP?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Œstruct rvt_sge *isge”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_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”†”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Œisge”h]”hŒisge”…”�”}”(hjÍ?h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjr?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjŒ>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Œ*”…”�”}”(hj0@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¼hjŒ>ubj½)�”}”(hŒstruct ib_sge *sge”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjV@h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjR@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjR@ubh)�”}”(hhh]”jN)�”}”(hŒib_sge”h]”hŒib_sge”…”�”}”(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]”jÎ>Œ 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Œsge”h]”hŒsge”…”�”}”(hj­@h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjR@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjŒ>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¼hjŒ>ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjS>h²hh³je>h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjO>h²hh³je>h´MÂubah}”(h]”jJ>ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³je>h´MÂhjL>h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ(check IB SGE for validity and initialize”h]”hŒ(check IB SGE for validity and initialize”…”�”}”(hj Ah²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 Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjL>h²hh³je>h´MÂubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj$AjÓj$AjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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â)�”}”(hj.Ah]”hŒ Parameters”…”�”}”(hj0Ah²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: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 )�”}”(hjMAh]”hŒstruct rvt_lkey_table *rkt”…”�”}”(hjOAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKAubah}”(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ÃhjGAubj)�”}”(hhh]”hÝ)�”}”(hŒ*table containing lkey to check SGE against”h]”hŒ*table containing lkey to check SGE against”…”�”}”(hjfAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jbAh´MÃhjcAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jbAh´MÃhjDAubjý)�”}”(hŒ(``struct rvt_pd *pd`` protection domain ”h]”(j)�”}”(hŒ``struct rvt_pd *pd``”h]”j )�”}”(hj†Ah]”hŒstruct rvt_pd *pd”…”�”}”(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Œ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&]”uh1jhj€Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j›Ah´MÄhjDAubjý)�”}”(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ÅhjDAubjý)�”}”(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”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j Bh´MÆhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j Bh´MÆhjDAubjý)�”}”(hŒ$``struct ib_sge *sge`` SGE to check ”h]”(j)�”}”(hŒ``struct ib_sge *sge``”h]”j )�”}”(hj1Bh]”hŒstruct ib_sge *sge”…”�”}”(hj3Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/Bubah}”(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”…”�”}”(hjJBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jFBh´MÇhjGBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jFBh´MÇhjDAubjý)�”}”(hŒ``int acc`` access flags ”h]”(j)�”}”(hŒ ``int acc``”h]”j )�”}”(hjjBh]”hŒint acc”…”�”}”(hjlBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhBubah}”(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ÈhjdBubj)�”}”(hhh]”hÝ)�”}”(hŒ access flags”h]”hŒ access flags”…”�”}”(hjƒBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jBh´MÈhj€Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jBh´MÈhjDAubeh}”(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×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_rkey_ok (C function)”Œ c.rvt_rkey_ok”hNt”auh1jhj9h²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”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjCh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Ch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCh²hh³j.Ch´M3ubjš)�”}”(hŒ rvt_rkey_ok”h]”jN)�”}”(hŒ rvt_rkey_ok”h]”hŒ rvt_rkey_ok”…”�”}”(hjACh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj=Cubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjCh²hh³j.Ch´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'hjYCubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjYCubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hj{Ch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjxCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j}CŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjCCsbŒ c.rvt_rkey_ok”†”asbuh1hhjYCubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Ch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjYCubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj©Ch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjYCubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj¶Ch²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjYCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUCubj½)�”}”(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]”j—CŒ c.rvt_rkey_ok”†”asbuh1hhjËCubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjËCubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjËCubjN)�”}”(hŒsge”h]”hŒsge”…”�”}”(hj&Dh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjËCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUCubj½)�”}”(hŒu32 len”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjBDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj?Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jDDŒmodname”NŒ classname”Njkjn)�”}”jq]”j—CŒ c.rvt_rkey_ok”†”asbuh1hhj;Dubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Dh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;DubjN)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjnDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj;Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUCubj½)�”}”(hŒ u64 vaddr”h]”(h)�”}”(hhh]”jN)�”}”(hŒu64”h]”hŒu64”…”�”}”(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]”j—CŒ c.rvt_rkey_ok”†”asbuh1hhjƒDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Dh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒDubjN)�”}”(hŒvaddr”h]”hŒvaddr”…”�”}”(hj¶Dh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjƒDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUCubj½)�”}”(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]”j—CŒ 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¼hjUCubj½)�”}”(hŒint acc”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Eh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEubjN)�”}”(hŒacc”h]”hŒacc”…”�”}”(hj3Eh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjUCubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjCh²hh³j.Ch´M3ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjCh²hh³j.Ch´M3ubah}”(h]”jCah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j.Ch´M3hjCh²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´M3hjZEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjCh²hh³j.Ch´M3ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjuEjÓjuEjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hXN**Parameters** ``struct rvt_qp *qp`` qp for validation ``struct rvt_sge *sge`` SGE state ``u32 len`` length of data ``u64 vaddr`` virtual address to place data ``u32 rkey`` rkey to check ``int acc`` access flags **Return** 1 if successful, otherwise 0. **Description** increments the reference count upon success”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjEh]”hŒ Parameters”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj}Eubah}”(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´M7hjyEubjø)�”}”(hhh]”(jý)�”}”(hŒ(``struct rvt_qp *qp`` qp for validation ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hjžEh]”hŒstruct rvt_qp *qp”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœEubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M4hj˜Eubj)�”}”(hhh]”hÝ)�”}”(hŒqp for validation”h]”hŒqp for validation”…”�”}”(hj·Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j³Eh´M4hj´Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j³Eh´M4hj•Eubjý)�”}”(hŒ"``struct rvt_sge *sge`` SGE state ”h]”(j)�”}”(hŒ``struct rvt_sge *sge``”h]”j )�”}”(hj×Eh]”hŒstruct rvt_sge *sge”…”�”}”(hjÙEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕEubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M5hjÑEubj)�”}”(hhh]”hÝ)�”}”(hŒ SGE state”h]”hŒ SGE state”…”�”}”(hjðEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jìEh´M5hjíEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jìEh´M5hj•Eubjý)�”}”(hŒ``u32 len`` length of data ”h]”(j)�”}”(hŒ ``u32 len``”h]”j )�”}”(hjFh]”hŒu32 len”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M6hj Fubj)�”}”(hhh]”hÝ)�”}”(hŒlength of data”h]”hŒlength of data”…”�”}”(hj)Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j%Fh´M6hj&Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j%Fh´M6hj•Eubjý)�”}”(hŒ,``u64 vaddr`` virtual address to place data ”h]”(j)�”}”(hŒ ``u64 vaddr``”h]”j )�”}”(hjIFh]”hŒ u64 vaddr”…”�”}”(hjKFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGFubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M7hjCFubj)�”}”(hhh]”hÝ)�”}”(hŒvirtual address to place data”h]”hŒvirtual address to place data”…”�”}”(hjbFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^Fh´M7hj_Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j^Fh´M7hj•Eubjý)�”}”(hŒ``u32 rkey`` rkey to check ”h]”(j)�”}”(hŒ ``u32 rkey``”h]”j )�”}”(hj‚Fh]”hŒu32 rkey”…”�”}”(hj„Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M8hj|Fubj)�”}”(hhh]”hÝ)�”}”(hŒ rkey to check”h]”hŒ rkey to check”…”�”}”(hj›Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j—Fh´M8hj˜Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j—Fh´M8hj•Eubjý)�”}”(hŒ``int acc`` access flags ”h]”(j)�”}”(hŒ ``int acc``”h]”j )�”}”(hj»Fh]”hŒint acc”…”�”}”(hj½Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:49: ./drivers/infiniband/sw/rdmavt/mr.c”h´M9hjµFubj)�”}”(hhh]”hÝ)�”}”(hŒ access flags”h]”hŒ access flags”…”�”}”(hjÔFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÐFh´M9hjÑFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÐFh´M9hj•Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjyEubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hjöFh]”hŒReturn”…”�”}”(hjøFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjôFubah}”(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;hjyEubhÝ)�”}”(hŒ1 if successful, otherwise 0.”h]”hŒ1 if successful, otherwise 0.”…”�”}”(hj Gh²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;hjyEubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjGh]”hŒ Description”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjGubah}”(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=hjyEubhÝ)�”}”(hŒ+increments the reference count upon success”h]”hŒ+increments the reference count upon success”…”�”}”(hj3Gh²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<hjyEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_compute_aeth (C function)”Œc.rvt_compute_aeth”hNt”auh1jhj9h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+__be32 rvt_compute_aeth (struct rvt_qp *qp)”h]”j")�”}”(hŒ*__be32 rvt_compute_aeth(struct rvt_qp *qp)”h]”(h)�”}”(hhh]”jN)�”}”(hŒ__be32”h]”hŒ__be32”…”�”}”(hjeGh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jgGŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒrvt_compute_aeth”sbŒc.rvt_compute_aeth”†”asbuh1hhj^Gh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Gh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^Gh²hh³j†Gh´K/ubjš)�”}”(hŒrvt_compute_aeth”h]”jN)�”}”(hjƒGh]”hŒrvt_compute_aeth”…”�”}”(hj™Gh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj•Gubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj^Gh²hh³j†Gh´K/ubj·)�”}”(hŒ(struct rvt_qp *qp)”h]”j½)�”}”(hŒstruct rvt_qp *qp”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Œrvt_qp”h]”hŒrvt_qp”…”�”}”(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�GŒc.rvt_compute_aeth”†”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°GubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj°Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj¬Gubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj^Gh²hh³j†Gh´K/ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjZGh²hh³j†Gh´K/ubah}”(h]”jUGah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j†Gh´K/hjWGh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!compute the AETH (syndrome + MSN)”h]”hŒ!compute the AETH (syndrome + MSN)”…”�”}”(hj5Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K/hj2Hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjWGh²hh³j†Gh´K/ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjMHjÓjMHjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hŒr**Parameters** ``struct rvt_qp *qp`` the queue pair to compute the AETH for **Description** Returns the AETH.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjWHh]”hŒ Parameters”…”�”}”(hjYHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjUHubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K3hjQHubjø)�”}”(hhh]”jý)�”}”(hŒ=``struct rvt_qp *qp`` the queue pair to compute the AETH for ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hjvHh]”hŒstruct rvt_qp *qp”…”�”}”(hjxHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtHubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K0hjpHubj)�”}”(hhh]”hÝ)�”}”(hŒ&the queue pair to compute the AETH for”h]”hŒ&the queue pair to compute the AETH for”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‹Hh´K0hjŒHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‹Hh´K0hjmHubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjQHubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj±Hh]”hŒ Description”…”�”}”(hj³Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¯Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K2hjQHubhÝ)�”}”(hŒReturns the AETH.”h]”hŒReturns the AETH.”…”�”}”(hjÇHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K1hjQHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_get_credit (C function)”Œc.rvt_get_credit”hNt”auh1jhj9h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1void rvt_get_credit (struct rvt_qp *qp, u32 aeth)”h]”j")�”}”(hŒ0void rvt_get_credit(struct rvt_qp *qp, u32 aeth)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjöHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjòHh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´Ksubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjòHh²hh³jIh´Ksubjš)�”}”(hŒrvt_get_credit”h]”jN)�”}”(hŒrvt_get_credit”h]”hŒrvt_get_credit”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjIubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjòHh²hh³jIh´Ksubj·)�”}”(hŒ(struct rvt_qp *qp, u32 aeth)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj3Ih²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj/Iubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Ih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj/Iubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjQIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjNIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jSIŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjIsbŒc.rvt_get_credit”†”asbuh1hhj/Iubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj/Iubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj/IubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjŒIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj/Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj+Iubj½)�”}”(hŒu32 aeth”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¨Ih²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¥Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jªIŒmodname”NŒ classname”Njkjn)�”}”jq]”jmIŒc.rvt_get_credit”†”asbuh1hhj¡Iubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡IubjN)�”}”(hŒaeth”h]”hŒaeth”…”�”}”(hjÔIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¡Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj+Iubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjòHh²hh³jIh´Ksubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjîHh²hh³jIh´Ksubah}”(h]”jéHah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jIh´KshjëHh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!flush the send work queue of a QP”h]”hŒ!flush the send work queue of a QP”…”�”}”(hjþIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´KshjûIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjëHh²hh³jIh´Ksubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjJjÓjJjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hŒ·**Parameters** ``struct rvt_qp *qp`` the qp who's send work queue to flush ``u32 aeth`` the Acknowledge Extended Transport Header **Description** The QP s_lock should be held.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj Jh]”hŒ Parameters”…”�”}”(hj"Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´KwhjJubjø)�”}”(hhh]”(jý)�”}”(hŒ<``struct rvt_qp *qp`` the qp who's send work queue to flush ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hj?Jh]”hŒstruct rvt_qp *qp”…”�”}”(hjAJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´Kthj9Jubj)�”}”(hhh]”hÝ)�”}”(hŒ%the qp who's send work queue to flush”h]”hŒ'the qp who’s send work queue to flush”…”�”}”(hjXJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jTJh´KthjUJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jTJh´Kthj6Jubjý)�”}”(hŒ7``u32 aeth`` the Acknowledge Extended Transport Header ”h]”(j)�”}”(hŒ ``u32 aeth``”h]”j )�”}”(hjxJh]”hŒu32 aeth”…”�”}”(hjzJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvJubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”•eh´KuhjrJubj)�”}”(hhh]”hÝ)�”}”(hŒ)the Acknowledge Extended Transport Header”h]”hŒ)the Acknowledge Extended Transport Header”…”�”}”(hj‘Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�Jh´KuhjŽJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�Jh´Kuhj6Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj³Jh]”hŒ Description”…”�”}”(hjµJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj±Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´KwhjJubhÝ)�”}”(hŒThe QP s_lock should be held.”h]”hŒThe QP s_lock should be held.”…”�”}”(hjÉJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´KvhjJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_restart_sge (C function)”Œc.rvt_restart_sge”hNt”auh1jhj9h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒMu32 rvt_restart_sge (struct rvt_sge_state *ss, struct rvt_swqe *wqe, u32 len)”h]”j")�”}”(hŒLu32 rvt_restart_sge(struct rvt_sge_state *ss, struct rvt_swqe *wqe, u32 len)”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjûJh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjøJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jýJŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgŒrvt_restart_sge”sbŒc.rvt_restart_sge”†”asbuh1hhjôJh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjôJh²hh³jKh´K›ubjš)�”}”(hŒrvt_restart_sge”h]”jN)�”}”(hjKh]”hŒrvt_restart_sge”…”�”}”(hj/Kh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj+Kubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjôJh²hh³jKh´K›ubj·)�”}”(hŒ9(struct rvt_sge_state *ss, struct rvt_swqe *wqe, u32 len)”h]”(j½)�”}”(hŒstruct rvt_sge_state *ss”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjJKh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjFKubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjFKubh)�”}”(hhh]”jN)�”}”(hŒ rvt_sge_state”h]”hŒ rvt_sge_state”…”�”}”(hjhKh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjeKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jjKŒmodname”NŒ classname”Njkjn)�”}”jq]”jKŒc.rvt_restart_sge”†”asbuh1hhjFKubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Kh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjFKubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj”Kh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjFKubjN)�”}”(hŒss”h]”hŒss”…”�”}”(hj¡Kh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjFKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjBKubj½)�”}”(hŒstruct rvt_swqe *wqe”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjºKh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¶Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶Kubh)�”}”(hhh]”jN)�”}”(hŒrvt_swqe”h]”hŒrvt_swqe”…”�”}”(hjØKh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÕKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jÚKŒmodname”NŒ classname”Njkjn)�”}”jq]”jKŒc.rvt_restart_sge”†”asbuh1hhj¶Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶Kubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¶KubjN)�”}”(hŒwqe”h]”hŒwqe”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj¶Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjBKubj½)�”}”(hŒu32 len”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj-Lh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj*Lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j/LŒmodname”NŒ classname”Njkjn)�”}”jq]”jKŒc.rvt_restart_sge”†”asbuh1hhj&Lubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&LubjN)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjYLh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj&Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjBKubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjôJh²hh³jKh´K›ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjðJh²hh³jKh´K›ubah}”(h]”jëJah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jKh´K›hjíJh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒrewind the sge state for a wqe”h]”hŒrewind the sge state for a wqe”…”�”}”(hjƒLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K›hj€Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjíJh²hh³jKh´K›ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj›LjÓj›LjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hŒé**Parameters** ``struct rvt_sge_state *ss`` the sge state pointer ``struct rvt_swqe *wqe`` the wqe to rewind ``u32 len`` the data length from the start of the wqe in bytes **Description** Returns the remaining data length.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj¥Lh]”hŒ Parameters”…”�”}”(hj§Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj£Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´KŸhjŸLubjø)�”}”(hhh]”(jý)�”}”(hŒ3``struct rvt_sge_state *ss`` the sge state pointer ”h]”(j)�”}”(hŒ``struct rvt_sge_state *ss``”h]”j )�”}”(hjÄLh]”hŒstruct rvt_sge_state *ss”…”�”}”(hjÆLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂLubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´Kœhj¾Lubj)�”}”(hhh]”hÝ)�”}”(hŒthe sge state pointer”h]”hŒthe sge state pointer”…”�”}”(hjÝLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÙLh´KœhjÚLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÙLh´Kœhj»Lubjý)�”}”(hŒ+``struct rvt_swqe *wqe`` the wqe to rewind ”h]”(j)�”}”(hŒ``struct rvt_swqe *wqe``”h]”j )�”}”(hjýLh]”hŒstruct rvt_swqe *wqe”…”�”}”(hjÿLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûLubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K�hj÷Lubj)�”}”(hhh]”hÝ)�”}”(hŒthe wqe to rewind”h]”hŒthe wqe to rewind”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jMh´K�hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jMh´K�hj»Lubjý)�”}”(hŒ?``u32 len`` the data length from the start of the wqe in bytes ”h]”(j)�”}”(hŒ ``u32 len``”h]”j )�”}”(hj6Mh]”hŒu32 len”…”�”}”(hj8Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´Kžhj0Mubj)�”}”(hhh]”hÝ)�”}”(hŒ2the data length from the start of the wqe in bytes”h]”hŒ2the data length from the start of the wqe in bytes”…”�”}”(hjOMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jKMh´KžhjLMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jKMh´Kžhj»Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸLubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjqMh]”hŒ Description”…”�”}”(hjsMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjoMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´K hjŸLubhÝ)�”}”(hŒ"Returns the remaining data length.”h]”hŒ"Returns the remaining data length.”…”�”}”(hj‡Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:52: ./drivers/infiniband/sw/rdmavt/rc.c”h´KŸhjŸLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_check_ah (C function)”Œc.rvt_check_ah”hNt”auh1jhj9h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒHint rvt_check_ah (struct ib_device *ibdev, struct rdma_ah_attr *ah_attr)”h]”j")�”}”(hŒGint rvt_check_ah(struct ib_device *ibdev, struct rdma_ah_attr *ah_attr)”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶Mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj²Mh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:55: ./drivers/infiniband/sw/rdmavt/ah.c”h´K ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅMh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²Mh²hh³jÄMh´K ubjš)�”}”(hŒ rvt_check_ah”h]”jN)�”}”(hŒ rvt_check_ah”h]”hŒ rvt_check_ah”…”�”}”(hj×Mh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÓMubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj²Mh²hh³jÄMh´K ubj·)�”}”(hŒ7(struct ib_device *ibdev, struct rdma_ah_attr *ah_attr)”h]”(j½)�”}”(hŒstruct ib_device *ibdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjóMh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjïMubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjïMubh)�”}”(hhh]”jN)�”}”(hŒ ib_device”h]”hŒ ib_device”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jNŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÙMsbŒc.rvt_check_ah”†”asbuh1hhjïMubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjïMubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj?Nh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjïMubjN)�”}”(hŒibdev”h]”hŒibdev”…”�”}”(hjLNh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjïMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjëMubj½)�”}”(hŒstruct rdma_ah_attr *ah_attr”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjeNh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjaNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaNubh)�”}”(hhh]”jN)�”}”(hŒ rdma_ah_attr”h]”hŒ rdma_ah_attr”…”�”}”(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]”j-NŒc.rvt_check_ah”†”asbuh1hhjaNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaNubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¯Nh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjaNubjN)�”}”(hŒah_attr”h]”hŒah_attr”…”�”}”(hj¼Nh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjaNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjëMubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj²Mh²hh³jÄMh´K ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj®Mh²hh³jÄMh´K ubah}”(h]”j©Mah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jÄMh´K hj«Mh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒvalidate the attributes of AH”h]”hŒvalidate the attributes of AH”…”�”}”(hjæNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:55: ./drivers/infiniband/sw/rdmavt/ah.c”h´K hjãNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj«Mh²hh³jÄMh´K ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjþNjÓjþNjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hX **Parameters** ``struct ib_device *ibdev`` the ib device ``struct rdma_ah_attr *ah_attr`` the attributes of the AH **Description** If driver supports a more detailed check_ah function call back to it otherwise just check the basics. **Return** 0 on success”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjOh]”hŒ Parameters”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:55: ./drivers/infiniband/sw/rdmavt/ah.c”h´KhjOubjø)�”}”(hhh]”(jý)�”}”(hŒ*``struct ib_device *ibdev`` the ib device ”h]”(j)�”}”(hŒ``struct ib_device *ibdev``”h]”j )�”}”(hj'Oh]”hŒstruct ib_device *ibdev”…”�”}”(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:55: ./drivers/infiniband/sw/rdmavt/ah.c”h´K hj!Oubj)�”}”(hhh]”hÝ)�”}”(hŒ the ib device”h]”hŒ the ib device”…”�”}”(hj@Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jstruct rvt_dev_info *rvt_alloc_device(size_t size, int nports)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjPh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´K%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPh²hh³jPh´K%ubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(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]”jt)�”}”jgŒrvt_alloc_device”sbŒc.rvt_alloc_device”†”asbuh1hhjPh²hh³jPh´K%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGPh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPh²hh³jPh´K%ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjUPh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjPh²hh³jPh´K%ubjš)�”}”(hŒrvt_alloc_device”h]”jN)�”}”(hjDPh]”hŒrvt_alloc_device”…”�”}”(hjfPh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbPubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjPh²hh³jPh´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”…”�”}”(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]”jBPŒ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¼hjyPubj½)�”}”(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¼hjyPubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjPh²hh³jPh´K%ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjÿOh²hh³jPh´K%ubah}”(h]”júOah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jPh´K%hjüOh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ allocate rdi”h]”hŒ allocate rdi”…”�”}”(hjQh²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 Qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjüOh²hh³jPh´K%ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj'QjÓj'QjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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â)�”}”(hj1Qh]”hŒ Parameters”…”�”}”(hj3Qh²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+Qubjø)�”}”(hhh]”(jý)�”}”(hŒ3``size_t size`` how big of a structure to allocate ”h]”(j)�”}”(hŒ``size_t size``”h]”j )�”}”(hjPQh]”hŒ size_t size”…”�”}”(hjRQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNQubah}”(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&hjJQubj)�”}”(hhh]”hÝ)�”}”(hŒ"how big of a structure to allocate”h]”hŒ"how big of a structure to allocate”…”�”}”(hjiQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jeQh´K&hjfQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jeQh´K&hjGQubjý)�”}”(hŒ;``int nports`` number of ports to allocate array slots for ”h]”(j)�”}”(hŒ``int nports``”h]”j )�”}”(hj‰Qh]”hŒ int nports”…”�”}”(hj‹Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡Qubah}”(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Œ+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&]”uh1jhjƒQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jžQh´K'hjGQubeh}”(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”…”�”}”(hjRh²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×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_dealloc_device (C function)”Œc.rvt_dealloc_device”hNt”auh1jhj9h²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ühj;Rh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´KDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;Rh²hh³jMRh´KDubjš)�”}”(hŒrvt_dealloc_device”h]”jN)�”}”(hŒrvt_dealloc_device”h]”hŒrvt_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³jMRh´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'hjxRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Rh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjxRubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(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)�”}”jgjbRsbŒc.rvt_dealloc_device”†”asbuh1hhjxRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjxRubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÈRh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjxRubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hjÕRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjxRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjtRubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj;Rh²hh³jMRh´KDubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj7Rh²hh³jMRh´KDubah}”(h]”j2Rah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jMRh´KDhj4Rh²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°hj4Rh²hh³jMRh´KDubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjSjÓjSjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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â)�”}”(hj!Sh]”hŒ Parameters”…”�”}”(hj#Sh²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´KHhjSubjø)�”}”(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”…”�”}”(hjBSh²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´KEhj:Subj)�”}”(hhh]”hÝ)�”}”(hŒstructure to free”h]”hŒstructure to free”…”�”}”(hjYSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jUSh´KEhjVSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jUSh´KEhj7Subah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjSubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj{Sh]”hŒ Description”…”�”}”(hj}Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjySubah}”(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´KGhjSubhÝ)�”}”(hŒ2Free a structure allocated with rvt_alloc_device()”h]”hŒ2Free a structure allocated with rvt_alloc_device()”…”�”}”(hj‘Sh²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´KFhjSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ rvt_register_device (C function)”Œc.rvt_register_device”hNt”auh1jhj9h²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 Th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjùSubh)�”}”(hhh]”jN)�”}”(hŒ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jTŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjãSsbŒc.rvt_register_device”†”asbuh1hhjùSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjùSubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjITh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjùSubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hjVTh²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”…”�”}”(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}Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjµSh²hh³jÎSh´Mãubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj˜TjÓj˜TjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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.”…”�”}”(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œTubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hj#Uh]”hŒReturn”…”�”}”(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: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.”…”�”}”(hj9Uh²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×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"rvt_unregister_device (C function)”Œc.rvt_unregister_device”hNt”auh1jhj9h²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”…”�”}”(hjhUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjdUh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjdUh²hh³jvUh´MQubjš)�”}”(hŒrvt_unregister_device”h]”jN)�”}”(hŒrvt_unregister_device”h]”hŒrvt_unregister_device”…”�”}”(hj‰Uh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj…Uubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjdUh²hh³jvUh´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)�”}”jgj‹UsbŒ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¼hj�Uubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjdUh²hh³jvUh´MQubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj`Uh²hh³jvUh´MQubah}”(h]”j[Uah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jvUh´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´MQhj%Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj]Uh²hh³jvUh´MQubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj@VjÓj@VjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hŒ=**Parameters** ``struct rvt_dev_info *rdi`` rvt dev struct”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjJVh]”hŒ Parameters”…”�”}”(hjLVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjHVubah}”(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´MUhjDVubjø)�”}”(hhh]”jý)�”}”(hŒ+``struct rvt_dev_info *rdi`` rvt dev struct”h]”(j)�”}”(hŒ``struct rvt_dev_info *rdi``”h]”j )�”}”(hjiVh]”hŒstruct rvt_dev_info *rdi”…”�”}”(hjkVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgVubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MWhjcVubj)�”}”(hhh]”hÝ)�”}”(hŒrvt dev struct”h]”hŒrvt dev struct”…”�”}”(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´MRhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j~Vh´MWhj`Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjDVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_init_port (C function)”Œc.rvt_init_port”hNt”auh1jhj9h²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”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjüVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Wh²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&]”uh1jMhjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j WŒ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Œ*”…”�”}”(hjLWh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjüVubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hjYWh²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”…”�”}”(hjrWh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjnWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjnWubh)�”}”(hhh]”jN)�”}”(hŒ rvt_ibport”h]”hŒ rvt_ibport”…”�”}”(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:WŒc.rvt_init_port”†”asbuh1hhjnWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Wh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjnWubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¼Wh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjnWubjN)�”}”(hŒport”h]”hŒport”…”�”}”(hjÉWh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjnWubeh}”(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”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jXŒmodname”NŒ classname”Njkjn)�”}”jq]”j:WŒc.rvt_init_port”†”asbuh1hhjXubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Xh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjXubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjFXh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjXubjN)�”}”(hŒ pkey_table”h]”hŒ pkey_table”…”�”}”(hjSXh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjXubeh}”(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´MdhjzXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¸Vh²hh³jÑVh´Mdubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj•XjÓj•XjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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áhj�Xubah}”(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”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j Yh´Mfhj Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j Yh´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 )�”}”(hj0Yh]”hŒint port_index”…”�”}”(hj2Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.Yubah}”(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”…”�”}”(hjIYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jEYh´MghjFYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jEYh´MghjµXubjý)�”}”(hŒ,``u16 *pkey_table`` pkey_table for **port** ”h]”(j)�”}”(hŒ``u16 *pkey_table``”h]”j )�”}”(hjiYh]”hŒu16 *pkey_table”…”�”}”(hjkYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:58: ./drivers/infiniband/sw/rdmavt/vt.c”h´MhhjcYubj)�”}”(hhh]”hÝ)�”}”(hŒpkey_table for **port**”h]”(hŒpkey_table for ”…”�”}”(hj‚Yh²hh³Nh´Nubjâ)�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjŠYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj‚Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j~Yh´MhhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjcYubeh}”(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×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_cq_enter (C function)”Œc.rvt_cq_enter”hNt”auh1jhj9h²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ühjZh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:61: ./drivers/infiniband/sw/rdmavt/cq.c”h´Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Zh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZh²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&]”uh1jMhj:Zubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjZh²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”…”�”}”(hjZZh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjVZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgZh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjVZubh)�”}”(hhh]”jN)�”}”(hŒrvt_cq”h]”hŒrvt_cq”…”�”}”(hjxZh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjuZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jzZŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj@ZsbŒc.rvt_cq_enter”†”asbuh1hhjVZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Zh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjVZubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¦Zh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjVZubjN)�”}”(hŒcq”h]”hŒcq”…”�”}”(hj³Zh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjVZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjRZubj½)�”}”(hŒstruct ib_wc *entry”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_wc”h]”hŒib_wc”…”�”}”(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.rvt_cq_enter”†”asbuh1hhjÈZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÈZubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÈZubjN)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj#[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÈZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjRZubj½)�”}”(hŒbool solicited”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hj<[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj8[ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI[h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj8[ubjN)�”}”(hŒ solicited”h]”hŒ solicited”…”�”}”(hjW[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj8[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjRZubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjZh²hh³j+Zh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjZh²hh³j+Zh´Kubah}”(h]”jZah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j+Zh´KhjZh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ'add a new entry to the completion queue”h]”hŒ'add a new entry to the completion queue”…”�”}”(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~[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjZh²hh³j+Zh´Kubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj™[jÓj™[jÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hX&**Parameters** ``struct rvt_cq *cq`` completion queue ``struct ib_wc *entry`` work completion entry to add ``bool solicited`` true if **entry** is solicited **Description** This may be called with qp->s_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 )�”}”(hj4\h]”hŒbool solicited”…”�”}”(hj6\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2\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 ”…”�”}”(hjM\h²hh³Nh´Nubjâ)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hjU\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjM\ubhŒ is solicited”…”�”}”(hjM\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jI\h´KhjJ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jI\h´Khj¹[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: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.”…”�”}”(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�[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×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_error_qp (C function)”Œc.rvt_error_qp”hNt”auh1jhj9h²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Œ ”…”�”}”(hj7]h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&]ubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjH]h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjE]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jJ]Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj]sbŒc.rvt_error_qp”†”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Œ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¼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'hj˜]ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©]h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜]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]”jd]Œc.rvt_error_qp”†”asbuh1hhj˜]ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ]h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜]ubjN)�”}”(hŒerr”h]”hŒerr”…”�”}”(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Œ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²hhj9h³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â)�”}”(hj2^h]”hŒ Parameters”…”�”}”(hj4^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj0^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 )�”}”(hjQ^h]”hŒstruct rvt_qp *qp”…”�”}”(hjS^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO^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øhjK^ubj)�”}”(hhh]”hÝ)�”}”(hŒ"the QP to put into the error state”h]”hŒ"the QP to put into the error state”…”�”}”(hjj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jf^h´Møhjg^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jf^h´MøhjH^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 )�”}”(hjŠ^h]”hŒenum ib_wc_status err”…”�”}”(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Œ: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&]”uh1jhj„^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŸ^h´MùhjH^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×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_get_rwqe (C function)”Œc.rvt_get_rwqe”hNt”auh1jhj9h²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”…”�”}”(hj1_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”…”�”}”(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Œ$(struct rvt_qp *qp, bool wr_id_only)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”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Œ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)�”}”jgjT_sbŒc.rvt_get_rwqe”†”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Œqp”h]”hŒqp”…”�”}”(hjÇ_h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjj_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjf_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¼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Œ%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²hhj9h³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â)�”}”(hjG`h]”hŒ Parameters”…”�”}”(hjI`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjE`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 hjA`ubjø)�”}”(hhh]”(jý)�”}”(hŒ``struct rvt_qp *qp`` the QP ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hjf`h]”hŒstruct rvt_qp *qp”…”�”}”(hjh`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd`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”h]”hŒthe QP”…”�”}”(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Œ;``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÷hjA`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 hjA`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 hjA`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 hjA`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_comm_est (C function)”Œc.rvt_comm_est”hNt”auh1jhj9h²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”…”�”}”(hj.ah²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Œ ”…”�”}”(hj=ah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*ah²hh³jqp 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”…”�”}”(hj!lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjlubah}”(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 hjlubjø)�”}”(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&]”uh1jhjqp 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 hjlubhÝ)�”}”(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 hjlubhÝ)�”}”(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 hjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_qp_iter (C function)”Œ c.rvt_qp_iter”hNt”auh1jhj9h²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Œ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðlh²hh³jmh´M¨ ubjš)�”}”(hŒ rvt_qp_iter”h]”jN)�”}”(hŒ rvt_qp_iter”h]”hŒ rvt_qp_iter”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjmubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjðlh²hh³jmh´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”…”�”}”(hj1mh²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Œ rvt_dev_info”h]”hŒ rvt_dev_info”…”�”}”(hjOmh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjLmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jQmŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjmsbŒ c.rvt_qp_iter”†”asbuh1hhj-mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjomh²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-mubjN)�”}”(hŒrdi”h]”hŒrdi”…”�”}”(hjŠmh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj-mubeh}”(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]”jkmŒ c.rvt_qp_iter”†”asbuh1hhjŸmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŸmubjN)�”}”(hj5hh]”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Œ(”…”�”}”(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æmubjN)�”}”(hŒcb”h]”hŒcb”…”�”}”(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‰)�”}”(hjäh]”hŒ(”…”�”}”(hj;nh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjæmubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjHnh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjæmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUnh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæmubh)�”}”(hhh]”jN)�”}”(hŒrvt_qp”h]”hŒrvt_qp”…”�”}”(hjfnh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjcnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jhnŒmodname”NŒ classname”Njkjn)�”}”jq]”jkmŒ c.rvt_qp_iter”†”asbuh1hhjæmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæmubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj’nh²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]”jkmŒ c.rvt_qp_iter”†”asbuh1hhjæmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjénh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæmubjN)�”}”(hj5hh]”hŒv”…”�”}”(hj÷nh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjæmubj‰)�”}”(hj*äh]”hŒ)”…”�”}”(hjoh²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³jmh´M¨ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjìlh²hh³jmh´M¨ ubah}”(h]”jçlah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jmh´M¨ hjélh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiterate all QPs”h]”hŒiterate all QPs”…”�”}”(hj-oh²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³jmh´M¨ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjEojÓjEojÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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â)�”}”(hjOoh]”hŒ Parameters”…”�”}”(hjQoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjMoubah}”(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¬ hjIoubjø)�”}”(hhh]”(jý)�”}”(hŒ)``struct rvt_dev_info *rdi`` rvt devinfo ”h]”(j)�”}”(hŒ``struct rvt_dev_info *rdi``”h]”j )�”}”(hjnoh]”hŒstruct rvt_dev_info *rdi”…”�”}”(hjpoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjloubah}”(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© hjhoubj)�”}”(hhh]”hÝ)�”}”(hŒ rvt devinfo”h]”hŒ rvt devinfo”…”�”}”(hj‡oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jƒoh´M© hj„oubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jƒoh´M© hjeoubjý)�”}”(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ª hjeoubjý)�”}”(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« hjeoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjIoubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjph]”hŒ Description”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjpubah}”(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­ hjIoubhÝ)�”}”(hŒ*This provides a way for iterating all QPs.”h]”hŒ*This provides a way for iterating all QPs.”…”�”}”(hj1ph²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¬ hjIoubhÝ)�”}”(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”…”�”}”(hjHph²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”…”�”}”(hjZph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj@pubhŒ¢ 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.”…”�”}”(hj@ph²hh³Nh´Nubeh}”(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® hjIoubhÝ)�”}”(hŒEThe code has an internal iterator to simplify non seq_file use cases.”h]”hŒEThe code has an internal iterator to simplify non seq_file use cases.”…”�”}”(hjsph²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³ hjIoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj9h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒrvt_copy_sge (C function)”Œc.rvt_copy_sge”hNt”auh1jhj9h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒuvoid rvt_copy_sge (struct rvt_qp *qp, struct rvt_sge_state *ss, void *data, u32 length, bool release, bool copy_last)”h]”j")�”}”(hŒtvoid rvt_copy_sge(struct rvt_qp *qp, struct rvt_sge_state *ss, void *data, u32 length, bool release, bool copy_last)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjžph²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±ph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjžph²hh³j°ph´Mï ubjš)�”}”(hŒ rvt_copy_sge”h]”jN)�”}”(hŒ rvt_copy_sge”h]”hŒ rvt_copy_sge”…”�”}”(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´Mï ubj·)�”}”(hŒc(struct rvt_qp *qp, struct rvt_sge_state *ss, void *data, u32 length, bool release, bool copy_last)”h]”(j½)�”}”(hŒstruct rvt_qp *qp”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Œrvt_qp”h]”hŒrvt_qp”…”�”}”(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]”jt)�”}”jgjÅpsbŒc.rvt_copy_sge”†”asbuh1hhjÛpubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛpubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj+qh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÛpubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hj8qh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÛpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj×pubj½)�”}”(hŒstruct rvt_sge_state *ss”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjQqh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjMqubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjMqubh)�”}”(hhh]”jN)�”}”(hŒ rvt_sge_state”h]”hŒ rvt_sge_state”…”�”}”(hjoqh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjlqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jqqŒmodname”NŒ classname”Njkjn)�”}”jq]”jqŒc.rvt_copy_sge”†”asbuh1hhjMqubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjMqubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj›qh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjMqubjN)�”}”(hŒss”h]”hŒss”…”�”}”(hj¨qh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjMqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj×pubj½)�”}”(hŒ void *data”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÁqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj½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Œdata”h]”hŒdata”…”�”}”(hjêqh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj½qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj×pubj½)�”}”(hŒ u32 length”h]”(h)�”}”(hhh]”jN)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jrŒmodname”NŒ classname”Njkjn)�”}”jq]”jqŒc.rvt_copy_sge”†”asbuh1hhjÿqubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$rh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿqubjN)�”}”(hŒlength”h]”hŒlength”…”�”}”(hj2rh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÿqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj×pubj½)�”}”(hŒ bool release”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hjKrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjGrubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXrh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjGrubjN)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjfrh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjGrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj×pubj½)�”}”(hŒbool copy_last”h]”(jý)�”}”(hjÇjh]”hŒbool”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj{rubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒrh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{rubjN)�”}”(hŒ copy_last”h]”hŒ copy_last”…”�”}”(hjšrh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj{rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj×pubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjžph²hh³j°ph´Mï ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjšph²hh³j°ph´Mï ubah}”(h]”j•pah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j°ph´Mï hj—ph²hubj±)�”}”(hhh]”hÝ)�”}”(hŒcopy data to SGE memory”h]”hŒcopy data to SGE memory”…”�”}”(hjÄrh²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Árh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj—ph²hh³j°ph´Mï ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÜrjÓjÜrjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³Nh´NubjØ)�”}”(hX**Parameters** ``struct rvt_qp *qp`` associated QP ``struct rvt_sge_state *ss`` the SGE state ``void *data`` the data to copy ``u32 length`` the length of the data ``bool release`` boolean to release MR ``bool copy_last`` do a separate copy of the last 8 bytes”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjærh]”hŒ Parameters”…”�”}”(hjèrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjärubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:64: ./drivers/infiniband/sw/rdmavt/qp.c”h´Mó hjàrubjø)�”}”(hhh]”(jý)�”}”(hŒ$``struct rvt_qp *qp`` associated QP ”h]”(j)�”}”(hŒ``struct rvt_qp *qp``”h]”j )�”}”(hjsh]”hŒstruct rvt_qp *qp”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsubah}”(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ÿrubj)�”}”(hhh]”hÝ)�”}”(hŒ associated QP”h]”hŒ associated QP”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jsh´Mð hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jsh´Mð hjürubjý)�”}”(hŒ+``struct rvt_sge_state *ss`` the SGE state ”h]”(j)�”}”(hŒ``struct rvt_sge_state *ss``”h]”j )�”}”(hj>sh]”hŒstruct rvt_sge_state *ss”…”�”}”(hj@sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjãvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjovubj½)�”}”(hŒu16 lid”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjZwh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjWwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j\wŒmodname”NŒ classname”Njkjn)�”}”jq]”j8vŒc.rvt_mcast_find”†”asbuh1hhjSwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxwh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjSwubjN)�”}”(hŒlid”h]”hŒlid”…”�”}”(hj†wh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjSwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjovubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjùuh²hh³j vh´K^ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjõuh²hh³j vh´K^ubah}”(h]”jðuah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j vh´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 vh´K^ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÈwjÓjÈwjÔ‰jÕ‰jÖ‰uh1jh²hhj9h³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ø•1)�”}”(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 xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jxh´Kahjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jxh´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”…”�”}”(hj,xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(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´Kbhj$xubj)�”}”(hhh]”hÝ)�”}”(hŒthe multicast GID to search for”h]”hŒthe multicast GID to search for”…”�”}”(hjCxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j?xh´Kbhj@xubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$xubeh}”(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 )�”}”(hjcxh]”hŒu16 lid”…”�”}”(hjexh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaxubah}”(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³jxxh´Kchjyxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jxxh´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.”…”�”}”(hjyh²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×hj9h²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”…”�”}”(hj#yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj yh²hh³hÊh´KGubh¶)�”}”(hhh]”(h»)�”}”(hŒ iSCSI Extensions for RDMA (iSER)”h]”hŒ iSCSI Extensions for RDMA (iSER)”…”�”}”(hj4yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj1yh²hh³hÊh´KJubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_data_buf (C struct)”Œc.iser_data_buf”hNt”auh1jhj1yh²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'hjWyh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiyh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWyh²hh³jhyh´Kubjš)�”}”(hŒ iser_data_buf”h]”jN)�”}”(hjUyh]”hŒ iser_data_buf”…”�”}”(hj{yh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjwyubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjWyh²hh³jhyh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjSyh²hh³jhyh´Kubah}”(h]”jNyah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jhyh´KhjPyh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiSER data buffer”h]”hŒiSER data buffer”…”�”}”(hj�yh²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°hjPyh²hh³jhyh´Kubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjµyjÓjµyjÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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 zh]”hŒsg”…”�”}”(hjzh²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¸hjzubj)�”}”(hhh]”hÝ)�”}”(hŒpointer to the sg list”h]”hŒpointer to the sg list”…”�”}”(hj%zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j!zh´K¸hj"zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j!zh´K¸hjzubjý)�”}”(hŒ ``size`` num entries of this sg ”h]”(j)�”}”(hŒ``size``”h]”j )�”}”(hjEzh]”hŒsize”…”�”}”(hjGzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCzubah}”(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³jZzh´K¹hj[zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jZzh´K¹hjzubjý)�”}”(hŒ#``data_len`` total buffer byte len ”h]”(j)�”}”(hŒ ``data_len``”h]”j )�”}”(hj~zh]”hŒdata_len”…”�”}”(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ºhjxzubj)�”}”(hhh]”hÝ)�”}”(hŒtotal buffer byte len”h]”hŒtotal buffer byte len”…”�”}”(hj—zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j“zh´Kºhj”zubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j“zh´Kºhjzubjý)�”}”(hŒ$``dma_nents`` returned by dma_map_sg”h]”(j)�”}”(hŒ ``dma_nents``”h]”j )�”}”(hj·zh]”hŒ dma_nents”…”�”}”(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Œreturned by dma_map_sg”h]”hŒreturned by dma_map_sg”…”�”}”(hjÐzh²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Ízubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÌzh´Kºhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¹yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_mem_reg (C struct)”Œc.iser_mem_reg”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_mem_reg”h]”j")�”}”(hŒstruct iser_mem_reg”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´KÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj {h²hh³j{h´KÁubjš)�”}”(hŒ iser_mem_reg”h]”jN)�”}”(hj {h]”hŒ iser_mem_reg”…”�”}”(hj1{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ŒiSER memory registration info”h]”hŒiSER memory registration info”…”�”}”(hjS{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´KÊhjP{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj{h²hh³j{h´KÁubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjk{jÓjk{jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³Nh´NubjØ)�”}”(hŒÿ**Definition**:: struct iser_mem_reg { struct ib_sge sge; u32 rkey; struct iser_fr_desc *desc; }; **Members** ``sge`` memory region sg element ``rkey`` memory region remote key ``desc`` pointer to fast registration context”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(jâ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjw{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjs{ubhŒ:”…”�”}”(hjs{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´KÎhjo{ubjÛy)�”}”(hŒ\struct iser_mem_reg { struct ib_sge sge; u32 rkey; struct iser_fr_desc *desc; };”h]”hŒ\struct iser_mem_reg { struct ib_sge sge; u32 rkey; struct iser_fr_desc *desc; };”…”�”}”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´KÐhjo{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´KÖhjo{ubjø)�”}”(hhh]”(jý)�”}”(hŒ!``sge`` memory region sg element ”h]”(j)�”}”(hŒ``sge``”h]”j )�”}”(hjÀ{h]”hŒsge”…”�”}”(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´KÍhjº{ubj)�”}”(hhh]”hÝ)�”}”(hŒmemory region sg element”h]”hŒmemory region sg 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Œ"``rkey`` memory region remote key ”h]”(j)�”}”(hŒ``rkey``”h]”j )�”}”(hjù{h]”hŒrkey”…”�”}”(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´KÎhjó{ubj)�”}”(hhh]”hÝ)�”}”(hŒmemory region remote key”h]”hŒmemory region remote key”…”�”}”(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Œ-``desc`` pointer to fast registration context”h]”(j)�”}”(hŒ``desc``”h]”j )�”}”(hj2|h]”hŒdesc”…”�”}”(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:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´KÎhj,|ubj)�”}”(hhh]”hÝ)�”}”(hŒ$pointer to fast registration context”h]”hŒ$pointer to fast registration context”…”�”}”(hjK|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´KÏhjH|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jG|h´KÎhj·{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjo{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_tx_desc (C struct)”Œc.iser_tx_desc”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_tx_desc”h]”j")�”}”(hŒstruct iser_tx_desc”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´KÕubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš|h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆ|h²hh³j™|h´KÕubjš)�”}”(hŒ iser_tx_desc”h]”jN)�”}”(hj†|h]”hŒ iser_tx_desc”…”�”}”(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ŒiSER TX descriptor”h]”hŒiSER TX 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´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²hhj1yh³Nh´NubjØ)�”}”(hX±**Definition**:: struct iser_tx_desc { struct iser_ctrl iser_header; struct iscsi_hdr iscsi_header; enum iser_desc_type type; u64 dma_addr; struct ib_sge tx_sg[2]; int num_sge; struct ib_cqe cqe; bool mapped; struct ib_reg_wr reg_wr; struct ib_send_wr send_wr; struct ib_send_wr inv_wr; }; **Members** ``iser_header`` iser header ``iscsi_header`` iscsi header ``type`` command/control/dataout ``dma_addr`` header buffer dma_address ``tx_sg`` sg[0] points to iser/iscsi headers sg[1] optionally points to either of immediate data unsolicited data-out or control ``num_sge`` number sges used on this TX task ``cqe`` completion handler ``mapped`` Is the task header mapped ``reg_wr`` registration WR ``send_wr`` send WR ``inv_wr`` invalidate WR”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´Káhjê|ubjÛy)�”}”(hX›struct iser_tx_desc { struct iser_ctrl iser_header; struct iscsi_hdr iscsi_header; enum iser_desc_type type; u64 dma_addr; struct ib_sge tx_sg[2]; int num_sge; struct ib_cqe cqe; bool mapped; struct ib_reg_wr reg_wr; struct ib_send_wr send_wr; struct ib_send_wr inv_wr; };”h]”hX›struct iser_tx_desc { struct iser_ctrl iser_header; struct iscsi_hdr iscsi_header; enum iser_desc_type type; u64 dma_addr; struct ib_sge tx_sg[2]; int num_sge; struct ib_cqe cqe; bool mapped; struct ib_reg_wr reg_wr; struct ib_send_wr send_wr; struct ib_send_wr inv_wr; };”…”�”}”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´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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Kñhjê|ubjø)�”}”(hhh]”(jý)�”}”(hŒ``iser_header`` iser header ”h]”(j)�”}”(hŒ``iser_header``”h]”j )�”}”(hj;}h]”hŒ iser_header”…”�”}”(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´Kàhj5}ubj)�”}”(hhh]”hÝ)�”}”(hŒ iser header”h]”hŒ iser header”…”�”}”(hjT}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jP}h´KàhjQ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jP}h´Kàhj2}ubjý)�”}”(hŒ``iscsi_header`` iscsi header ”h]”(j)�”}”(hŒ``iscsi_header``”h]”j )�”}”(hjt}h]”hŒ iscsi_header”…”�”}”(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´Káhjn}ubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi header”h]”hŒ iscsi header”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‰}h´KáhjŠ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‰}h´Káhj2}ubjý)�”}”(hŒ!``type`` command/control/dataout ”h]”(j)�”}”(hŒ``type``”h]”j )�”}”(hj­}h]”hŒtype”…”�”}”(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´Kâhj§}ubj)�”}”(hhh]”hÝ)�”}”(hŒcommand/control/dataout”h]”hŒcommand/control/dataout”…”�”}”(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âhj2}ubjý)�”}”(hŒ'``dma_addr`` header buffer dma_address ”h]”(j)�”}”(hŒ ``dma_addr``”h]”j )�”}”(hjæ}h]”hŒdma_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:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Kãhjà}ubj)�”}”(hhh]”hÝ)�”}”(hŒheader buffer dma_address”h]”hŒheader buffer dma_address”…”�”}”(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ãhj2}ubjý)�”}”(hŒ�``tx_sg`` sg[0] points to iser/iscsi headers sg[1] optionally points to either of immediate data unsolicited data-out or control ”h]”(j)�”}”(hŒ ``tx_sg``”h]”j )�”}”(hj~h]”hŒtx_sg”…”�”}”(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´Kæhj~ubj)�”}”(hhh]”hÝ)�”}”(hŒvsg[0] points to iser/iscsi headers sg[1] optionally points to either of immediate data unsolicited data-out or control”h]”hŒvsg[0] points to iser/iscsi headers sg[1] optionally points to either of immediate data unsolicited data-out or control”…”�”}”(hj8~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´Kähj5~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j4~h´Kæhj2}ubjý)�”}”(hŒ-``num_sge`` number sges used on this TX task ”h]”(j)�”}”(hŒ ``num_sge``”h]”j )�”}”(hjY~h]”hŒnum_sge”…”�”}”(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:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´KçhjS~ubj)�”}”(hhh]”hÝ)�”}”(hŒ number sges used on this TX task”h]”hŒ number sges used on this TX task”…”�”}”(hjr~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jn~h´Kçhjo~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjS~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jn~h´Kçhj2}ubjý)�”}”(hŒ``cqe`` completion handler ”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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´KèhjŒ~ubj)�”}”(hhh]”hÝ)�”}”(hŒcompletion handler”h]”hŒcompletion handler”…”�”}”(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èhj2}ubjý)�”}”(hŒ%``mapped`` Is the task header mapped ”h]”(j)�”}”(hŒ ``mapped``”h]”j )�”}”(hjË~h]”hŒmapped”…”�”}”(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´KéhjÅ~ubj)�”}”(hhh]”hÝ)�”}”(hŒIs the task header mapped”h]”hŒIs the task header mapped”…”�”}”(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éhj2}ubjý)�”}”(hŒ``reg_wr`` registration WR ”h]”(j)�”}”(hŒ ``reg_wr``”h]”j )�”}”(hjh]”hŒreg_wr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(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þ~ubj)�”}”(hhh]”hÝ)�”}”(hŒregistration WR”h]”hŒregistration WR”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Kêhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´Kêhj2}ubjý)�”}”(hŒ``send_wr`` send WR ”h]”(j)�”}”(hŒ ``send_wr``”h]”j )�”}”(hj=h]”hŒsend_wr”…”�”}”(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´Këhj7ubj)�”}”(hhh]”hÝ)�”}”(hŒsend WR”h]”hŒsend WR”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jRh´KëhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jRh´Këhj2}ubjý)�”}”(hŒ``inv_wr`` invalidate WR”h]”(j)�”}”(hŒ ``inv_wr``”h]”j )�”}”(hjvh]”hŒinv_wr”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtubah}”(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ëhjpubj)�”}”(hhh]”hÝ)�”}”(hŒ invalidate WR”h]”hŒ invalidate WR”…”�”}”(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´KìhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‹h´Këhj2}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjê|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_rx_desc (C struct)”Œc.iser_rx_desc”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_rx_desc”h]”j")�”}”(hŒstruct iser_rx_desc”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´Kòubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÌh²hh³jÝh´Kòubjš)�”}”(hŒ iser_rx_desc”h]”jN)�”}”(hjÊh]”hŒ iser_rx_desc”…”�”}”(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ŒiSER RX descriptor”h]”hŒiSER RX 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´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²hhj1yh³Nh´NubjØ)�”}”(hXg**Definition**:: struct iser_rx_desc { struct iser_ctrl iser_header; struct iscsi_hdr iscsi_header; char data[ISER_RECV_DATA_SEG_LEN]; u64 dma_addr; struct ib_sge rx_sg; struct ib_cqe cqe; char pad[ISER_RX_PAD_SIZE]; }; **Members** ``iser_header`` iser header ``iscsi_header`` iscsi header ``data`` received data segment ``dma_addr`` receive buffer dma address ``rx_sg`` ib_sge of receive buffer ``cqe`` completion handler ``pad`` for sense data TODO: Modify to maximum sense length supported”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(jâ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj6€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj2€ubhŒ:”…”�”}”(hj2€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_rx_desc { struct iser_ctrl iser_header; struct iscsi_hdr iscsi_header; char data[ISER_RECV_DATA_SEG_LEN]; u64 dma_addr; struct ib_sge rx_sg; struct ib_cqe cqe; char pad[ISER_RX_PAD_SIZE]; };”h]”hXstruct iser_rx_desc { struct iser_ctrl iser_header; struct iscsi_hdr iscsi_header; char data[ISER_RECV_DATA_SEG_LEN]; u64 dma_addr; struct ib_sge rx_sg; struct ib_cqe cqe; char pad[ISER_RX_PAD_SIZE]; };”…”�”}”hjO€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´Mhj.€ubhÝ)�”}”(hŒ **Members**”h]”jâ)�”}”(hj`€h]”hŒMembers”…”�”}”(hjb€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´Mhj.€ubjø)�”}”(hhh]”(jý)�”}”(hŒ``iser_header`` iser header ”h]”(j)�”}”(hŒ``iser_header``”h]”j )�”}”(hj€h]”hŒ iser_header”…”�”}”(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´Mhjy€ubj)�”}”(hhh]”hÝ)�”}”(hŒ iser header”h]”hŒ iser header”…”�”}”(hj˜€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”€h´Mhj•€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”€h´Mhjv€ubjý)�”}”(hŒ``iscsi_header`` iscsi header ”h]”(j)�”}”(hŒ``iscsi_header``”h]”j )�”}”(hj¸€h]”hŒ iscsi_header”…”�”}”(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´Mhj²€ubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi header”h]”hŒ iscsi header”…”�”}”(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´Mhjv€ubjý)�”}”(hŒ``data`` received data segment ”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´Mhjë€ubj)�”}”(hhh]”hÝ)�”}”(hŒreceived data segment”h]”hŒreceived data segment”…”�”}”(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´Mhjv€ubjý)�”}”(hŒ(``dma_addr`` receive buffer dma address ”h]”(j)�”}”(hŒ ``dma_addr``”h]”j )�”}”(hj*�h]”hŒdma_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:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mhj$�ubj)�”}”(hhh]”hÝ)�”}”(hŒreceive buffer dma address”h]”hŒreceive buffer dma address”…”�”}”(hjC�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´Mhjv€ubjý)�”}”(hŒ#``rx_sg`` ib_sge of receive buffer ”h]”(j)�”}”(hŒ ``rx_sg``”h]”j )�”}”(hjc�h]”hŒrx_sg”…”�”}”(hje�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhja�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´Mhj]�ubj)�”}”(hhh]”hÝ)�”}”(hŒib_sge of receive buffer”h]”hŒib_sge of receive buffer”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jx�h´Mhjy�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jx�h´Mhjv€ubjý)�”}”(hŒ``cqe`` completion handler ”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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mhj–�ubj)�”}”(hhh]”hÝ)�”}”(hŒcompletion handler”h]”hŒcompletion handler”…”�”}”(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´Mhjv€ubjý)�”}”(hŒE``pad`` for sense data TODO: Modify to maximum sense length supported”h]”(j)�”}”(hŒ``pad``”h]”j )�”}”(hjÕ�h]”hŒpad”…”�”}”(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´MhjÏ�ubj)�”}”(hhh]”hÝ)�”}”(hŒ=for sense data TODO: Modify to maximum sense length supported”h]”hŒ=for sense data TODO: Modify to maximum sense length supported”…”�”}”(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´Mhjë�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jê�h´Mhjv€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj.€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_login_desc (C struct)”Œc.iser_login_desc”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiser_login_desc”h]”j")�”}”(hŒstruct iser_login_desc”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´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj+‚h²hh³j<‚h´Mubjš)�”}”(hŒiser_login_desc”h]”jN)�”}”(hj)‚h]”hŒiser_login_desc”…”�”}”(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´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ŒiSER login descriptor”h]”hŒiSER login descriptor”…”�”}”(hjq‚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´Mhjn‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj$‚h²hh³j<‚h´Mubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj‰‚jÓj‰‚jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³Nh´NubjØ)�”}”(hXØ**Definition**:: struct iser_login_desc { void *req; void *rsp; u64 req_dma; u64 rsp_dma; struct ib_sge sge; struct ib_cqe cqe; }; **Members** ``req`` pointer to login request buffer ``rsp`` pointer to login response buffer ``req_dma`` DMA address of login request buffer ``rsp_dma`` DMA address of login response buffer ``sge`` IB sge for login post recv ``cqe`` completion handler”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)�”}”(hŒ§struct iser_login_desc { void *req; void *rsp; u64 req_dma; u64 rsp_dma; struct ib_sge sge; struct ib_cqe cqe; };”h]”hŒ§struct iser_login_desc { void *req; void *rsp; u64 req_dma; u64 rsp_dma; struct ib_sge sge; struct ib_cqe cqe; };”…”�”}”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´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³Œ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Œ(``req`` pointer to login request buffer ”h]”(j)�”}”(hŒ``req``”h]”j )�”}”(hjÞ‚h]”hŒreq”…”�”}”(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´MhjØ‚ubj)�”}”(hhh]”hÝ)�”}”(hŒpointer to login request buffer”h]”hŒpointer to login request buffer”…”�”}”(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Œ)``rsp`` pointer to login response buffer ”h]”(j)�”}”(hŒ``rsp``”h]”j )�”}”(hjƒh]”hŒrsp”…”�”}”(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´Mhjƒubj)�”}”(hhh]”hÝ)�”}”(hŒ pointer to login response buffer”h]”hŒ pointer to login response buffer”…”�”}”(hj0ƒ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Œ0``req_dma`` DMA address of login request buffer ”h]”(j)�”}”(hŒ ``req_dma``”h]”j )�”}”(hjPƒh]”hŒreq_dma”…”�”}”(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´MhjJƒubj)�”}”(hhh]”hÝ)�”}”(hŒ#DMA address of login request buffer”h]”hŒ#DMA address of login request buffer”…”�”}”(hjiƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jeƒh´Mhjfƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jeƒh´MhjÕ‚ubjý)�”}”(hŒ1``rsp_dma`` DMA address of login response buffer ”h]”(j)�”}”(hŒ ``rsp_dma``”h]”j )�”}”(hj‰ƒh]”hŒrsp_dma”…”�”}”(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´Mhjƒƒubj)�”}”(hhh]”hÝ)�”}”(hŒ$DMA address of login response buffer”h]”hŒ$DMA address of login response buffer”…”�”}”(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Œ#``sge`` IB sge for login post recv ”h]”(j)�”}”(hŒ``sge``”h]”j )�”}”(hjƒh]”hŒsge”…”�”}”(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´Mhj¼ƒubj)�”}”(hhh]”hÝ)�”}”(hŒIB sge for login post recv”h]”hŒIB sge for login post recv”…”�”}”(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Œ``cqe`` completion handler”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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´Mhjõƒ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´Mhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j„h´MhjÕ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj�‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_device (C struct)”Œ c.iser_device”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_device”h]”j")�”}”(hŒstruct iser_device”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjU„h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjQ„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Œ ”…”�”}”(hjc„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQ„h²hh³jb„h´M"ubjš)�”}”(hŒ iser_device”h]”jN)�”}”(hjO„h]”hŒ iser_device”…”�”}”(hju„h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjq„ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjQ„h²hh³jb„h´M"ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjM„h²hh³jb„h´M"ubah}”(h]”jH„ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jb„h´M"hjJ„h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒiSER device handle”h]”hŒiSER device handle”…”�”}”(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°hjJ„h²hh³jb„h´M"ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj¯„jÓj¯„jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³Nh´NubjØ)�”}”(hXå**Definition**:: struct iser_device { struct ib_device *ib_device; struct ib_pd *pd; struct ib_event_handler event_handler; struct list_head ig_list; int refcount; }; **Members** ``ib_device`` RDMA device ``pd`` Protection Domain for this device ``event_handler`` IB events handle routine ``ig_list`` entry in devices list ``refcount`` Reference counter, dominated by open iser connections”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_device { struct ib_device *ib_device; struct ib_pd *pd; struct ib_event_handler event_handler; struct list_head ig_list; int refcount; };”h]”hŒÖstruct iser_device { struct ib_device *ib_device; struct ib_pd *pd; struct ib_event_handler event_handler; struct list_head ig_list; int refcount; };”…”�”}”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´M0hj³„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´M8hj³„ubjø)�”}”(hhh]”(jý)�”}”(hŒ``ib_device`` RDMA device ”h]”(j)�”}”(hŒ ``ib_device``”h]”j )�”}”(hj…h]”hŒ ib_device”…”�”}”(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Œ 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Œ)``pd`` Protection Domain for this device ”h]”(j)�”}”(hŒ``pd``”h]”j )�”}”(hj=…h]”hŒpd”…”�”}”(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.hj7…ubj)�”}”(hhh]”hÝ)�”}”(hŒ!Protection Domain for this device”h]”hŒ!Protection Domain for this device”…”�”}”(hjV…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jR…h´M.hjS…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jR…h´M.hjû„ubjý)�”}”(hŒ+``event_handler`` IB events handle routine ”h]”(j)�”}”(hŒ``event_handler``”h]”j )�”}”(hjv…h]”hŒ event_handler”…”�”}”(hjx…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt…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/hjp…ubj)�”}”(hhh]”hÝ)�”}”(hŒIB events handle routine”h]”hŒIB events handle routine”…”�”}”(hj�…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‹…h´M/hjŒ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‹…h´M/hjû„ubjý)�”}”(hŒ"``ig_list`` entry in devices list ”h]”(j)�”}”(hŒ ``ig_list``”h]”j )�”}”(hj¯…h]”hŒig_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´M0hj©…ubj)�”}”(hhh]”hÝ)�”}”(hŒentry in devices list”h]”hŒentry in devices list”…”�”}”(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ŒB``refcount`` Reference counter, dominated by open iser connections”h]”(j)�”}”(hŒ ``refcount``”h]”j )�”}”(hjè…h]”hŒrefcount”…”�”}”(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´M0hjâ…ubj)�”}”(hhh]”hÝ)�”}”(hŒ5Reference counter, dominated by open iser connections”h]”hŒ5Reference counter, dominated by open iser connections”…”�”}”(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´M1hjþ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jý…h´M0hjû„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj³„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_reg_resources (C struct)”Œc.iser_reg_resources”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiser_reg_resources”h]”j")�”}”(hŒstruct iser_reg_resources”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjB†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´M7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP†h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>†h²hh³jO†h´M7ubjš)�”}”(hŒiser_reg_resources”h]”jN)�”}”(hj<†h]”hŒiser_reg_resources”…”�”}”(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³jO†h´M7ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj:†h²hh³jO†h´M7ubah}”(h]”j5†ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jO†h´M7hj7†h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒFast registration resources”h]”hŒFast registration resources”…”�”}”(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°hj7†h²hh³jO†h´M7ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjœ†jÓjœ†jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³Nh´NubjØ)�”}”(hŒÛ**Definition**:: struct iser_reg_resources { struct ib_mr *mr; struct ib_mr *sig_mr; }; **Members** ``mr`` memory region ``sig_mr`` signature memory region”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Œvstruct iser_reg_resources { struct ib_mr *mr; struct ib_mr *sig_mr; };”h]”hŒvstruct iser_reg_resources { struct ib_mr *mr; struct ib_mr *sig_mr; };”…”�”}”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´MAhj †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´MFhj †ubjø)�”}”(hhh]”(jý)�”}”(hŒ``mr`` memory region ”h]”(j)�”}”(hŒ``mr``”h]”j )�”}”(hjñ†h]”hŒ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Œ 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”…”�”}”(hjC‡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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_fr_desc (C struct)”Œc.iser_fr_desc”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_fr_desc”h]”j")�”}”(hŒstruct iser_fr_desc”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´MEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€‡h²hh³j‘‡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™hj€‡h²hh³j‘‡h´MEubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj|‡h²hh³j‘‡h´MEubah}”(h]”jw‡ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‘‡h´MEhjy‡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°hjy‡h²hh³j‘‡h´MEubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjÞ‡jÓjÞ‡jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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 )�”}”(hj3ˆh]”hŒlist”…”�”}”(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´MIhj-ˆubj)�”}”(hhh]”hÝ)�”}”(hŒ entry in connection fastreg pool”h]”hŒ entry in connection fastreg pool”…”�”}”(hjLˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jHˆh´MIhjIˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jHˆh´MIhj*ˆubjý)�”}”(hŒ+``rsc`` data buffer registration resources ”h]”(j)�”}”(hŒ``rsc``”h]”j )�”}”(hjlˆh]”hŒrsc”…”�”}”(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´MJhjfˆubj)�”}”(hhh]”hÝ)�”}”(hŒ"data buffer registration resources”h]”hŒ"data buffer registration resources”…”�”}”(hj…ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�ˆh´MJhj‚ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�ˆ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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_fr_pool (C struct)”Œc.iser_fr_pool”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_fr_pool”h]”j")�”}”(hŒstruct iser_fr_pool”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj8‰h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj4‰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Œ ”…”�”}”(hjF‰h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4‰h²hh³jE‰h´MRubjš)�”}”(hŒ iser_fr_pool”h]”jN)�”}”(hj2‰h]”hŒ iser_fr_pool”…”�”}”(hjX‰h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjT‰ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj4‰h²hh³jE‰h´MRubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj0‰h²hh³jE‰h´MRubah}”(h]”j+‰ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jE‰h´MRhj-‰h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ!connection fast registration pool”h]”hŒ!connection fast registration pool”…”�”}”(hjz‰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´MUhjw‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj-‰h²hh³jE‰h´MRubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj’‰jÓj’‰jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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´MYhj–‰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[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´Mbhj–‰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&]”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´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”…”�”}”(hj9Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j5Šh´MYhj6Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j5Šh´MYhjÞ‰ubjý)�”}”(hŒ``size`` size of the pool ”h]”(j)�”}”(hŒ``size``”h]”j )�”}”(hjYŠh]”hŒsize”…”�”}”(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:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´MZhjSŠubj)�”}”(hhh]”hÝ)�”}”(hŒsize of the pool”h]”hŒsize of the pool”…”�”}”(hjrŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jnŠh´MZhjoŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jnŠh´MZhjÞ‰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´MZhjŒŠ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&]”uh1jhjŒŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j§Šh´MZhjÞ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj–‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒib_conn (C struct)”Œ c.ib_conn”hNt”auh1jhj1yh²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ÒjF‹jÓjF‹jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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”…”�”}”(hjR‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjN‹ubhŒ:”…”�”}”(hjN‹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´MhhjJ‹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; };”…”�”}”hjk‹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´MjhjJ‹ubhÝ)�”}”(hŒ **Members**”h]”jâ)�”}”(hj|‹h]”hŒMembers”…”�”}”(hj~‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjz‹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´MuhjJ‹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´Mghj•‹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&]”uh1jhj•‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j°‹h´Mghj’‹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´Mhhj’‹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´Mihj’‹ubjý)�”}”(hŒ6``cq_size`` The number of max outstanding completions ”h]”(j)�”}”(hŒ ``cq_size``”h]”j )�”}”(hjFŒh]”hŒcq_size”…”�”}”(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: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”…”�”}”(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Œ$``device`` reference to iser device ”h]”(j)�”}”(hŒ ``device``”h]”j )�”}”(hjŒh]”hŒdevice”…”�”}”(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´MkhjyŒubj)�”}”(hhh]”hÝ)�”}”(hŒreference to iser device”h]”hŒreference to iser device”…”�”}”(hj˜Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”Œh´Mkhj•Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”Œh´Mkhj’‹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´Mlhj’‹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´Mmhj’‹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”…”�”}”(hjC�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´Mmhj’‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJ‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_conn (C struct)”Œ c.iser_conn”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_conn”h]”j")�”}”(hŒstruct iser_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´Mtubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€�h²hh³j‘�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™hj€�h²hh³j‘�h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj|�h²hh³j‘�h´Mtubah}”(h]”jw�ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j‘�h´Mthjy�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°hjy�h²hh³j‘�h´Mtubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjÞ�jÓjÞ�jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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 )�”}”(hj3Žh]”hŒib_conn”…”�”}”(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Œconnection RDMA resources”h]”hŒconnection RDMA resources”…”�”}”(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Œ1``iscsi_conn`` link to matching iscsi connection ”h]”(j)�”}”(hŒ``iscsi_conn``”h]”j )�”}”(hjlŽh]”hŒ iscsi_conn”…”�”}”(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´MhjfŽ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´Mhj‚Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�Ž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”…”�”}”(hj0�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 )�”}”(hjQ�h]”hŒmax_cmds”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO�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„hjK�ubj)�”}”(hhh]”hÝ)�”}”(hŒ(maximum cmds allowed for this connection”h]”hŒ(maximum cmds allowed for this connection”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jf�h´M„hjg�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jf�h´M„hj*Žubjý)�”}”(hŒ ``name`` connection peer portal ”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³Œ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 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&]”uh1jhj„�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 )�”}”(hj5�h]”hŒstop_completion”…”�”}”(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Œconn_stop completion”h]”hŒconn_stop completion”…”�”}”(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Œ*``ib_completion`` RDMA cleanup completion ”h]”(j)�”}”(hŒ``ib_completion``”h]”j )�”}”(hjn�h]”hŒ ib_completion”…”�”}”(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ŒRDMA cleanup completion”h]”hŒRDMA cleanup completion”…”�”}”(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Œ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”…”�”}”(hj3‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j/‘h´M�hj0‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j/‘h´M�hj*Žubjý)�”}”(hŒ.``rx_descs`` rx buffers array (cyclic buffer) ”h]”(j)�”}”(hŒ ``rx_descs``”h]”j )�”}”(hjS‘h]”hŒrx_descs”…”�”}”(hjU‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ‘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ŽhjM‘ubj)�”}”(hhh]”hÝ)�”}”(hŒ rx buffers array (cyclic buffer)”h]”hŒ rx buffers array (cyclic buffer)”…”�”}”(hjl‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh‘h´MŽhji‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh‘h´MŽhj*Žubjý)�”}”(hŒ*``num_rx_descs`` number of rx descriptors ”h]”(j)�”}”(hŒ``num_rx_descs``”h]”j )�”}”(hjŒ‘h]”hŒ num_rx_descs”…”�”}”(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Œ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&]”uh1jhj†‘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 )�”}”(hj7’h]”hŒ snd_w_inv”…”�”}”(hj9’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5’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‘hj1’ubj)�”}”(hhh]”hÝ)�”}”(hŒ#connection uses remote invalidation”h]”hŒ#connection uses remote invalidation”…”�”}”(hjP’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’hjM’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jL’h´M‘hj*Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjâ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiscsi_iser_task (C struct)”Œc.iscsi_iser_task”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiscsi_iser_task”h]”j")�”}”(hŒstruct iscsi_iser_task”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´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_task”h]”jN)�”}”(hj‹’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™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Œ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°hj†’h²hh³jž’h´M˜ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjë’jÓjë’jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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”…”�”}”(hjB“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”…”�”}”(hjY“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jU“h´M­hjV“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jU“h´M­hj7“ubjý)�”}”(hŒ&``iser_conn`` link to iser connection ”h]”(j)�”}”(hŒ ``iser_conn``”h]”j )�”}”(hjy“h]”hŒ iser_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:76: ./drivers/infiniband/ulp/iser/iscsi_iser.h”h´M®hjs“ubj)�”}”(hhh]”hÝ)�”}”(hŒlink to iser connection”h]”hŒlink to iser connection”…”�”}”(hj’“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŽ“h´M®hj�“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŽ“h´M®hj7“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¯hj7“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°hj7“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³j9”h´M±hj:”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j9”h´M±hj7“ubjý)�”}”(hŒ``dir`` iser data direction ”h]”(j)�”}”(hŒ``dir``”h]”j )�”}”(hj]”h]”hŒdir”…”�”}”(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²hjW”ubj)�”}”(hhh]”hÝ)�”}”(hŒiser data direction”h]”hŒiser data direction”…”�”}”(hjv”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jr”h´M²hjs”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jr”h´M²hj7“ubjý)�”}”(hŒ)``rdma_reg`` task rdma registration desc ”h]”(j)�”}”(hŒ ``rdma_reg``”h]”j )�”}”(hj–”h]”hŒrdma_reg”…”�”}”(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Œ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&]”uh1jhj�”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j«”h´M³hj7“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´hj7“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´hj7“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjï’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_global (C struct)”Œ c.iser_global”hNt”auh1jhj1yh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ iser_global”h]”j")�”}”(hŒstruct iser_global”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjb•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Œ ”…”�”}”(hjp•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^•h²hh³jo•h´M»ubjš)�”}”(hŒ iser_global”h]”jN)�”}”(hj\•h]”hŒ iser_global”…”�”}”(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»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Œ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°hjW•h²hh³jo•h´M»ubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒj¼•jÓj¼•jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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 )�”}”(hjJ–h]”hŒ device_list”…”�”}”(hjL–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH–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ÇhjD–ubj)�”}”(hhh]”hÝ)�”}”(hŒiser devices global list”h]”hŒiser devices global list”…”�”}”(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Œ%``connlist_mutex`` protects connlist ”h]”(j)�”}”(hŒ``connlist_mutex``”h]”j )�”}”(hjƒ–h]”hŒconnlist_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 connlist”h]”hŒprotects connlist”…”�”}”(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Œ*``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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_pdu_alloc (C function)”Œc.iscsi_iser_pdu_alloc”hNt”auh1jhj1yh²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”…”�”}”(hjO—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjK—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&]”uh1j9hjK—h²hh³j]—h´K§ubjš)�”}”(hŒiscsi_iser_pdu_alloc”h]”jN)�”}”(hŒiscsi_iser_pdu_alloc”h]”hŒiscsi_iser_pdu_alloc”…”�”}”(hjp—h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjl—ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjK—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”…”�”}”(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)�”}”jgjr—sbŒc.iscsi_iser_pdu_alloc”†”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Œ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¼hj„—ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjK—h²hh³j]—h´K§ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjG—h²hh³j]—h´K§ubah}”(h]”jB—ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j]—h´K§hjD—h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒallocate an iscsi-iser PDU”h]”hŒallocate an iscsi-iser PDU”…”�”}”(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´K§hjT˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjD—h²hh³j]—h´K§ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjo˜jÓjo˜jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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â)�”}”(hjy˜h]”hŒ Parameters”…”�”}”(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:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´K«hjs˜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Œ(``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©hj�˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjs˜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«hjs˜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«hj8™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j7™h´Kªhj"™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjs˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)iser_initialize_task_headers (C function)”Œc.iser_initialize_task_headers”hNt”auh1jhj1yh²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ühjx™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&]”uh1j9hjx™h²hh³jŠ™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™hjx™h²hh³jŠ™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Œ ”…”�”}”(hj8šh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'šubh)�”}”(hhh]”jN)�”}”(hŒ iser_tx_desc”h]”hŒ iser_tx_desc”…”�”}”(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]”jó™Œc.iser_initialize_task_headers”†”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Œtx_desc”h]”hŒtx_desc”…”�”}”(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¶hjx™h²hh³jŠ™h´K¹ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjt™h²hh³jŠ™h´K¹ubah}”(h]”jo™ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jŠ™h´K¹hjq™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°hjq™h²hh³jŠ™h´K¹ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÄšjÓjÄšjÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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â)�”}”(hja›h]”hŒNotes”…”�”}”(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´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.”…”�”}”(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´K½hjÈšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_task_init (C function)”Œc.iscsi_iser_task_init”hNt”auh1jhj1yh²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”…”�”}”(hjfœ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áhjcœ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²hhj1yh³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â)�”}”(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žœ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´Kähj‚œ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ã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´Kåhj‚œ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æhj‚œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iscsi_iser_mtask_xmit (C function)”Œc.iscsi_iser_mtask_xmit”hNt”auh1jhj1yh²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”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjJ�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&]”uh1j9hjJ�h²hh³j\�h´Mubjš)�”}”(hŒiscsi_iser_mtask_xmit”h]”jN)�”}”(hŒiscsi_iser_mtask_xmit”h]”hŒiscsi_iser_mtask_xmit”…”�”}”(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´Mubj·)�”}”(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.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Œ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.iscsi_iser_mtask_xmit”†”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´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjF�h²hh³j\�h´Mubah}”(h]”jA�ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j\�h´MhjC�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°hjC�h²hh³j\�h´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj–žjÓj–žjÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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â)�”}”(hj3Ÿh]”hŒNotes”…”�”}”(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:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”•7h´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.”…”�”}”(hjMŸ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´MhjIŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jXDh³j[Ÿh´Mhjšžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_task_xmit (C function)”Œc.iscsi_iser_task_xmit”hNt”auh1jhj1yh²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”…”�”}”(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´M7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~Ÿh²hh³j�Ÿ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³j�Ÿ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³j�Ÿh´M7ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjzŸh²hh³j�Ÿh´M7ubah}”(h]”juŸah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j�Ÿh´M7hjwŸh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒxmit iscsi-iser task”h]”hŒxmit iscsi-iser task”…”�”}”(hjB 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°hjwŸh²hh³j�Ÿh´M7ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjZ jÓjZ jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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â)�”}”(hjd h]”hŒ Parameters”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjb 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´M8hj} ubj)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(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´M8hjz 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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$iscsi_iser_cleanup_task (C function)”Œc.iscsi_iser_cleanup_task”hNt”auh1jhj1yh²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Œ ”…”�”}”(hjM¡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_cleanup_task”†”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¼hj8¡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²hhj1yh³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”…”�”}”(hjA¢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´MehjX¢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.”…”�”}”(hjn¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jj¢h´Mehjk¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jj¢h´MehjU¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjß¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(iscsi_iser_check_protection (C function)”Œc.iscsi_iser_check_protection”hNt”auh1jhj1yh²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Œ*”…”�”}”(hjJ£h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjü¢ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjW£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”…”�”}”(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.iscsi_iser_check_protection”†”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Œsector”h]”hŒsector”…”�”}”(hj¬£h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjl£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²hhj1yh³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”…”�”}”(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Œ6``sector_t *sector`` error sector if exsists (output) ”h]”(j)�”}”(hŒ``sector_t *sector``”h]”j )�”}”(hjP¤h]”hŒsector_t *sector”…”�”}”(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:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´M†hjJ¤ubj)�”}”(hhh]”hÝ)�”}”(hŒ error sector if exsists (output)”h]”hŒ error sector if exsists (output)”…”�”}”(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¤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 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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#iscsi_iser_conn_create (C function)”Œc.iscsi_iser_conn_create”hNt”auh1jhj1yh²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Œ*”…”�”}”(hjN¥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”…”�”}”(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, uint32_t conn_idx)”h]”(j½)�”}”(hŒ%struct iscsi_cls_session *cls_session”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Œ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]”j;¥Œc.iscsi_iser_conn_create”†”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Œ cls_session”h]”hŒ cls_session”…”�”}”(hjÑ¥h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjv¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjr¥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¼hjr¥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”…”�”}”(hjC¦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²hhj1yh³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â)�”}”(hje¦h]”hŒ Parameters”…”�”}”(hjg¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjc¦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ŒA``struct iscsi_cls_session *cls_session`` iscsi class connection ”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 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÷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Œ@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�hj_¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_conn_bind (C function)”Œc.iscsi_iser_conn_bind”hNt”auh1jhj1yh²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ühj9§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Œ ”…”�”}”(hjL§h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9§h²hh³jK§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&]”uh1jMhjZ§ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj9§h²hh³jK§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”…”�”}”(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Œ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)�”}”jgj`§sbŒc.iscsi_iser_conn_bind”†”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Œ cls_session”h]”hŒ cls_session”…”�”}”(hjÓ§h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjv§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjr§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Œ*”…”�”}”(hj6¨h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjè§ubjN)�”}”(hŒcls_conn”h]”hŒcls_conn”…”�”}”(hjC¨h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjè§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjr§ubj½)�”}”(hŒuint64_t transport_eph”h]”(h)�”}”(hhh]”jN)�”}”(hŒuint64_t”h]”hŒuint64_t”…”�”}”(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]”j´§Œc.iscsi_iser_conn_bind”†”asbuh1hhjX¨ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}¨h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjX¨ubjN)�”}”(hŒ transport_eph”h]”hŒ transport_eph”…”�”}”(hj‹¨h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjX¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjr§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¼hjr§ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj9§h²hh³jK§h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj5§h²hh³jK§h´M¶ubah}”(h]”j0§ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jK§h´M¶hj2§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°hj2§h²hh³jK§h´M¶ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj©jÓj©jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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”…”�”}”(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Œ;``struct iscsi_cls_conn *cls_conn`` iscsi class connection ”h]”(j)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j )�”}”(hjd©h]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hjf©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb©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³jy©h´M¸hjz©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jy©h´M¸hj"©ubjý)�”}”(hŒ6``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¹hj—©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&]”uh1jhj—©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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iscsi_iser_conn_start (C function)”Œc.iscsi_iser_conn_start”hNt”auh1jhj1yh²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”…”�”}”(hjVªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjRª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Œ ”…”�”}”(hjeªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRªh²hh³jdªh´Mòubjš)�”}”(hŒiscsi_iser_conn_start”h]”jN)�”}”(hŒiscsi_iser_conn_start”h]”hŒiscsi_iser_conn_start”…”�”}”(hjwªh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjsªubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjRªh²hh³jdª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”…”�”}”(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)�”}”jgjyªsbŒc.iscsi_iser_conn_start”†”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¼hj‹ªubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjRªh²hh³jdªh´Mòubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjNªh²hh³jdªh´Mòubah}”(h]”jIªah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jdªh´MòhjKª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°hjKªh²hh³jdªh´Mòubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj.«jÓj.«jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³Nh´NubjØ)�”}”(hX**Parameters** ``struct iscsi_cls_conn *cls_conn`` iscsi class connection **Notes** Here iser initialize (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â)�”}”(hj8«h]”hŒ Parameters”…”�”}”(hj:«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj6«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öhj2«ubjø)�”}”(hhh]”jý)�”}”(hŒ;``struct iscsi_cls_conn *cls_conn`` iscsi class connection ”h]”(j)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j )�”}”(hjW«h]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hjY«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU«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óhjQ«ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class connection”h]”hŒiscsi class connection”…”�”}”(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óhjN«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj2«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õhj2«ubjø)�”}”(hhh]”jý)�”}”(hŒ§Here iser initialize (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Œ:Here iser initialize (or re-initialize) stop_completion as”h]”hŒ:Here iser initialize (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÷hj2«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!iscsi_iser_conn_stop (C function)”Œc.iscsi_iser_conn_stop”hNt”auh1jhj1yh²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Œ ”…”�”}”(hjK¬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&]”uh1jMhjY¬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Œ*”…”�”}”(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¼hj6¬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¼hj6¬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²hhj1yh³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 )�”}”(hj7­h]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hj9­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5­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´Mhj1­ubj)�”}”(hhh]”hÝ)�”}”(hŒiscsi class connection”h]”hŒiscsi class connection”…”�”}”(hjP­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jL­h´MhjM­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jL­h´Mhj.­ubjý)�”}”(hŒ=``int flag`` indicate if recover or terminate (passed as is) ”h]”(j)�”}”(hŒ ``int flag``”h]”j )�”}”(hjp­h]”hŒint flag”…”�”}”(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:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhjj­ubj)�”}”(hhh]”hÝ)�”}”(hŒ/indicate if recover or terminate (passed as is)”h]”hŒ/indicate if recover or terminate (passed as is)”…”�”}”(hj‰­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j…­h´Mhj†­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj­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´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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'iscsi_iser_session_destroy (C function)”Œc.iscsi_iser_session_destroy”hNt”auh1jhj1yh²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&]”uh1jMhj8®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”…”�”}”(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Œiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(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]”jt)�”}”jgj>®sbŒc.iscsi_iser_session_destroy”†”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Œ cls_session”h]”hŒ cls_session”…”�”}”(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¶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²hhj1yh³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”…”�”}”(hj5¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j1¯h´M.hj2¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j1¯h´M.hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj÷®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³Œ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.”…”�”}”(hjm¯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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&iscsi_iser_session_create (C function)”Œc.iscsi_iser_session_create”hNt”auh1jhj1yh²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'hj˜¯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&]”uh1j9hj˜¯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”†”asbuh1hhj˜¯h²hh³j©¯h´MNubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܯh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜¯h²hh³j©¯h´MNubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjê¯h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜¯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™hj˜¯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”…”�”}”(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.iscsi_iser_session_create”†”asbuh1hhj°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR°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Œuint16_t cmds_max”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Œ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¼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Œ ”…”�”}”(hj7±h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj±ubjN)�”}”(hŒ initial_cmdsn”h]”hŒ initial_cmdsn”…”�”}”(hjE±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´MNubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj”¯h²hh³j©¯h´MNubah}”(h]”j�¯ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j©¯h´MNhj‘¯h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒcreate an iscsi-iser session”h]”hŒcreate an iscsi-iser session”…”�”}”(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´MNhjl±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj‘¯h²hh³j©¯h´MNubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‡±jÓj‡±jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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 support if exists, and sets up an iscsi session.”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´MRhj‹±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³j7²h´MQhj8²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j7²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&]”uh1jhjY²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´MRhjU²ubj)�”}”(hhh]”hÝ)�”}”(hŒ initiator command sequnce number”h]”hŒ initiator command sequnce number”…”�”}”(hjt²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jp²h´MRhjq²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jp²h´MRhj§±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:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´MThj‹±ubhÝ)�”}”(hŒ[Allocates and adds a scsi host, expose DIF support if exists, and sets up an iscsi session.”h]”hŒ[Allocates and adds a scsi host, expose DIF support 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´MShj‹±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"iscsi_iser_ep_connect (C function)”Œc.iscsi_iser_ep_connect”hNt”auh1jhj1yh²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&]”uh1jMhj6³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”…”�”}”(hjU³h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjQ³ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb³h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQ³ubh)�”}”(hhh]”jN)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(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.iscsi_iser_ep_connect”†”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Œshost”h]”hŒshost”…”�”}”(hj¬³h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjQ³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjM³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”j峌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¼hjM³ubj½)�”}”(hŒint non_blocking”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hj5´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj1´ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC´h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1´ubjN)�”}”(hŒ non_blocking”h]”hŒ non_blocking”…”�”}”(hjQ´h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj1´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjM³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 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Òj“´jÓj“´jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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´Mhj—´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”…”�”}”(hj0µ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”…”�”}”(hjGµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jCµh´MhjDµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jCµh´Mhj³´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj—´ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjiµh]”hŒ Description”…”�”}”(hjkµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjgµubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:79: ./drivers/infiniband/ulp/iser/iscsi_iser.c”h´Mhj—´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.”…”�”}”(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—´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´Mhj—´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´Mhj—´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiscsi_iser_ep_poll (C function)”Œc.iscsi_iser_ep_poll”hNt”auh1jhj1yh²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”…”�”}”(hj0¶h²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]”jt)�”}”jgjøµsbŒc.iscsi_iser_ep_poll”†”asbuh1hhj¶ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP¶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”…”�”}”(hjk¶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”…”�”}”(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 ¶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²hhj1yh³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 )�”}”(hjD·h]”hŒint timeout_ms”…”�”}”(hjF·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB·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³jY·h´M<hjZ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jY·h´M<hj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjæ¶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æ¶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.”…”�”}”(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Œ **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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%iscsi_iser_ep_disconnect (C function)”Œc.iscsi_iser_ep_disconnect”hNt”auh1jhj1yh²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Œ ”…”�”}”(hj5¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$¸ubh)�”}”(hhh]”jN)�”}”(hŒiscsi_endpoint”h]”hŒiscsi_endpoint”…”�”}”(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]”jt)�”}”jgj¸sbŒc.iscsi_iser_ep_disconnect”†”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Œep”h]”hŒep”…”�”}”(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Œ$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²hhj1yh³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 deferred 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 deferred 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 deferred 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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_send_command (C function)”Œc.iser_send_command”hNt”auh1jhj1yh²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”…”�”}”(hjl¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjh¹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&]”uh1j9hjh¹h²hh³jz¹h´MQubjš)�”}”(hŒiser_send_command”h]”jN)�”}”(hŒiser_send_command”h]”hŒiser_send_command”…”�”}”(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³jz¹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)�”}”jgj�¹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”…”�”}”(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.iser_send_command”†”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ºubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjrº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³jz¹h´MQubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjd¹h²hh³jz¹h´MQubah}”(h]”j_¹ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jz¹h´MQhja¹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°hja¹h²hh³jz¹h´MQubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj´ºjÓj´ºjÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_send_data_out (C function)”Œc.iser_send_data_out”hNt”auh1jhj1yh²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”…”�”}”(hjp»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjl»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Œ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjl»h²hh³j~»h´M–ubjš)�”}”(hŒiser_send_data_out”h]”jN)�”}”(hŒiser_send_data_out”h]”hŒiser_send_data_out”…”�”}”(hj‘»h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�»ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjl»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)�”}”jgj“»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Œ*”…”�”}”(hji¼h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¼ubjN)�”}”(hŒtask”h]”hŒtask”…”�”}”(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 iscsi_data *hdr”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_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”†”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Œhdr”h]”hŒhdr”…”�”}”(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¶hjl»h²hh³j~»h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh»h²hh³j~»h´M–ubah}”(h]”jc»ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j~»h´M–hje»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°hje»h²hh³j~»h´M–ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj(½jÓj(½jÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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â)�”}”(hj2½h]”hŒ Parameters”…”�”}”(hj4½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj0½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 )�”}”(hjQ½h]”hŒstruct iscsi_conn *conn”…”�”}”(hjS½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO½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—hjK½ubj)�”}”(hhh]”hÝ)�”}”(hŒ!link to matching iscsi connection”h]”hŒ!link to matching iscsi connection”…”�”}”(hjj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jf½h´M—hjg½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jf½h´M—hjH½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´M˜hj„½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&]”uh1jhj„½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŸ½h´M˜hjH½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šhjH½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj,½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$iser_alloc_fastreg_pool (C function)”Œc.iser_alloc_fastreg_pool”hNt”auh1jhj1yh²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”…”�”}”(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Œib_conn”h]”hŒib_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_alloc_fastreg_pool”†”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Œib_conn”h]”hŒib_conn”…”�”}”(hj³¾h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjV¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjR¾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¼hjR¾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”…”�”}”(hj9¿h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjý¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjR¾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.”…”�”}”(hjc¿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`¿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²hhj1yh³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â)�”}”(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´K hj¿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÷hj¿ubhÝ)�”}”(hŒ **Return**”h]”jâ)�”}”(hjQÀh]”hŒReturn”…”�”}”(hjSÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjOÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´K¢hj¿ubhÝ)�”}”(hŒ&0 on success, or errno code on failure”h]”hŒ&0 on success, or errno code on failure”…”�”}”(hjgÀ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¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#iser_free_fastreg_pool (C function)”Œc.iser_free_fastreg_pool”hNt”auh1jhj1yh²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”…”�”}”(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_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™hj’À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¶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Œ)releases the pool of fast_reg descriptors”h]”hŒ)releases the pool of fast_reg descriptors”…”�”}”(hjVÁ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ÆhjSÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj‹Àh²hh³j¤Àh´KÆubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjnÁjÓjnÁjÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³Nh´NubjØ)�”}”(hŒG**Parameters** ``struct ib_conn *ib_conn`` connection RDMA resources”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjxÁh]”hŒ Parameters”…”�”}”(hjzÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjvÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´KÊhjrÁubjø)�”}”(hhh]”jý)�”}”(hŒ5``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³Œ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&]”uh1jhj‘Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¬Áh´KÌhjŽÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjrÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²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”auh1jhj1yh²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”…”�”}”(hjLÂh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjIÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jNÂŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÂsbŒc.iser_free_ib_conn_res”†”asbuh1hhj*Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*Âubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjzÂh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj*ÂubjN)�”}”(hŒ iser_conn”h]”hŒ iser_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Œ 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²hhj1yh³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 )�”}”(hj_Ãh]”hŒ bool destroy”…”�”}”(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:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MmhjYÃ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).”…”�”}”(hjxÃ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´MkhjuÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jtÃ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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_conn_release (C function)”Œc.iser_conn_release”hNt”auh1jhj1yh²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&]”uh1jMhj8Ä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Œ*”…”�”}”(hjiÄh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÄubjN)�”}”(hŒ iser_conn”h]”hŒ iser_conn”…”�”}”(hjvÄ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²hhj1yh³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×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ iser_conn_terminate (C function)”Œc.iser_conn_terminate”hNt”auh1jhj1yh²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ühj7Å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Œ ”…”�”}”(hjJÅh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7Åh²hh³jIÅ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&]”uh1jMhjXÅubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj7Åh²hh³jIÅh´M°ubj·)�”}”(hŒ(struct iser_conn *iser_conn)”h]”j½)�”}”(hŒstruct iser_conn *iser_conn”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Œ 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_terminate”†”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Œ iser_conn”h]”hŒ iser_conn”…”�”}”(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´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj3Åh²hh³jIÅh´M°ubah}”(h]”j.Åah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jIÅh´M°hj0Å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°hj0Åh²hh³jIÅh´M°ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÆjÓjÆjÔ‰jÕ‰jÖ‰uh1jh²hhj1yh³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²hj6Æubj)�”}”(hhh]”hÝ)�”}”(hŒiSER connection context”h]”hŒiSER connection context”…”�”}”(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Æ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³Œ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”…”�”}”(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Æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hj1yh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒiser_post_send (C function)”Œc.iser_post_send”hNt”auh1jhj1yh²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Œ ”…”�”}”(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Œib_conn”h]”hŒib_conn”…”�”}”(hjRÇ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”…”�”}”(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Œ 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]”j3ÇŒc.iser_post_send”†”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Œtx_desc”h]”hŒtx_desc”…”�”}”(hjÂÇh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjgÇ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²hhj1yh³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”…”�”}”(hjFÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jBÈh´MShjCÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jBÈ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 )�”}”(hjfÈh]”hŒstruct iser_tx_desc *tx_desc”…”�”}”(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:92: ./drivers/infiniband/ulp/iser/iser_verbs.c”h´MThj`È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´MThj|È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È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×hj1yh²hh³Nh´Nubeh}”(h]”Œiscsi-extensions-for-rdma-iser”ah ]”h"]”Œ iscsi extensions for rdma (iser)”ah$]”h&]”uh1hµhj yh²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”…”�”}”(hjAÉ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ÒjYÉjÓjYÉ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â)�”}”(hjcÉh]”hŒ Constants”…”�”}”(hjeÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjaÉ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 )�”}”(hj‚Éh]”hŒSRPT_STATE_NEW”…”�”}”(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Œ+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³j—Éh´K‘hj˜Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj|Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j—Éh´K‘hjyÉ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•hjyÉ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™hjyÉ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”…”�”}”(hj1Ê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.”…”�”}”(hjHÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jDÊh´KœhjEÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jDÊh´KœhjyÉubjý)�”}”(hŒ?``SRPT_STATE_MGMT`` Processing a SCSI task management command. ”h]”(j)�”}”(hŒ``SRPT_STATE_MGMT``”h]”j )�”}”(hjhÊh]”hŒSRPT_STATE_MGMT”…”�”}”(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Œ*Processing a SCSI task management command.”h]”hŒ*Processing a SCSI task management command.”…”�”}”(hj�Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j}Êh´KŸhj~Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j}Êh´KŸhjyÉ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¢hjyÉ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¦hjyÉ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”…”�”}”(hj4Ëh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj0Ë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Œ ”…”�”}”(hjBËh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj0Ëh²hh³jAËh´K¬ubjš)�”}”(hŒ srpt_ioctx”h]”jN)�”}”(hj.Ëh]”hŒ srpt_ioctx”…”�”}”(hjTËh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjPËubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj0Ëh²hh³jAËh´K¬ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj,Ëh²hh³jAËh´K¬ubah}”(h]”j'Ëah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jAËh´K¬hj)Ëh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ#shared SRPT I/O context information”h]”hŒ#shared SRPT I/O context information”…”�”}”(hjvË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¢hjsËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj)Ëh²hh³jAË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_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á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Œƒ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¨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Œ"``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.”…”�”}”(hj5Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j1Ìh´K¥hj2Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j1Ìh´K¥hjÚËubjý)�”}”(hŒ#``dma`` DMA address of the buffer. ”h]”(j)�”}”(hŒ``dma``”h]”j )�”}”(hjUÌh]”hŒdma”…”�”}”(hjWÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSÌ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¦hjOÌubj)�”}”(hhh]”hÝ)�”}”(hŒDMA address of the buffer.”h]”hŒDMA address of the buffer.”…”�”}”(hjnÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jjÌh´K¦hjkÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jjÌ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 )�”}”(hjŽÌh]”hŒoffset”…”�”}”(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Œ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&]”uh1jhjˆÌ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÷hj’Ë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”…”�”}”(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´K®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSÍh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAÍh²hh³jRÍh´K®ubjš)�”}”(hŒsrpt_recv_ioctx”h]”jN)�”}”(hj?Íh]”hŒsrpt_recv_ioctx”…”�”}”(hjeÍh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjaÍubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjAÍh²hh³jRÍh´K®ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj=Íh²hh³jRÍh´K®ubah}”(h]”j8Íah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jRÍh´K®hj:Íh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSRPT receive I/O context”h]”hŒSRPT receive 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³jRÍ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.”…”�”}”(hjFÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jBÎh´KµhjCÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jBÎh´KµhjëÍubjý)�”}”(hŒ.``byte_len`` Number of bytes in **ioctx.buf**.”h]”(j)�”}”(hŒ ``byte_len``”h]”j )�”}”(hjfÎh]”hŒbyte_len”…”�”}”(hjhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjdÎ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Œ!Number of bytes in **ioctx.buf**.”h]”(hŒNumber of bytes in ”…”�”}”(hjÎh²hh³Nh´Nubjâ)�”}”(hŒ **ioctx.buf**”h]”hŒ ioctx.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³Œ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_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”…”�”}”(hj8Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj4ÏubhŒ:”…”�”}”(hj4Ï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Èhj0Ï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]; };”…”�”}”hjQÏ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Êhj0ÏubhÝ)�”}”(hŒ **Members**”h]”jâ)�”}”(hjbÏh]”hŒMembers”…”�”}”(hjdÏ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Úhj0Ï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ÆhjxÏ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ÇhjxÏ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ÉhjxÏ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”…”�”}”(hjJÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjFÐubhŒ/ points here if only a single rw_ctx is needed.”…”�”}”(hjFÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jBÐh´KÊhjCÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jBÐh´KÊhjxÏubjý)�”}”(hŒ&``rw_ctxs`` RDMA read/write contexts. ”h]”(j)�”}”(hŒ ``rw_ctxs``”h]”j )�”}”(hjtÐh]”hŒrw_ctxs”…”�”}”(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´KËhjnÐubj)�”}”(hhh]”hÝ)�”}”(hŒRDMA read/write contexts.”h]”hŒRDMA read/write contexts.”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‰Ðh´KËhjŠÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‰Ðh´KËhjxÏ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ÌhjxÏ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ÍhjxÏ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.”…”�”}”(hj8Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j4Ñh´KÎhj5Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j4Ñh´KÎhjxÏubjý)�”}”(hŒ,``cmd`` Target core command data structure. ”h]”(j)�”}”(hŒ``cmd``”h]”j )�”}”(hjXÑh]”hŒcmd”…”�”}”(hjZÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVÑ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ÏhjRÑubj)�”}”(hhh]”hÝ)�”}”(hŒ#Target core command data structure.”h]”hŒ#Target core command data structure.”…”�”}”(hjqÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jmÑh´KÏhjnÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jmÑh´KÏhjxÏubjý)�”}”(hŒB``n_rdma`` Number of work requests needed to transfer this ioctx. ”h]”(j)�”}”(hŒ ``n_rdma``”h]”j )�”}”(hj‘Ñh]”hŒn_rdma”…”�”}”(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Œ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&]”uh1jhj‹Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¦Ñh´KÑhjxÏ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ÒhjxÏ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ÓhjxÏ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Óhj6Òubj)�”}”(hhh]”hÝ)�”}”(hŒ'Sense data to be sent to the initiator.”h]”hŒ'Sense data to be sent to the initiator.”…”�”}”(hjUÒ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ÔhjRÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQÒh´KÓhjxÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj0Ï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”…”�”}”(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Œ rdma_ch_state”h]”jN)�”}”(hj�Ò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™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Œ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°hj‹Ò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.”…”�”}”(hj2Ó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 )�”}”(hjRÓh]”hŒCH_LIVE”…”�”}”(hjTÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPÓ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óhjLÓubj)�”}”(hhh]”hÝ)�”}”(hŒQP is in RTS state.”h]”hŒQP is in RTS state.”…”�”}”(hjkÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jgÓh´KóhjhÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jgÓ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 )�”}”(hj‹Óh]”hŒCH_DISCONNECTING”…”�”}”(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Œ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&]”uh1jhj…Ó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”…”�”}”(hjYÔh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjUÔ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Œ ”…”�”}”(hjgÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUÔh²hh³jfÔh´Mubjš)�”}”(hŒ srpt_rdma_ch”h]”jN)�”}”(hjSÔh]”hŒ srpt_rdma_ch”…”�”}”(hjyÔh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjuÔubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjUÔh²hh³jfÔh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjQÔh²hh³jfÔh´Mubah}”(h]”jLÔah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jfÔh´MhjNÔ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ûhj˜Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjNÔh²hh³jfÔ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 )�”}”(hjAÕh]”hŒqp”…”�”}”(hjCÕ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.”…”�”}”(hjZÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jVÕh´KþhjWÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jVÕh´KþhjÿÔubjý)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j)�”}”(hŒ``{unnamed_union}``”h]”j )�”}”(hjzÕh]”hŒ{unnamed_union}”…”�”}”(hj|Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxÕ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´KhjtÕubj)�”}”(hhh]”hÝ)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj“Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�Õh´Khj�Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�Õ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”…”�”}”(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´MhjXÖubj)�”}”(hhh]”hÝ)�”}”(hŒ'RDMA CM ID associated with the channel.”h]”hŒ'RDMA CM ID associated with the channel.”…”�”}”(hjwÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jsÖh´MhjtÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jsÖh´MhjÿÔubjý)�”}”(hŒ-``cq`` IB completion queue for this channel. ”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³Œ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 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&]”uh1jhj‘Ö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.”…”�”}”(hj4×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j0×h´Mhj1×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j0×h´MhjÿÔubjý)�”}”(hŒ``rcu`` RCU head. ”h]”(j)�”}”(hŒ``rcu``”h]”j )�”}”(hjT×h]”hŒrcu”…”�”}”(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´MhjN×ubj)�”}”(hhh]”hÝ)�”}”(hŒ RCU head.”h]”hŒ RCU head.”…”�”}”(hjm×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ji×h´Mhjj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³ji×h´MhjÿÔubjý)�”}”(hŒ ``kref`` kref for this channel. ”h]”(j)�”}”(hŒ``kref``”h]”j )�”}”(hj�×h]”hŒkref”…”�”}”(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Œ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&]”uh1jhj‡×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 )�”}”(hj9Øh]”hŒ max_rsp_size”…”�”}”(hj;Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7Ø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 hj3Øubj)�”}”(hhh]”hÝ)�”}”(hŒ1Maximum size of an RSP response message in bytes.”h]”hŒ1Maximum size of an RSP response message in bytes.”…”�”}”(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 hjÿÔubjý)�”}”(hŒE``sq_wr_avail`` number of work requests available in the send queue. ”h]”(j)�”}”(hŒ``sq_wr_avail``”h]”j )�”}”(hjrØh]”hŒ sq_wr_avail”…”�”}”(hjtØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpØ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 hjlØubj)�”}”(hhh]”hÝ)�”}”(hŒ4number of work requests available in the send queue.”h]”hŒ4number of work requests available in the send queue.”…”�”}”(hj‹Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‡Øh´M hjˆØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‡Øh´M hjÿÔubjý)�”}”(hŒ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.”…”�”}”(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´Mhj4Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j3Ù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 )�”}”(hjXÙh]”hŒ req_lim_delta”…”�”}”(hjZÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVÙ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´MhjRÙ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.”…”�”}”(hjqÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jmÙh´MhjnÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jmÙ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 )�”}”(hj‘Ùh]”hŒimm_data_offset”…”�”}”(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Œ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&]”uh1jhj‹Ù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´Mhj6Úubj)�”}”(hhh]”hÝ)�”}”(hŒkmem_cache for **ioctx_ring**.”h]”(hŒkmem_cache for ”…”�”}”(hjUÚh²hh³Nh´Nubjâ)�”}”(hŒ**ioctx_ring**”h]”hŒ ioctx_ring”…”�”}”(hj]Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjUÚubhŒ.”…”�”}”(hjUÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQÚh´MhjRÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQÚh´MhjÿÔubjý)�”}”(hŒ``ioctx_ring`` Send ring. ”h]”(j)�”}”(hŒ``ioctx_ring``”h]”j )�”}”(hj‡Úh]”hŒ ioctx_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Œ 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&]”uh1jhj�Ú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 )�”}”(hjDÛh]”hŒlist”…”�”}”(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´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³jYÛh´MhjZÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jYÛ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”…”�”}”(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´MhjwÛ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.”…”�”}”(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&]”uh1jhjwÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j’Û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&]”uh1jhjêÛ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.”…”�”}”(hjBÜ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 )�”}”(hjbÜh]”hŒsess”…”�”}”(hjdÜ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Œ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³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Œ``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"hj•Ü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&]”uh1jhj•Ü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”…”�”}”(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)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”…”�”}”(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´MNhjmÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj#Ý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_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”…”�”}”(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´MRhjŒÝ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´MThjŒÝ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Œ*``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 )�”}”(hjOÞh]”hŒch_list”…”�”}”(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´MRhjIÞ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.”…”�”}”(hjhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jdÞh´MRhjeÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jdÞ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 )�”}”(hjˆÞh]”hŒ i_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Œ<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&]”uh1jhj‚Þ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÷hjŒÝ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&]”uh1jMhj7ß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^hjZßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjßh²hh³j(ßh´MZubeh}”(h]”h ]”(jeŒstruct”eh"]”h$]”h&]”jÑjejÒjußjÓjuß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`` Send queue size. ``use_srq`` Whether or not to use SRQ.”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´Mbhjyß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´Mdhjyß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´Mkhjyß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Œ!``srp_sq_size`` Send queue 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´Mbhj6àubj)�”}”(hhh]”hÝ)�”}”(hŒSend queue size.”h]”hŒSend queue size.”…”�”}”(hjUàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQàh´MbhjRàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jQàh´MbhjÁßubjý)�”}”(hŒ&``use_srq`` Whether or not to use SRQ.”h]”(j)�”}”(hŒ ``use_srq``”h]”j )�”}”(hjuàh]”hŒuse_srq”…”�”}”(hjwàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsà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´Mbhjoàubj)�”}”(hhh]”hÝ)�”}”(hŒWhether or not to use SRQ.”h]”hŒWhether or not to use SRQ.”…”�”}”(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´Mchj‹àubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jŠàh´MbhjÁßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjyß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”…”�”}”(hj5áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj1áubhŒ:”…”�”}”(hj1á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; };”…”�”}”hjNá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â)�”}”(hj_áh]”hŒMembers”…”�”}”(hjaá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”…”�”}”(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´Mnhjxáubj)�”}”(hhh]”hÝ)�”}”(hŒ Entry in **sport_id->tpg_list**.”h]”(hŒ Entry in ”…”�”}”(hj—á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áhj—áubhŒ.”…”�”}”(hj—áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j“áh´Mnhj”áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j“áh´Mnhjuá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´Mohjuá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´Mohjuá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â)�”}”(hjEâh]”hŒ Description”…”�”}”(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´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”…”�”}”(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´Mvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâh²hh³j�â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™hjâh²hh³j�âh´Mvubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj{âh²hh³j�âh´Mvubah}”(h]”jvâah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j�âh´Mvhjxâ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°hjxâh²hh³j�â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 )�”}”(hj2ãh]”hŒmutex”…”�”}”(hj4ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ã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 ”…”�”}”(hjKãh²hh³Nh´Nubjâ)�”}”(hŒ **tpg_list**”h]”hŒtpg_list”…”�”}”(hjSãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjKãubhŒ changes.”…”�”}”(hjKãh²hh³Nh´Nubeh}”(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Œ6``tpg_list`` TPGs associated with the RDMA port name. ”h]”(j)�”}”(hŒ ``tpg_list``”h]”j )�”}”(hj}ãh]”hŒtpg_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´M~hjwãubj)�”}”(hhh]”hÝ)�”}”(hŒ(TPGs associated with the RDMA port name.”h]”hŒ(TPGs associated with the RDMA port 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Œ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â)�”}”(hj2äh]”hŒ Description”…”�”}”(hj4äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj0ä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.”…”�”}”(hjHä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”…”�”}”(hjpäh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjlä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&]”uh1j9hjläh²hh³j}äh´M†ubjš)�”}”(hŒ srpt_port”h]”jN)�”}”(hjjäh]”hŒ srpt_port”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjŒäubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjläh²hh³j}äh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjhäh²hh³j}äh´M†ubah}”(h]”jcäah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j}äh´M†hjeä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°hjeä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.”…”�”}”(hj8åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j4åh´MŽhj5åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j4åh´MŽhjåubjý)�”}”(hŒC``mad_agent`` per-port management datagram processing information. ”h]”(j)�”}”(hŒ ``mad_agent``”h]”j )�”}”(hjXåh]”hŒ mad_agent”…”�”}”(hjZåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVå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�hjRåubj)�”}”(hhh]”hÝ)�”}”(hŒ4per-port management datagram processing information.”h]”hŒ4per-port management datagram processing information.”…”�”}”(hjqåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jmåh´M�hjnåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jmåh´M�hjåubjý)�”}”(hŒ8``enabled`` Whether or not this target port is enabled. ”h]”(j)�”}”(hŒ ``enabled``”h]”j )�”}”(hj‘åh]”hŒenabled”…”�”}”(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Œ+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&]”uh1jhj‹å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“hj6æubj)�”}”(hhh]”hÝ)�”}”(hŒcached value of the port's lid.”h]”hŒ!cached value of the port’s lid.”…”�”}”(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Œ(``gid`` cached value of the port's gid. ”h]”(j)�”}”(hŒ``gid``”h]”j )�”}”(hjuæh]”hŒgid”…”�”}”(hjwæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsæ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”hjoæubj)�”}”(hhh]”hÝ)�”}”(hŒcached value of the port's gid.”h]”hŒ!cached value of the port’s gid.”…”�”}”(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Œ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.”…”�”}”(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Œ&``gid_name`` port name in GID format. ”h]”(j)�”}”(hŒ ``gid_name``”h]”j )�”}”(hjYçh]”hŒgid_name”…”�”}”(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´M˜hjSçubj)�”}”(hhh]”hÝ)�”}”(hŒport name in GID format.”h]”hŒport name in GID format.”…”�”}”(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ŒH``gid_id`` LIO target port information for the port name in GID format. ”h]”(j)�”}”(hŒ ``gid_id``”h]”j )�”}”(hj’çh]”hŒgid_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Œê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¸hj6êubj)�”}”(hhh]”hÝ)�”}”(hŒIB protection domain.”h]”hŒIB protection domain.”…”�”}”(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ŒB``lkey`` L_Key (local key) with write access to all local memory. ”h]”(j)�”}”(hŒ``lkey``”h]”j )�”}”(hjuêh]”hŒlkey”…”�”}”(hjwêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsê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¹hjoêubj)�”}”(hhh]”hÝ)�”}”(hŒ8L_Key (local key) with write access to all local memory.”h]”hŒ8L_Key (local key) with write access to all local memory.”…”�”}”(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Œ,``srq`` Per-HCA SRQ (shared receive queue). ”h]”(j)�”}”(hŒ``srq``”h]”j )�”}”(hj®êh]”hŒsrq”…”�”}”(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Œ#Per-HCA SRQ (shared receive queue).”h]”hŒ#Per-HCA SRQ (shared receive queue).”…”�”}”(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Œ!``cm_id`` Connection identifier. ”h]”(j)�”}”(hŒ ``cm_id``”h]”j )�”}”(hjçêh]”hŒ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´M»hjáêubj)�”}”(hhh]”hÝ)�”}”(hŒConnection identifier.”h]”hŒConnection identifier.”…”�”}”(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Œ``srq_size`` SRQ size. ”h]”(j)�”}”(hŒ ``srq_size``”h]”j )�”}”(hj ëh]”hŒsrq_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Œ SRQ size.”h]”hŒ SRQ 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Áéubjý)�”}”(hŒ+``sdev_mutex`` Serializes use_srq changes. ”h]”(j)�”}”(hŒ``sdev_mutex``”h]”j )�”}”(hjYëh]”hŒ sdev_mutex”…”�”}”(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´M½hjSëubj)�”}”(hhh]”hÝ)�”}”(hŒSerializes use_srq changes.”h]”hŒSerializes use_srq changes.”…”�”}”(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Œ'``use_srq`` Whether or not to use SRQ. ”h]”(j)�”}”(hŒ ``use_srq``”h]”j )�”}”(hj’ëh]”hŒuse_srq”…”�”}”(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ŒWhether or not to use SRQ.”h]”hŒWhether or not to use 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Œ9``req_buf_cache`` kmem_cache for **ioctx_ring** buffers. ”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´M¿hjÅëubj)�”}”(hhh]”hÝ)�”}”(hŒ&kmem_cache for **ioctx_ring** buffers.”h]”(hŒkmem_cache for ”…”�”}”(hjäëh²hh³Nh´Nubjâ)�”}”(hŒ**ioctx_ring**”h]”hŒ ioctx_ring”…”�”}”(hjìëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjäëubhŒ buffers.”…”�”}”(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Œ``ioctx_ring`` Per-HCA SRQ. ”h]”(j)�”}”(hŒ``ioctx_ring``”h]”j )�”}”(hjìh]”hŒ ioctx_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´MÀhjìubj)�”}”(hhh]”hÝ)�”}”(hŒ Per-HCA SRQ.”h]”hŒ Per-HCA 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Œ9``event_handler`` Per-HCA asynchronous IB event handler. ”h]”(j)�”}”(hŒ``event_handler``”h]”j )�”}”(hjOìh]”hŒ event_handler”…”�”}”(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´MÁhjIìubj)�”}”(hhh]”hÝ)�”}”(hŒ&Per-HCA asynchronous IB event handler.”h]”hŒ&Per-HCA asynchronous IB event handler.”…”�”}”(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Áéubjý)�”}”(hŒ ``list`` Node in srpt_dev_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´MÂhj‚ìubj)�”}”(hhh]”hÝ)�”}”(hŒNode in srpt_dev_list.”h]”hŒNode in srpt_dev_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Œ7``port`` Information about the ports owned by this HCA.”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Œ.Information about the ports owned by this HCA.”h]”hŒ.Information about the ports owned by this HCA.”…”�”}”(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÷hjyéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjÕÈh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_event_handler (C function)”Œc.srpt_event_handler”hNt”auh1jhjÕÈh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒRvoid srpt_event_handler (struct ib_event_handler *handler, struct ib_event *event)”h]”j")�”}”(hŒQvoid srpt_event_handler(struct ib_event_handler *handler, struct ib_event *event)”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´K¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjíh²hh³j)íh´K¾ubjš)�”}”(hŒsrpt_event_handler”h]”jN)�”}”(hŒsrpt_event_handler”h]”hŒsrpt_event_handler”…”�”}”(hj<íh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj8íubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjíh²hh³j)íh´K¾ubj·)�”}”(hŒ:(struct ib_event_handler *handler, struct ib_event *event)”h]”(j½)�”}”(hŒ struct ib_event_handler *handler”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_event_handler”h]”hŒib_event_handler”…”�”}”(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]”jt)�”}”jgj>ísbŒc.srpt_event_handler”†”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Œhandler”h]”hŒhandler”…”�”}”(hj±íh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjPíubj½)�”}”(hŒstruct ib_event *event”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”h]”hŒib_event”…”�”}”(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_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”h]”hŒevent”…”�”}”(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Œ'asynchronous IB event callback function”h]”hŒ'asynchronous IB event callback function”…”�”}”(hjKî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´K¾hjHîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjíh²hh³j)íh´K¾ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjcîjÓjcîjÔ‰jÕ‰jÖ‰uh1jh²hhjÕÈh³Nh´NubjØ)�”}”(hX´**Parameters** ``struct ib_event_handler *handler`` IB event handler registered by ib_register_event_handler(). ``struct ib_event *event`` Description of the event that occurred. **Description** Callback function called by the InfiniBand core when an asynchronous IB event occurs. This callback may occur in interrupt context. See also section 11.5.2, Set Asynchronous Event Handler in the InfiniBand Architecture Specification.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjmîh]”hŒ Parameters”…”�”}”(hjoîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjkîubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´KÂhjgîubjø)�”}”(hhh]”(jý)�”}”(hŒa``struct ib_event_handler *handler`` IB event handler registered by ib_register_event_handler(). ”h]”(j)�”}”(hŒ$``struct ib_event_handler *handler``”h]”j )�”}”(hjŒîh]”hŒ struct ib_event_handler *handler”…”�”}”(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´K¿hj†îubj)�”}”(hhh]”hÝ)�”}”(hŒ;IB event handler registered by ib_register_event_handler().”h]”hŒ;IB event handler registered by ib_register_event_handler().”…”�”}”(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ŒC``struct ib_event *event`` Description of the event that occurred. ”h]”(j)�”}”(hŒ``struct ib_event *event``”h]”j )�”}”(hjÅîh]”hŒstruct ib_event *event”…”�”}”(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´KÀhj¿îubj)�”}”(hhh]”hÝ)�”}”(hŒ'Description of the event that occurred.”h]”hŒ'Description of the event that occurred.”…”�”}”(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÷hjgî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´KÂhjgîubhÝ)�”}”(hŒéCallback function called by the InfiniBand core when an asynchronous IB event occurs. This callback may occur in interrupt context. See also section 11.5.2, Set Asynchronous Event Handler in the InfiniBand Architecture Specification.”•h]”hŒéCallback function called by the InfiniBand core when an asynchronous IB event occurs. This callback may occur in interrupt context. See also section 11.5.2, Set Asynchronous Event Handler 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´KÁhjgîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjÕÈh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_srq_event (C function)”Œc.srpt_srq_event”hNt”auh1jhjÕÈh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ7void srpt_srq_event (struct ib_event *event, void *ctx)”h]”j")�”}”(hŒ6void srpt_srq_event(struct ib_event *event, void *ctx)”h]”(jý)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjAïh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Køubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTïh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAïh²hh³jSïh´Køubjš)�”}”(hŒsrpt_srq_event”h]”jN)�”}”(hŒsrpt_srq_event”h]”hŒsrpt_srq_event”…”�”}”(hjfïh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbïubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjAïh²hh³jSïh´Køubj·)�”}”(hŒ#(struct ib_event *event, void *ctx)”h]”(j½)�”}”(hŒstruct ib_event *event”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”h]”hŒib_event”…”�”}”(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)�”}”jgjhïsbŒc.srpt_srq_event”†”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”h]”hŒevent”…”�”}”(hjÛïh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj~ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjzïubj½)�”}”(hŒ void *ctx”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Œctx”h]”hŒctx”…”�”}”(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¶hjAïh²hh³jSïh´Køubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj=ïh²hh³jSïh´Køubah}”(h]”j8ïah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jSïh´Køhj:ïh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒSRQ event callback function”h]”hŒSRQ event callback function”…”�”}”(hjGð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´KøhjDðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj:ïh²hh³jSïh´Køubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj_ðjÓj_ðjÔ‰jÕ‰jÖ‰uh1jh²hhjÕÈh³Nh´NubjØ)�”}”(hŒ•**Parameters** ``struct ib_event *event`` Description of the event that occurred. ``void *ctx`` Context pointer specified at SRQ creation time.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjiðh]”hŒ Parameters”…”�”}”(hjkðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjgðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Kühjcðubjø)�”}”(hhh]”(jý)�”}”(hŒC``struct ib_event *event`` Description of the event that occurred. ”h]”(j)�”}”(hŒ``struct ib_event *event``”h]”j )�”}”(hjˆðh]”hŒstruct ib_event *event”…”�”}”(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´Kùhj‚ðubj)�”}”(hhh]”hÝ)�”}”(hŒ'Description of the event that occurred.”h]”hŒ'Description of the event that occurred.”…”�”}”(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Œ=``void *ctx`` Context pointer specified at SRQ creation time.”h]”(j)�”}”(hŒ ``void *ctx``”h]”j )�”}”(hjÁðh]”hŒ void *ctx”…”�”}”(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´Kûhj»ðubj)�”}”(hhh]”hÝ)�”}”(hŒ/Context pointer specified at SRQ creation time.”h]”hŒ/Context pointer specified at SRQ creation time.”…”�”}”(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´Kúhj×ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jÖðh´Kûhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjcðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjÕÈh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsrpt_qp_event (C function)”Œc.srpt_qp_event”hNt”auh1jhjÕÈh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ6void srpt_qp_event (struct ib_event *event, void *ptr)”h]”j")�”}”(hŒ5void srpt_qp_event(struct ib_event *event, void *ptr)”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_qp_event”h]”jN)�”}”(hŒ srpt_qp_event”h]”hŒ srpt_qp_event”…”�”}”(hj<ñh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj8ñubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjñh²hh³j)ñh´Mubj·)�”}”(hŒ#(struct ib_event *event, void *ptr)”h]”(j½)�”}”(hŒstruct ib_event *event”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_event”h]”hŒib_event”…”�”}”(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]”jt)�”}”jgj>ñsbŒc.srpt_qp_event”†”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Œevent”h]”hŒevent”…”�”}”(hj±ñh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjPñubj½)�”}”(hŒ void *ptr”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Œptr”h]”hŒptr”…”�”}”(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´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ŒQP event callback function”h]”hŒQP event 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°hjñh²hh³j)ñh´Mubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj5òjÓj5òjÔ‰jÕ‰jÖ‰uh1jh²hhjÕÈh³Nh´NubjØ)�”}”(hŒx**Parameters** ``struct ib_event *event`` Description of the event that occurred. ``void *ptr`` SRPT RDMA channel.”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´Mhj9òubjø)�”}”(hhh]”(jý)�”}”(hŒC``struct ib_event *event`` Description of the event that occurred. ”h]”(j)�”}”(hŒ``struct ib_event *event``”h]”j )�”}”(hj^òh]”hŒstruct ib_event *event”…”�”}”(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´MhjXòubj)�”}”(hhh]”hÝ)�”}”(hŒ'Description of the event that occurred.”h]”hŒ'Description of the event that occurred.”…”�”}”(hjwòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jsòh´Mhjtòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jsòh´MhjUòubjý)�”}”(hŒ ``void *ptr`` SRPT RDMA channel.”h]”(j)�”}”(hŒ ``void *ptr``”h]”j )�”}”(hj—òh]”hŒ void *ptr”…”�”}”(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³Œ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´MhjUòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj9ò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”…”�”}”(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.srpt_set_ioc”†”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Œc_list”h]”hŒc_list”…”�”}”(hjló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”…”�”}”(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.srpt_set_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¼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]”jMóŒ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â)�”}”(hjHôh]”hŒ Parameters”…”�”}”(hjJôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjFô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´M6hjBôubjø)�”}”(hhh]”(jý)�”}”(hŒ ``u8 *c_list`` controller list. ”h]”(j)�”}”(hŒ``u8 *c_list``”h]”j )�”}”(hjgôh]”hŒ u8 *c_list”…”�”}”(hjiôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeô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´M3hjaôubj)�”}”(hhh]”hÝ)�”}”(hŒcontroller list.”h]”hŒcontroller list.”…”�”}”(hj€ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j|ôh´M3hj}ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaô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÷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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´M7hjBô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´M6hjBô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”…”�”}”(hjYõh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjUõ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Œ ”…”�”}”(hjhõh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUõh²hh³jgõh´MJubjš)�”}”(hŒsrpt_get_class_port_info”h]”jN)�”}”(hŒsrpt_get_class_port_info”h]”hŒsrpt_get_class_port_info”…”�”}”(hjzõh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjvõubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjUõh²hh³jgõh´MJubj·)�”}”(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_class_port_info”†”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Œmad”h]”hŒmad”…”�”}”(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¶hjUõh²hh³jgõh´MJubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjQõh²hh³jgõh´MJubah}”(h]”jLõah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jgõh´MJhjNõ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°hjNõh²hh³jgõh´MJubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj1öjÓj1ö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áhj9ö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´MNhj5ö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 )�”}”(hjZöh]”hŒstruct ib_dm_mad *mad”…”�”}”(hj\öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXö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´MKhjTö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.”…”�”}”(hjsöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³joöh´MKhjpöubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³joöh´MKhjQöubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj5ö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´MMhj5ö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´MLhj5ö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”…”�”}”(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]”jt)�”}”jgjýösbŒc.srpt_get_iou”†”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Œmad”h]”hŒmad”…”�”}”(hjp÷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^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 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ühjWø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Œ ”…”�”}”(hjjøh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWøh²hh³jiø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&]”uh1jMhjxøubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjWøh²hh³jiø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”…”�”}”(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_get_ioc”†”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Œsport”h]”hŒsport”…”�”}”(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 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”…”�”}”(hj9ù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”…”�”}”(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_dm_mad”h]”hŒ ib_dm_mad”…”�”}”(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.srpt_get_ioc”†”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Œmad”h]”hŒmad”…”�”}”(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¶hjWøh²hh³jiøh´Mwubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjSøh²hh³jiøh´Mwubah}”(h]”jNøah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jiøh´MwhjPø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°hjPøh²hh³jiø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 )�”}”(hjMúh]”hŒu32 slot”…”�”}”(hjOúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKú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´MyhjGúubj)�”}”(hhh]”hÝ)�”}”(hŒ3Slot number specified in DM_ATTR_IOC_PROFILE query.”h]”hŒ3Slot number specified in DM_ATTR_IOC_PROFILE query.”…”�”}”(hjfúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jbúh´Myhjcúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jbú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 )�”}”(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´Mzhj€ú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&]”uh1jhj€ú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”…”�”}”(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]”jt)�”}”jgj)ûsbŒc.srpt_get_svc_entries”†”asbuh1hhj?ûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfûh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj?ûubjN)�”}”(hŒioc_guid”h]”hŒioc_guid”…”�”}”(hjtû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”…”�”}”(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.srpt_get_svc_entries”†”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¼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]”jbûŒ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]”jbûŒ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”…”�”}”(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 ib_dm_mad *mad”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjeüh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjaüubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrüh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaü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]”jbûŒc.srpt_get_svc_entries”†”asbuh1hhjaüubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡üh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaüubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¯üh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjaüubjN)�”}”(hŒmad”h]”hŒmad”…”�”}”(hj¼üh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjaü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 )�”}”(hj`ýh]”hŒu16 slot”…”�”}”(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´MµhjZýubj)�”}”(hhh]”hÝ)�”}”(hŒI/O controller number.”h]”hŒI/O controller number.”…”�”}”(hjyýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³juýh´Mµhjvýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³juý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&]”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Œ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&]”uh1jhj“ý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â)�”}”(hjFþh]”hŒ Description”…”�”}”(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ý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”…”�”}”(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_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™hj‡þ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'hj6ÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6ÿubh)�”}”(hhh]”jN)�”}”(hŒib_mad”h]”hŒib_mad”…”�”}”(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_mgmt_method_get”†”asbuh1hhj6ÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÿ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Œrq_mad”h]”hŒrq_mad”…”�”}”(hj‘ÿh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj6ÿ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”…”�”}”(hjh²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Œ&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°hj€þh²hh³j™þh´MÝubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjCjÓjCjÔ‰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â)�”}”(hjMh]”hŒ Parameters”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjKubah}”(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áhjGubjø)�”}”(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 )�”}”(hjlh]”hŒstruct srpt_port *sp”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubah}”(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Þhjfubj)�”}”(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´MÞhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�h´MÞhjcubjý)�”}”(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ßhjcubjý)�”}”(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áhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjGubeh}”(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”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj4h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4h²hh³jFh´Mubjš)�”}”(hŒsrpt_mad_send_handler”h]”jN)�”}”(hŒsrpt_mad_send_handler”h]”hŒsrpt_mad_send_handler”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjUubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj4h²hh³jFh´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”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjqubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqubh)�”}”(hhh]”jN)�”}”(hŒ ib_mad_agent”h]”hŒ ib_mad_agent”…”�”}”(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_mad_send_handler”†”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Œ mad_agent”h]”hŒ mad_agent”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjmubj½)�”}”(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”…”�”}”(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_mad_send_handler”†”asbuh1hhjãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjãubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj1h²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¼hjmubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj4h²hh³jFh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj0h²hh³jFh´Mubah}”(h]”j+ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jFh´Mhj-h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒMAD send completion callback”h]”hŒMAD send completion callback”…”�”}”(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´Mhjeh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj-h²hh³jFh´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_wc *mad_wc`` Work completion reporting that the MAD has been sent.”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Œ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÷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_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”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj8h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj8h²hh³jJh´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&]”uh1jMhjYubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj8h²hh³jJh´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”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjuubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjuubh)�”}”(hhh]”jN)�”}”(hŒ ib_mad_agent”h]”hŒ ib_mad_agent”…”�”}”(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_mad_recv_handler”†”asbuh1hhjuubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjuubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjuubjN)�”}”(hŒ mad_agent”h]”hŒ mad_agent”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjqubj½)�”}”(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&]”uh1jMhjubah}”(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Œ*”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjçubjN)�”}”(hŒsend_buf”h]”hŒsend_buf”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjqubj½)�”}”(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'hjWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWubh)�”}”(hhh]”jN)�”}”(hŒib_mad_recv_wc”h]”hŒib_mad_recv_wc”…”�”}”(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]”j³Œ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_wc”h]”hŒmad_wc”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjqubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj8h²hh³jJh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj4h²hh³jJh´Mubah}”(h]”j/ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jJh´Mhj1h²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°hj1h²hh³jJh´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”…”�”}”(hjh²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 )�”}”(hjh]”hŒstruct ib_mad_agent *mad_agent”…”�”}”(hjh²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Œ(Return value of ib_register_mad_agent().”h]”hŒ(Return value of ib_register_mad_agent().”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j2h´Mhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j2h´Mhjubjý)�”}”(hŒ/``struct ib_mad_send_buf *send_buf`` Not used. ”h]”(j)�”}”(hŒ$``struct ib_mad_send_buf *send_buf``”•mh]”j )�”}”(hjVh]”hŒ struct ib_mad_send_buf *send_buf”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubah}”(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´MhjPubj)�”}”(hhh]”hÝ)�”}”(hŒ Not used.”h]”hŒ Not used.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jkh´Mhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jkh´Mhjubjý)�”}”(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 )�”}”(hj�h]”hŒstruct ib_mad_recv_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Œ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&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¤h´Mhjubeh}”(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&]”uh1jMhjubah}”(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”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_port”h]”hŒ srpt_port”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jFŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj sbŒc.srpt_refresh_port”†”asbuh1hhj"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj"ubjN)�”}”(hŒsport”h]”hŒsport”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj"ubeh}”(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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÿh´M_hjubah}”(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Œ«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.”…”�”}”(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ÅubhÝ)�”}”(hŒ**Note**”h]”jâ)�”}”(hjLh]”hŒNote”…”�”}”(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´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.”…”�”}”(hjbh²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”…”�”}”(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_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™hj�h²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Œ*”…”�”}”(hjh²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ühj<ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj<ubjN)�”}”(hŒport_cnt”h]”hŒport_cnt”…”�”}”(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Œ!unregister MAD callback functions”h]”hŒ!unregister MAD callback functions”…”�”}”(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. ``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áhj9 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.”…”�”}”(hjQ 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”…”�”}”(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´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Œ 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³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Œ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³j� 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Œ ”…”�”}”(hj6 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Œsdev”h]”hŒsdev”…”�”}”(hjQ 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”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjf ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjf ubjN)�”}”(hŒ ioctx_size”h]”hŒ ioctx_size”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjf 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Œ ”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjY 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¤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Œ%allocate a SRPT I/O context structure”h]”hŒ%allocate 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°hju 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. ``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 )�”}”(hj6 h]”hŒstruct kmem_cache *buf_cache”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4 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Íhj0 ubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jK h´MÍhjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jK h´MÍhj» ubjý)�”}”(hŒ3``enum dma_data_direction dir`` DMA data direction.”h]”(j)�”}”(hŒ``enum dma_data_direction dir``”h]”j )�”}”(hjo h]”hŒenum dma_data_direction dir”…”�”}”(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Œ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&]”uh1jhji 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 (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Œ ”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjR 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Œstruct srpt_ioctx *ioctx”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Œ 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]”j@ Œc.srpt_free_ioctx”†”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Œioctx”h]”hŒioctx”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjt 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”…”�”}”(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”†”asbuh1hhjä ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj2h²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”…”�”}”(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Œdma_data_direction”h]”hŒdma_data_direction”…”�”}”(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_free_ioctx”†”asbuh1hhjTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTubeh}”(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”…”�”}”(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´Mðhjubj)�”}”(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&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j"h´Mðhjubjý)�”}”(hŒ2``struct srpt_ioctx *ioctx`` I/O context pointer. ”h]”(j)�”}”(hŒ``struct srpt_ioctx *ioctx``”h]”j )�”}”(hjFh]”hŒstruct srpt_ioctx *ioctx”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDubah}”(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.”…”�”}”(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ñhjubjý)�”}”(hŒ3``struct kmem_cache *buf_cache`` I/O buffer cache. ”h]”(j)�”}”(hŒ ``struct kmem_cache *buf_cache``”h]”j )�”}”(hjh]”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òhjyubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j”h´Mòhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j”h´Mòhjubjý)�”}”(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ôhjubeh}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”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³jh´Mubh)�”}”(hhh]”jN)�”}”(hŒ srpt_ioctx”h]”hŒ srpt_ioctx”…”�”}”(hj1h²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)�”}”jgŒsrpt_alloc_ioctx_ring”sbŒc.srpt_alloc_ioctx_ring”†”asbuh1hhjh²hh³jh´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³jh´Mubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjh²hh³jh´Mubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjh²hh³jh´Mubjš)�”}”(hŒsrpt_alloc_ioctx_ring”h]”jN)�”}”(hjOh]”hŒsrpt_alloc_ioctx_ring”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjzubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh²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'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]”jMŒc.srpt_alloc_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Œ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”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒ ring_size”h]”hŒ ring_size”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‘ubj½)�”}”(hŒint ioctx_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Œ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:ubjN)�”}”(hŒ ioctx_size”h]”hŒ ioctx_size”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‘ubj½)�”}”(hŒstruct kmem_cache *buf_cache”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjoubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjoubh)�”}”(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]”jMŒc.srpt_alloc_ioctx_ring”†”asbuh1hhjoubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjoubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjoubjN)�”}”(hŒ buf_cache”h]”hŒ buf_cache”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj‘ubj½)�”}”(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¼hj‘ubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(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Œdma_data_direction”h]”hŒdma_data_direction”…”�”}”(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]”jMŒc.srpt_alloc_ioctx_ring”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjbh²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¶hjh²hh³jh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj h²hh³jh´Mubah}”(h]”jah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jh´Mhjh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ.allocate a ring of SRPT I/O context structures”h]”hŒ.allocate a ring of SRPT I/O context structures”…”�”}”(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³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 )�”}”(hjh]”hŒ int ring_size”…”�”}”(hjh²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Œ+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³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´MhjÄubjý)�”}”(hŒ%``int ioctx_size`` I/O context size. ”h]”(j)�”}”(hŒ``int ioctx_size``”h]”j )�”}”(hj?h]”hŒint ioctx_size”…”�”}”(hjAh²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´Mhj9ubj)�”}”(hhh]”hÝ)�”}”(hŒI/O context size.”h]”hŒI/O context size.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jTh´MhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jTh´MhjÄ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´Mhjrubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�h´MhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�h´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.”…”�”}”(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 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´M hjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷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”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjAh²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Œ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAh²hh³jSh´M.ubjš)�”}”(hŒsrpt_free_ioctx_ring”h]”jN)�”}”(hŒsrpt_free_ioctx_ring”h]”hŒsrpt_free_ioctx_ring”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjbubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjAh²hh³jSh´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”…”�”}”(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_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)�”}”jgjhsbŒ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¼hjzubj½)�”}”(hŒstruct srpt_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²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_device”h]”hŒ srpt_device”…”�”}”(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Œ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjýubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjýubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjzubj½)�”}”(hŒ int ring_size”h]”(jý)�”}”(hŒint”h]”hŒint”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjmubjN)�”}”(hŒ ring_size”h]”hŒ ring_size”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjzubj½)�”}”(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¼hjzubj½)�”}”(hŒenum dma_data_direction dir”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(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Œdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j6Œmodname”NŒ classname”Njkjn)�”}”jq]”j¼Œc.srpt_free_ioctx_ring”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubjN)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjzubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjAh²hh³jSh´M.ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj=h²hh³jSh´M.ubah}”(h]”j8ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jSh´M.hj:h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ,free the ring of SRPT I/O context structures”h]”hŒ,free the ring of SRPT I/O context structures”…”�”}”(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³jSh´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 )�”}”(hjh]”hŒstruct srpt_device *sdev”…”�”}”(hjh²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´M0hjþubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA pointer.”h]”hŒSRPT HCA pointer.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´M0hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´M0hjÂubjý)�”}”(hŒ+``int ring_size`` Number of ring elements. ”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´M1hj7ubj)�”}”(hhh]”hÝ)�”}”(hŒNumber of ring elements.”h]”hŒNumber of ring elements.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jRh´M1hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jRh´M1hjÂubjý)�”}”(hŒ3``struct kmem_cache *buf_cache`` I/O buffer cache. ”h]”(j)�”}”(hŒ ``struct kmem_cache *buf_cache``”h]”j )�”}”(hjvh]”hŒstruct kmem_cache *buf_cache”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtubah}”(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´M2hjpubj)�”}”(hhh]”hÝ)�”}”(hŒI/O buffer cache.”h]”hŒI/O buffer cache.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‹h´M2hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‹h´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'hjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³jh´MEubh)�”}”(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]”jt)�”}”jgŒsrpt_set_cmd_state”sbŒc.srpt_set_cmd_state”†”asbuh1hhjh²hh³jh´MEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³jh´MEubjš)�”}”(hŒsrpt_set_cmd_state”h]”jN)�”}”(hjFh]”hŒsrpt_set_cmd_state”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjWubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh²hh³jh´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”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjrubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjrubh)�”}”(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]”jDŒc.srpt_set_cmd_state”†”asbuh1hhjrubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjrubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjrubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnubj½)�”}”(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”…”�”}”(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]”jDŒc.srpt_set_cmd_state”†”asbuh1hhjâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâubjN)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjnubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjh²hh³jh´MEubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh²hh³jh´MEubah}”(h]”jüah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jh´MEhjþh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒset the state of a SCSI command”h]”hŒset the state of a SCSI command”…”�”}”(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´MEhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjþh²hh³jh´MEubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjrjÓjrjÔ‰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áhjzubah}”(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´MIhjvubjø)�”}”(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´MFhj•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´MFhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j°h´MFhj’ubjý)�”}”(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´MGhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjvubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²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´MIhjvubhÝ)�”}”(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.”…”�”}”(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´MHhjvubeh}”(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”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjPh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MYubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPh²hh³jah´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”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjpubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjPh²hh³jah´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”…”�”}”(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]”jt)�”}”jgjvsbŒc.srpt_test_and_set_cmd_state”†”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¼hjˆubj½)�”}”(hŒenum srpt_command_state old”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjh²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_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]”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”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjˆubj½)�”}”(hŒenum srpt_command_state new”h]”(j()�”}”(hjÆ%h]”hŒenum”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaubh)�”}”(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_test_and_set_cmd_state”†”asbuh1hhjaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaubjN)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjˆubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjPh²hh³jah´MYubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjLh²hh³jah´MYubah}”(h]”jGah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jah´MYhjIh²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°hjIh²hh³jah´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 )�”}”(hjh]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hjh²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´MZhjubj)�”}”(hhh]”hÝ)�”}”(hŒSend I/O context.”h]”hŒSend I/O context.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j/h´MZhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j/h´MZhjubjý)�”}”(hŒ;``enum srpt_command_state old`` Current I/O context state. ”h]”(j)�”}”(hŒ``enum srpt_command_state old``”h]”j )�”}”(hjSh]”hŒenum srpt_command_state old”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubah}”(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[hjMubj)�”}”(hhh]”hÝ)�”}”(hŒCurrent I/O context state.”h]”hŒCurrent I/O context state.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jhh´M[hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jhh´M[hjubjý)�”}”(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´M\hj†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´M\hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j¡h´M\hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjõ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ühjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´Mrubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjh²hh³jh´Mrubjš)�”}”(hŒsrpt_post_recv”h]”jN)�”}”(hŒsrpt_post_recv”h]”hŒsrpt_post_recv”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj)ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjh²hh³jh´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”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEubh)�”}”(hhh]”jN)�”}”(hŒ srpt_device”h]”hŒ srpt_device”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jiŒmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj/sbŒc.srpt_post_recv”†”asbuh1hhjEubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjEubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjAubj½)�”}”(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]”jƒŒc.srpt_post_recv”†”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Œch”h]”hŒch”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjAubj½)�”}”(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Œ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(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.srpt_post_recv”†”asbuh1hhj'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjuh²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¼hjAubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hjh²hh³jh´Mrubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjh²hh³jh´Mrubah}”(h]”jÿah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jh´Mrhjh²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°hjh²hh³jh´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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mshjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jh´Mshjäubjý)�”}”(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´Mthj 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´Mthj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j;h´Mthjäubjý)�”}”(hŒ>``struct srpt_recv_ioctx *ioctx`` Receive I/O context pointer.”h]”(j)�”}”(hŒ!``struct srpt_recv_ioctx *ioctx``”h]”j )�”}”(hj_h]”hŒstruct srpt_recv_ioctx *ioctx”…”�”}”(hjah²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´MvhjYubj)�”}”(hhh]”hÝ)�”}”(hŒReceive I/O context pointer.”h]”hŒReceive I/O context pointer.”…”�”}”(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´Muhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jth´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Œ ”…”�”}”(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Œch”h]”hŒch”…”�”}”(hjO 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”…”�”}”(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´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Òj‘ jÓj‘ 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“hj• 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÷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Œé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‘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_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ühj6!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Œ ”…”�”}”(hjI!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6!h²hh³jH!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&]”uh1jMhjW!ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj6!h²hh³jH!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”…”�”}”(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Œ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]”jt)�”}”jgj]!sbŒc.srpt_get_desc_tbl”†”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Œ recv_ioctx”h]”hŒ recv_ioctx”…”�”}”(hjÐ!h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjs!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjo!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Œ*”…”�”}”(hj3"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¼hjo!ubj½)�”}”(hŒstruct srp_cmd *srp_cmd”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Œsrp_cmd”h]”hŒsrp_cmd”…”�”}”(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]”j±!Œ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Œsrp_cmd”h]”hŒsrp_cmd”…”�”}”(hj°"h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjU"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjo!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¼hjo!ubj½)�”}”(hŒstruct scatterlist **sg”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Œ scatterlist”h]”hŒ scatterlist”…”�”}”(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]”j±!Œc.srpt_get_desc_tbl”†”asbuh1hhj5#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5#ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjƒ#h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj5#ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj5#ubjN)�”}”(hŒsg”h]”hŒsg”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj5#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjo!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¼hjo!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Œ ”…”�”}”(hj5$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Œdata_len”h]”hŒdata_len”…”�”}”(hjP$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjo!ubj½)�”}”(hŒu16 imm_data_offset”h]”(h)�”}”(hhh]”jN)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhji$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jn$Œmodname”NŒ classname”Njkjn)�”}”jq]”j±!Œc.srpt_get_desc_tbl”†”asbuh1hhje$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hje$ubjN)�”}”(hŒimm_data_offset”h]”hŒimm_data_offset”…”�”}”(hj˜$h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhje$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjo!ubeh}”(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Œ/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³jH!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 )�”}”(hjN%h]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hjP%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL%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+hjH%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.”…”�”}”(hjg%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jc%h´M+hjd%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jc%h´M+hjú$ubjý)�”}”(hŒA``struct srp_cmd *srp_cmd`` Pointer to the SRP_CMD request data. ”h]”(j)�”}”(hŒ``struct srp_cmd *srp_cmd``”h]”j )�”}”(hj‡%h]”hŒstruct srp_cmd *srp_cmd”…”�”}”(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Œ$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&]”uh1jhj�%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 )�”}”(hj3&h]”hŒunsigned int *sg_cnt”…”�”}”(hj5&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1&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 ”…”�”}”(hjL&h²hh³Nh´Nubjâ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hjT&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjL&ubhŒ.”…”�”}”(hjL&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jH&h´M0hjI&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jH&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”…”�”}”(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´M2hjx&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.”…”�”}”(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´M1hj”&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j“&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”…”�”}”(hjH'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjD'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Œ ”…”�”}”(hjW'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjD'h²hh³jV'h´M˜ubjš)�”}”(hŒsrpt_init_ch_qp”h]”jN)�”}”(hŒsrpt_init_ch_qp”h]”hŒsrpt_init_ch_qp”…”�”}”(hji'h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhje'ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjD'h²hh³jV'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)�”}”jgjk'sbŒ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Œ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_init_ch_qp”†”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Œqp”h]”hŒqp”…”�”}”(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¶hjD'h²hh³jV'h´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj@'h²hh³jV'h´M˜ubah}”(h]”j;'ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jV'h´M˜hj='h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ initialize queue pair attributes”h]”hŒ initialize queue pair attributes”…”�”}”(hjx(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˜hju(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj='h²hh³jV'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`` 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á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_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÷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Œ�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.”…”�”}”(hjC)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_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”…”�”}”(hjr)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjn)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&]”uh1j9hjn)h²hh³j€)h´M½ubjš)�”}”(hŒsrpt_ch_qp_rtr”h]”jN)�”}”(hŒsrpt_ch_qp_rtr”h]”hŒsrpt_ch_qp_rtr”…”�”}”(hj“)h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj�)ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjn)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_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”jA*Œ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Œ*”…”�”}”(hjk*h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj*ubjN)�”}”(hŒqp”h]”hŒqp”…”�”}”(hjx*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¶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Œ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°hjg)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 )�”}”(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.”…”�”}”(hj5+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j1+h´M¿hj2+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j1+h´M¿hjÚ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷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´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Œ*”…”�”}”(hjL,h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjü+ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjY,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”…”�”}”(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_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_rts”†”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Œqp”h]”hŒqp”…”�”}”(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Œ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 )�”}”(hj4-h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hj6-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2-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.”…”�”}”(hjM-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jI-h´MÞhjJ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jI-h´MÞhj+-ubjý)�”}”(hŒ8``struct ib_qp *qp`` queue pair to change the state of. ”h]”(j)�”}”(hŒ``struct ib_qp *qp``”h]”j )�”}”(hjm-h]”hŒstruct ib_qp *qp”…”�”}”(hjo-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk-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ßhjg-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&]”uh1jhjg-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Œ1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>1ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(hj`1h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj]1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jb1Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgj(1sbŒc.srpt_abort_cmd”†”asbuh1hhj>1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>1ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjŽ1h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj>1ubjN)�”}”(hŒioctx”h]”hŒioctx”…”�”}”(hj›1h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj:1ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj1h²hh³j1h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjý0h²hh³j1h´M)ubah}”(h]”jø0ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j1h´M)hjú0h²hubj±)�”}”(hhh]”hÝ)�”}”(hŒabort a SCSI command”h]”hŒabort a SCSI command”…”�”}”(hjÅ1h²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Â1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjú0h²hh³j1h´M)ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjÝ1jÓjÝ1jÔ‰jÕ‰jÖ‰uh1jh²hhjÕÈh³Nh´NubjØ)�”}”(hŒa**Parameters** ``struct srpt_send_ioctx *ioctx`` I/O context associated with the SCSI command.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjç1h]”hŒ Parameters”…”�”}”(hjé1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjå1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”•)h´M-hjá1ubjø)�”}”(hhh]”jý)�”}”(hŒO``struct srpt_send_ioctx *ioctx`` I/O context associated with the SCSI command.”h]”(j)�”}”(hŒ!``struct srpt_send_ioctx *ioctx``”h]”j )�”}”(hj2h]”hŒstruct srpt_send_ioctx *ioctx”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubah}”(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/hj2ubj)�”}”(hhh]”hÝ)�”}”(hŒ-I/O context associated with the SCSI command.”h]”hŒ-I/O context associated with the SCSI command.”…”�”}”(hj2h²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*hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j2h´M/hjý1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjá1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j×hjÕÈh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ srpt_rdma_read_done (C function)”Œc.srpt_rdma_read_done”hNt”auh1jhjÕÈh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=void srpt_rdma_read_done (struct ib_cq *cq, struct ib_wc *wc)”h]”j")�”}”(hŒ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â)�”}”(hjY6h]”hŒ Parameters”…”�”}”(hj[6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjW6ubah}”(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’hjS6ubjø)�”}”(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 )�”}”(hjx6h]”hŒstruct srpt_rdma_ch *ch”…”�”}”(hjz6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv6ubah}”(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�hjr6ubj)�”}”(hhh]”hÝ)�”}”(hŒ9RDMA channel through which the request has been received.”h]”hŒ9RDMA channel through which the request has been received.”…”�”}”(hj‘6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�6h´M�hjŽ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjr6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�6h´M�hjo6ubjý)�”}”(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’hjo6ubjý)�”}”(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.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7h´M“hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j7h´M“hjo6ubjý)�”}”(hŒK``int status`` value for the STATUS field of the SRP_RSP information unit. ”h]”(j)�”}”(hŒ``int status``”h]”j )�”}”(hj$7h]”hŒ int status”…”�”}”(hj&7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"7ubah}”(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.”…”�”}”(hj=7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j97h´M”hj:7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j97h´M”hjo6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjS6ubhÝ)�”}”(hŒ**Description**”h]”jâ)�”}”(hj_7h]”hŒ Description”…”�”}”(hja7h²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–hjS6ubhÝ)�”}”(hŒ2Returns the size in bytes of the SRP_RSP response.”h]”hŒ2Returns the size in bytes of the SRP_RSP response.”…”�”}”(hju7h²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•hjS6ubhÝ)�”}”(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.”…”�”}”(hj„7h²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—hjS6ubeh}”(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”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj 8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j8Œmodname”NŒ classname”Njkjn)�”}”jq]”jt)�”}”jgjÖ7sbŒc.srpt_build_tskmgmt_rsp”†”asbuh1hhjì7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjì7ubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj<8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjì7ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjI8h²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”…”�”}”(hjb8h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj^8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^8ubh)�”}”(hhh]”jN)�”}”(hŒsrpt_send_ioctx”h]”hŒsrpt_send_ioctx”…”�”}”(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^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”…”�”}”(hj9h²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”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j9Œmodname”NŒ classname”Njkjn)�”}”jq]”j*8Œc.srpt_build_tskmgmt_rsp”†”asbuh1hhj9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9ubjN)�”}”(hŒtag”h]”hŒtag”…”�”}”(hjI9h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj9ubeh}”(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”…”�”}”(hjs9h²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âhjp9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¨7h²hh³jÁ7h´Mâubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj‹9jÓj‹9jÔ‰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â)�”}”(hj•9h]”hŒ Parameters”…”�”}”(hj—9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj“9ubah}”(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�9ubjø)�”}”(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:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j:h´Mähj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j:h´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 )�”}”(hj_:h]”hŒu64 tag”…”�”}”(hja: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æhjY: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.”…”�”}”(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«9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj�9ubhÝ)�”}”(hŒ**Description**”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�9ubhÝ)�”}”(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çhj�9ubhÝ)�”}”(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éhj�9ubeh}”(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Œ ”…”�”}”(hj8;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj';ubh)�”}”(hhh]”jN)�”}”(hŒ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(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)�”}”jgj;sbŒc.srpt_handle_cmd”†”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Œ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Œ ”…”�”}”(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]”je;Œ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]”je;Œc.srpt_handle_cmd”†”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Œ send_ioctx”h]”hŒ send_ioctx”…”�”}”(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¶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”…”�”}”(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°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 )�”}”(hjA=h]”hŒ"struct srpt_send_ioctx *send_ioctx”…”�”}”(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´Mhj;=ubj)�”}”(hhh]”hÝ)�”}”(hŒSend I/O context.”h]”hŒSend I/O context.”…”�”}”(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´MhjW=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jV=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ühj—=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&]”uh1j9hj—=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™hj—=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”…”�”}”(hj1>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”…”�”}”(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Œsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(hjh>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhje>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jj>Œmodname”NŒ classname”Njkjn)�”}”jq]”j>Œc.srpt_handle_tsk_mgmt”†”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Œ recv_ioctx”h]”hŒ recv_ioctx”…”�”}”(hj¡>h²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjF>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¶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Œ'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´Mjhj8?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²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”…”�”}”(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´MnhjW?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&]”uh1jhjz?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´Mkhjv?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´Mkhj’?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j‘?h´Mkhjs?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´Mlhjs?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´Mmhjs?ubeh}”(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´MohjW?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´MnhjW?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.”…”�”}”(hjN@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´MphjW?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ühjy@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&]”uh1j9hjy@h²hh³jŠ@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™hjy@h²hh³jŠ@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Œ*”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjµ@ubjN)�”}”(hŒch”h]”hŒch”…”�”}”(hjAh²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Œ ”…”�”}”(hj8Ah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'Aubh)�”}”(hhh]”jN)�”}”(hŒsrpt_recv_ioctx”h]”hŒsrpt_recv_ioctx”…”�”}”(hjIAh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjFAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jKAŒmodname”NŒ classname”Njkjn)�”}”jq]”jó@Œc.srpt_handle_new_iu”†”asbuh1hhj'Aubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgAh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'Aubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjuAh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj'AubjN)�”}”(hŒ recv_ioctx”h]”hŒ recv_ioctx”…”�”}”(hj‚Ah²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¶hjy@h²hh³jŠ@h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hju@h²hh³jŠ@h´M–ubah}”(h]”jp@ah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jŠ@h´M–hjr@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°hjr@h²hh³jŠ@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.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jBh´M—hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jBh´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 )�”}”(hj&Bh]”hŒ"struct srpt_recv_ioctx *recv_ioctx”…”�”}”(hj(Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$Bubah}”(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 Bubj)�”}”(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˜hjGubah}”(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.”…”�”}”(hjVGh²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.”…”�”}”(hjeGh²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”…”�”}”(hj”Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühj�Gh²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&]”uh1j9hj�Gh²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™hj�Gh²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Œ ”…”�”}”(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ÍGubj()�”}”(hjÁh]”hŒconst”…”�”}”(hj*Hh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÍGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÍGubjN)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjEHh²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'hjZHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZHubh)�”}”(hhh]”jN)�”}”(hŒib_cm_id”h]”hŒib_cm_id”…”�”}”(hj|Hh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjyHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j~HŒmodname”NŒ classname”Njkjn)�”}”jq]”j HŒc.srpt_cm_req_recv”†”asbuh1hhjZHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZHubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj¨Hh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjZHubjN)�”}”(hŒib_cm_id”h]”hŒib_cm_id”…”�”}”(hjµHh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjZHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÉGubj½)�”}”(hŒstruct rdma_cm_id *rdma_cm_id”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÎHh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÊHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊHubh)�”}”(hhh]”jN)�”}”(hŒ rdma_cm_id”h]”hŒ rdma_cm_id”…”�”}”(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.srpt_cm_req_recv”†”asbuh1hhjÊHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊHubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÊHubjN)�”}”(hŒ rdma_cm_id”h]”hŒ rdma_cm_id”…”�”}”(hj%Ih²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÊHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÉGubj½)�”}”(hŒ u8 port_num”h]”(h)�”}”(hhh]”jN)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjAIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj>Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jCIŒmodname”NŒ classname”Njkjn)�”}”jq]”j HŒc.srpt_cm_req_recv”†”asbuh1hhj:Iubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Ih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:IubjN)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hjmIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj:Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÉGubj½)�”}”(hŒ __be16 pkey”h]”(h)�”}”(hhh]”jN)�”}”(hŒ__be16”h]”hŒ__be16”…”�”}”(hj‰Ih²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj†Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j‹IŒmodname”NŒ classname”Njkjn)�”}”jq]”j HŒc.srpt_cm_req_recv”†”asbuh1hhj‚Iubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Ih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚IubjN)�”}”(hŒpkey”h]”hŒpkey”…”�”}”(hjµIh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj‚Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÉGubj½)�”}”(hŒconst struct srp_login_req *req”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjÎIh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÊIubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊIubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjéIh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÊIubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊIubh)�”}”(hhh]”jN)�”}”(hŒ srp_login_req”h]”hŒ srp_login_req”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”j JŒmodname”NŒ classname”Njkjn)�”}”jq]”j HŒc.srpt_cm_req_recv”†”asbuh1hhjÊIubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Jh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊIubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj3Jh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÊIubjN)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj@Jh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjÊIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÉGubj½)�”}”(hŒconst char *src_addr”h]”(j()�”}”(hjÁh]”hŒconst”…”�”}”(hjYJh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjUJubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfJh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUJubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjtJh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjUJubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Jh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUJubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjUJubjN)�”}”(hŒsrc_addr”h]”hŒsrc_addr”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjUJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjÉGubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj�Gh²hh³j¢Gh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjŒGh²hh³j¢Gh´M˜ubah}”(h]”j‡Gah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¢Gh´M˜hj‰Gh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ$process the event IB_CM_REQ_RECEIVED”h]”hŒ$process the event IB_CM_REQ_RECEIVED”…”�”}”(hjÇJh²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ÄJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj‰Gh²hh³j¢Gh´M˜ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒjßJjÓjßJjÔ‰jÕ‰jÖ‰uh1jh²hhjÕÈh³Nh´NubjØ)�”}”(hXÍ**Parameters** ``struct srpt_device *const sdev`` HCA through which the login request was received. ``struct ib_cm_id *ib_cm_id`` IB/CM connection identifier in case of IB/CM. ``struct rdma_cm_id *rdma_cm_id`` RDMA/CM connection identifier in case of RDMA/CM. ``u8 port_num`` Port through which the REQ message was received. ``__be16 pkey`` P_Key of the incoming connection. ``const struct srp_login_req *req`` SRP login request. ``const char *src_addr`` GID (IB/CM) or IP address (RDMA/CM) of the port that submitted the login request. **Description** 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Ý)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hjéJh]”hŒ Parameters”…”�”}”(hjëJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjçJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/infiniband:101: ./drivers/infiniband/ulp/srpt/ib_srpt.c”h´MœhjãJubjø)�”}”(hhh]”(jý)�”}”(hŒU``struct srpt_device *const sdev`` HCA through which the login request was received. ”h]”(j)�”}”(hŒ"``struct srpt_device *const sdev``”h]”j )�”}”(hjKh]”hŒstruct srpt_device *const sdev”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubah}”(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™hjKubj)�”}”(hhh]”hÝ)�”}”(hŒ1HCA through which the login request was received.”h]”hŒ1HCA through which the login request was received.”…”�”}”(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ÿJubjý)�”}”(hŒL``struct ib_cm_id *ib_cm_id`` IB/CM connection identifier in case of IB/CM. ”h]”(j)�”}”(hŒ``struct ib_cm_id *ib_cm_id``”h]”j )�”}”(hjAKh]”hŒstruct ib_cm_id *ib_cm_id”…”�”}”(hjCKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Kubah}”(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;Kubj)�”}”(hhh]”hÝ)�”}”(hŒ-IB/CM connection identifier in case of IB/CM.”h]”hŒ-IB/CM connection identifier in case of IB/CM.”…”�”}”(hjZKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jVKh´MšhjWKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jVKh´MšhjÿJubjý)�”}”(hŒT``struct rdma_cm_id *rdma_cm_id`` RDMA/CM connection identifier in case of RDMA/CM. ”h]”(j)�”}”(hŒ!``struct rdma_cm_id *rdma_cm_id``”h]”j )�”}”(hjzKh]”hŒstruct rdma_cm_id *rdma_cm_id”…”�”}”(hj|Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxKubah}”(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›hjtKubj)�”}”(hhh]”hÝ)�”}”(hŒ1RDMA/CM connection identifier in case of RDMA/CM.”h]”hŒ1RDMA/CM connection identifier in case of RDMA/CM.”…”�”}”(hj“Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�Kh´M›hj�Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j�Kh´M›hjÿJubjý)�”}”(hŒA``u8 port_num`` Port through which the REQ message was received. ”h]”(j)�”}”(hŒ``u8 port_num``”h]”j )�”}”(hj³Kh]”hŒ u8 port_num”…”�”}”(hjµKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±Kubah}”(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­Kubj)�”}”(hhh]”hÝ)�”}”(hŒ0Port through which the REQ message was received.”h]”hŒ0Port through which the REQ message was received.”…”�”}”(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ÿJubjý)�”}”(hŒ2``__be16 pkey`` P_Key of the incoming connection. ”h]”(j)�”}”(hŒ``__be16 pkey``”h]”j )�”}”(hjìKh]”hŒ __be16 pkey”…”�”}”(hjîKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêKubah}”(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æKubj)�”}”(hhh]”hÝ)�”}”(hŒ!P_Key of the incoming connection.”h]”hŒ!P_Key of the incoming connection.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jLh´M�hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jLh´M�hjÿJubjý)�”}”(hŒ7``const struct srp_login_req *req`` SRP login request. ”h]”(j)�”}”(hŒ#``const struct srp_login_req *req``”h]”j )�”}”(hj%Lh]”hŒconst struct srp_login_req *req”…”�”}”(hj'Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#Lubah}”(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žhjLubj)�”}”(hhh]”hÝ)�”}”(hŒSRP login request.”h]”hŒSRP login request.”…”�”}”(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ÿJubjý)�”}”(hŒk``const char *src_addr`` GID (IB/CM) or IP address (RDMA/CM) of the port that submitted the login request. ”h]”(j)�”}”(hŒ``const char *src_addr``”h]”j )�”}”(hj^Lh]”hŒconst char *src_addr”…”�”}”(hj`Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\Lubah}”(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 hjXLubj)�”}”(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.”…”�”}”(hjwLh²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ŸhjtLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jsLh´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áhj˜Lubah}”(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”…”�”}”(hjMh²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”…”�”}”(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Œ srpt_rdma_ch”h]”hŒ srpt_rdma_ch”…”�”}”(hj:Mh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhj7Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jeŒreftype”jgŒ reftarget”jPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j:Ph´MŽ hj;Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(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”…”�”}”(hjbPh²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.”…”�”}”(hjvPh²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â)�”}”(hj‡Ph]”hŒNote”…”�”}”(hj‰Ph²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Ý)�”}”(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().”…”�”}”(hj�Ph²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 Qh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubh)�”}”(hhh]”jN)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(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ïPsbŒc.srpt_queue_response”†”asbuh1hhjQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjQubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjUQh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjQubjN)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjbQh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjQubah}”(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”…”�”}”(hjŒQh²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 hj‰Qh²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â)�”}”(hjRh]”hŒ Description”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjRubah}”(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”…”�”}”(hjMRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjIRh²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&]”uh1j9hjIRh²hh³j[Rh´MÈ ubjš)�”}”(hŒsrpt_release_sport”h]”jN)�”}”(hŒsrpt_release_sport”h]”hŒsrpt_release_sport”…”�”}”(hjnRh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjjRubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hjIRh²hh³j[Rh´MÈ ubj·)�”}”(hŒ(struct srpt_port *sport)”h]”j½)�”}”(hŒstruct srpt_port *sport”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Œ 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)�”}”jgjpRsbŒc.srpt_release_sport”†”asbuh1hhj†Rubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†Rubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjÖRh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj†RubjN)�”}”(hŒsport”h]”hŒsport”…”�”}”(hjãRh²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¶hjIRh²hh³j[Rh´MÈ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjERh²hh³j[Rh´MÈ ubah}”(h]”j@Rah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j[Rh´MÈ hjBRh²hubj±)�”}”(hhh]”hÝ)�”}”(hŒ.disable login and wait for associated channels”h]”hŒ.disable login and wait for associated channels”…”�”}”(hj Sh²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 Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjBRh²hh³j[Rh´MÈ ubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj%SjÓj%SjÔ‰jÕ‰jÖ‰uh1jh²hhjÕÈh³Nh´NubjØ)�”}”(hŒ<**Parameters** ``struct srpt_port *sport`` SRPT HCA port.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jâ)�”}”(hj/Sh]”hŒ Parameters”…”�”}”(hj1Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj-Subah}”(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 )�”}”(hjNSh]”hŒstruct srpt_port *sport”…”�”}”(hjPSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLSubah}”(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Î hjHSubj)�”}”(hhh]”hÝ)�”}”(hŒSRPT HCA port.”h]”hŒSRPT HCA port.”…”�”}”(hjgSh²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É hjdSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³jcSh´MÎ hjESubah}”(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”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTubjý)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj0Th²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jühjTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjLTh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjTubjN)�”}”(hŒname”h]”hŒname”…”�”}”(hjYTh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hj Tubah}”(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ŒLook up an RDMA port by name”h]”hŒLook up an RDMA port by name”…”�”}”(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€Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj�Sh²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”…”�”}”(hjUh²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().”…”�”}”(hjUh²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”…”�”}”(hjDUh²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Œ ”…”�”}”(hjSUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj@Uh²hh³jRUh´M‡ ubjš)�”}”(hŒ srpt_add_one”h]”jN)�”}”(hŒ srpt_add_one”h]”hŒ srpt_add_one”…”�”}”(hjeUh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjaUubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”j´jµuh1j™hj@Uh²hh³jRUh´M‡ ubj·)�”}”(hŒ(struct ib_device *device)”h]”j½)�”}”(hŒstruct ib_device *device”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Œ 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)�”}”jgjgUsbŒ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¼hjyUubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¶hj@Uh²hh³jRUh´M‡ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hjbh²hh³jTbh´M ubah}”(h]”j9bah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³jTbh´M hj;bh²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”…”�”}”(hjch²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 hjch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj;bh²hh³jTbh´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á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´M$hj"cubjø)�”}”(hhh]”jý)�”}”(hŒ``struct se_wwn *wwn`` $port.”h]”(j)�”}”(hŒ``struct se_wwn *wwn``”h]”j )�”}”(hjGch]”hŒstruct se_wwn *wwn”…”�”}”(hjIch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEcubah}”(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&hjAcubj)�”}”(hhh]”hÝ)�”}”(hŒ$port.”h]”hŒ$port.”…”�”}”(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´M!hj]cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j\ch´M&hj>cubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj"cubeh}”(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ühj�ch²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&]”uh1j9hj�ch²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™hj�ch²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¶hj�ch²hh³j¯ch´Meubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj¢ˆuh1j!j£j¤hj™ch²hh³j¯ch´Meubah}”(h]”j”cah ]”(j¨j©eh"]”h$]”h&]”j­ˆj®)j¯huh1jh³j¯ch´Mehj–ch²hubj±)�”}”(hhh]”hÝ)�”}”(hŒkernel module initialization”h]”hŒkernel module initialization”…”�”}”(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´Mehjdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj–ch²hh³j¯ch´Meubeh}”(h]”h ]”(jeŒfunction”eh"]”h$]”h&]”jÑjejÒj djÓj djÔ‰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”…”�”}”(hj,dh²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´Mihj$dubjø)�”}”(hhh]”jý)�”}”(hŒ``void`` no arguments ”h]”(j)�”}”(hŒ``void``”h]”j )�”}”(hjIdh]”hŒvoid”…”�”}”(hjKdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGdubah}”(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´KhjCdubj)�”}”(hhh]”hÝ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjbdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^dh´Khj_dubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jüh³j^dh´Khj@dubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj$dubhÝ)�”}”(hŒ**Note**”h]”jâ)�”}”(hj„dh]”hŒNote”…”�”}”(hj†dh²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´Khj$dubhÝ)�”}”(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´Mghj$dubeh}”(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µhj yh²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”…”�”}”(hjeh²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'hjeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,eh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeubh)�”}”(hhh]”jN)�”}”(hŒ isert_conn”h]”hŒ isert_conn”…”�”}”(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)�”}”jgjesbŒc.isert_conn_terminate”†”asbuh1hhjeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]eh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeubj‰)�”}”(hjŒh]”hŒ*”…”�”}”(hjkeh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjeubjN)�”}”(hŒ isert_conn”h]”hŒ isert_conn”…”�”}”(hjxeh²hh³Nh´Nubah}”(h]”h ]”jZah"]”h$]”h&]”uh1jMhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¼hjeubah}”(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”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjfubah}”(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.”…”�”}”(hj4fh²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.”…”�”}”(hjCfh²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-&j”*j™*jï+jô+j.j.j�1j’1j”5j™5jyj9j/9j49jH<jM<jJ>jO>jCjCjUGjZGjéHjîHjëJjðJj©Mj®MjúOjÿOj2Rj7Rj³Sj¸Sj[Uj`Uj¶Vj»VjZjZjà\jå\j$_j)_j!aj&aj|bj�bjXdj]dj²ej·ej gjgj0kj5kjçljìlj•pjšpjotjttjðujõujägj yjÏÈj1yjNyjSyj{j {j|j„|jÃjÈj"‚j'‚jH„jM„j5†j:†jw‡j|‡j+‰j0‰jߊjäŠjw�j|�j„’j‰’jU•jZ•jB—jG—jo™jt™j™›jž›jA�jF�juŸjzŸjö jû j¡¢j¦¢jó¤jø¤j0§j5§jIªjNªjô«jù«j®j®j�¯j”¯jβjÓ²jȵj͵jÞ·jã·j_¹jd¹jc»jh»j¾j¾j‰ÀjŽÀjäÁjéÁjÓÃjØÃj.Åj3Åj¯Æj´Æj²djÕÈjòÈj÷Èj'Ëj,Ëj8Íj=ÍjÅÎjÊÎj‰ÒjŽÒjLÔjQÔj!Ýj&ÝjßjßjÂàjÇàjvâj{âjcäjhäjéjéjíjíj8ïj=ïjñjñjäòjéòjLõjQõjÍöjÒöjNøjSøjùújþúj~þjƒþj+j0j/j4jÜjáj„j‰js jx j¼ jÁ jj j8j=jüjjGjLjÿjj¬j±j-!j2!j;'j@'je)jj)j¶+j»+j.j .jb/jg/jø0jý0jS2jX2j}4j‚4j¦7j«7já:jæ:jŽ=j“=jp@ju@jsBjxBj�Dj¢DjøEjýEj‡GjŒGjÒLj×LjSNjXNj¿PjÄPj@RjERj›Sj Sj7Ujbj”cj™cjÜgj¸djÕdjÚdjefjjfuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.