\hypertarget{pml__csum_8h}{\section{ompi/mca/pml/csum/pml\+\_\+csum.h File Reference}
\label{pml__csum_8h}\index{ompi/mca/pml/csum/pml\+\_\+csum.\+h@{ompi/mca/pml/csum/pml\+\_\+csum.\+h}}
}
{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/class/ompi\+\_\+free\+\_\+list.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/request/request.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/pml.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/base/pml\+\_\+base\+\_\+request.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/base/pml\+\_\+base\+\_\+bsend.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/base/pml\+\_\+base\+\_\+sendreq.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/datatype/ompi\+\_\+datatype.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}pml\+\_\+csum\+\_\+hdr.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/bml/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/proc/proc.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/allocator/base/base.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__pml__csum__t}{mca\+\_\+pml\+\_\+csum\+\_\+t}
\begin{DoxyCompactList}\small\item\em C\+S\+U\+M P\+M\+L module. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__pml__csum__pckt__pending__t}{mca\+\_\+pml\+\_\+csum\+\_\+pckt\+\_\+pending\+\_\+t}
\item 
struct \hyperlink{structmca__pml__csum__com__btl__t}{mca\+\_\+pml\+\_\+csum\+\_\+com\+\_\+btl\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}(pckt, rc)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}(pckt)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}(P, D, B, O, S)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}(bml\+\_\+btl)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}(segments, count, hdrlen, length)
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__csum_8h_a1c233f24bca42c89ffcad9b5ee3ba68a}{typedef struct \hyperlink{structmca__pml__csum__t}{mca\+\_\+pml\+\_\+csum\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+t}}\label{pml__csum_8h_a1c233f24bca42c89ffcad9b5ee3ba68a}

\item 
\hypertarget{pml__csum_8h_accecf5fa033914670014e7cfd6295275}{typedef struct \\*
\hyperlink{structmca__pml__csum__pckt__pending__t}{mca\+\_\+pml\+\_\+csum\+\_\+pckt\+\_\+pending\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+pckt\+\_\+pending\+\_\+t}}\label{pml__csum_8h_accecf5fa033914670014e7cfd6295275}

\item 
\hypertarget{pml__csum_8h_a5030915aed9cdde799873d4b4d7b365b}{typedef struct \\*
\hyperlink{structmca__pml__csum__com__btl__t}{mca\+\_\+pml\+\_\+csum\+\_\+com\+\_\+btl\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+com\+\_\+btl\+\_\+t}}\label{pml__csum_8h_a5030915aed9cdde799873d4b4d7b365b}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__csum_8h_a4502d3167f461b7e481bc28e5395574d}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+add\+\_\+comm} (struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)}\label{pml__csum_8h_a4502d3167f461b7e481bc28e5395574d}

\item 
\hypertarget{pml__csum_8h_afdcf1dc5d6779a50187e6f093e4dded8}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+del\+\_\+comm} (struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)}\label{pml__csum_8h_afdcf1dc5d6779a50187e6f093e4dded8}

\item 
\hypertarget{pml__csum_8h_a1580196e9390c71f9e2d048166a57854}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+add\+\_\+procs} (struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)}\label{pml__csum_8h_a1580196e9390c71f9e2d048166a57854}

\item 
\hypertarget{pml__csum_8h_a121b4ab9b640d2de3e00228ba18182ec}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+del\+\_\+procs} (struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)}\label{pml__csum_8h_a121b4ab9b640d2de3e00228ba18182ec}

\item 
int \hyperlink{pml__csum_8h_a88515186946df82f0cb6b92fa2ddd8fb}{mca\+\_\+pml\+\_\+csum\+\_\+enable} (bool enable)
\item 
\hypertarget{pml__csum_8h_a3d77da047f441b1939baebab3ad7128a}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+progress} (void)}\label{pml__csum_8h_a3d77da047f441b1939baebab3ad7128a}

