Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

vipl_packets.h

Go to the documentation of this file.
00001 /********************************************************
00002  * Myricom VI-GM  networking software and documentation *
00003  * Copyright (c) 2001 by Myricom, Inc.                  *
00004  * All rights reserved.                                 *
00005  * See the file `COPYING' for copyright notice.         *
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   /* important to keep the seg_count here to 
00263      keep the same head than other data packet */
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   //VIP_UINT16 dest_gm_id;
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
VI-GM-1.3 by Myricom © 1997-2006. Documentation generated on 20 May 2006 by doxygen 1.4.4.