00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __VIPL_PACKETS
00009 #define __VIPL_PACKETS
00010
00018 typedef enum VIP_PKT_TYPE
00019 {
00021 VIP_NULL_PKT,
00023 VIP_EAGER_PKT,
00025 VIP_EAGER_IMM_PKT,
00027 VIP_3WAY_REQ_PKT,
00029 VIP_3WAY_OK_PKT,
00031 VIP_3WAY_DONE_PKT,
00033 VIP_3WAY_DONE_IMM_PKT,
00035 VIP_PUT_REQ_PKT,
00037 VIP_PUT_REQ_IMM_PKT,
00039 VIP_PUT_OK_PKT,
00041 VIP_PUT_DONE_PKT,
00043 VIP_PUT_DONE_IMM_PKT,
00045 VIP_REPORT_PKT,
00047 VIP_ALIVE_PKT,
00049 VIP_CONN_LIST_REQ_PKT,
00051 VIP_CONN_LIST_REPLY_PKT,
00053 VIP_CONN_REQ_PKT,
00055 VIP_CONN_PEER_REQ_PKT,
00057 VIP_CONN_NOMATCH_PKT,
00059 VIP_CONN_ACCEPT_PKT,
00061 VIP_CONN_PEER_ACCEPT_PKT,
00063 VIP_CONN_REJECT_PKT,
00065 VIP_CONN_PEER_REJECT_PKT,
00067 VIP_CONN_ACK_PKT,
00069 VIP_LAST_PKT_TYPE
00070 }
00071 VIP_PKT_TYPE;
00072
00073
00075 typedef struct VIP_SEGMENT_HEADER
00076 {
00078 VIP_NET_UINT64 address;
00080 VIP_NET_UINT64 length;
00081 }
00082 VIP_SEGMENT_HEADER;
00083
00084
00086 typedef struct VIP_PACKET_EAGER_UR
00087 {
00089 VIP_NET_UCHAR type;
00091 VIP_NET_UCHAR length_24;
00093 VIP_NET_UCHAR length_16;
00095 VIP_NET_UCHAR length_8;
00097 VIP_NET_UINT16 net_remote_nic_index;
00099 VIP_NET_UINT16 net_remote_vi_index;
00100 }
00101 VIP_PACKET_EAGER_UR;
00102
00103
00105 typedef struct VIP_PACKET_EAGER_RD
00106 {
00108 VIP_NET_UCHAR type;
00110 VIP_NET_UCHAR length_24;
00112 VIP_NET_UCHAR length_16;
00114 VIP_NET_UCHAR length_8;
00116 VIP_NET_UINT16 net_remote_nic_index;
00118 VIP_NET_UINT16 net_remote_vi_index;
00120 VIP_NET_UINT16 net_local_nic_index;
00122 VIP_NET_UINT16 net_local_vi_index;
00123 VIP_NET_UINT32 pad;
00124 }
00125 VIP_PACKET_EAGER_RD;
00126
00127
00129 typedef struct VIP_PACKET_EAGER_RR
00130 {
00132 VIP_NET_UCHAR type;
00134 VIP_NET_UCHAR length_24;
00136 VIP_NET_UCHAR length_16;
00138 VIP_NET_UCHAR length_8;
00140 VIP_NET_UINT16 net_remote_nic_index;
00142 VIP_NET_UINT16 net_remote_vi_index;
00144 VIP_NET_UINT16 net_local_nic_index;
00146 VIP_NET_UINT16 net_local_vi_index;
00147 VIP_NET_UINT32 pad;
00148 }
00149 VIP_PACKET_EAGER_RR;
00150
00151
00153 typedef struct VIP_PACKET_EAGER_IMM_UR
00154 {
00156 VIP_NET_UCHAR type;
00158 VIP_NET_UCHAR length_24;
00160 VIP_NET_UCHAR length_16;
00162 VIP_NET_UCHAR length_8;
00164 VIP_NET_UINT16 net_remote_nic_index;
00166 VIP_NET_UINT16 net_remote_vi_index;
00168 VIP_NET_UINT32 net_imm_data;
00169 VIP_NET_UINT32 pad;
00170 }
00171 VIP_PACKET_EAGER_IMM_UR;
00172
00173
00176 typedef struct VIP_PACKET_EAGER_IMM_RD
00177 {
00179 VIP_NET_UCHAR type;
00181 VIP_NET_UCHAR length_24;
00183 VIP_NET_UCHAR length_16;
00185 VIP_NET_UCHAR length_8;
00187 VIP_NET_UINT16 net_remote_nic_index;
00189 VIP_NET_UINT16 net_remote_vi_index;
00191 VIP_NET_UINT16 net_local_nic_index;
00193 VIP_NET_UINT16 net_local_vi_index;
00194 VIP_NET_UINT32 pad;
00196 VIP_NET_UINT32 net_imm_data;
00197 VIP_NET_UINT32 pad2;
00198 }
00199 VIP_PACKET_EAGER_IMM_RD;
00200
00201
00204 typedef struct VIP_PACKET_EAGER_IMM_RR
00205 {
00207 VIP_NET_UCHAR type;
00209 VIP_NET_UCHAR length_24;
00211 VIP_NET_UCHAR length_16;
00213 VIP_NET_UCHAR length_8;
00215 VIP_NET_UINT16 net_remote_nic_index;
00217 VIP_NET_UINT16 net_remote_vi_index;
00219 VIP_NET_UINT16 net_local_nic_index;
00221 VIP_NET_UINT16 net_local_vi_index;
00222 VIP_NET_UINT32 pad;
00224 VIP_NET_UINT32 net_imm_data;
00225 VIP_NET_UINT32 pad2;
00226 }
00227 VIP_PACKET_EAGER_IMM_RR;
00228
00229
00231 typedef struct VIP_PACKET_3WAY_REQ
00232 {
00234 VIP_NET_UCHAR type;
00236 VIP_NET_UCHAR length_24;
00238 VIP_NET_UCHAR length_16;
00240 VIP_NET_UCHAR length_8;
00242 VIP_NET_UINT16 net_remote_nic_index;
00244 VIP_NET_UINT16 net_remote_vi_index;
00246 VIP_NET_UINT16 net_local_nic_index;
00248 VIP_NET_UINT16 net_local_vi_index;
00249 VIP_NET_UINT32 pad;
00250 }
00251 VIP_PACKET_3WAY_REQ;
00252
00253
00255 typedef struct VIP_PACKET_3WAY_OK
00256 {
00258 VIP_NET_UCHAR type;
00260 VIP_NET_UCHAR pad;
00262
00263
00264 VIP_NET_UINT16 seg_count;
00266 VIP_NET_UINT16 net_remote_nic_index;
00268 VIP_NET_UINT16 net_remote_vi_index;
00270 VIP_NET_UINT16 net_local_nic_index;
00272 VIP_NET_UINT16 net_local_vi_index;
00273 VIP_NET_UINT32 pad2;
00275 VIP_SEGMENT_HEADER segments[1];
00276 }
00277 VIP_PACKET_3WAY_OK;
00278
00279
00281 typedef struct VIP_PACKET_3WAY_DONE
00282 {
00284 VIP_NET_UCHAR type;
00286 VIP_NET_UCHAR length_24;
00288 VIP_NET_UCHAR length_16;
00290 VIP_NET_UCHAR length_8;
00292 VIP_NET_UINT16 net_remote_nic_index;
00294 VIP_NET_UINT16 net_remote_vi_index;
00296 VIP_NET_UINT16 net_local_nic_index;
00298 VIP_NET_UINT16 net_local_vi_index;
00299 VIP_NET_UINT32 pad;
00300 }
00301 VIP_PACKET_3WAY_DONE;
00302
00303
00306 typedef struct VIP_PACKET_3WAY_DONE_IMM
00307 {
00309 VIP_NET_UCHAR type;
00311 VIP_NET_UCHAR length_24;
00313 VIP_NET_UCHAR length_16;
00315 VIP_NET_UCHAR length_8;
00317 VIP_NET_UINT16 net_remote_nic_index;
00319 VIP_NET_UINT16 net_remote_vi_index;
00321 VIP_NET_UINT16 net_local_nic_index;
00323 VIP_NET_UINT16 net_local_vi_index;
00324 VIP_NET_UINT32 pad;
00326 VIP_NET_UINT32 net_imm_data;
00327 VIP_NET_UINT32 pad2;
00328 }
00329 VIP_PACKET_3WAY_DONE_IMM;
00330
00331
00333 typedef struct VIP_PACKET_PUT_REQ
00334 {
00336 VIP_NET_UCHAR type;
00338 VIP_NET_UCHAR length_24;
00340 VIP_NET_UCHAR length_16;
00342 VIP_NET_UCHAR length_8;
00344 VIP_NET_UINT16 net_remote_nic_index;
00346 VIP_NET_UINT16 net_remote_vi_index;
00348 VIP_NET_UINT64 net_remote_buf;
00351 VIP_NET_UINT32 net_remote_mem;
00353 VIP_NET_UINT16 net_local_nic_index;
00355 VIP_NET_UINT16 net_local_vi_index;
00356
00357 }
00358 VIP_PACKET_PUT_REQ;
00359
00360
00363 typedef struct VIP_PACKET_PUT_REQ_IMM
00364 {
00366 VIP_NET_UCHAR type;
00368 VIP_NET_UCHAR length_24;
00370 VIP_NET_UCHAR length_16;
00372 VIP_NET_UCHAR length_8;
00374 VIP_NET_UINT16 net_remote_nic_index;
00376 VIP_NET_UINT16 net_remote_vi_index;
00378 VIP_NET_UINT64 net_remote_buf;
00381 VIP_NET_UINT32 net_remote_mem;
00383 VIP_NET_UINT16 net_local_nic_index;
00385 VIP_NET_UINT16 net_local_vi_index;
00387 VIP_NET_UINT32 net_imm_data;
00388 VIP_NET_UINT32 pad;
00389 }
00390 VIP_PACKET_PUT_REQ_IMM;
00391
00392
00394 typedef struct VIP_PACKET_PUT_OK
00395 {
00397 VIP_NET_UCHAR type;
00399 VIP_UCHAR pad[3];
00401 VIP_NET_UINT16 net_remote_nic_index;
00403 VIP_NET_UINT16 net_remote_vi_index;
00405 VIP_NET_UINT16 net_local_nic_index;
00407 VIP_NET_UINT16 net_local_vi_index;
00408 VIP_NET_UINT32 pad2;
00409 }
00410 VIP_PACKET_PUT_OK;
00411
00412
00414 typedef struct VIP_PACKET_PUT_DONE
00415 {
00417 VIP_NET_UCHAR type;
00419 VIP_NET_UCHAR length_24;
00421 VIP_NET_UCHAR length_16;
00423 VIP_NET_UCHAR length_8;
00425 VIP_NET_UINT16 net_remote_nic_index;
00427 VIP_NET_UINT16 net_remote_vi_index;
00429 VIP_NET_UINT16 net_local_nic_index;
00431 VIP_NET_UINT16 net_local_vi_index;
00432 VIP_NET_UINT32 pad;
00433 }
00434 VIP_PACKET_PUT_DONE;
00435
00436
00438 typedef struct VIP_PACKET_REPORT
00439 {
00441 VIP_NET_UCHAR type;
00443 VIP_NET_UCHAR report;
00445 VIP_NET_UCHAR recv_side;
00447 VIP_NET_UCHAR pad;
00449 VIP_NET_UINT16 net_remote_nic_index;
00451 VIP_NET_UINT16 net_remote_vi_index;
00452 }
00453 VIP_PACKET_REPORT;
00454
00455
00457 typedef struct VIP_PACKET_ALIVE
00458 {
00460 VIP_NET_UCHAR type;
00462 VIP_NET_UCHAR pad[3];
00464 VIP_NET_UINT32 net_srv_magic;
00465 }
00466 VIP_PACKET_ALIVE;
00467
00468
00470 typedef struct VIP_PACKET_CONN_LIST
00471 {
00473 VIP_NET_UCHAR type;
00475 VIP_UCHAR port_id;
00477 VIP_UCHAR pad[2];
00479 VIP_UCHAR gm_unique_id[6];
00480 VIP_UCHAR morepad[2];
00482 VIP_NET_UINT16 clt_seq_num;
00483 VIP_NET_UINT16 pad2;
00485 VIP_NET_UINT64 clt_conn_ptr;
00488 VIP_NET_UINT32 net_srv_magic[VI_GM_MAX_PORTS];
00489 }
00490 VIP_PACKET_CONN_LIST;
00491
00492
00494 typedef struct VIP_PACKET_CONN_REQ
00495 {
00497 VIP_NET_UCHAR type;
00499 VIP_NET_UCHAR rdma_write;
00501 VIP_NET_UINT16 clt_seq_num;
00502 VIP_NET_UINT32 pad;
00504 VIP_NET_UINT64 clt_conn_ptr;
00506 VIP_NET_UINT64 qos;
00508 VIP_NET_UINT32 mtu;
00510 VIP_NET_UINT32 srv_net_magic;
00512 VIP_NET_UINT16 reliability;
00514 VIP_NET_UINT16 clt_disc_len;
00516 VIP_UCHAR clt_net_addr[VI_GM_MAC_ADDRESS_LEN
00517 + VI_GM_MAX_DISCRIMINATOR_LEN];
00519 VIP_NET_UINT16 srv_disc_len;
00521 VIP_UCHAR srv_net_addr[VI_GM_MAC_ADDRESS_LEN
00522 + VI_GM_MAX_DISCRIMINATOR_LEN];
00523 VIP_UCHAR pad2[6];
00524 }
00525 VIP_PACKET_CONN_REQ;
00526
00527
00529 typedef struct VIP_PACKET_CONN_NOMATCH
00530 {
00532 VIP_NET_UCHAR type;
00534 VIP_UCHAR dest_port_id;
00536
00538 VIP_UINT16 pad;
00540 VIP_NET_UINT16 clt_seq_num;
00542 VIP_NET_UINT64 clt_conn_ptr;
00543 }
00544 VIP_PACKET_CONN_NOMATCH;
00545
00546
00548 typedef struct VIP_PACKET_CONN_ACCEPT
00549 {
00551 VIP_NET_UCHAR type;
00553 VIP_NET_UCHAR rdma_write;
00555 VIP_NET_UCHAR pad[2];
00557 VIP_NET_UINT16 srv_seq_num;
00559 VIP_NET_UINT16 clt_seq_num;
00561 VIP_NET_UINT64 srv_conn_ptr;
00563 VIP_NET_UINT64 clt_conn_ptr;
00565 VIP_NET_UINT16 net_local_nic_index;
00567 VIP_NET_UINT16 net_local_vi_index;
00568 VIP_NET_UINT32 pad2;
00569 }
00570 VIP_PACKET_CONN_ACCEPT;
00571
00572
00574 typedef struct VIP_PACKET_CONN_REJECT
00575 {
00577 VIP_NET_UCHAR type;
00579 VIP_NET_UCHAR peer_status;
00581 VIP_NET_UINT16 clt_seq_num;
00582 VIP_NET_UINT32 pad;
00584 VIP_NET_UINT64 clt_conn_ptr;
00585 }
00586 VIP_PACKET_CONN_REJECT;
00587
00588
00590 typedef struct VIP_PACKET_CONN_ACK
00591 {
00593 VIP_NET_UCHAR type;
00595 VIP_NET_UCHAR status;
00597 VIP_NET_UINT16 srv_seq_num;
00599 VIP_NET_UINT16 net_local_nic_index;
00601 VIP_NET_UINT16 net_local_vi_index;
00603 VIP_NET_UINT64 srv_conn_ptr;
00604 }
00605 VIP_PACKET_CONN_ACK;
00606
00607
00609 typedef union
00610 {
00612 VIP_NET_UCHAR type;
00614 VIP_PACKET_EAGER_UR vip_pkt_eager_ur;
00616 VIP_PACKET_EAGER_RD vip_pkt_eager_rd;
00618 VIP_PACKET_EAGER_RR vip_pkt_eager_rr;
00620 VIP_PACKET_EAGER_IMM_UR vip_pkt_eager_imm_ur;
00622 VIP_PACKET_EAGER_IMM_RD vip_pkt_eager_imm_rd;
00624 VIP_PACKET_EAGER_IMM_RR vip_pkt_eager_imm_rr;
00626 VIP_PACKET_3WAY_REQ vip_pkt_3way_req;
00628 VIP_PACKET_3WAY_OK vip_pkt_3way_ok;
00630 VIP_PACKET_3WAY_DONE vip_pkt_3way_done;
00632 VIP_PACKET_3WAY_DONE_IMM vip_pkt_3way_done_imm;
00634 VIP_PACKET_PUT_REQ vip_pkt_put_req;
00636 VIP_PACKET_PUT_REQ_IMM vip_pkt_put_req_imm;
00638 VIP_PACKET_PUT_OK vip_pkt_put_ok;
00640 VIP_PACKET_PUT_DONE vip_pkt_put_done;
00642 VIP_PACKET_REPORT vip_pkt_report;
00644 VIP_PACKET_ALIVE vip_pkt_alive;
00646 VIP_PACKET_CONN_LIST vip_pkt_conn_list;
00648 VIP_PACKET_CONN_REQ vip_pkt_conn_req;
00650 VIP_PACKET_CONN_NOMATCH vip_pkt_conn_nomatch;
00652 VIP_PACKET_CONN_ACCEPT vip_pkt_conn_accept;
00654 VIP_PACKET_CONN_REJECT vip_pkt_conn_reject;
00656 VIP_PACKET_CONN_ACK vip_pkt_conn_ack;
00657 }
00658 VIP_PACKET;
00659
00660 #endif