\item 
\hypertarget{pml__csum_8h_a1fbc95995d5e9dcb9f78115b62596420}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+iprobe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int $\ast$matched, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__csum_8h_a1fbc95995d5e9dcb9f78115b62596420}

\item 
\hypertarget{pml__csum_8h_aae01d9990113b4fd6fdf32dc782f3f11}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+probe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__csum_8h_aae01d9990113b4fd6fdf32dc782f3f11}

\item 
\hypertarget{pml__csum_8h_a0407461cdbf0c925dc9047209611b80a}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+improbe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int $\ast$matched, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__csum_8h_a0407461cdbf0c925dc9047209611b80a}

\item 
\hypertarget{pml__csum_8h_ac8b9b5b13ae66bcb13e627d3a5292993}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+mprobe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__csum_8h_ac8b9b5b13ae66bcb13e627d3a5292993}

\item 
\hypertarget{pml__csum_8h_a72e9e43f90ac8c82da0d5646e9dcd473}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+isend\+\_\+init} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__csum_8h_a72e9e43f90ac8c82da0d5646e9dcd473}

\item 
\hypertarget{pml__csum_8h_aae9d025fe0627b10dd80fa6ee9c854ae}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+isend} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__csum_8h_aae9d025fe0627b10dd80fa6ee9c854ae}

\item 
\hypertarget{pml__csum_8h_a4c5f347763c6c506041615d51c1135d2}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+send} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)}\label{pml__csum_8h_a4c5f347763c6c506041615d51c1135d2}

\item 
\hypertarget{pml__csum_8h_a155907f8919fb1dbe297575acc162f61}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+irecv\+\_\+init} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__csum_8h_a155907f8919fb1dbe297575acc162f61}

\item 
\hypertarget{pml__csum_8h_a8d22d623e3785cf3ff8db5bf08383650}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+irecv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__csum_8h_a8d22d623e3785cf3ff8db5bf08383650}

\item 
\hypertarget{pml__csum_8h_a3ce4ef67757979bf359cf1553e709d29}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+recv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__csum_8h_a3ce4ef67757979bf359cf1553e709d29}

\item 
\hypertarget{pml__csum_8h_ae019f792463c1ac385ee0ea6f97f090f}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+imrecv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__csum_8h_ae019f792463c1ac385ee0ea6f97f090f}

\item 
\hypertarget{pml__csum_8h_a3433ef4d1a0c6e1b18c74408b0653b56}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+mrecv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__csum_8h_a3433ef4d1a0c6e1b18c74408b0653b56}

\item 
\hypertarget{pml__csum_8h_a4abc4ccdbf68b64e09c3f7df4779f9e6}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+dump} (struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int verbose)}\label{pml__csum_8h_a4abc4ccdbf68b64e09c3f7df4779f9e6}

\item 
int \hyperlink{pml__csum_8h_a88dc566d831bb7c32b88dabdfde020e9}{mca\+\_\+pml\+\_\+csum\+\_\+start} (size\+\_\+t count, \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$requests)
\item 
\hypertarget{pml__csum_8h_a8bec158d9917ef8d8fa9f9d6e3461ff5}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+ft\+\_\+event} (int state)}\label{pml__csum_8h_a8bec158d9917ef8d8fa9f9d6e3461ff5}

\item 
\hypertarget{pml__csum_8h_a761c84abb426a0dc31fde4dd22735783}{{\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__pml__csum__pckt__pending__t}{mca\+\_\+pml\+\_\+csum\+\_\+pckt\+\_\+pending\+\_\+t})}\label{pml__csum_8h_a761c84abb426a0dc31fde4dd22735783}

