Re: [PATCH 14/14] SIWv2: Documentation: siw.txt
From: Bernard Metzler <hidden>
Date: 2011-06-17 14:17:04
Also in:
linux-rdma
Randy, many thanks, i'll change accordingly. and sorry for the typo - 'isynchronous' is just 'synchronous' typed in vi and doing the insert command twice ;) thanks, Bernard. Randy Dunlap [off-list ref] wrote on 06/16/2011 06:10:44 PM:
On Thu, 16 Jun 2011 14:42:54 +0200 Bernard Metzler wrote:quoted
--- Documentation/networking/siw.txt | 156++++++++++++++++++++++++++++++++++++++quoted
1 files changed, 156 insertions(+), 0 deletions(-) create mode 100644 Documentation/networking/siw.txtdiff --git a/Documentation/networking/siw.txtb/Documentation/networking/siw.txtquoted
new file mode 100644 index 0000000..805e21b--- /dev/null +++ b/Documentation/networking/siw.txt@@ -0,0 +1,156 @@ +SoftiWARP: Software iWARP kernel driver module. + +General +------- +SoftiWARP (siw) implements the iWARP protocol suite (MPA/DDP/RDMAP, +IETF-RFC 5044/5041/5040) completely in software as a Linux kernel
module.
quoted
+siw runs on top of TCP kernel sockets and exports the Linux kernel
ibverbs
quoted
+RDMA interface. siw interfaces with the iwcm connection manager. + + +Transmit Path +------------- +If a send queue (SQ) work queue element gets posted, siw tries to send +it directly out of the application context. If the SQ was non-empty, +SQ processing is done asynchronously by a kernel worker thread. This +thread gets scheduled if the TCP socket signals new write space tos/gets/is/quoted
+be available. If during send operation the socket send space becomes +exhausted, SQ processing is abandoned until new socket write space +becomes available. + + +Receive Path +------------ +All application data is placed into target buffers within softirq +socket callback. Application notification is asynchronous. + + +User Interface +-------------- +All user space fast path operations such as posting of work requests
and
quoted
+reaping of work completions currently involve a isynchronous call intoIf you really mean "isynchronous", then it should be: an isynchronous
call
but what is isynchronous?quoted
+the siw kernel module via ib_uverbs interface. Kernel/user-mapped send +and receive as well as completion queues are not part of the current
code.
quoted
+In particular, mapped completion queues may improve performance, +since reaping completion queue entries as well as re-arming +the completion queue could be done more efficiently. + + +Kernel Client Support +--------------------- +To guarantee non-blocking fast path operations, for kernel clients +all work queue elements (send/receive/shared-receive queue) are +pre-allocated during connection resource setup. + + +Memory Management +----------------- +siw currently uses the ib_umem_get() function of the ib_core module +to pin memory for later use in data transfer operations. Transmit +and receive memory are checked against correct access permissions only +in the moment of access by the network input path or before pushing itat the momentquoted
+to the TCP socket for transmission. +ib_umem_get() provides DMA mappings for the requested address space
which
quoted
+are not used by siw. + + +Module Parameters +----------------- +The following siw module parameters are recognized. + +loopback_enabled: + If set, siw attaches also to the looback device. Checked only + during module insertion. + +mpa_crc_required: + If set, the MPA CRC gets generated and checked both in tx and rxs/gets/is/quoted
+ path. Without hardware support, setting this flag will severely + hurt throughput. Default setting is 0 (off). + +mpa_crc_strict: + If set, MPA CRC will not be enabled, even if peer requests + it. If the peer requests CRC generation, the connection setup + will be aborted. Default setting is 1 (on). + +zcopy_tx: + If set, payload of non-signalled work requestspayloads ... are transferredquoted
+ (such as non-signalled WRITE or SEND as well as all READ + responses) are transferred using the TCP sockets + sendpage interface. This parameter can be switched on and + off dynamically (echo 1 >> /sys/module/siw/parameters/zcopy_tx + for enablement, 0 for disabling). System load may benefits frommay benefitquoted
+ using 0copy data transmission. 0copy is not enabled if"0copy" is fugly (IMO).quoted
+ mpa_crc_enabled is set. Default setting is 1 (on). + +tcp_nodelay: + If set, on the TCP socket the TCP_NODELAY option is set. + Default setting is 1 (on). + +iface_list: + Comma separated list of interfaces siw should attach to.Comma-separatedquoted
+ If no list is given, siw attaches to all available devices. + If a list is given, siw skips those devices not listed. + Currently, the list is restricted to 12 entries. If needed, + the 'SIW_MAX_IF' #define in siw_main.c can be adaped.adapted. ? (or
modified)
quoted
+ This parameter might be usefull to skip devices which areusefulquoted
+ attached to a real RNIC device. Default setting is an empty list. + + +Compile Time Flags: +------------------- +-DCHECK_DMA_CAPABILITIES + Checks if the device siw wants to attach to provides + DMA capabilities. While DMA capabilities are currently not + needed (siw works on top of a kernel TCP socket), siw + uses ib_umem_get() which performs a (not used) DMA address + translation. Writing a siw private memory reservation and + pinning routine would solve the issue. + +-DSIW_TX_FULLSEGS + Experimental, not enabled by default. If set, + siw tries not to overrun the socket (not sending until + -EAGAIN return), but stops sending if the current segment + would not fit into the socket's estimated tx buffer. With that, + wire FPDUs may get truncated by the TCP stack far less often. + Since this feature manipulates the sock's SOCK_NOSPACE + bit, it violates strict layering and is therefore considered + proprietary. + Since TCP is a byte stream protocol, no guarantee can be given + if FPDU's are not fragmented.or FPDUsquoted
+ + +Debugging SIW: +-------------- +The siw_debug.h file defines a 'dprint' macro which is used to debug +siw at runtime. Verbosity of debugging is controlled at compile time +via setting the 'DPRINT_MASK' to a or'd list of know value as definedto an or'd list of known valuequoted
+in siw_debug.h, e.g. '#define DPRINT_MASK (DBG_ON|DBG_CM)' to debug +errors and connection management. Defining DPRINT_MASK to '0' avoids +to compile any runtime debugging code.compiling anyquoted
+ +To track siw's useage of its objects (connection endpoints, tcp
sockets,
usagequoted
+protection domains, queue pairs, shared receive queues, completion
queues,
quoted
+memory registrations, work queue elements),
the /sys/class/infiniband/siw*
quoted
+directory contains siw interface specific objects, which can be read
to
quoted
+gather simple statistics: + +/sys/class/infiniband/siw*/stats: + Summary of allocated WQE's, PD's, QP's, CQ's, SRQ's, MR's, CEP's.All of those single quote/apostrophe marks are not needed.quoted
+ WQE statistics are not gathered if 'DPRINT_MASK' is set to '0' + (see above). + +/sys/class/infiniband/siw*/qp: + Summary of allocated queue pairs. If queue pairs are allocated, + after reading 'qp' a more detailed status of all queue pairs has + been printed to the kernel syslog and can be retrieved via + 'dmesg' command. + +/sys/class/infiniband/siw*/cep: + Summary of allocated connection end points. If connection endpoints + are allocated, after reading 'cep' a more detailed status of all + CEP's is printed to the kernel syslog and can be retrieved viadittoquoted
+ 'dmesg' command. + +Using the sysfs to gather siw's object allocations is considered a +tentative aid during further driver development and should disappear +in a stable version of siw. --HTH. --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code
*** -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html