4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2014 QLogic Corporation
24 * The contents of this file are subject to the terms of the
25 * QLogic End User License (the "License").
26 * You may not use this file except in compliance with the License.
28 * You can obtain a copy of the License at
29 * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
30 * QLogic_End_User_Software_License.txt
31 * See the License for the specific language governing permissions
32 * and limitations under the License.
35 #ifndef __BNXE_BINDING_H
36 #define __BNXE_BINDING_H
39 #include "mac_drv_info.h"
41 #define BNXE_BINDING_VERSION \
42 ((MAJVERSION << 16) | (MINVERSION << 8) | (REVVERSION << 0))
44 /* cb_ioctl commands sent to bnxe */
45 #define BNXE_BIND_FCOE 0x0ead0001
46 #define BNXE_UNBIND_FCOE 0x0ead0002
49 /* default FCoE max exchanges is 4096 for SF and 2048 for MF */
50 #define FCOE_MAX_EXCHANGES_SF 4096
51 #define FCOE_MAX_EXCHANGES_MF 2048
54 #ifndef BNXE_FCOE_WWN_SIZE
55 #define BNXE_FCOE_WWN_SIZE 8
58 typedef struct bnxe_wwn_info
60 uint32_t fcp_pwwn_provided
;
61 uint8_t fcp_pwwn
[BNXE_FCOE_WWN_SIZE
];
62 uint32_t fcp_nwwn_provided
;
63 uint8_t fcp_nwwn
[BNXE_FCOE_WWN_SIZE
];
67 #define FCOE_INFO_FLAG_FORCE_LOAD 0x1
69 #define FCOE_INFO_FLAG_MF_MODE_MASK 0x6 /* bits 2-3 */
70 #define FCOE_INFO_FLAG_MF_MODE_SF 0x0 /* single function */
71 #define FCOE_INFO_FLAG_MF_MODE_SD 0x2 /* switch dependent (vlan based) */
72 #define FCOE_INFO_FLAG_MF_MODE_SI 0x4 /* switch independent (mac based) */
73 #define FCOE_INFO_FLAG_MF_MODE_AFEX 0x6 /* switch dependent (afex based) */
75 #define FCOE_INFO_IS_MF_MODE_SF(flags) \
76 (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_SF)
77 #define FCOE_INFO_IS_MF_MODE_SD(flags) \
78 (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_SD)
79 #define FCOE_INFO_IS_MF_MODE_SI(flags) \
80 (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_SI)
81 #define FCOE_INFO_IS_MF_MODE_AFEX(flags) \
82 (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_AFEX)
84 typedef struct bnxe_fcoe_info
88 u32_t max_fcoe_exchanges
;
93 typedef struct bnxe_fcoe_caps
95 struct fcoe_capabilities fcoe_caps
;
100 * cli_ctl - misc control interface up to the client
102 * cmd: CLI_CTL_LINK_UP - link up event, no data passed
103 * CLI_CTL_LINK_DOWN - link down event, no data passed
104 * CLI_CTL_UNLOAD - graceful unload event, no data passed
106 * pData: pointer to command data or NULL
108 * dataLen: length of command data or 0
110 #define CLI_CTL_LINK_UP 1
111 #define CLI_CTL_LINK_DOWN 2
112 #define CLI_CTL_UNLOAD 3
113 typedef boolean_t (*cli_ctl
)(dev_info_t
* pDev
,
118 typedef boolean_t (*cli_indicate_tx
)(dev_info_t
* pDev
,
121 typedef boolean_t (*cli_indicate_rx
)(dev_info_t
* pDev
,
124 typedef boolean_t (*cli_indicate_cqes
)(dev_info_t
* pDev
,
130 * prv_ctl - misc control interface down to the provider
132 * cmd: PRV_CTL_GET_MAC_ADDR - get MAC Address, pass data buffer to hold addr
133 * PRV_CTL_SET_MAC_ADDR - set MAC Address, pass data buffer contains addr
134 * PRV_CTL_QUERY_PARAMS - query related params, pass BnxeXXXInfo struct
135 * PRV_CTL_DISABLE_INTR - disable interrupts, no data passed
136 * PRV_CTL_ENABLE_INTR - enable interrupts, no data passed
137 * PRV_CTL_MBA_BOOT - check if MBA performed network boot
138 * PRV_CTL_LINK_STATE - query the link state, pass boolean buffer
139 * PRV_CTL_BOARD_TYPE - query the board type, pass string buffer
140 * PRV_CTL_BOARD_SERNUM - query the board's serial number, pass string buffer
141 * PRV_CTL_BOOTCODE_VERSION - query the MFW bootcode version, pass string buffer
142 * PRV_CTL_REPORT_FCOE_STATS - report FCoE stats, pass filled in fcoe_stats_info_t
143 * PRV_CTL_SET_CAPS - report FCoE capabilities, pass filled in BnxeFcoeCaps struct
145 * pData: pointer to command data or NULL
147 * dataLen: length of command data or 0
149 * returns: TRUE upon success, FALSE otherwise
151 #define PRV_CTL_GET_MAC_ADDR 1
152 #define PRV_CTL_SET_MAC_ADDR 2
153 #define PRV_CTL_QUERY_PARAMS 3
154 #define PRV_CTL_DISABLE_INTR 4
155 #define PRV_CTL_ENABLE_INTR 5
156 #define PRV_CTL_MBA_BOOT 6
157 #define PRV_CTL_LINK_STATE 7
158 #define PRV_CTL_BOARD_TYPE 8
159 #define PRV_CTL_BOARD_SERNUM 9
160 #define PRV_CTL_BOOTCODE_VERSION 10
161 #define PRV_CTL_REPORT_FCOE_STATS 11
162 #define PRV_CTL_SET_CAPS 12
163 typedef boolean_t (*prv_ctl
)(dev_info_t
* pDev
,
168 #define PRV_TX_VLAN_TAG 1
169 typedef mblk_t
* (*prv_tx
)(dev_info_t
* pDev
,
174 typedef boolean_t (*prv_poll
)(dev_info_t
* pDev
);
176 typedef boolean_t (*prv_send_wqes
)(dev_info_t
* pDev
,
180 typedef boolean_t (*prv_map_mailboxq
)(dev_info_t
* pDev
,
183 ddi_acc_handle_t
* pAccHandle
);
185 typedef boolean_t (*prv_unmap_mailboxq
)(dev_info_t
* pDev
,
188 ddi_acc_handle_t accHandle
);
191 typedef struct bnxe_binding
195 dev_info_t
* pCliDev
; /* bnxe client */
198 cli_indicate_tx cliIndicateTx
;
199 cli_indicate_rx cliIndicateRx
;
200 cli_indicate_cqes cliIndicateCqes
;
205 dev_info_t
* pPrvDev
; /* bnxe */
210 prv_send_wqes prvSendWqes
;
211 prv_map_mailboxq prvMapMailboxq
;
212 prv_unmap_mailboxq prvUnmapMailboxq
;
215 #endif /* __BNXE_BINDING_H */