\item 
int \hyperlink{pml__csum_8h_ace0a3695db9cc0ecc69353e39175f6b0}{mca\+\_\+pml\+\_\+csum\+\_\+send\+\_\+fin} (\hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$proc, \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{unionompi__ptr__t}{ompi\+\_\+ptr\+\_\+t} hdr\+\_\+des, uint8\+\_\+t order, uint32\+\_\+t status)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} an F\+I\+N to the peer. \end{DoxyCompactList}\item 
\hypertarget{pml__csum_8h_a92d634f9df1550e3cf79d2385b656a95}{void {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+process\+\_\+pending\+\_\+packets} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl)}\label{pml__csum_8h_a92d634f9df1550e3cf79d2385b656a95}

\item 
\hypertarget{pml__csum_8h_aa37829bc709d309735f289b4c46d9231}{void {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+process\+\_\+pending\+\_\+rdma} (void)}\label{pml__csum_8h_aa37829bc709d309735f289b4c46d9231}

\item 
\hypertarget{pml__csum_8h_a33bdd18f52fae2896897a89d24839c83}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+com\+\_\+btl\+\_\+comp} (const void $\ast$v1, const void $\ast$v2)}\label{pml__csum_8h_a33bdd18f52fae2896897a89d24839c83}

\item 
\hypertarget{pml__csum_8h_aa92dcedd9f9d96c882384ed8352e3a63}{static void {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+calc\+\_\+weighted\+\_\+length} (\hyperlink{structmca__pml__csum__com__btl__t}{mca\+\_\+pml\+\_\+csum\+\_\+com\+\_\+btl\+\_\+t} $\ast$btls, int num\+\_\+btls, size\+\_\+t size, double weight\+\_\+total)}\label{pml__csum_8h_aa92dcedd9f9d96c882384ed8352e3a63}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__csum_8h_a802f9450e45d6817fd70fb6786845917}{\hyperlink{structmca__pml__csum__t}{mca\+\_\+pml\+\_\+csum\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+csum}}\label{pml__csum_8h_a802f9450e45d6817fd70fb6786845917}

\item 
\hypertarget{pml__csum_8h_a53d030bc0c1b29f7a6d51705e6dfb86b}{int {\bfseries mca\+\_\+pml\+\_\+csum\+\_\+output}}\label{pml__csum_8h_a53d030bc0c1b29f7a6d51705e6dfb86b}

\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\hypertarget{pml__csum_8h_ad84adf291ebaa189eb9f50d22a732fba}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G(
\begin{DoxyParamCaption}
\item[{}]{P, }
\item[{}]{D, }
\item[{}]{B, }
\item[{}]{O, }
\item[{}]{S}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_ad84adf291ebaa189eb9f50d22a732fba}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
        mca\_pml\_csum\_pckt\_pending\_t *\_pckt;                          \(\backslash\)
        int \_rc;                                                    \(\backslash\)
                                                                    \(\backslash\)
        MCA\_PML\_CSUM\_PCKT\_PENDING\_ALLOC(\_pckt,\_rc);                  \(\backslash\)
        \_pckt->hdr.hdr\_common.hdr\_type = MCA\_PML\_CSUM\_HDR\_TYPE\_FIN;  \(\backslash\)
        \_pckt->hdr.hdr\_fin.hdr\_des = (D);                           \(\backslash\)
        \_pckt->hdr.hdr\_fin.hdr\_fail = (S);                          \(\backslash\)
        \_pckt->proc = (P);                                          \(\backslash\)
        \_pckt->bml\_btl = (B);                                       \(\backslash\)
        \_pckt->order = (O);                                         \hyperlink{opal_2threads_2mutex_8h_a77efbafa6bfd030f2fca7658458a1f6d}{\(\backslash\)}
\hyperlink{opal_2threads_2mutex_8h_a77efbafa6bfd030f2fca7658458a1f6d}{        OPAL\_THREAD\_LOCK}(&mca\_pml\_csum.lock);                        
      \hyperlink{opal__list_8h_acf822c5c351cd03b2c86e48cf9aaa158}{\(\backslash\)}
