uint16_t port;
uint8_t sl;
uint8_t qp_type;
-} dat_mcm_addr_t;
+} __attribute__((packed)) dat_mcm_addr_t;
/* MCM message, 208 bytes */
typedef struct dat_mcm_msg
dat_mcm_addr_t daddr2; /* QPr remote, MIC or MCM on non-MIC node */
uint8_t p_data[DAT_MCM_PDATA_SIZE];
-} dat_mcm_msg_t;
+} __attribute__((packed)) dat_mcm_msg_t;
/***** MIC Indirect Exchange (MIX) protocol over SCIF ****/
uint8_t status; /* operation status */
uint32_t req_id; /* operation id, multiple operations */
-} dat_mix_hdr_t;
+} __attribute__((packed)) dat_mix_hdr_t;
/**** MIX device open *****/
typedef struct dat_mix_dev_attr
uint16_t pkey;
uint16_t max_inline;
-} dat_mix_dev_attr_t;
+} __attribute__((packed)) dat_mix_dev_attr_t;
/***** MIX open, device address info returned */
typedef struct dat_mix_open
dat_mix_dev_attr_t dev_attr;
dat_mcm_addr_t dev_addr;
-} dat_mix_open_t;
+} __attribute__((packed)) dat_mix_open_t;
/***** MIX memory registration *****/
typedef struct dat_mix_mr
uint16_t sid;
uint16_t backlog;
-} dat_mix_listen_t;
+} __attribute__((packed)) dat_mix_listen_t;
/***** MIX create QP, 52 bytes *****/
typedef struct dat_mix_qp_attr
uint32_t rcq_id;
uint64_t ctx;
-} dat_mix_qp_attr_t;
+} __attribute__((packed)) dat_mix_qp_attr_t;
/*
* For initial prototyping write streams we don't have many
uint32_t wr_len; /* size */
uint32_t m_inline; /* mpxyd inline threshold for SCIF dma */
-} dat_mix_qp_t;
+} __attribute__((packed)) dat_mix_qp_t;
/***** MIX CQ operations, create, free, poll, event *****/
/*
uint32_t src_qp;
uint32_t wc_flags;
-} dat_mix_cq_t;
+} __attribute__((packed)) dat_mix_cq_t;
typedef struct dat_mix_cm
{
uint32_t qp_id;
uint32_t event;
-} dat_mix_cm_event_t;
+} __attribute__((packed)) dat_mix_cm_event_t;
typedef struct dat_mix_wc
{
uint32_t imm_data; /* in network byte order */
uint32_t qp_num;
uint32_t src_qp;
- int wc_flags;
+ uint32_t wc_flags;
uint16_t pkey_index;
uint16_t slid;
uint8_t sl;
uint8_t dlid_path_bits;
-} dat_mix_wc_t;
+} __attribute__((packed)) dat_mix_wc_t;
typedef struct dat_mix_sge {
uint64_t addr;
typedef struct dat_mix_wr {
uint64_t wr_id;
- struct dat_mix_send_wr *next;
- struct dat_mix_sge *sg_list;
- int num_sge;
+ uint32_t num_sge;
uint32_t opcode;
- int send_flags;
+ uint32_t send_flags;
uint32_t imm_data; /* in network byte order */
union {
struct {
uint32_t remote_qkey;
} ud;
} wr;
-} dat_mix_wr_t;
+} __attribute__((packed)) dat_mix_wr_t;
#define DAT_MIX_WC_MAX 4
typedef struct dat_mix_dto_comp
uint32_t wc_cnt;
struct dat_mix_wc wc[DAT_MIX_WC_MAX];
-} dat_mix_dto_comp_t;
+} __attribute__((packed)) dat_mix_dto_comp_t;
#define DAT_MIX_SGE_MAX 4
typedef struct dat_mix_send
struct dat_mix_wr wr;
struct dat_mix_sge sge[DAT_MIX_SGE_MAX];
-} dat_mix_send_t;
+} __attribute__((packed)) dat_mix_send_t;
#endif /* _DAT_MIC_EXTENSIONS_H_ */