return ((st < 0 || st > 16) ? "Invalid CM state?" : state[st]);
}
+static inline char * mcm_ib_async_str(IN int st)
+{
+ static char *state[] = {
+ "IBV_EVENT_CQ_ERR",
+ "IBV_EVENT_QP_FATAL",
+ "IBV_EVENT_QP_REQ_ERR",
+ "IBV_EVENT_QP_ACCESS_ERR",
+ "IBV_EVENT_COMM_EST",
+ "IBV_EVENT_SQ_DRAINED",
+ "IBV_EVENT_PATH_MIG",
+ "IBV_EVENT_PATH_MIG_ERR",
+ "IBV_EVENT_DEVICE_FATAL",
+ "IBV_EVENT_PORT_ACTIVE",
+ "IBV_EVENT_PORT_ERR",
+ "IBV_EVENT_LID_CHANGE",
+ "IBV_EVENT_PKEY_CHANGE",
+ "IBV_EVENT_SM_CHANGE",
+ "IBV_EVENT_SRQ_ERR",
+ "IBV_EVENT_SRQ_LIMIT_REACHED",
+ "IBV_EVENT_QP_LAST_WQE_REACHED",
+ "IBV_EVENT_CLIENT_REREGISTER",
+ };
+ return ((st < 0 || st > 17) ? "Invalid IB async event?" : state[st]);
+}
+
/* MCM address, 28 bytes */
typedef struct dat_mcm_addr
{
#define DAT_MIX_VER 4
#define DAT_MIX_MSG_MAX 256
#define DAT_MIX_INLINE_MAX 256
-#define DAT_MIX_RDMA_MAX (8*1024*1024)
-#define DAT_MIX_WR_MAX 500
+#define DAT_MIX_RDMA_MAX (8*1024*1024)
+#define DAT_MIX_WR_MAX 500
typedef enum dat_mix_ops
{
MIX_DTO_EVENT,
MIX_SEND,
MIX_WRITE,
+ MIX_PROV_ATTR,
} dat_mix_ops_t;
"DTO_EVENT",
"POST_SEND",
"POST_WRITE",
+ "PROV_ATTR",
};
- return ((op < 2 || op > 25) ? "Invalid OP?" : mix_ops[op]);
+ return ((op < 2 || op > 26) ? "Invalid OP?" : mix_ops[op]);
}
typedef enum dat_mix_op_flags
MIX_OP_SYNC = 0x04,
MIX_OP_ASYNC = 0x08,
MIX_OP_INLINE = 0x10,
+ MIX_OP_SET = 0x20,
} dat_mix_op_flags_t;
} __attribute__((packed)) dat_mix_hdr_t;
-/**** MIX device open *****/
+/**** MIX device attributes, 16 bytes *****/
typedef struct dat_mix_dev_attr
{
uint8_t ack_timer;
} __attribute__((packed)) dat_mix_dev_attr_t;
+/**** MIX attributes, 120 bytes *****/
+typedef struct dat_mix_prov_attr
+{
+ uint32_t max_msg_sz;
+ uint32_t max_tx_dtos;
+ uint32_t max_rx_dtos;
+ uint32_t max_tx_pool;
+ uint32_t max_rx_pool;
+ uint32_t tx_segment_sz;
+ uint32_t rx_segment_sz;
+ uint32_t cm_retry;
+ uint32_t cm_disc_retry;
+ uint32_t cm_rep_time_ms;
+ uint32_t cm_rtu_time_ms;
+ uint32_t cm_drep_time_ms;
+ uint32_t log_level;
+ uint32_t counters;
+ dat_mix_dev_attr_t dev_attr;
+ uint8_t gid_idx;
+ uint8_t resv[47];
+
+} __attribute__((packed)) dat_mix_prov_attr_t;
+
/***** MIX open, device address info returned */
typedef struct dat_mix_open
{
} __attribute__((packed)) dat_mix_open_t;
+/***** MIX get,set attributes, 128 bytes */
+typedef struct dat_mix_attr
+{
+ dat_mix_hdr_t hdr;
+ dat_mix_prov_attr_t attr;
+
+} __attribute__((packed)) dat_mix_attr_t;
+
/***** MIX memory registration *****/
typedef struct dat_mix_mr
{