\hyperlink{opal__list_8h_acf822c5c351cd03b2c86e48cf9aaa158}{        opal\_list\_append}(&mca\_pml\_csum.pckt\_pending,                 \(\backslash\)
                (\hyperlink{structopal__list__item__t}{opal\_list\_item\_t}*)\_pckt);                          
      \hyperlink{opal_2threads_2mutex_8h_a26cea76373139434c7f03b24a58b6c04}{\(\backslash\)}
\hyperlink{opal_2threads_2mutex_8h_a26cea76373139434c7f03b24a58b6c04}{        OPAL\_THREAD\_UNLOCK}(&mca\_pml\_csum.lock);                      \(\backslash\)
    \} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__csum_8h_a80b1de12f8da30afb31b8fef4e0791d3}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H(
\begin{DoxyParamCaption}
\item[{}]{segments, }
\item[{}]{count, }
\item[{}]{hdrlen, }
\item[{}]{length}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_a80b1de12f8da30afb31b8fef4e0791d3}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                                        \(\backslash\)
   size\_t i;                                                                \(\backslash\)
                                                                            \(\backslash\)
   for( i = 0; i < count; i++ ) \{                                           \(\backslash\)
       length += segments[i].seg\_len;                                       \(\backslash\)
   \}                                                                        \(\backslash\)
   length -= hdrlen;                                                        \(\backslash\)
\} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__csum_8h_ae09c8d4b54ec7bc16f37d8c1046ea246}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C(
\begin{DoxyParamCaption}
\item[{}]{pckt, }
\item[{}]{rc}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_ae09c8d4b54ec7bc16f37d8c1046ea246}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
    ompi\_free\_list\_item\_t* item;                                \(\backslash\)
    OMPI\_FREE\_LIST\_WAIT(&mca\_pml\_csum.pending\_pckts, item, rc);  \(\backslash\)
    pckt = (\hyperlink{structmca__pml__csum__pckt__pending__t}{mca\_pml\_csum\_pckt\_pending\_t}*)item;                   \(\backslash\)
\} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}
\hypertarget{pml__csum_8h_ad7bcb5e13d242c2dff694fda61145093}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N(
\begin{DoxyParamCaption}
\item[{}]{pckt}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_ad7bcb5e13d242c2dff694fda61145093}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
    \textcolor{comment}{/* return packet */}                                         \(\backslash\)
    OMPI\_FREE\_LIST\_RETURN(&mca\_pml\_csum.pending\_pckts,           \(\backslash\)
        (\hyperlink{structompi__free__list__item__t}{ompi\_free\_list\_item\_t}*)pckt);                          \(\backslash\)
\} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__csum_8h_a02d7422c60727cfe0208801449f139b8}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+S\+U\+M\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G(
\begin{DoxyParamCaption}
\item[{}]{bml\+\_\+btl}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_a02d7422c60727cfe0208801449f139b8}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                        \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_csum.pckt\_pending))       \(\backslash\)
            mca\_pml\_csum\_process\_pending\_packets(bml\_btl);       \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_csum.recv\_pending))       \(\backslash\)
            mca\_pml\_csum\_recv\_request\_process\_pending();         \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_csum.send\_pending))       \(\backslash\)
            mca\_pml\_csum\_send\_request\_process\_pending(bml\_btl);  \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_csum.rdma\_pending))       \(\backslash\)
            mca\_pml\_csum\_process\_pending\_rdma();                 \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


\subsection{Function Documentation}
\hypertarget{pml__csum_8h_a88515186946df82f0cb6b92fa2ddd8fb}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!mca\+\_\+pml\+\_\+csum\+\_\+enable@{mca\+\_\+pml\+\_\+csum\+\_\+enable}}
\index{mca\+\_\+pml\+\_\+csum\+\_\+enable@{mca\+\_\+pml\+\_\+csum\+\_\+enable}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+csum\+\_\+enable}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+csum\+\_\+enable (
\begin{DoxyParamCaption}
\item[{bool}]{enable}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_a88515186946df82f0cb6b92fa2ddd8fb}
If we get here this is the P\+M\+L who get selected for the run. We should get ownership for the send and receive requests list, and initialize them with the size of our own requests.

References mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+requests, O\+B\+J\+\_\+\+C\+L\+A\+S\+S, and O\+B\+J\+\_\+\+C\+O\+N\+S\+T\+R\+U\+C\+T.

\hypertarget{pml__csum_8h_ace0a3695db9cc0ecc69353e39175f6b0}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!mca\+\_\+pml\+\_\+csum\+\_\+send\+\_\+fin@{mca\+\_\+pml\+\_\+csum\+\_\+send\+\_\+fin}}
\index{mca\+\_\+pml\+\_\+csum\+\_\+send\+\_\+fin@{mca\+\_\+pml\+\_\+csum\+\_\+send\+\_\+fin}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+csum\+\_\+send\+\_\+fin}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+csum\+\_\+send\+\_\+fin (
\begin{DoxyParamCaption}
\item[{{\bf ompi\+\_\+proc\+\_\+t} $\ast$}]{proc, }
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$}]{bml\+\_\+btl, }
\item[{{\bf ompi\+\_\+ptr\+\_\+t}}]{hdr\+\_\+des, }
\item[{uint8\+\_\+t}]{order, }
\item[{uint32\+\_\+t}]{status}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_ace0a3695db9cc0ecc69353e39175f6b0}


\hyperlink{structSend}{Send} an F\+I\+N to the peer. 

If we fail to send this ack (no more available fragments or the send failed) this function automatically add the F\+I\+N to the list of pending F\+I\+N, Which guarantee that the F\+I\+N will be sent later. 

References mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+cbdata, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+cbfunc, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src, mca\+\_\+pml\+\_\+csum\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+common, mca\+\_\+pml\+\_\+csum\+\_\+common\+\_\+hdr\+\_\+t\+::hdr\+\_\+csum, mca\+\_\+pml\+\_\+csum\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+des, mca\+\_\+pml\+\_\+csum\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+fail, mca\+\_\+pml\+\_\+csum\+\_\+common\+\_\+hdr\+\_\+t\+::hdr\+\_\+flags, mca\+\_\+pml\+\_\+csum\+\_\+common\+\_\+hdr\+\_\+t\+::hdr\+\_\+type, O\+P\+A\+L\+\_\+\+O\+U\+T\+P\+U\+T\+\_\+\+V\+E\+R\+B\+O\+S\+E, O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr.

\hypertarget{pml__csum_8h_a88dc566d831bb7c32b88dabdfde020e9}{\index{pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}!mca\+\_\+pml\+\_\+csum\+\_\+start@{mca\+\_\+pml\+\_\+csum\+\_\+start}}
\index{mca\+\_\+pml\+\_\+csum\+\_\+start@{mca\+\_\+pml\+\_\+csum\+\_\+start}!pml\+\_\+csum.\+h@{pml\+\_\+csum.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+csum\+\_\+start}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+csum\+\_\+start (
\begin{DoxyParamCaption}
\item[{size\+\_\+t}]{count, }
\item[{{\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast$}]{requests}
\end{DoxyParamCaption}
)}}\label{pml__csum_8h_a88dc566d831bb7c32b88dabdfde020e9}
Reset the convertor in case we're dealing with the original request, which when completed do not reset the convertor.

References O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+L\+O\+C\+K, O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+U\+N\+L\+O\+C\+K, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+addr, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+request\+\_\+t\+::req\+\_\+base, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+request\+\_\+t\+::req\+\_\+bytes\+\_\+packed, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+comm, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+convertor, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+count, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+datatype, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+free\+\_\+called, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+ompi, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+peer, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+pml\+\_\+complete, ompi\+\_\+request\+\_\+t\+::req\+\_\+state, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+tag, and mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+type.

