~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/drivers/fc4/fc.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* fc.h: Definitions for Fibre Channel Physical and Signaling Interface.
  2  *
  3  * Copyright (C) 1996-1997,1999 Jakub Jelinek (jj@ultra.linux.cz)
  4  *
  5  * Sources:
  6  *      Fibre Channel Physical & Signaling Interface (FC-PH), dpANS, 1994
  7  *      dpANS Fibre Channel Protocol for SCSI (X3.269-199X), Rev. 012, 1995
  8  */
  9 
 10 #ifndef __FC_H
 11 #define __FC_H
 12 
 13 /* World Wide Name */
 14 #define NAAID_IEEE              1
 15 #define NAAID_IEEE_EXT          2
 16 #define NAAID_LOCAL             3
 17 #define NAAID_IP                4
 18 #define NAAID_IEEE_REG          5
 19 #define NAAID_IEEE_REG_EXT      6
 20 #define NAAID_CCITT             12
 21 #define NAAID_CCITT_GRP         14
 22 
 23 /* This is NAAID_IEEE_EXT scheme */
 24 typedef struct {
 25         u32     naaid:4;
 26         u32     nportid:12;
 27         u32     hi:16;
 28         u32     lo;
 29 } fc_wwn;
 30 
 31 /* Frame header for FC-PH frames */
 32 
 33 /* r_ctl field */
 34 #define R_CTL_DEVICE_DATA       0x00    /* FC4 Device_Data frame */
 35 #define R_CTL_EXTENDED_SVC      0x20    /* Extended Link_Data frame */
 36 #define R_CTL_FC4_SVC           0x30    /* FC4 Link_Data frame */
 37 #define R_CTL_VIDEO             0x40    /* Video_Data frame */
 38 #define R_CTL_BASIC_SVC         0x80    /* Basic Link_Data frame */
 39 #define R_CTL_LINK_CTL          0xc0    /* Link_Control frame */
 40 /* FC4 Device_Data frames */
 41 #define R_CTL_UNCATEGORIZED     0x00
 42 #define R_CTL_SOLICITED_DATA    0x01
 43 #define R_CTL_UNSOL_CONTROL     0x02
 44 #define R_CTL_SOLICITED_CONTROL 0x03
 45 #define R_CTL_UNSOL_DATA        0x04
 46 #define R_CTL_XFER_RDY          0x05
 47 #define R_CTL_COMMAND           0x06
 48 #define R_CTL_STATUS            0x07
 49 /* Basic Link_Data frames */
 50 #define R_CTL_LS_NOP            0x80
 51 #define R_CTL_LS_ABTS           0x81
 52 #define R_CTL_LS_RMC            0x82
 53 #define R_CTL_LS_BA_ACC         0x84
 54 #define R_CTL_LS_BA_RJT         0x85
 55 /* Extended Link_Data frames */
 56 #define R_CTL_ELS_REQ           0x22
 57 #define R_CTL_ELS_RSP           0x23
 58 /* Link_Control frames */
 59 #define R_CTL_ACK_1             0xc0
 60 #define R_CTL_ACK_N             0xc1
 61 #define R_CTL_P_RJT             0xc2
 62 #define R_CTL_F_RJT             0xc3
 63 #define R_CTL_P_BSY             0xc4
 64 #define R_CTL_F_BSY_DF          0xc5
 65 #define R_CTL_F_BSY_LC          0xc6
 66 #define R_CTL_LCR               0xc7
 67 
 68 /* type field */
 69 #define TYPE_BASIC_LS           0x00
 70 #define TYPE_EXTENDED_LS        0x01
 71 #define TYPE_IS8802             0x04
 72 #define TYPE_IS8802_SNAP        0x05
 73 #define TYPE_SCSI_FCP           0x08
 74 #define TYPE_SCSI_GPP           0x09
 75 #define TYPE_HIPP_FP            0x0a
 76 #define TYPE_IPI3_MASTER        0x11
 77 #define TYPE_IPI3_SLAVE         0x12
 78 #define TYPE_IPI3_PEER          0x13
 79 
 80 /* f_ctl field */
 81 #define F_CTL_FILL_BYTES        0x000003
 82 #define F_CTL_XCHG_REASSEMBLE   0x000004
 83 #define F_CTL_RO_PRESENT        0x000008
 84 #define F_CTL_ABORT_SEQ         0x000030
 85 #define F_CTL_CONTINUE_SEQ      0x0000c0
 86 #define F_CTL_INVALIDATE_XID    0x004000
 87 #define F_CTL_XID_REASSIGNED    0x008000
 88 #define F_CTL_SEQ_INITIATIVE    0x010000
 89 #define F_CTL_CHAINED_SEQ       0x020000
 90 #define F_CTL_END_CONNECT       0x040000
 91 #define F_CTL_END_SEQ           0x080000
 92 #define F_CTL_LAST_SEQ          0x100000
 93 #define F_CTL_FIRST_SEQ         0x200000
 94 #define F_CTL_SEQ_CONTEXT       0x400000
 95 #define F_CTL_XCHG_CONTEXT      0x800000
 96 
 97 typedef struct {
 98         u32     r_ctl:8,        did:24;
 99         u32     xxx1:8,         sid:24;
100         u32     type:8,         f_ctl:24;
101         u32     seq_id:8,       df_ctl:8,       seq_cnt:16;
102         u16     ox_id,          rx_id;
103         u32     param;
104 } fc_hdr;
105 /* The following are ugly macros to make setup of this structure faster */
106 #define FILL_FCHDR_RCTL_DID(fch, r_ctl, did) *(u32 *)(fch) = ((r_ctl) << 24) | (did);
107 #define FILL_FCHDR_SID(fch, sid) *((u32 *)(fch)+1) = (sid);
108 #define FILL_FCHDR_TYPE_FCTL(fch, type, f_ctl) *((u32 *)(fch)+2) = ((type) << 24) | (f_ctl);
109 #define FILL_FCHDR_SEQ_DF_SEQ(fch, seq_id, df_ctl, seq_cnt) *((u32 *)(fch)+3) = ((seq_id) << 24) | ((df_ctl) << 16) | (seq_cnt);
110 #define FILL_FCHDR_OXRX(fch, ox_id, rx_id) *((u32 *)(fch)+4) = ((ox_id) << 16) | (rx_id);
111 
112 /* Well known addresses */
113 #define FS_GENERAL_MULTICAST    0xfffff7
114 #define FS_WELL_KNOWN_MULTICAST 0xfffff8
115 #define FS_HUNT_GROUP           0xfffff9
116 #define FS_MANAGEMENT_SERVER    0xfffffa
117 #define FS_TIME_SERVER          0xfffffb
118 #define FS_NAME_SERVER          0xfffffc
119 #define FS_FABRIC_CONTROLLER    0xfffffd
120 #define FS_FABRIC_F_PORT        0xfffffe
121 #define FS_BROADCAST            0xffffff
122 
123 /* Reject frames */
124 /* The param field should be cast to this structure */
125 typedef struct {
126         u8      action;
127         u8      reason;
128         u8      xxx;
129         u8      vendor_unique;
130 } rjt_param;
131 
132 /* Reject action codes */
133 #define RJT_RETRY                       0x01
134 #define RJT_NONRETRY                    0x02
135 
136 /* Reject reason codes */
137 #define RJT_INVALID_DID                 0x01
138 #define RJT_INVALID_SID                 0x02
139 #define RJT_NPORT_NOT_AVAIL_TEMP        0x03
140 #define RJT_NPORT_NOT_AVAIL_PERM        0x04
141 #define RJT_CLASS_NOT_SUPPORTED         0x05
142 #define RJT_DELIMITER_ERROR             0x06
143 #define RJT_TYPE_NOT_SUPPORTED          0x07
144 #define RJT_INVALID_LINK_CONTROL        0x08
145 #define RJT_INVALID_R_CTL               0x09
146 #define RJT_INVALID_F_CTL               0x0a
147 #define RJT_INVALID_OX_ID               0x0b
148 #define RJT_INVALID_RX_ID               0x0c
149 #define RJT_INVALID_SEQ_ID              0x0d
150 #define RJT_INVALID_DF_CTL              0x0e
151 #define RJT_INVALID_SEQ_CNT             0x0f
152 #define RJT_INVALID_PARAMETER           0x10
153 #define RJT_EXCHANGE_ERROR              0x11
154 #define RJT_PROTOCOL_ERROR              0x12
155 #define RJT_INCORRECT_LENGTH            0x13
156 #define RJT_UNEXPECTED_ACK              0x14
157 #define RJT_UNEXPECTED_LINK_RESP        0x15
158 #define RJT_LOGIN_REQUIRED              0x16
159 #define RJT_EXCESSIVE_SEQUENCES         0x17
160 #define RJT_CANT_ESTABLISH_EXCHANGE     0x18
161 #define RJT_SECURITY_NOT_SUPPORTED      0x19
162 #define RJT_FABRIC_NA                   0x1a
163 #define RJT_VENDOR_UNIQUE               0xff
164 
165 
166 #define SP_F_PORT_LOGIN                 0x10
167 
168 /* Extended SVC commands */
169 #define LS_RJT                  0x01000000
170 #define LS_ACC                  0x02000000
171 #define LS_PRLI_ACC             0x02100014
172 #define LS_PLOGI                0x03000000
173 #define LS_FLOGI                0x04000000
174 #define LS_LOGO                 0x05000000
175 #define LS_ABTX                 0x06000000
176 #define LS_RCS                  0x07000000
177 #define LS_RES                  0x08000000
178 #define LS_RSS                  0x09000000
179 #define LS_RSI                  0x0a000000
180 #define LS_ESTS                 0x0b000000
181 #define LS_ESTC                 0x0c000000
182 #define LS_ADVC                 0x0d000000
183 #define LS_RTV                  0x0e000000
184 #define LS_RLS                  0x0f000000
185 #define LS_ECHO                 0x10000000
186 #define LS_TEST                 0x11000000
187 #define LS_RRQ                  0x12000000
188 #define LS_IDENT                0x20000000
189 #define LS_PRLI                 0x20100014
190 #define LS_DISPLAY              0x21000000
191 #define LS_PRLO                 0x21100014
192 #define LS_PDISC                0x50000000
193 #define LS_ADISC                0x52000000
194 
195 typedef struct {
196         u8      fcph_hi, fcph_lo;
197         u16     buf2buf_credit;
198         u8      common_features;
199         u8      xxx1;
200         u16     buf2buf_size;
201         u8      xxx2;
202         u8      total_concurrent;
203         u16     off_by_info;
204         u32     e_d_tov;
205 } common_svc_parm;
206 
207 typedef struct {
208         u16     serv_opts;
209         u16     initiator_ctl;
210         u16     rcpt_ctl;
211         u16     recv_size;
212         u8      xxx1;
213         u8      concurrent_seqs;
214         u16     end2end_credit;
215         u16     open_seqs_per_xchg;
216         u16     xxx2;
217 } svc_parm;
218 
219 /* Login */
220 typedef struct {
221         u32             code;
222         common_svc_parm common;
223         fc_wwn          nport_wwn;
224         fc_wwn          node_wwn;
225         svc_parm        class1;
226         svc_parm        class2;
227         svc_parm        class3;
228 } logi;
229 
230 #endif /* !(__FC_H) */
231 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.