
  #   ˆl–ß=¿JÅ!¶e8 EpÜ TÅ£Áƒ®‡ÀÄÃ ë    /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */

/*
 * This file contains defines, structures, etc. that are used
 * to communicate between kernel and user code.
 */

#ifndef RVT_ABI_USER_H
#define RVT_ABI_USER_H

#include <linux/types.h>
#include <rdma/ib_user_verbs.h>
#ifndef RDMA_ATOMIC_UAPI
#define RDMA_ATOMIC_UAPI(_type, _name) struct{ _type val; } _name
#endif

struct rvt_wqe_sge {
	__aligned_u64 addr;
	__u32 length;
	__u32 lkey;
};

/*
 * This structure is used to contain the head pointer, tail pointer,
 * and completion queue entries as a single memory allocation so
 * it can be mmap'ed into user space.
 */
struct rvt_cq_wc {
	/* index of next entry to fill */
	RDMA_ATOMIC_UAPI(__u32, head);
	/* index of next ib_poll_cq() entry */
	RDMA_ATOMIC_UAPI(__u32, tail);

	/* these are actually size ibcq.cqe + 1 */
	struct ib_uverbs_wc uqueue[];
};

/*
 * Receive work request queue entry.
 * The size of the sg_list is determined when the QP (or SRQ) is created
 * and stored in qp->r_rq.max_sge (or srq->rq.max_sge).
 */
struct rvt_rwqe {
	__u64 wr_id;
	__u8 num_sge;
	__u8 padding[7];
	struct rvt_wqe_sge sg_list[];
};

/*
 * This structure is used to contain the head pointer, tail pointer,
 * and receive work queue entries as a single memory allocation so
 * it can be mmap'ed into user space.
 * Note that the wq array elements are variable size so you can't
 * just index into the array to get the N'th element;
 * use get_rwqe_ptr() for user space and rvt_get_rwqe_ptr()
 * for kernel space.
 */
