New definitions for IB unreliable datagram extension

Extend EP dat_service_type, with DAT_IB_SERVICE_TYPE_UD
Add IB extension call dat_ib_post_send_ud().
Add address handle definition for UD calls.
Add IB event definitions to provide remote AH via connect and connect requests
Roll IB extension version to 2.0.2

Signed-off by: Arlin Davis [EMAIL PROTECTED]
---
 dat/include/dat2/dat.h               |    4 ++
 dat/include/dat2/dat_ib_extensions.h |   67 +++++++++++++++++++++++++++++++++-
 2 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/dat/include/dat2/dat.h b/dat/include/dat2/dat.h
index d4e4cea..cf0b7ec 100755
--- a/dat/include/dat2/dat.h
+++ b/dat/include/dat2/dat.h
@@ -464,6 +464,10 @@ typedef DAT_UINT64 DAT_IA_ATTR_MASK;
 typedef enum dat_service_type
 {
     DAT_SERVICE_TYPE_RC                  /* reliable connections */
+#ifdef DAT_EXTENSIONS
+    ,DAT_SERVICE_TYPE_EXTENSION_BASE /* To be used by DAT extensions
+                                  as a starting point of extension services */
+#endif /* DAT_EXTENSIONS */
 } DAT_SERVICE_TYPE;
 
 typedef struct dat_ep_attr
diff --git a/dat/include/dat2/dat_ib_extensions.h 
b/dat/include/dat2/dat_ib_extensions.h
index 0a9d3f5..27af51e 100755
--- a/dat/include/dat2/dat_ib_extensions.h
+++ b/dat/include/dat2/dat_ib_extensions.h
@@ -58,18 +58,24 @@
  *     DAT_NAMED_ATTR  name == extended operations and version, 
  *                     version_value = version number of extension API
  */
-#define DAT_IB_EXTENSION_VERSION       201     /* 2.0.1 */
+#define DAT_IB_EXTENSION_VERSION       202     /* 2.0.2 */
 #define DAT_IB_ATTR_FETCH_AND_ADD      "DAT_IB_FETCH_AND_ADD"
 #define DAT_IB_ATTR_CMP_AND_SWAP       "DAT_IB_CMP_AND_SWAP"
 #define DAT_IB_ATTR_IMMED_DATA         "DAT_IB_IMMED_DATA"
+#define DAT_IB_ATTR_UD                 "DAT_IB_UD"
 
 /* 
  * Definition for extended EVENT numbers, DAT_IB_EXTENSION_BASE_RANGE
  * is used by these extensions as a starting point for extended event numbers 
+ *
+ * DAT_IB_DTO_EVENT - All extended data transfers - req/recv evd
+ * DAT_IB_AH_EVENT - address handle resolution - connect evd
  */
 typedef enum dat_ib_event_number
 {
        DAT_IB_DTO_EVENT = DAT_IB_EXTENSION_RANGE_BASE,
+       DAT_IB_UD_CONNECTION_REQUEST_EVENT,
+       DAT_IB_UD_CONNECTION_EVENT_ESTABLISHED
 
 } DAT_IB_EVENT_NUMBER;
 
@@ -81,6 +87,7 @@ typedef enum dat_ib_op
        DAT_IB_FETCH_AND_ADD_OP,
        DAT_IB_CMP_AND_SWAP_OP,
        DAT_IB_RDMA_WRITE_IMMED_OP,
+       DAT_IB_UD_SEND_OP
        
 } DAT_IB_OP;
 
@@ -98,6 +105,11 @@ typedef enum dat_ib_ext_type
        DAT_IB_CMP_AND_SWAP,            // 1
        DAT_IB_RDMA_WRITE_IMMED,        // 2
        DAT_IB_RDMA_WRITE_IMMED_DATA,   // 3
+       DAT_IB_RECV_IMMED_DATA,         // 4
+       DAT_IB_UD_CONNECT_REQUEST,      // 5
+       DAT_IB_UD_REMOTE_AH,            // 6
+       DAT_IB_UD_SEND,                 // 7
+       DAT_IB_UD_RECV                  // 8
 
 } DAT_IB_EXT_TYPE;
 
