summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/bnxe/bnxe_binding.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/bnxe/bnxe_binding.h')
-rw-r--r--usr/src/uts/common/io/bnxe/bnxe_binding.h216
1 files changed, 216 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/bnxe/bnxe_binding.h b/usr/src/uts/common/io/bnxe/bnxe_binding.h
new file mode 100644
index 0000000000..654c370920
--- /dev/null
+++ b/usr/src/uts/common/io/bnxe/bnxe_binding.h
@@ -0,0 +1,216 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2014 QLogic Corporation
+ * The contents of this file are subject to the terms of the
+ * QLogic End User License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the License at
+ * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
+ * QLogic_End_User_Software_License.txt
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ */
+
+#ifndef __BNXE_BINDING_H
+#define __BNXE_BINDING_H
+
+#include "bcmtype.h"
+#include "mac_drv_info.h"
+
+#define BNXE_BINDING_VERSION \
+ ((MAJVERSION << 16) | (MINVERSION << 8) | (REVVERSION << 0))
+
+/* cb_ioctl commands sent to bnxe */
+#define BNXE_BIND_FCOE 0x0ead0001
+#define BNXE_UNBIND_FCOE 0x0ead0002
+
+
+/* default FCoE max exchanges is 4096 for SF and 2048 for MF */
+#define FCOE_MAX_EXCHANGES_SF 4096
+#define FCOE_MAX_EXCHANGES_MF 2048
+
+
+#ifndef BNXE_FCOE_WWN_SIZE
+#define BNXE_FCOE_WWN_SIZE 8
+#endif
+
+typedef struct bnxe_wwn_info
+{
+ uint32_t fcp_pwwn_provided;
+ uint8_t fcp_pwwn[BNXE_FCOE_WWN_SIZE];
+ uint32_t fcp_nwwn_provided;
+ uint8_t fcp_nwwn[BNXE_FCOE_WWN_SIZE];
+} BnxeWwnInfo;
+
+
+#define FCOE_INFO_FLAG_FORCE_LOAD 0x1
+
+#define FCOE_INFO_FLAG_MF_MODE_MASK 0x6 /* bits 2-3 */
+#define FCOE_INFO_FLAG_MF_MODE_SF 0x0 /* single function */
+#define FCOE_INFO_FLAG_MF_MODE_SD 0x2 /* switch dependent (vlan based) */
+#define FCOE_INFO_FLAG_MF_MODE_SI 0x4 /* switch independent (mac based) */
+#define FCOE_INFO_FLAG_MF_MODE_AFEX 0x6 /* switch dependent (afex based) */
+
+#define FCOE_INFO_IS_MF_MODE_SF(flags) \
+ (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_SF)
+#define FCOE_INFO_IS_MF_MODE_SD(flags) \
+ (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_SD)
+#define FCOE_INFO_IS_MF_MODE_SI(flags) \
+ (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_SI)
+#define FCOE_INFO_IS_MF_MODE_AFEX(flags) \
+ (((flags) & FCOE_INFO_FLAG_MF_MODE_MASK) == FCOE_INFO_FLAG_MF_MODE_AFEX)
+
+typedef struct bnxe_fcoe_info
+{
+ u32_t flags;
+ u32_t max_fcoe_conn;
+ u32_t max_fcoe_exchanges;
+ BnxeWwnInfo wwn;
+} BnxeFcoeInfo;
+
+
+typedef struct bnxe_fcoe_caps
+{
+ struct fcoe_capabilities fcoe_caps;
+} BnxeFcoeCaps;
+
+
+/*
+ * cli_ctl - misc control interface up to the client
+ *
+ * cmd: CLI_CTL_LINK_UP - link up event, no data passed
+ * CLI_CTL_LINK_DOWN - link down event, no data passed
+ * CLI_CTL_UNLOAD - graceful unload event, no data passed
+ *
+ * pData: pointer to command data or NULL
+ *
+ * dataLen: length of command data or 0
+ */
+#define CLI_CTL_LINK_UP 1
+#define CLI_CTL_LINK_DOWN 2
+#define CLI_CTL_UNLOAD 3
+typedef boolean_t (*cli_ctl)(dev_info_t * pDev,
+ int cmd,
+ void * pData,
+ int dataLen);
+
+typedef boolean_t (*cli_indicate_tx)(dev_info_t * pDev,
+ mblk_t * pMblk);
+
+typedef boolean_t (*cli_indicate_rx)(dev_info_t * pDev,
+ mblk_t * pMblk);
+
+typedef boolean_t (*cli_indicate_cqes)(dev_info_t * pDev,
+ void * cqes[],
+ int cqeCnt);
+
+
+/*
+ * prv_ctl - misc control interface down to the provider
+ *
+ * cmd: PRV_CTL_GET_MAC_ADDR - get MAC Address, pass data buffer to hold addr
+ * PRV_CTL_SET_MAC_ADDR - set MAC Address, pass data buffer contains addr
+ * PRV_CTL_QUERY_PARAMS - query related params, pass BnxeXXXInfo struct
+ * PRV_CTL_DISABLE_INTR - disable interrupts, no data passed
+ * PRV_CTL_ENABLE_INTR - enable interrupts, no data passed
+ * PRV_CTL_MBA_BOOT - check if MBA performed network boot
+ * PRV_CTL_LINK_STATE - query the link state, pass boolean buffer
+ * PRV_CTL_BOARD_TYPE - query the board type, pass string buffer
+ * PRV_CTL_BOARD_SERNUM - query the board's serial number, pass string buffer
+ * PRV_CTL_BOOTCODE_VERSION - query the MFW bootcode version, pass string buffer
+ * PRV_CTL_REPORT_FCOE_STATS - report FCoE stats, pass filled in fcoe_stats_info_t
+ * PRV_CTL_SET_CAPS - report FCoE capabilities, pass filled in BnxeFcoeCaps struct
+ *
+ * pData: pointer to command data or NULL
+ *
+ * dataLen: length of command data or 0
+ *
+ * returns: TRUE upon success, FALSE otherwise
+ */
+#define PRV_CTL_GET_MAC_ADDR 1
+#define PRV_CTL_SET_MAC_ADDR 2
+#define PRV_CTL_QUERY_PARAMS 3
+#define PRV_CTL_DISABLE_INTR 4
+#define PRV_CTL_ENABLE_INTR 5
+#define PRV_CTL_MBA_BOOT 6
+#define PRV_CTL_LINK_STATE 7
+#define PRV_CTL_BOARD_TYPE 8
+#define PRV_CTL_BOARD_SERNUM 9
+#define PRV_CTL_BOOTCODE_VERSION 10
+#define PRV_CTL_REPORT_FCOE_STATS 11
+#define PRV_CTL_SET_CAPS 12
+typedef boolean_t (*prv_ctl)(dev_info_t * pDev,
+ int cmd,
+ void * pData,
+ int dataLen);
+
+#define PRV_TX_VLAN_TAG 1
+typedef mblk_t * (*prv_tx)(dev_info_t * pDev,
+ mblk_t * pMblk,
+ u32_t flags,
+ u16_t vlan_tag);
+
+typedef boolean_t (*prv_poll)(dev_info_t * pDev);
+
+typedef boolean_t (*prv_send_wqes)(dev_info_t * pDev,
+ void * wqes[],
+ int wqeCnt);
+
+typedef boolean_t (*prv_map_mailboxq)(dev_info_t * pDev,
+ u32_t cid,
+ void ** ppMap,
+ ddi_acc_handle_t * pAccHandle);
+
+typedef boolean_t (*prv_unmap_mailboxq)(dev_info_t * pDev,
+ u32_t cid,
+ void * pMap,
+ ddi_acc_handle_t accHandle);
+
+
+typedef struct bnxe_binding
+{
+ u32_t version;
+
+ dev_info_t * pCliDev; /* bnxe client */
+
+ cli_ctl cliCtl;
+ cli_indicate_tx cliIndicateTx;
+ cli_indicate_rx cliIndicateRx;
+ cli_indicate_cqes cliIndicateCqes;
+
+ u32_t numRxDescs;
+ u32_t numTxDescs;
+
+ dev_info_t * pPrvDev; /* bnxe */
+
+ prv_ctl prvCtl;
+ prv_tx prvTx;
+ prv_poll prvPoll;
+ prv_send_wqes prvSendWqes;
+ prv_map_mailboxq prvMapMailboxq;
+ prv_unmap_mailboxq prvUnmapMailboxq;
+} BnxeBinding;
+
+#endif /* __BNXE_BINDING_H */
+