struct rvt_rwq {
	/* new work requests posted to the head */
	RDMA_ATOMIC_UAPI(__u32, head);
	/* receives pull requests from here. */
	RDMA_ATOMIC_UAPI(__u32, tail);
	struct rvt_rwqe wq[];
};
#endif /* RVT_ABI_USER_H */
  0   	ˆl–ßi~”êh¥8 Eq—.4Ú˜´oÂƒD÷_ŒuÐb&=Ly[Ï¿ÆÅ P    	ý7zXZ  i"Þ6 !   t/å£à%S]  h—»ŸwòAsÄƒõ�k:Fí¿dƒàà;2¤˜Ðgˆ:b,U¾×þæ¾}ûTkô˜Æà¥†I»PßÍ#±@F¢JC~3²
“vDû*ð@ÿÅ}íïKä—}ê(†‹¸ðCÓN‚‡éŸ©d©oÿ$uHÿB<€sl”'ˆš$\‹ŠNž×6â_$EzFãœE‡ì1kø´å‰‹/öåÿû ñpvcè+þ±Ë× iŸÁ©ãwOêây×<{3ž$­Äª*¢˜8W_Œ6©	Ð…˜ j¡ïEµMWº¯#iJ‘<^‰ºía9uÓäñÖIMÑ0£ßˆ¹öÀUòu~_î	¾¹}ZG’ûH«xêÓÔœ8ó¼xÐ|þå�@MbM
¯…š‚Ã2‰(¶o„¾è•7˜ˆ2vb3yÑçY�È1r†*²›u§b”sÄD§š–µãTW#ÓLY�˜™Os=¿k þX6MÕ.XÕFs#M±ÌúÂ‘€ô‘íêÙIçØ›g‰7&óÇ±ùi@ôÀàLDN$ÔÕ¬]=ïÆ…`¯
Î´Z;„¹ÕºH¢‰Ë´SÏÓuÆŠÖóäêc”ŠÕü´ÕmÝåt	p¼âW‰-d'>°¥ñ>”�;Ê=4´]µ–¸?óìÖ…ußÃrBªdï£ÒqŽ4yíPe ±QGDr“¼jly@Ã~…ç,vHh¯jUæÒ8*°b�eû‰
)‹ì£bíþ‚¹Ö8#bE ?)Q­`^`V6ƒäUì¹ž;åBj>kräÔOÄ»®Yetí!_çóMåxÎ¦FåËNÎ»ò,‡æÖD[É¡�Ã†2©Y×yWIè€FŠ„™€Ú²�E*)Vp_¼`±tNÎ]£™}µÑóÝÛvâÊÑGÕl„ëŽµc3…™}2�¸ßrÓè±óJ^]þháEÔØH Áþbc;ñ¨ä™1›	ý·žù$±äÓ+œU�˜¦Ëô¯È�é¢‰¶ìWj‚h¼—�Rh°˜fb½+6=—Ÿ‡$"`O†�ýð@–	€[šÜª÷qÝúÆ–ŒÅ,ÿÉ!ÈÏ8(4PôL[ÞîÒ8PÈSí|•?)Ô´¸`.	�$" ¥³¯yŽe×ÄYËC�ö›'E]˜#ST©5¸÷äsélãH¥ÇAæA¯QÅDçpf&x¼FKÀ[Ü˜9ˆÛdòtâ¯X²g•T-=›…nUÚD»Í†q×9!êÜr7[¡"ü¢ç]âTä‘°··ó7MWuÈ’—ÁR�m]	Xóýº‰Ô”ç`ìåŽŒÒ <MUsäð:›™´a�.Áÿ³–9!J?Œ¸«É–«è˜£Ã|kÒ`x#Øÿ¥ç'ýëthr7À@Õ„¢½Æº�H?‡.ÌÄ±Å¤,q¦n@³ÖºžÄ“œñòÌâ³@¬USJ¡‡}SÀ[œØ1PqrÄ\žòfä7óRÿ±10€°øcx"úy³ŸîlñFW«ÜPÏóÕ�:PÊÐ6¸ˆ÷NâÎi”ïr�0
•}5!7È žJÁÉÐø«ô²žÑà=jrê§î ã¯À¼ý¤Ý~$ù~¹t ““j?èÅã6Ì[BÛ¿T_0E;S�j™Hs,ÎO�žsÇ£¨53!`”ô9¸U£³¯›ô´!	ç°oºö< ©£Â}³œ-Ð´4xQ¸ó´Jæ?Ô{à›ŸeÓï©Eöó{}Ð··À»k©%Vk&Ð§îìq{'_“ÏÁ£w §¹©ÕÌ‚KöMÖÔé¹
çŸ5)H‰YÕ¨ºü	ì>K×Å–$£8Æ1§G7Zäáë®ŠLOèNb]UyÒ7¨¦ai!Pì\C6\tìJëÈ‚~\9{¼ ¡Ÿóz-ö>$ˆÚžgfÏ)·ömbY#<5=�èµÓÇ…jbç¼\š¦”q<§�|›0àµA‚ÈHûÇ#Éš¬â4~8´X1^“Ëìd+
Àòò/¼€–#öÉÚ,.ùA@ÅúóY;ä«vŽÆøQ-Unö}e%ù:Ðä	˜&U&/\“Ã8�ßþ‚ä.c›ñËu3½�òø‰¤ˆÝ¯S1™Ej+®‹IlãPª1|7ûÇ7ƒSNSÝt¢Aº€ìR�£NÆT!o‚15ê‘ôkÆúñ®rˆ`ˆ›J,��¶%ŠX^�’[;ÀÇR69·„©x:{Ê<&"3Î+=Jæuýq4†á78™Ò#bÕ“�aF<ˆÍ×åÎÃà%¸ZÓœ©Déi)Î€,x¬Æ¡yd{rÖ—~CDÉ£#ÎIðÉXåêïcCšD.Ü^£I¸a‘CTÀ]þÙq\|:¡áŸ÷©1¨:pëú°+eÌ%ßj4»ŸãÈ¬|š¯ÝÙ_cË•D¤/Å”î¤hˆÒÕ9ÿç;~F¢»ï�8ÖŒ JväÛU¯ìoáv©]|¿¶)Oü»•·ŒÄ$4¨¾`s†
3é&”ÉÛZ¿K¶ëÊ,Œn—ÞÜsê’åã<'8�²ÏGV½|�óG/gìTè2§;ÕsFtÂ·âõAÁ±¬ŽÍxÍ¤A�38¡:aÓ�|�-Ä[w‘ÊÁŠ ðxgç?]ö¯X˜r›º«ß‡vY­ÙÙ¥-5Í¶ßõF·©÷ªc¥Vt¢’ø‹@žâ×Z¹ö¾À<ö{Ý1GþÚr+„ðÕBõz5È£ü	gÕ#¥þÜWjéï£JMŽ³; !V   ­[“í ªÔJ  W	Ï>0‹    YZ     �Ça–Ým_J*j"Tâ€ÆY¸ËJbÑ¿Æ      File not found.
      ˆƒmµ