/* * 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 */