@@ -133,6 +145,10 @@ typedef enum dat_ib_dtos
        DAT_IB_DTO_RECV_IMMED,
        DAT_IB_DTO_FETCH_ADD,
        DAT_IB_DTO_CMP_SWAP,
+       DAT_IB_DTO_RECV_MSG_IMMED,
+       DAT_IB_DTO_SEND_UD,
+       DAT_IB_DTO_RECV_UD,
+       DAT_IB_DTO_RECV_UD_IMMED,       
 
 } DAT_IB_DTOS;
 
@@ -155,7 +171,7 @@ typedef enum dat_ib_handle_type
  */
 typedef enum dat_ib_evd_extension_flags
 {
-       DAT_IB_EVD_EXTENSION_FLAG = DAT_EVD_EXTENSION_BASE
+       DAT_IB_EVD_EXTENSION_FLAG = DAT_EVD_EXTENSION_BASE,
 
 } DAT_IB_EVD_EXTENSION_FLAGS;
 
@@ -170,6 +186,16 @@ typedef enum dat_ib_mem_priv_flags
        
 } DAT_IB_MEM_PRIV_FLAGS;
 
+/* 
+ * Definition for IB address handle, unreliable datagram.
+ */
+typedef struct dat_ib_addr_handle
+{
+    struct ibv_ah      *ah;
+    DAT_UINT32         qpn;
+    DAT_SOCK_ADDR6     ia_addr;
+   
+} DAT_IB_ADDR_HANDLE;
 
 /* 
  * Definitions for extended event data:
@@ -194,6 +220,9 @@ typedef struct dat_ib_immed_data
  *     specifies extension data values. 
  * NOTE: DAT_EXTENSION_EVENT_DATA cannot exceed 64 bytes as defined by 
  *      "DAT_UINT64 extension_data[8]" in DAT_EVENT (dat.h)
+ *
+ *  Provide UD address handles via extended connect establishment. 
+ *  ia_addr provided with extended conn events for reference.
  */
 typedef struct dat_ib_extension_event_data
 {
@@ -202,9 +231,22 @@ typedef struct dat_ib_extension_event_data
     union {
                DAT_IB_IMMED_DATA       immed;
     } val;
+    DAT_IB_ADDR_HANDLE remote_ah; 
 
 } DAT_IB_EXTENSION_EVENT_DATA;
 
+/* 
+ * Definitions for additional extension handle types beyond 
+ * standard DAT handle. New Bit definitions MUST start at 
+ * DAT_HANDLE_TYPE_EXTENSION_BASE
+ */
+typedef enum dat_ib_service_type
+{
+    DAT_IB_SERVICE_TYPE_UD   = DAT_SERVICE_TYPE_EXTENSION_BASE,
+
+} DAT_IB_SERVICE_TYPE;
+
+
 /* Extended RETURN and EVENT STATUS string helper functions */
 
 /* DAT_EXT_RETURN error to string */
@@ -306,5 +348,26 @@ dat_strerror_ext_status (
                                (idata), \
                                (flgs))
 
+/* 
+ * Unreliable datagram: msg send 
+ *
+ * This asynchronous call is modeled after the InfiniBand UD message send
+ * Event completion for the request completes as an 
+ * DAT_EXTENSION with extension type set to DAT_DTO_EXTENSION_UD_SEND.
+ * Event completion on the remote endpoint completes as receive DTO operation
+ * type of DAT_EXTENSION with operation set to DAT_DTO_EXTENSION_UD_RECV.
+ *
+ * Other extension flags:
+ *     n/a
+ */
+#define dat_ib_post_send_ud(ep, segments, lbuf, ah_ptr, cookie, flgs) \
+            dat_extension_op(  ep, \
+                               DAT_IB_UD_SEND_OP, \
+                               (segments), \
+                               (lbuf), \
+                               (ah_ptr), \
+                               (cookie), \
+                               (flgs))
+
 #endif /* _DAT_IB_EXTENSIONS_H_ */
 
-- 
1.5.2.5



_______________________________________________
general mailing list
general@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to