2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
6 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License (GPL) Version 2 as
10 * published by the Free Software Foundation
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
21 #include <bfa_os_inc.h>
22 #include <defs/bfa_defs_status.h>
27 * Msg header common to all msgs
30 u8 msg_class
; /* @ref bfi_mclass_t */
31 u8 msg_id
; /* msg opcode with in the class */
35 u8 lpu_id
; /* msg destination */
37 u16 i2htok
; /* token in msgs to host */
41 #define bfi_h2i_set(_mh, _mc, _op, _lpuid) do { \
42 (_mh).msg_class = (_mc); \
43 (_mh).msg_id = (_op); \
44 (_mh).mtag.h2i.lpu_id = (_lpuid); \
47 #define bfi_i2h_set(_mh, _mc, _op, _i2htok) do { \
48 (_mh).msg_class = (_mc); \
49 (_mh).msg_id = (_op); \
50 (_mh).mtag.i2htok = (_i2htok); \
54 * Message opcodes: 0-127 to firmware, 128-255 to host
56 #define BFI_I2H_OPCODE_BASE 128
57 #define BFA_I2HM(_x) ((_x) + BFI_I2H_OPCODE_BASE)
60 ****************************************************************************
62 * Scatter Gather Element and Page definition
64 ****************************************************************************
67 #define BFI_SGE_INLINE 1
68 #define BFI_SGE_INLINE_MAX (BFI_SGE_INLINE + 1)
74 BFI_SGE_DATA
= 0, /* data address, not last */
75 BFI_SGE_DATA_CPL
= 1, /* data addr, last in current page */
76 BFI_SGE_DATA_LAST
= 3, /* data address, last */
77 BFI_SGE_LINK
= 2, /* link address */
78 BFI_SGE_PGDLEN
= 2, /* cumulative data length for page */
92 * Scatter Gather Element
104 union bfi_addr_u sga
;
108 * Scatter Gather Page
110 #define BFI_SGPG_DATA_SGES 7
111 #define BFI_SGPG_SGES_MAX (BFI_SGPG_DATA_SGES + 1)
112 #define BFI_SGPG_RSVD_WD_LEN 8
114 struct bfi_sge_s sges
[BFI_SGPG_SGES_MAX
];
115 u32 rsvd
[BFI_SGPG_RSVD_WD_LEN
];
119 * Large Message structure - 128 Bytes size Msgs
121 #define BFI_LMSG_SZ 128
122 #define BFI_LMSG_PL_WSZ \
123 ((BFI_LMSG_SZ - sizeof(struct bfi_mhdr_s)) / 4)
126 struct bfi_mhdr_s mhdr
;
127 u32 pl
[BFI_LMSG_PL_WSZ
];
131 * Mailbox message structure
133 #define BFI_MBMSG_SZ 7
135 struct bfi_mhdr_s mh
;
136 u32 pl
[BFI_MBMSG_SZ
];
143 BFI_MC_IOC
= 1, /* IO Controller (IOC) */
144 BFI_MC_DIAG
= 2, /* Diagnostic Msgs */
145 BFI_MC_FLASH
= 3, /* Flash message class */
146 BFI_MC_CEE
= 4, /* CEE */
147 BFI_MC_FCPORT
= 5, /* FC port */
148 BFI_MC_IOCFC
= 6, /* FC - IO Controller (IOC) */
149 BFI_MC_LL
= 7, /* Link Layer */
150 BFI_MC_UF
= 8, /* Unsolicited frame receive */
151 BFI_MC_FCXP
= 9, /* FC Transport */
152 BFI_MC_LPS
= 10, /* lport fc login services */
153 BFI_MC_RPORT
= 11, /* Remote port */
154 BFI_MC_ITNIM
= 12, /* I-T nexus (Initiator mode) */
155 BFI_MC_IOIM_READ
= 13, /* read IO (Initiator mode) */
156 BFI_MC_IOIM_WRITE
= 14, /* write IO (Initiator mode) */
157 BFI_MC_IOIM_IO
= 15, /* IO (Initiator mode) */
158 BFI_MC_IOIM
= 16, /* IO (Initiator mode) */
159 BFI_MC_IOIM_IOCOM
= 17, /* good IO completion */
160 BFI_MC_TSKIM
= 18, /* Initiator Task management */
161 BFI_MC_SBOOT
= 19, /* SAN boot services */
162 BFI_MC_IPFC
= 20, /* IP over FC Msgs */
163 BFI_MC_PORT
= 21, /* Physical port */
167 #define BFI_IOC_MAX_CQS 4
168 #define BFI_IOC_MAX_CQS_ASIC 8
169 #define BFI_IOC_MSGLEN_MAX 32 /* 32 bytes */
173 #endif /* __BFI_H__ */